Sponsored Link:   COVESTING - EU-based digital asset exchange. Aggregated liquidity. Algorithmic & Copy-trading features. 24/7 support. Get access!
Contract Overview | CivicMultiSig
Balance: 487.081256234857020727 Ether
Ether Value: $252,532.15 (@ $518.46/ETH)
Transactions: 188 txns
Misc
Address Watch: Add To Watch List
Contract Creator: 0xa0dbdadcbcc540be9bf4e9a812035eb1289dad73at txn 0x46e5331d9e7269698063c17c66a17dc922148ba511fe4cc7e5fae6915e3b372c
Token Balances:
 Latest 25 txns from a total Of 188 transactions
View All

TxHash Age From To Value [TxFee]
0xc8c2082165a341583e5fac19dbcb0624187693fc66f71bb716de2ef694b074c6230 days 22 hrs ago0x003cb639f3c0120051abf4f927c2414d56ac766c  IN   CivicMultiSig0 Ether0.000361448
0x626ef9f0ae7549c2df13f02de785c6b18f13328c208c036e8942c304315cb2ef230 days 22 hrs ago0x00cb0d8171a9fa71e71fbf3f9cc17c6442755c29  IN   CivicMultiSig0 Ether0.000213368
0x3eb5df10337d63171c0e1a1be74b5d1ff03551587627703921f781b97139cc14230 days 22 hrs ago0x0063af5125737564407a4081f017c34d647dad4f  IN   CivicMultiSig0 Ether0.001407472
0xe64bc80227ff9a84d475a78adedb3cf5b7b2affa4a0034c26d0dce4972d21f7f230 days 23 hrs ago0x00cb0d8171a9fa71e71fbf3f9cc17c6442755c29  IN   CivicMultiSig0 Ether0.000361448
0xbe3d9fa163f6d36ede0c1a4c1b763189fe0698c227ceb1a32cac7a4e36fa995f230 days 23 hrs ago0x003cb639f3c0120051abf4f927c2414d56ac766c  IN   CivicMultiSig0 Ether0.024164608
0xe5bd63c19bcedf5baf989bd30587aebe5dbd4ae1b203f12c5f3c14546c8a1eed230 days 23 hrs ago0x003cb639f3c0120051abf4f927c2414d56ac766c  IN   CivicMultiSig0 Ether0.000213368
0xb52364eaa5e85927d80cd783f90937b22f70ab2d137c1fcddf784855f0d6a746230 days 23 hrs ago0x0063af5125737564407a4081f017c34d647dad4f  IN   CivicMultiSig0 Ether0.00087935
0x13fc0cd74792f8d437458e308456d88b06ec574c89f06a4df333149368c71107234 days 14 hrs ago0x00c947cdb9112086d203843be8132bc992737f69  IN   CivicMultiSig0 Ether0.000355768
0x52777c306f3227fb0bc337fe1e3cc7af933052a52fde84166f9a06cf8699635b234 days 14 hrs ago0x0063af5125737564407a4081f017c34d647dad4f  IN   CivicMultiSig0 Ether0.024167008
0xf5038b7147799ee49f465e24e2086b80b1ace90069205ff3fd4dd1e1074c9d0b234 days 14 hrs ago0x0063af5125737564407a4081f017c34d647dad4f  IN   CivicMultiSig0 Ether0.000213368
0x63b2f53c2a78e1731565bb4cbacb5ace5f67c626df32c9e088d91f69ecd4ae25258 days 22 hrs ago0x003cb639f3c0120051abf4f927c2414d56ac766c  IN   CivicMultiSig0 Ether0.0035174
0x6cef8783e115aaf516a2d8515e7ab268bf49f184b78350b70c95044e1e9cd3a4266 days 14 hrs ago0x00c947cdb9112086d203843be8132bc992737f69  IN   CivicMultiSig0 Ether0.001867782
0x03a94aae8ede6dcf02a89ef50584f99a7eed2c5cf2ff95c9eab3f178bd2d593f266 days 14 hrs ago0x0063af5125737564407a4081f017c34d647dad4f  IN   CivicMultiSig0 Ether0.001120182
0x2d53164363af4e9c9d8e59b99ad7a8d08f76dac6884d900627bf39359550f77f266 days 14 hrs ago0x00c947cdb9112086d203843be8132bc992737f69  IN   CivicMultiSig0 Ether0.001867782
0x08b2ec262fdc27b012445df6b1db5a6a4fc72a7b42482e68d2976a67318baee6266 days 14 hrs ago0x0063af5125737564407a4081f017c34d647dad4f  IN   CivicMultiSig0 Ether0.001120182
0x1065ceed617ec2f866ee80dd6c03607590672e879a628fb6fd05ea3fe60bd26c273 days 24 mins ago0x00c947cdb9112086d203843be8132bc992737f69  IN   CivicMultiSig0 Ether0.001867782
0xe172190fc8fb7a7526fe4eb98824812bc5c555f457daaef9d610d37c02fb8c30273 days 24 mins ago0x0063af5125737564407a4081f017c34d647dad4f  IN   CivicMultiSig0 Ether0.001120182
0xf94e0c83cf9b2b8fdbbb894f9ac0dd091a15ad459ca1ee8d9bd84e2139b49391273 days 31 mins ago0x003cb639f3c0120051abf4f927c2414d56ac766c  IN   CivicMultiSig0 Ether0.003694614
0xa0f60680d6479934b41a25f423ed369f2b94d4426fe645a9f9e30e6d2093734f273 days 33 mins ago0x003cb639f3c0120051abf4f927c2414d56ac766c  IN   CivicMultiSig0 Ether0.003694614
0x482eec8071c2664be1132307cf1b2aa375825973d125084334bbf830364e5d8f278 days 2 hrs ago0x00c947cdb9112086d203843be8132bc992737f69  IN   CivicMultiSig0 Ether0.135571391587
0x5a58a84002ba8938668d6e55a36674ceb010a14af5d3937b89d57ddc8f9fdf95278 days 2 hrs ago0x00c947cdb9112086d203843be8132bc992737f69  IN   CivicMultiSig0 Ether0.002334873104
0xcb9eab378347900d264a8bb24e6d200c62c00eef742d8b7e36e69290f58abfa1278 days 2 hrs ago0x0063af5125737564407a4081f017c34d647dad4f  IN   CivicMultiSig0 Ether0.001198233641
0x45ab5fd912533a1373cab5ecea703349def043c6746e4fdc1a9b555185752acb278 days 2 hrs ago0x003cb639f3c0120051abf4f927c2414d56ac766c  IN   CivicMultiSig0 Ether0.003949170701
0xfef17149cdbb91b443131bde959db74c8ae4335b54eae6e78a38d13ed6521e3e278 days 2 hrs ago0x003cb639f3c0120051abf4f927c2414d56ac766c  IN   CivicMultiSig0 Ether0.003858590087
0x78560054f7988ab61841b36325e20e2d53a996dad04a68de3c7c0a13d6e59dee278 days 2 hrs ago0x23fcf6b8385a8b4836d35aa9f85ccad75cfcd5d1  IN   CivicMultiSig0.2 Ether0.0011294
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0xabebee9f143566337913094985e342ae707b91c62823db200b002503deb79051541775868 days 20 hrs ago0x31a240648e2baf4f9f17225987f6f53fceb1699a0x2323763d78bf7104b54a462a79c2ce858d118f2f0.000000007777777777 Ether
0xf768a51e68416b929e21c21985c5965cf18e331b74f0f8b5477a83835fc850ab4069152328 days 19 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0xbce39acfeac70947763c37cb21e64e22c82c74c33.16535832 Ether
0x14902eaed71fb5434d5ab13a590cc07bd2ec8028f1047931bc91ec6065a71ffd4069152328 days 19 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x3cb73c6fd21f176b6d3546cb81905ebd12f7fc7f1.64826108 Ether
0x4b71a2d4ce7fc2cf2494691aa6c83393a516326abea86d7466be44693208f45b4069151328 days 19 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0xd152b83627302baeeb7f1fea9025cc57e6ed23681.6262278 Ether
0xe342b9530fefa36ecf1730dae8a8fc8f08086fe3159d6248841149d4db45690f4031503337 days 3 mins ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x9a95c1be5497cbc0cfedde4853aed3f2faa8afca10 Ether
0x6386c37fd1e173e5c231d3d957c255f4552a654baf32765491620825e967639f4026642338 days 1 hr ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x7725e0bc98e61c47dceb1906be968492e8cd90804,380 Ether
0x4919c511f98a508622d0b9762c6f5ccf85abf9ce91550c820aef26872cffeef84022716338 days 22 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x9a95c1be5497cbc0cfedde4853aed3f2faa8afca20 Ether
0x309ab55f74a98623b0c9cdf3416f6802464f1187f6232711b1b6c52b6ec462804019104339 days 17 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x1e27138de182aeddc28c41eab9c7edaae72d6d1d379 Ether
0xd09f23c373a5fddd4098c5d9efbdd2b1b5b51f448a5aeed2960021c9eed5d6684018959339 days 18 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x1e27138de182aeddc28c41eab9c7edaae72d6d1d357 Ether
0x07fcc74ea157111eada978ff0a5047940c8790a09eb0ae9013272185d136676b4018580339 days 20 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x1e27138de182aeddc28c41eab9c7edaae72d6d1d154 Ether
0x99b3cd05d1a31da27ef4e2e2fe56be3682599985fc35240c7585a8a403f3add04018506339 days 20 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x1e27138de182aeddc28c41eab9c7edaae72d6d1d22 Ether
0x5561cdd31f51e14019a83d49ecab407efd5bba043d0f220c4d22b831f7c027c83976829348 days 11 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x1e27138de182aeddc28c41eab9c7edaae72d6d1d3,033 Ether
0xd4015be2f320f75b67804630b3f805a62ef89e32c725fa27aa995afd50e533ba3976738348 days 12 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x1e27138de182aeddc28c41eab9c7edaae72d6d1d2,604 Ether
0x4182514e5a0b773764509ede8cdb1b55f26a30ee5291479db759216a3f813e3a3976670348 days 12 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x1e27138de182aeddc28c41eab9c7edaae72d6d1d3,312 Ether
0x40e22cfcb333b03c420692498e68be2fc28622ef3e633e7b7a79b08aebeba0623976595348 days 13 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x1e27138de182aeddc28c41eab9c7edaae72d6d1d3,275 Ether
0xbe6b0bfafb8ae84227f672dd5f122c168bd81d5dc6930608e4738dd58c72003b3976550348 days 13 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x1e27138de182aeddc28c41eab9c7edaae72d6d1d616 Ether
0xf6d927ad0ac027f8dc0a97a16ade5b7a71c5f44e97397e6acc8d57a2665d14553976442348 days 13 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x1e27138de182aeddc28c41eab9c7edaae72d6d1d173 Ether
0xe35767df4a86605d2b48d2b3a5bb8177ca35f0b4b27f25d5ec0c2aaa43c15f433938336356 days 4 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x23fcf6b8385a8b4836d35aa9f85ccad75cfcd5d191 Ether
0x36189e3f2f2c4bb8785d9f48e181d081471724c39557864541d89b0471896c0b3935319356 days 18 hrs ago0xa38d8109127028d3e1774413ef28db70c471cb540x2323763d78bf7104b54a462a79c2ce858d118f2f137.36 Ether
0x146138307914f30aa5f156f8057628d992e83886d392d12c885c14a5d59616d23935280356 days 18 hrs ago0x2323763d78bf7104b54a462a79c2ce858d118f2f0x23fcf6b8385a8b4836d35aa9f85ccad75cfcd5d110 Ether
0xd5e1fbe53339db11bc72134c7afbde9aa7ddb3bf68927d724c7603209014b50e3930452357 days 17 hrs ago0xa38d8109127028d3e1774413ef28db70c471cb540x2323763d78bf7104b54a462a79c2ce858d118f2f137.36 Ether
0x67439bc4d4cabb404e0ac383f3325f1fa3080486d020f2a39e93fa45ceb4234c3917331360 days 9 hrs ago0x8d18fee3552179082064abc5ef0b97c529a616b00x2323763d78bf7104b54a462a79c2ce858d118f2f0.316666138889768497 Ether
0x3e5f892216d33a2b58f1b8248a328a444b4c77278482ea060ff1592d849a178f3916340360 days 14 hrs ago0xa38d8109127028d3e1774413ef28db70c471cb540x2323763d78bf7104b54a462a79c2ce858d118f2f171.32 Ether
0xcd81fe16b44c747ae12785ca4b2df5013f26ff7e904e2f9f2f976ccfc51f4ce93915963360 days 16 hrs ago0x8d18fee3552179082064abc5ef0b97c529a616b00x2323763d78bf7104b54a462a79c2ce858d118f2f1.593371574251115302 Ether
0x20a0fae04cdb831c82704581ab295ba3fef500f140780ebd6726800ae8d7b8973915901360 days 16 hrs ago0x8d18fee3552179082064abc5ef0b97c529a616b00x2323763d78bf7104b54a462a79c2ce858d118f2f1.593371574251115302 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity), DelegateCallReturnValue (low-severity), ECRecoverMalformedInput (medium-severity), SkipEmptyStringLiteral (low-severity), ConstantOptimizerSubtraction (low-severity), IdentityPrecompileReturnIgnored (low-severity) Solidity compiler bugs.

Contract Source Code Verified (Similar match)
Note: Displaying similar matching verified source code at contract 0x35792029777427920ce7aDecccE9e645465e9C72(excluding Constructor Arguments if any)
Contract Name: MultiSigWalletWithDailyLimit
Compiler Version: v0.4.4+commit.4633f3de
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.4;


/// @title Multisignature wallet - Allows multiple parties to agree on transactions before execution.
/// @author Stefan George - <stefan.george@consensys.net>
contract MultiSigWallet {

    uint constant public MAX_OWNER_COUNT = 50;

    event Confirmation(address indexed sender, uint indexed transactionId);
    event Revocation(address indexed sender, uint indexed transactionId);
    event Submission(uint indexed transactionId);
    event Execution(uint indexed transactionId);
    event ExecutionFailure(uint indexed transactionId);
    event Deposit(address indexed sender, uint value);
    event OwnerAddition(address indexed owner);
    event OwnerRemoval(address indexed owner);
    event RequirementChange(uint required);

    mapping (uint => Transaction) public transactions;
    mapping (uint => mapping (address => bool)) public confirmations;
    mapping (address => bool) public isOwner;
    address[] public owners;
    uint public required;
    uint public transactionCount;

    struct Transaction {
        address destination;
        uint value;
        bytes data;
        bool executed;
    }

    modifier onlyWallet() {
        if (msg.sender != address(this))
            throw;
        _;
    }

    modifier ownerDoesNotExist(address owner) {
        if (isOwner[owner])
            throw;
        _;
    }

    modifier ownerExists(address owner) {
        if (!isOwner[owner])
            throw;
        _;
    }

    modifier transactionExists(uint transactionId) {
        if (transactions[transactionId].destination == 0)
            throw;
        _;
    }

    modifier confirmed(uint transactionId, address owner) {
        if (!confirmations[transactionId][owner])
            throw;
        _;
    }

    modifier notConfirmed(uint transactionId, address owner) {
        if (confirmations[transactionId][owner])
            throw;
        _;
    }

    modifier notExecuted(uint transactionId) {
        if (transactions[transactionId].executed)
            throw;
        _;
    }

    modifier notNull(address _address) {
        if (_address == 0)
            throw;
        _;
    }

    modifier validRequirement(uint ownerCount, uint _required) {
        if (   ownerCount > MAX_OWNER_COUNT
            || _required > ownerCount
            || _required == 0
            || ownerCount == 0)
            throw;
        _;
    }

    /// @dev Fallback function allows to deposit ether.
    function()
        payable
    {
        if (msg.value > 0)
            Deposit(msg.sender, msg.value);
    }

    /*
     * Public functions
     */
    /// @dev Contract constructor sets initial owners and required number of confirmations.
    /// @param _owners List of initial owners.
    /// @param _required Number of required confirmations.
    function MultiSigWallet(address[] _owners, uint _required)
        public
        validRequirement(_owners.length, _required)
    {
        for (uint i=0; i<_owners.length; i++) {
            if (isOwner[_owners[i]] || _owners[i] == 0)
                throw;
            isOwner[_owners[i]] = true;
        }
        owners = _owners;
        required = _required;
    }

    /// @dev Allows to add a new owner. Transaction has to be sent by wallet.
    /// @param owner Address of new owner.
    function addOwner(address owner)
        public
        onlyWallet
        ownerDoesNotExist(owner)
        notNull(owner)
        validRequirement(owners.length + 1, required)
    {
        isOwner[owner] = true;
        owners.push(owner);
        OwnerAddition(owner);
    }

    /// @dev Allows to remove an owner. Transaction has to be sent by wallet.
    /// @param owner Address of owner.
    function removeOwner(address owner)
        public
        onlyWallet
        ownerExists(owner)
    {
        isOwner[owner] = false;
        for (uint i=0; i<owners.length - 1; i++)
            if (owners[i] == owner) {
                owners[i] = owners[owners.length - 1];
                break;
            }
        owners.length -= 1;
        if (required > owners.length)
            changeRequirement(owners.length);
        OwnerRemoval(owner);
    }

    /// @dev Allows to replace an owner with a new owner. Transaction has to be sent by wallet.
    /// @param owner Address of owner to be replaced.
    /// @param owner Address of new owner.
    function replaceOwner(address owner, address newOwner)
        public
        onlyWallet
        ownerExists(owner)
        ownerDoesNotExist(newOwner)
    {
        for (uint i=0; i<owners.length; i++)
            if (owners[i] == owner) {
                owners[i] = newOwner;
                break;
            }
        isOwner[owner] = false;
        isOwner[newOwner] = true;
        OwnerRemoval(owner);
        OwnerAddition(newOwner);
    }

    /// @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet.
    /// @param _required Number of required confirmations.
    function changeRequirement(uint _required)
        public
        onlyWallet
        validRequirement(owners.length, _required)
    {
        required = _required;
        RequirementChange(_required);
    }

    /// @dev Allows an owner to submit and confirm a transaction.
    /// @param destination Transaction target address.
    /// @param value Transaction ether value.
    /// @param data Transaction data payload.
    /// @return Returns transaction ID.
    function submitTransaction(address destination, uint value, bytes data)
        public
        returns (uint transactionId)
    {
        transactionId = addTransaction(destination, value, data);
        confirmTransaction(transactionId);
    }

    /// @dev Allows an owner to confirm a transaction.
    /// @param transactionId Transaction ID.
    function confirmTransaction(uint transactionId)
        public
        ownerExists(msg.sender)
        transactionExists(transactionId)
        notConfirmed(transactionId, msg.sender)
    {
        confirmations[transactionId][msg.sender] = true;
        Confirmation(msg.sender, transactionId);
        executeTransaction(transactionId);
    }

    /// @dev Allows an owner to revoke a confirmation for a transaction.
    /// @param transactionId Transaction ID.
    function revokeConfirmation(uint transactionId)
        public
        ownerExists(msg.sender)
        confirmed(transactionId, msg.sender)
        notExecuted(transactionId)
    {
        confirmations[transactionId][msg.sender] = false;
        Revocation(msg.sender, transactionId);
    }

    /// @dev Allows anyone to execute a confirmed transaction.
    /// @param transactionId Transaction ID.
    function executeTransaction(uint transactionId)
        public
        notExecuted(transactionId)
    {
        if (isConfirmed(transactionId)) {
            Transaction tx = transactions[transactionId];
            tx.executed = true;
            if (tx.destination.call.value(tx.value)(tx.data))
                Execution(transactionId);
            else {
                ExecutionFailure(transactionId);
                tx.executed = false;
            }
        }
    }

    /// @dev Returns the confirmation status of a transaction.
    /// @param transactionId Transaction ID.
    /// @return Confirmation status.
    function isConfirmed(uint transactionId)
        public
        constant
        returns (bool)
    {
        uint count = 0;
        for (uint i=0; i<owners.length; i++) {
            if (confirmations[transactionId][owners[i]])
                count += 1;
            if (count == required)
                return true;
        }
    }

    /*
     * Internal functions
     */
    /// @dev Adds a new transaction to the transaction mapping, if transaction does not exist yet.
    /// @param destination Transaction target address.
    /// @param value Transaction ether value.
    /// @param data Transaction data payload.
    /// @return Returns transaction ID.
    function addTransaction(address destination, uint value, bytes data)
        internal
        notNull(destination)
        returns (uint transactionId)
    {
        transactionId = transactionCount;
        transactions[transactionId] = Transaction({
            destination: destination,
            value: value,
            data: data,
            executed: false
        });
        transactionCount += 1;
        Submission(transactionId);
    }

    /*
     * Web3 call functions
     */
    /// @dev Returns number of confirmations of a transaction.
    /// @param transactionId Transaction ID.
    /// @return Number of confirmations.
    function getConfirmationCount(uint transactionId)
        public
        constant
        returns (uint count)
    {
        for (uint i=0; i<owners.length; i++)
            if (confirmations[transactionId][owners[i]])
                count += 1;
    }

    /// @dev Returns total number of transactions after filers are applied.
    /// @param pending Include pending transactions.
    /// @param executed Include executed transactions.
    /// @return Total number of transactions after filters are applied.
    function getTransactionCount(bool pending, bool executed)
        public
        constant
        returns (uint count)
    {
        for (uint i=0; i<transactionCount; i++)
            if (   pending && !transactions[i].executed
                || executed && transactions[i].executed)
                count += 1;
    }

    /// @dev Returns list of owners.
    /// @return List of owner addresses.
    function getOwners()
        public
        constant
        returns (address[])
    {
        return owners;
    }

    /// @dev Returns array with owner addresses, which confirmed transaction.
    /// @param transactionId Transaction ID.
    /// @return Returns array of owner addresses.
    function getConfirmations(uint transactionId)
        public
        constant
        returns (address[] _confirmations)
    {
        address[] memory confirmationsTemp = new address[](owners.length);
        uint count = 0;
        uint i;
        for (i=0; i<owners.length; i++)
            if (confirmations[transactionId][owners[i]]) {
                confirmationsTemp[count] = owners[i];
                count += 1;
            }
        _confirmations = new address[](count);
        for (i=0; i<count; i++)
            _confirmations[i] = confirmationsTemp[i];
    }

    /// @dev Returns list of transaction IDs in defined range.
    /// @param from Index start position of transaction array.
    /// @param to Index end position of transaction array.
    /// @param pending Include pending transactions.
    /// @param executed Include executed transactions.
    /// @return Returns array of transaction IDs.
    function getTransactionIds(uint from, uint to, bool pending, bool executed)
        public
        constant
        returns (uint[] _transactionIds)
    {
        uint[] memory transactionIdsTemp = new uint[](transactionCount);
        uint count = 0;
        uint i;
        for (i=0; i<transactionCount; i++)
            if (   pending && !transactions[i].executed
                || executed && transactions[i].executed)
            {
                transactionIdsTemp[count] = i;
                count += 1;
            }
        _transactionIds = new uint[](to - from);
        for (i=from; i<to; i++)
            _transactionIds[i - from] = transactionIdsTemp[i];
    }
}

/// @title Multisignature wallet with daily limit - Allows an owner to withdraw a daily limit without multisig.
/// @author Stefan George - <stefan.george@consensys.net>
contract MultiSigWalletWithDailyLimit is MultiSigWallet {

    event DailyLimitChange(uint dailyLimit);

    uint public dailyLimit;
    uint public lastDay;
    uint public spentToday;

    /*
     * Public functions
     */
    /// @dev Contract constructor sets initial owners, required number of confirmations and daily withdraw limit.
    /// @param _owners List of initial owners.
    /// @param _required Number of required confirmations.
    /// @param _dailyLimit Amount in wei, which can be withdrawn without confirmations on a daily basis.
    function MultiSigWalletWithDailyLimit(address[] _owners, uint _required, uint _dailyLimit)
        public
        MultiSigWallet(_owners, _required)
    {
        dailyLimit = _dailyLimit;
    }

    /// @dev Allows to change the daily limit. Transaction has to be sent by wallet.
    /// @param _dailyLimit Amount in wei.
    function changeDailyLimit(uint _dailyLimit)
        public
        onlyWallet
    {
        dailyLimit = _dailyLimit;
        DailyLimitChange(_dailyLimit);
    }

    /// @dev Allows anyone to execute a confirmed transaction or ether withdraws until daily limit is reached.
    /// @param transactionId Transaction ID.
    function executeTransaction(uint transactionId)
        public
        notExecuted(transactionId)
    {
        Transaction tx = transactions[transactionId];
        bool confirmed = isConfirmed(transactionId);
        if (confirmed || tx.data.length == 0 && isUnderLimit(tx.value)) {
            tx.executed = true;
            if (!confirmed)
                spentToday += tx.value;
            if (tx.destination.call.value(tx.value)(tx.data))
                Execution(transactionId);
            else {
                ExecutionFailure(transactionId);
                tx.executed = false;
                if (!confirmed)
                    spentToday -= tx.value;
            }
        }
    }

    /*
     * Internal functions
     */
    /// @dev Returns if amount is within daily limit and resets spentToday after one day.
    /// @param amount Amount to withdraw.
    /// @return Returns if amount is under daily limit.
    function isUnderLimit(uint amount)
        internal
        returns (bool)
    {
        if (now > lastDay + 24 hours) {
            lastDay = now;
            spentToday = 0;
        }
        if (spentToday + amount > dailyLimit || spentToday + amount < spentToday)
            return false;
        return true;
    }

    /*
     * Web3 call functions
     */
    /// @dev Returns maximum withdraw amount.
    /// @return Returns amount.
    function calcMaxWithdraw()
        public
        constant
        returns (uint)
    {
        if (now > lastDay + 24 hours)
            return dailyLimit;
        return dailyLimit - spentToday;
    }
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"owners","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"revokeConfirmation","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"confirmations","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"calcMaxWithdraw","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"pending","type":"bool"},{"name":"executed","type":"bool"}],"name":"getTransactionCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"dailyLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lastDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"isConfirmed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"getConfirmationCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"transactions","outputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"},{"name":"executed","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getOwners","outputs":[{"name":"","type":"address[]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"},{"name":"pending","type":"bool"},{"name":"executed","type":"bool"}],"name":"getTransactionIds","outputs":[{"name":"_transactionIds","type":"uint256[]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"getConfirmations","outputs":[{"name":"_confirmations","type":"address[]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"transactionCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_required","type":"uint256"}],"name":"changeRequirement","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"confirmTransaction","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"submitTransaction","outputs":[{"name":"transactionId","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_dailyLimit","type":"uint256"}],"name":"changeDailyLimit","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MAX_OWNER_COUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"required","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"newOwner","type":"address"}],"name":"replaceOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"executeTransaction","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"spentToday","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"},{"name":"_dailyLimit","type":"uint256"}],"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"dailyLimit","type":"uint256"}],"name":"DailyLimitChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Confirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Revocation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Submission","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Execution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"ExecutionFailure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerRemoval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"required","type":"uint256"}],"name":"RequirementChange","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405260405161163038038061163083398101604052805160805160a05191909201919082826000825182603282118061003a57508181115b80610043575080155b8061004c575081155b1561005657610002565b600092505b84518310156100ce576002600050600086858151811015610002576020908102909101810151600160a060020a031682528101919091526040016000205460ff16806100c45750848381518110156100025790602001906020020151600160a060020a03166000145b1561015357610002565b845160038054828255600082905290917fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b918201916020890182156101cd579160200282015b828111156101cd5782518254600160a060020a0319166c0100000000000000000000000091820291909104178255602090920191600190910190610114565b600160026000506000878681518110156100025790602001906020020151600160a060020a0316815260200190815260200160002060006101000a81548160ff02191690837f010000000000000000000000000000000000000000000000000000000000000090810204021790555060019092019161005b565b506101f39291505b80821115610213578054600160a060020a03191681556001016101d5565b505050600492909255505050600655506114199050806102176000396000f35b509056606060405236156101325760e060020a6000350463025e7c278114610180578063173825d9146101b257806320ea8d86146101df5780632f54bf6e146102135780633411c81c146102335780634bc9fdc214610260578063547415251461028357806367eeba0c146102f75780636b0c932d146103055780637065cb4814610313578063784547a71461033e5780638b51d13f1461034e5780639ace38c2146103c2578063a0e67e2b146103fd578063a8abe69a1461046e578063b5dc40c31461054d578063b77bf60014610659578063ba51a6df14610667578063c01a8c8414610693578063c6427474146106a3578063cea0862114610714578063d74f8edd1461073f578063dc8452cd1461074c578063e20056e61461075a578063ee22610b1461078a578063f059cf2b1461079a575b6107a8600034111561017e57604080513481529051600160a060020a033316917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b565b34610002576107aa60043560038054829081101561000257600091825260209091200154600160a060020a0316905081565b34610002576107a8600435600030600160a060020a031633600160a060020a0316141515610a1a57610002565b34610002576107a8600435600160a060020a033390811660009081526002602052604090205460ff161515610c5f57610002565b34610002576107c660043560026020526000908152604090205460ff1681565b34610002576001602090815260043560009081526040808220909252602435815220546107c69060ff1681565b34610002576107da6007546000906201518001421115610d0f5750600654610d18565b34610002576107da6004356024356000805b600554811015610d1b578380156102be575060008181526020819052604090206003015460ff16155b806102e257508280156102e2575060008181526020819052604090206003015460ff165b156102ef57600191909101905b600101610295565b34610002576107da60065481565b34610002576107da60075481565b34610002576107a860043530600160a060020a031633600160a060020a0316141515610d2257610002565b34610002576107c6600435610801565b34610002576107da6004356000805b600354811015610e52576000838152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16156103ba57600191909101905b60010161035d565b34610002576000602081905260043581526040902080546001820154600383015461087993600160a060020a03909316926002019060ff1684565b346100025760408051602080820183526000825260038054845181840281018401909552808552610923949283018282801561046257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610444575b50505050509050610d18565b34610002576109236004356024356044356064356040805160208181018352600080835283519182018452808252600554935192939192909182918059106104b35750595b9080825280602002602001820160405280156104ca575b509250600091508190505b600554811015610e58578580156104fe575060008181526020819052604090206003015460ff16155b806105225750848015610522575060008181526020819052604090206003015460ff165b156105455780838381518110156100025760209081029091010152600191909101905b6001016104d5565b34610002576109236004356040805160208181018352600080835283519182018452808252600354935192939192909182918059106105895750595b9080825280602002602001820160405280156105a0575b509250600091508190505b600354811015610ecd576000858152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561065157600380548290811015610002576000918252602090912001548351600160a060020a03909116908490849081101561000257600160a060020a03909216602092830290910190910152600191909101905b6001016105ab565b34610002576107da60055481565b34610002576107a86004355b30600160a060020a031633600160a060020a0316141515610f4957610002565b34610002576107a8600435610974565b3461000257604080516020600460443581810135601f81018490048402850184019095528484526107da948235946024803595606494929391909201918190840183828082843750949650505050505050600061096d848484600083600160a060020a0381161515610b6157610002565b34610002576107a860043530600160a060020a031633600160a060020a031614151561101457610002565b34610002576107da603281565b34610002576107da60045481565b34610002576107a8600435602435600030600160a060020a031633600160a060020a031614151561104f57610002565b34610002576107a86004356109f7565b34610002576107da60085481565b005b60408051600160a060020a039092168252519081900360200190f35b604080519115158252519081900360200190f35b60408051918252519081900360200190f35b600084815260208190526040902092506111c2845b600080805b600354811015610872576000848152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561086357600191909101905b600454821415610e4a57600192505b5050919050565b60408051600160a060020a03861681526020810185905282151560608201526080918101828152845460026000196101006001841615020190911604928201839052909160a0830190859080156109115780601f106108e657610100808354040283529160200191610911565b820191906000526020600020905b8154815290600101906020018083116108f457829003601f168201915b50509550505050505060405180910390f35b60405180806020018281038252838181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050019250505060405180910390f35b905061100d815b33600160a060020a03811660009081526002602052604090205460ff161515610fb457610002565b6000858152600160208181526040808420600160a060020a0333168086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a3610ce6855b6000818152602081905260408120600301548190839060ff16156107ec57610002565b600160a060020a038216600090815260026020526040902054829060ff161515610a4357610002565b600160a060020a0383166000908152600260205260408120805460ff1916905591505b60035460001901821015610b085782600160a060020a0316600360005083815481101561000257600091825260209091200154600160a060020a03161415610b3857600380546000198101908110156100025760009182526020909120015460038054600160a060020a039092169184908110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b600380546000198101808355919082908015829011610b4357600083815260209020610b43918101908301610c0e565b600190910190610a66565b505060035460045411159150610c26905057600354610c2690610673565b60055460408051608081018252878152602080820188815282840188815260006060850181905286815280845294852084518154606060020a91820291909104600160a060020a031990911617815591516001808401919091559051805160028085018054818a5298879020999b5096989497601f9481161561010002600019011604830185900484019490939291019083901061137e57805160ff19168380011785555b506113ae9291505b80821115610c225760008155600101610c0e565b5090565b604051600160a060020a038416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a2505050565b600082815260016020908152604080832033600160a060020a038116855292529091205483919060ff161515610cee57610002565b6000858152600160209081526040808320600160a060020a0333168085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35b505b50505050565b600084815260208190526040902060030154849060ff1615610c9457610002565b50600854600654035b90565b5092915050565b600160a060020a038116600090815260026020526040902054819060ff1615610d4a57610002565b81600160a060020a0381161515610d6057610002565b6003546004546001909101906032821180610d7a57508181115b80610d83575080155b80610d8c575081155b15610d9657610002565b600160a060020a0385166000908152600260205260409020805460ff19166001908117909155600380549182018082559091908281838015829011610dec57600083815260209020610dec918101908301610c0e565b50505060009283525060208220018054600160a060020a031916606060020a88810204179055604051600160a060020a038716917ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d91a25050505050565b600101610806565b50919050565b878703604051805910610e685750595b908082528060200260200182016040528015610e7f575b5093508790505b86811015610ec2578281815181101561000257906020019060200201518489830381518110156100025760209081029091010152600101610e86565b505050949350505050565b81604051805910610edb5750595b908082528060200260200182016040528015610ef2575b509350600090505b81811015610f41578281815181101561000257906020019060200201518482815181101561000257600160a060020a03909216602092830290910190910152600101610efa565b505050919050565b600354816032821180610f5b57508181115b80610f64575080155b80610f6d575081155b15610f7757610002565b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b6000828152602081905260409020548290600160a060020a03161515610fd957610002565b600083815260016020908152604080832033600160a060020a038116855292529091205484919060ff161561099c57610002565b9392505050565b60068190556040805182815290517fc71bdc6afaf9b1aa90a7078191d4fc1adf3bf680fca3183697df6b0dc226bca29181900360200190a150565b600160a060020a038316600090815260026020526040902054839060ff16151561107857610002565b600160a060020a038316600090815260026020526040902054839060ff16156110a057610002565b600092505b60035483101561111d5784600160a060020a0316600360005084815481101561000257600091825260209091200154600160a060020a031614156111b7578360036000508481548110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b600160a060020a03808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b6001909201916110a5565b9150818061123157506002808401546000196101006001831615020116041580156112315750600183015461123190600754600090620151800142111561120d574260075560006008555b600654600854830111806112245750600854828101105b1561141057506000611414565b15610ce85760038301805460ff1916600117905581151561125b5760018301546008805490910190555b825460018085015460405160028088018054600160a060020a039096169593949093839285926000199083161561010002019091160480156112de5780601f106112b3576101008083540402835291602001916112de565b820191906000526020600020905b8154815290600101906020018083116112c157829003601f168201915b505091505060006040518083038185876185025a03f1925050501561132d5760405184907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a2610ce8565b60405184907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038301805460ff19169055811515610ce8575050600101546008805491909103905550565b82800160010185558215610c06579182015b82811115610c06578251826000505591602001919060010190611390565b5050606091909101516003909101805460ff191660f860020a9283029290920491909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b5060015b91905056000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000085e6ecb2b3511bffe4edf4cd3b00caf3802702e100000000000000000000000000a245706741d7949c82356ef9955dd3f7bfc21700000000000000000000000028bbf0ef519f72cafea000eaf64ed679dbdda738

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.