Sponsored:   Ubex.com - Crypto Valley IAB member. Traded on Bitforex, Bitmart, Btc-Alpha, IDEX, Bilaxy, soon on Lbank.
Contract Overview | Kyber_MultiSig
Balance: 79,843.650293101998190977 Ether
Ether Value: $19,569,678.69 (@ $245.10/ETH)
Transactions: 762 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0xa0dbdadcbcc540be9bf4e9a812035eb1289dad73at txn 0x1655512929f985c24e0d75b26214e86ced263b46463b0b300f8d672bdf6049af
Token Balance:
 Latest 25 txns From a total of 762 Transactions

TxHash Age From To Value [TxFee]
0xa541cf82e210f34abda75274063fccf745109d7aa50f39448edc50376bbacda62 days 7 hrs ago0xd0643bc0d0c879f175556509dbcee9373379d5c3  IN   Kyber_MultiSig0 Ether0.000557914
0xa1d1525d48f79515aa4d98d4e8c819acfa9185bdfa074a05a01ffc0878bc31182 days 8 hrs ago0x449baf9413c60cd24a8c1c6010729c84b9d5139b  IN   Kyber_MultiSig0 Ether0.000759878
0x26e7c5d73e1e916d1bcc4fcb3d2eabc91a2c5aed8768a83d6ff7e2624075f0a82 days 8 hrs ago0x8180a5ca4e3b94045e05a9313777955f7518d757  IN   Kyber_MultiSig0 Ether0.002937186
0x3181b7f13b885a95be91d4d0553d28bb66dbbc68179feebf7bd9763fa09cbbe22 days 16 hrs ago0x449baf9413c60cd24a8c1c6010729c84b9d5139b  IN   Kyber_MultiSig0 Ether0.001440936
0xa8150cf62b84d316363492a2e8cb6e66bc25ac267f5a6058560965e5be4576d62 days 16 hrs ago0xd0643bc0d0c879f175556509dbcee9373379d5c3  IN   Kyber_MultiSig0 Ether0.000373394
0x9ec67a71410568e791829dc9817fcce9573364d4f1e4f92537468260c73765d02 days 16 hrs ago0x8180a5ca4e3b94045e05a9313777955f7518d757  IN   Kyber_MultiSig0 Ether0.003698646
0x65a9283991c0ebf2efdf8e16f87426ebb0db20084e224ab1b97936d15d9b1f0c2 days 16 hrs ago0x8180a5ca4e3b94045e05a9313777955f7518d757  IN   Kyber_MultiSig0 Ether0.001409008
0x4a50d3caa09c376900b1e2a97ddaa244e080173244866835b5cbc00b49cec32f2 days 16 hrs ago0x449baf9413c60cd24a8c1c6010729c84b9d5139b  IN   Kyber_MultiSig0 Ether0.001440936
0x3a50e64966f38e58ca54c4b764f3dcd6904d17bb9301854b00385a64c09dca622 days 16 hrs ago0x449baf9413c60cd24a8c1c6010729c84b9d5139b  IN   Kyber_MultiSig0 Ether0.001440936
0xdd982e5c137c589597d967b03e7571df3cb98b37e3b5b94780524b6f649335aa2 days 16 hrs ago0x449baf9413c60cd24a8c1c6010729c84b9d5139b  IN   Kyber_MultiSig0 Ether0.001440936
0xe1521bd593e0df44a0d9f4b0c5cca3381abde6d0b19df3fa95c3b289dfd74c8d2 days 16 hrs ago0x449baf9413c60cd24a8c1c6010729c84b9d5139b  IN   Kyber_MultiSig0 Ether0.001440936
0x590cc3c3f33149f6a3852cbe43e16d8b4bf8cad69d8937bd44d6dcfcec9e4b1f2 days 16 hrs ago0x449baf9413c60cd24a8c1c6010729c84b9d5139b  IN   Kyber_MultiSig0 Ether0.00031157
0xf997b863c6335810af12658011a4260ac40f4847aae1ecc6df31fde233ab94da2 days 16 hrs ago0x449baf9413c60cd24a8c1c6010729c84b9d5139b  IN   Kyber_MultiSig0 Ether0.00031157
0x54b74d26b9d877e892e712d250ba8c8452a1a4dc152f71b128ee2c2d51a882442 days 16 hrs ago0x449baf9413c60cd24a8c1c6010729c84b9d5139b  IN   Kyber_MultiSig0 Ether0.00031157
0x8b667cb90b28c59da8a0a99d93499f1254fef0c175ac5da656ef861031f97b362 days 17 hrs ago0x449baf9413c60cd24a8c1c6010729c84b9d5139b  IN   Kyber_MultiSig0 Ether0.001440936
0xcf3c06d53542bdb2c66c0ec9c9648c54eab490667547103b229d91fdbc1467163 days 8 hrs ago0x8180a5ca4e3b94045e05a9313777955f7518d757  IN   Kyber_MultiSig0 Ether0.000426736
0x8c4b5c2676803a2c32255413a96f6acc27355d8f680ed527a90cae11fd1b3d0e3 days 8 hrs ago0x8180a5ca4e3b94045e05a9313777955f7518d757  IN   Kyber_MultiSig0 Ether0.000426736
0xad711b5e931e58e38a3538e63d5b607b3c380f61f4cb48e926bbdf08c30414f03 days 8 hrs ago0x8180a5ca4e3b94045e05a9313777955f7518d757  IN   Kyber_MultiSig0 Ether0.000426736
0xb43a0cb861175cd28f63d8ab0b329f897533754876a8a355756c58b57e8e1b6a3 days 8 hrs ago0x8180a5ca4e3b94045e05a9313777955f7518d757  IN   Kyber_MultiSig0 Ether0.000426736
0x542bfdca9972a8277bb1f22e3c2408534ccbc99ff75c53143b9778b7431df5a83 days 8 hrs ago0xd0643bc0d0c879f175556509dbcee9373379d5c3  IN   Kyber_MultiSig0 Ether0.001232882
0x7667b29d9132d105ecf5f22ba83d19532b0eea26ca6637a021febf37ff927e6a3 days 8 hrs ago0x8180a5ca4e3b94045e05a9313777955f7518d757  IN   Kyber_MultiSig0 Ether0.000426736
0xe0682156ed3dc1395c5fd4701519927463f14d72a583d5a20e3c64faa9e5de683 days 8 hrs ago0xd0643bc0d0c879f175556509dbcee9373379d5c3  IN   Kyber_MultiSig0 Ether0.001232882
0x24539d246101a26239dc4d686b096e0cf4485c1a1bb1b5bc7550452e5a41e1bf3 days 8 hrs ago0xd0643bc0d0c879f175556509dbcee9373379d5c3  IN   Kyber_MultiSig0 Ether0.001232882
0x411bd5a946af917a5a69c261e7f185cf6e7bc2bd8d89f6126c00500bcf0995623 days 8 hrs ago0xd0643bc0d0c879f175556509dbcee9373379d5c3  IN   Kyber_MultiSig0 Ether0.001232882
0x33e6e3e940c925e641dbbe7ca7c664115e2ed991029f40c179afd2f55698d0c23 days 8 hrs ago0xd0643bc0d0c879f175556509dbcee9373379d5c3  IN   Kyber_MultiSig0 Ether0.001232882
[ 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
0xa541cf82e210f34abda75274063fccf745109d7aa50f39448edc50376bbacda663739632 days 7 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x008024771614f4290696b63ba3dd3a1ceb34d4d9800 Ether
0x64b7d131815984b209f92f9ab86972619ceb8feea6de8a330fc304fa89457bf463613104 days 10 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x008024771614f4290696b63ba3dd3a1ceb34d4d9500 Ether
0x5bcff034da58ae0b9c1b21dfa20372eba765a5abca43323c5aed6168cc10e95263531475 days 18 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x008024771614f4290696b63ba3dd3a1ceb34d4d9500 Ether
0x11d2da61cef1fd9c15131245bbfbcfae58860fe0008ba213e40903d541b0ae4f63312439 days 8 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x55193c0fbf5921d4d91f26cc8cf84f5d72c6e50d355.450237 Ether
0x2243ac63ec321215dd898ec587c4a69fa5b0505786c83af26455ef9c67b77dec626937319 days 16 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x787b7b915bb1aecece3dce2491915b57ce69c364353.1073446328 Ether
0xd56c874692c575f4c33b1675ee32a497d364fa07ea3985b20787f6fa9b1074dc625895121 days 10 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x008024771614f4290696b63ba3dd3a1ceb34d4d9300 Ether
0xf6ab23a3d2c1e0d1c916734023b40f6c1c8bb034c65c26d8b6d648d5d9bf52f0622232727 days 15 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x21357b3dcb7ae07da23a708dbbd9a2340001a3f441.5672667 Ether
0x92f53f4403a65972f13974d622f32a6032a44bb90682e9d0642accad335615bf620354430 days 19 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x008024771614f4290696b63ba3dd3a1ceb34d4d9400 Ether
0x72aa5bc108ebdf05756c87f49a85e4411f4ed1f465b8042f7f78b7b969d49a6a619783831 days 18 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x89f7ef23809b7c9bf8fda41a376e5251f96236bd36.7579489 Ether
0xe30c122c2c47ea6a84fa27f014cd990a58d812f66dd94ce46166a0b7b1eea76d616274737 days 17 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x008024771614f4290696b63ba3dd3a1ceb34d4d9400 Ether
0x9875a7264d875a13af6c05249202dee7fa7c4a9dc34db50fc47f860f9f7671d2603727758 days 21 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x5dff60f873a049a5f05d35780452e78f5aaa57d81,999 Ether
0x479dc6bdd48837f934de4f1c31680888cfc3966abe888a338c68f8e986127cd3603720858 days 21 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x5dff60f873a049a5f05d35780452e78f5aaa57d81 Ether
0xfcb145425e03e10e6225b97b742a6b2181f99e2c749f9bc638b5fe5bb1fbb8f2594559674 days 9 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x9a56f1cfa93d64db202f7f2a99f0d129b2ad0180100 Ether
0x085d19fc1657a078326adc55bab715e78c499bf8e482e9d803460b4e45bd9cad594558574 days 9 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x251461e0c588114aa07474cd8b577366636e9aa911.1936957 Ether
0xee5bd8351cbca4e664615b20787ccf0a36b56f0956d6a2475337940ad166a80c590491681 days 9 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500xfdf28bf25779ed4ca74e958d54653260af604c2065 Ether
0xb20ab3337a25a16c5ec0cdee2c67b6be871ab009c6fc78c49dce2cbeaa4ea45b589839182 days 12 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500xecca965ea548a4ea57479ef6a89155ffa9b1095d500 Ether
0xbd445f7f882b00c90053a0e8a267c950489ff2e3300f30fa65fd7b6a7679e7ea589837482 days 12 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x9a56f1cfa93d64db202f7f2a99f0d129b2ad0180100 Ether
0x6784cdf98b1e1b79f7d35cb6155bf5de149323f05ede702f3d4df7d7559ae329589762782 days 15 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500xcc3a572c4d49eeabd53154a59779f7eb6da912a955.96 Ether
0x9f52696d63b3ecfe4e942804c14f8dc6758e50d12d48a2d52774aae73efee407586848987 days 15 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x787b7b915bb1aecece3dce2491915b57ce69c364300 Ether
0x2d195291a948a9c34639a6d5e48ea0f04b89e955aea5ed4ad8f49b821e4fa02b5784550102 days 1 hr ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500xcf6c378a19c9cd0236b953c1eebaa82550db6825166.38 Ether
0x172659bbefc49510305ac621b56c77ff222bf3b550cd8954d38cd90b68efe3195729821111 days 17 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500xcc3a572c4d49eeabd53154a59779f7eb6da912a941.67 Ether
0xd8d7ddc2a3536b961017e03200840bfd593d5306b5710bbc8eb015577f63c25e5627971129 days 18 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x787b7b915bb1aecece3dce2491915b57ce69c364400 Ether
0x2a14839220017c39d5c0c1f7b71e3c2a54d44452d9c42f77f33ba244be58d0875605617133 days 16 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500xffc4bb89185e6775cbc4a9ac10bb5298d0157cd2200 Ether
0x74bf8c176dc14089273690519b5ceaba03d7fdc3839107f9daf0afb6ca6d04a85599724134 days 17 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500x053be2218a888ad0aec995d2273396ebb90a566640 Ether
0xfdfd59975140efc7ec92dba85a1e35a549560fbc0dae8c68b93ddc6d8797e3295538204145 days 11 hrs ago0x3eb01b3391ea15ce752d01cf3d3f09dec596f6500xfdf28bf25779ed4ca74e958d54653260af604c20300 Ether
[ Download CSV Export  ] 
Contract Name: MultiSigWalletWithDailyLimit
Compiler Text: 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 - <[email protected]>
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 - <[email protected]>
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 transaction Difficulty Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.