Sponsored:   LH-CRYPTO - 200 instruments (BTC, EUR, GOLD, OIL, SHARES). Leverage up to 1:500. OPEN ACCOUNT
Contract Overview
Balance: 1,018.138419572264459201 Ether
Ether Value: $135,962.20 (@ $133.54/ETH)
Transactions: 1249 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0xed5a90efa30637606ddaf4f4b3d42bb49d79bd4eat txn 0xbded6390a03e2bbfee790a5ccc1bcb5aa13f029d3b359a3cae52b9d46373db1e
Token Balance:
 Latest 25 transactions from a total of 1249 transactions

TxHash Age From To Value [TxFee]
0x25a77ff555f05c8eb8c7b274e1593ef306a2e1b7d9d0c7f5c67eff9eedef78014 days 2 hrs ago0x90c1bd18caf3867d3f7474e1ea55a27a4310f418  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.000159988
0x0174babef62937253c1d3a7899144430943b333c12a0f834c03d7590b4803a1718 days 3 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.002191392
0xf2a8d715a2d064421f89f93064a531ae0dd9584033e372adb57fe57b5b56b9b821 days 10 hrs ago0x3203b00f1a224ca20ce791816e32a6eb5a474692  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.00156871
0x153ff8ec850a2809ab18f1b5c5bfe6421a229ac8a3eea78afce75bf51369c3ec54 days 10 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.00581383
0xa51343a7aa208b71d6e8a3f77e0e70c4ac0cf4838072834b819de4c2f57847c256 days 19 hrs ago0x3203b00f1a224ca20ce791816e32a6eb5a474692  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.000626112
0xe273705abdd88aa37c9415d876ca93a03760e7fa348b415658aea48eaf47509b56 days 20 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.004272406
0x4326c8f60f5b98ced6997537e654db11f6f413451101e7a4ec5491e5937fe68d57 days 10 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.00632383
0xf946e2c0aad80cbd16ea3b8e20014924941d8b589239258202f30c565556d37868 days 18 hrs ago0x3203b00f1a224ca20ce791816e32a6eb5a474692  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.00039132
0x32e7bc95f82f3d09b50b9a93724b9925ae6589729a67aec4f31814e376c0aded68 days 21 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.00253407
0xf788141315118a377f92ce416e1959f40eca11ef3e19cdb1c4571f3c3c4350f587 days 8 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.00587985
0x365f4c4e176973a8a007114dce55371ff6eafb3de83120b5cdcf841bb87aec0e109 days 7 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.00136796
0x34a1bc2f9e940b33cf1d729e196668af457c208f30c2dbb6a99a034a98db56d9110 days 11 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.00125659
0x1809e07a8732f19bf3f17043a549e419b5897a5894277ae3b04704cafa1a6f5b110 days 11 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.00170995
0xd7af24bd49e1c999d7b959118be984566fa72f8f32d1257445c550d5a5ae7add113 days 10 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.001538955
0x6443e65d824a4d1bb83d1311dc828a7c30cd73e7964c2b35ad26b6b055ac8e5f159 days 13 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.00444587
0x08648e468a504e9e3076afc620677132b7916673a9de5aaa484a05df843ade7b162 days 20 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.00410388
0xe161da8bd7dc0219d0382109d437993196b185432a81c7b5553a2cb30d7b89c4163 days 21 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.004958855
0x9038e0ff344d27e0cd154eb6e65f5a1727b896f925c618b5661c31b8618e75ae201 days 7 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.003518452
0x8d5a0255eeed6e4ccca0e49026535fca2721b778d82eedaa6a24ef3fbd117a08201 days 7 hrs ago0x3203b00f1a224ca20ce791816e32a6eb5a474692  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.00039132
0x1b167cbcc0b248c73b31e9bb7cd11b71ae3535999ca794bded1185f7748c1aa6201 days 10 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.002890157
0x71ea4620ecd43eea242cb08fd1162d57b1e25b1ea7c4ca3914708dbceb1d0aec201 days 19 hrs ago0x3203b00f1a224ca20ce791816e32a6eb5a474692  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.000482952
0xc0069faa155d96faf10c430602120f7b38f94ae92c599f0dd3a2495b9783361e201 days 19 hrs ago0x3203b00f1a224ca20ce791816e32a6eb5a474692  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.00032184
0x9d7f308c22ea11b8391a7a171238446d2b69a1aad7e53979cec5b006491a27d8201 days 20 hrs ago0x3203b00f1a224ca20ce791816e32a6eb5a474692  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.000512793
0x922e2d851b7004b903637124d9fef2e2fea22c3bdab748ee6bfe475adf2861f4214 days 2 hrs ago0x9b0a5fd9c6d94305aba74a59180bbdd441108128  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.000743724
0x9970da4e4faf0839a57d81662678b237daa3c0d5c4c7fb0b90d77d4b67d29621215 days 14 hrs ago0x3203b00f1a224ca20ce791816e32a6eb5a474692  IN   0xb4b67fba9949105b89dd5785c6d99e452ac2888e0 Ether0.000078264
[ 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
0x0174babef62937253c1d3a7899144430943b333c12a0f834c03d7590b4803a17663646618 days 3 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c350 Ether
0x153ff8ec850a2809ab18f1b5c5bfe6421a229ac8a3eea78afce75bf51369c3ec641385154 days 10 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 Ether
0xa51343a7aa208b71d6e8a3f77e0e70c4ac0cf4838072834b819de4c2f57847c2639947056 days 19 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c100 Ether
0x4326c8f60f5b98ced6997537e654db11f6f413451101e7a4ec5491e5937fe68d639553857 days 10 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 Ether
0xf946e2c0aad80cbd16ea3b8e20014924941d8b589239258202f30c565556d378632687168 days 18 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c300 Ether
0xf788141315118a377f92ce416e1959f40eca11ef3e19cdb1c4571f3c3c4350f5621631687 days 8 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x952473fc732069dd774a46d5ae2bab12a4fc422a20 Ether
0x365f4c4e176973a8a007114dce55371ff6eafb3de83120b5cdcf841bb87aec0e6086292109 days 7 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 Ether
0x1809e07a8732f19bf3f17043a549e419b5897a5894277ae3b04704cafa1a6f5b6079417110 days 11 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 Ether
0xd7af24bd49e1c999d7b959118be984566fa72f8f32d1257445c550d5a5ae7add6061813113 days 10 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 Ether
0x6443e65d824a4d1bb83d1311dc828a7c30cd73e7964c2b35ad26b6b055ac8e5f5791296159 days 13 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 Ether
0x08648e468a504e9e3076afc620677132b7916673a9de5aaa484a05df843ade7b5772493162 days 20 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 Ether
0xe161da8bd7dc0219d0382109d437993196b185432a81c7b5553a2cb30d7b89c45766500163 days 21 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 Ether
0x8d5a0255eeed6e4ccca0e49026535fca2721b778d82eedaa6a24ef3fbd117a085554327201 days 7 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c100 Ether
0x71ea4620ecd43eea242cb08fd1162d57b1e25b1ea7c4ca3914708dbceb1d0aec5551582201 days 19 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c19.5 Ether
0xc0069faa155d96faf10c430602120f7b38f94ae92c599f0dd3a2495b9783361e5551551201 days 19 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c0.25 Ether
0x9d7f308c22ea11b8391a7a171238446d2b69a1aad7e53979cec5b006491a27d85551369201 days 20 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x3203b00f1a224ca20ce791816e32a6eb5a4746920.25 Ether
0x922e2d851b7004b903637124d9fef2e2fea22c3bdab748ee6bfe475adf2861f45480730214 days 2 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c11 Ether
0x9970da4e4faf0839a57d81662678b237daa3c0d5c4c7fb0b90d77d4b67d296215472003215 days 14 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c300 Ether
0x2ca64d4323eb0e29884ebbe3af972c5a6a52d399f8acba5a3c1b6d1f6ff03efd5387120229 days 21 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 Ether
0x0a62286e83d39f3960480d8711ee90db59a19262f87f837908ac545e9aaae9395375434231 days 20 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 Ether
0x0fed852ae8f353ac9b8a3d7644f2aa2b2af73bbbad3868b7c17a69d353b3b2415368768232 days 22 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 Ether
0x1cde0340d645c78a42ef207f675ad49295ac21d3ed179718fe8d46a94867e51f5258983251 days 8 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 Ether
0x59d302d668fe74e9b3b6de656fb40872285c2dbf5c34c8210da9e73d3c56527f5173593265 days 20 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 Ether
0xf2ae51c8a96e83899e2cb24a99c59b3c65ff97e99ce04c1b5a393223c966f57a5168306266 days 17 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0xf79364ed2cb64c8c984c759ff755d66c693bc15f56 Ether
0xd24e6408864f6fa21994489a78c1e53c51869849475d3017ea5b8f8e19e9f8a55144786270 days 18 hrs ago0xb4b67fba9949105b89dd5785c6d99e452ac2888e0x87ed6369212814c286ebfe56dba741e9e5eda15c20 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;
        if (dailyLimit < spentToday)
            return 0;
        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
606060405260405161164438038061164483398101604052805160805160a05191909201919082826000825182603282118061003a57508181115b80610043575080155b8061004c575081155b1561005657610002565b600092505b84518310156100ce576002600050600086858151811015610002576020908102909101810151600160a060020a031682528101919091526040016000205460ff16806100c45750848381518110156100025790602001906020020151600160a060020a03166000145b1561015357610002565b845160038054828255600082905290917fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b918201916020890182156101cd579160200282015b828111156101cd5782518254600160a060020a0319166c0100000000000000000000000091820291909104178255602090920191600190910190610114565b600160026000506000878681518110156100025790602001906020020151600160a060020a0316815260200190815260200160002060006101000a81548160ff02191690837f010000000000000000000000000000000000000000000000000000000000000090810204021790555060019092019161005b565b506101f39291505b80821115610213578054600160a060020a03191681556001016101d5565b5050506004929092555050506006555061142d9050806102176000396000f35b509056606060405236156101325760e060020a6000350463025e7c278114610180578063173825d9146101b257806320ea8d86146101df5780632f54bf6e146102135780633411c81c146102335780634bc9fdc214610260578063547415251461028357806367eeba0c146102f75780636b0c932d146103055780637065cb4814610313578063784547a71461033e5780638b51d13f1461034e5780639ace38c2146103c2578063a0e67e2b146103fd578063a8abe69a1461046e578063b5dc40c31461054d578063b77bf60014610659578063ba51a6df14610667578063c01a8c8414610693578063c6427474146106a3578063cea0862114610714578063d74f8edd1461073f578063dc8452cd1461074c578063e20056e61461075a578063ee22610b1461078a578063f059cf2b1461079a575b6107a8600034111561017e57604080513481529051600160a060020a033316917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b565b34610002576107aa60043560038054829081101561000257600091825260209091200154600160a060020a0316905081565b34610002576107a8600435600030600160a060020a031633600160a060020a0316141515610a1a57610002565b34610002576107a8600435600160a060020a033390811660009081526002602052604090205460ff161515610c5f57610002565b34610002576107c660043560026020526000908152604090205460ff1681565b34610002576001602090815260043560009081526040808220909252602435815220546107c69060ff1681565b34610002576107da6007546000906201518001421115610d1b5750600654610d18565b34610002576107da6004356024356000805b600554811015610d2f578380156102be575060008181526020819052604090206003015460ff16155b806102e257508280156102e2575060008181526020819052604090206003015460ff165b156102ef57600191909101905b600101610295565b34610002576107da60065481565b34610002576107da60075481565b34610002576107a860043530600160a060020a031633600160a060020a0316141515610d3657610002565b34610002576107c6600435610801565b34610002576107da6004356000805b600354811015610e66576000838152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16156103ba57600191909101905b60010161035d565b34610002576000602081905260043581526040902080546001820154600383015461087993600160a060020a03909316926002019060ff1684565b346100025760408051602080820183526000825260038054845181840281018401909552808552610923949283018282801561046257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610444575b50505050509050610d18565b34610002576109236004356024356044356064356040805160208181018352600080835283519182018452808252600554935192939192909182918059106104b35750595b9080825280602002602001820160405280156104ca575b509250600091508190505b600554811015610e6c578580156104fe575060008181526020819052604090206003015460ff16155b806105225750848015610522575060008181526020819052604090206003015460ff165b156105455780838381518110156100025760209081029091010152600191909101905b6001016104d5565b34610002576109236004356040805160208181018352600080835283519182018452808252600354935192939192909182918059106105895750595b9080825280602002602001820160405280156105a0575b509250600091508190505b600354811015610ee1576000858152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561065157600380548290811015610002576000918252602090912001548351600160a060020a03909116908490849081101561000257600160a060020a03909216602092830290910190910152600191909101905b6001016105ab565b34610002576107da60055481565b34610002576107a86004355b30600160a060020a031633600160a060020a0316141515610f5d57610002565b34610002576107a8600435610974565b3461000257604080516020600460443581810135601f81018490048402850184019095528484526107da948235946024803595606494929391909201918190840183828082843750949650505050505050600061096d848484600083600160a060020a0381161515610b6157610002565b34610002576107a860043530600160a060020a031633600160a060020a031614151561102857610002565b34610002576107da603281565b34610002576107da60045481565b34610002576107a8600435602435600030600160a060020a031633600160a060020a031614151561106357610002565b34610002576107a86004356109f7565b34610002576107da60085481565b005b60408051600160a060020a039092168252519081900360200190f35b604080519115158252519081900360200190f35b60408051918252519081900360200190f35b600084815260208190526040902092506111d6845b600080805b600354811015610872576000848152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561086357600191909101905b600454821415610e5e57600192505b5050919050565b60408051600160a060020a03861681526020810185905282151560608201526080918101828152845460026000196101006001841615020190911604928201839052909160a0830190859080156109115780601f106108e657610100808354040283529160200191610911565b820191906000526020600020905b8154815290600101906020018083116108f457829003601f168201915b50509550505050505060405180910390f35b60405180806020018281038252838181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050019250505060405180910390f35b9050611021815b33600160a060020a03811660009081526002602052604090205460ff161515610fc857610002565b6000858152600160208181526040808420600160a060020a0333168086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a3610ce6855b6000818152602081905260408120600301548190839060ff16156107ec57610002565b600160a060020a038216600090815260026020526040902054829060ff161515610a4357610002565b600160a060020a0383166000908152600260205260408120805460ff1916905591505b60035460001901821015610b085782600160a060020a0316600360005083815481101561000257600091825260209091200154600160a060020a03161415610b3857600380546000198101908110156100025760009182526020909120015460038054600160a060020a039092169184908110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b600380546000198101808355919082908015829011610b4357600083815260209020610b43918101908301610c0e565b600190910190610a66565b505060035460045411159150610c26905057600354610c2690610673565b60055460408051608081018252878152602080820188815282840188815260006060850181905286815280845294852084518154606060020a91820291909104600160a060020a031990911617815591516001808401919091559051805160028085018054818a5298879020999b5096989497601f9481161561010002600019011604830185900484019490939291019083901061139257805160ff19168380011785555b506113c29291505b80821115610c225760008155600101610c0e565b5090565b604051600160a060020a038416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a2505050565b600082815260016020908152604080832033600160a060020a038116855292529091205483919060ff161515610cee57610002565b6000858152600160209081526040808320600160a060020a0333168085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35b505b50505050565b600084815260208190526040902060030154849060ff1615610c9457610002565b50600854600654035b90565b6008546006541015610d0f57506000610d18565b5092915050565b600160a060020a038116600090815260026020526040902054819060ff1615610d5e57610002565b81600160a060020a0381161515610d7457610002565b6003546004546001909101906032821180610d8e57508181115b80610d97575080155b80610da0575081155b15610daa57610002565b600160a060020a0385166000908152600260205260409020805460ff19166001908117909155600380549182018082559091908281838015829011610e0057600083815260209020610e00918101908301610c0e565b50505060009283525060208220018054600160a060020a031916606060020a88810204179055604051600160a060020a038716917ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d91a25050505050565b600101610806565b50919050565b878703604051805910610e7c5750595b908082528060200260200182016040528015610e93575b5093508790505b86811015610ed6578281815181101561000257906020019060200201518489830381518110156100025760209081029091010152600101610e9a565b505050949350505050565b81604051805910610eef5750595b908082528060200260200182016040528015610f06575b509350600090505b81811015610f55578281815181101561000257906020019060200201518482815181101561000257600160a060020a03909216602092830290910190910152600101610f0e565b505050919050565b600354816032821180610f6f57508181115b80610f78575080155b80610f81575081155b15610f8b57610002565b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b6000828152602081905260409020548290600160a060020a03161515610fed57610002565b600083815260016020908152604080832033600160a060020a038116855292529091205484919060ff161561099c57610002565b9392505050565b60068190556040805182815290517fc71bdc6afaf9b1aa90a7078191d4fc1adf3bf680fca3183697df6b0dc226bca29181900360200190a150565b600160a060020a038316600090815260026020526040902054839060ff16151561108c57610002565b600160a060020a038316600090815260026020526040902054839060ff16156110b457610002565b600092505b6003548310156111315784600160a060020a0316600360005084815481101561000257600091825260209091200154600160a060020a031614156111cb578360036000508481548110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b600160a060020a03808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b6001909201916110b9565b91508180611245575060028084015460001961010060018316150201160415801561124557506001830154611245906007546000906201518001421115611221574260075560006008555b600654600854830111806112385750600854828101105b1561142457506000611428565b15610ce85760038301805460ff1916600117905581151561126f5760018301546008805490910190555b825460018085015460405160028088018054600160a060020a039096169593949093839285926000199083161561010002019091160480156112f25780601f106112c7576101008083540402835291602001916112f2565b820191906000526020600020905b8154815290600101906020018083116112d557829003601f168201915b505091505060006040518083038185876185025a03f192505050156113415760405184907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a2610ce8565b60405184907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038301805460ff19169055811515610ce8575050600101546008805491909103905550565b82800160010185558215610c06579182015b82811115610c065782518260005055916020019190600101906113a4565b5050606091909101516003909101805460ff191660f860020a9283029290920491909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b5060015b9190505600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000009f7dfab2222a473284205cddf08a677726d786a00000000000000000000000005210c4dcd7eb899a1274fd6471adec9896ae05aa0000000000000000000000001d805bc00b8fa3c96ae6c8fa97b2fd24b19a9801000000000000000000000000aca7bd07a8c207f7964261c2cf1e0fbfcff37836

 

View All
Block Age transaction Difficulty GasUsed 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.