Sponsored Link:   Qravity - the only blockchain entertainment production studio and distributor. Learn more.
Contract Overview | district0xMultiSig
Balance: 39,840.973878470837437369 Ether
Ether Value: $18,802,150.80 (@ $471.93/ETH)
Transactions: 138 txns
Misc
Address Watch: Add To Watch List
Contract Creator: 0xa0dbdadcbcc540be9bf4e9a812035eb1289dad73at txn 0xbdc3ca5a2d4654ada84277aad4430af8a236b31aea666e51b597d6c50a241b2e
Token Balances:
 Latest 25 txns from a total Of 138 transactions
View All

TxHash Age From To Value [TxFee]
0x7ebc12076dacd3f415cfba21288e7f872e5dad6b6b730ea6a294d4d324db02481 day 23 hrs ago0xa8dc2b53ecebeaa641ebb0601a69fbf936ee04f4  IN   district0xMultiSig0 Ether0.00078264
0x9b6121b0a8bc7a93a292fdec3c97683676c3c2d5bc941bcbf928694e695a07d51 day 23 hrs ago0x0e90d8f85fc3107df47d20444244feaa824d1082  IN   district0xMultiSig0 Ether0.00095963
0x18185ce90fa1d3d400140ef812d2acaba9396d5ee53e61ac423a94eea832c5304 days 10 mins ago0xa8dc2b53ecebeaa641ebb0601a69fbf936ee04f4  IN   district0xMultiSig0 Ether0.00156528
0xac133503985ee8ea1458a1d47f3938c7c8f605c494733362a317925d73da94f44 days 23 mins ago0x0e90d8f85fc3107df47d20444244feaa824d1082  IN   district0xMultiSig0 Ether0.0013709
0x451fe6c38aec5bac4ae3ca266081ed420c18383c51a6d4433a18c8b4f728de027 days 19 hrs ago0xa8dc2b53ecebeaa641ebb0601a69fbf936ee04f4  IN   district0xMultiSig0 Ether0.00206528
0x06f2260642253635ca52a01472aa6bbfe2c41996a3c5cf90f20de7e2161dc0757 days 19 hrs ago0xa8dc2b53ecebeaa641ebb0601a69fbf936ee04f4  IN   district0xMultiSig0 Ether0.00206528
0x47779bc843b7ca90c516973c346be8def5337cbc7925a578d615cad28500d1de7 days 20 hrs ago0x0e90d8f85fc3107df47d20444244feaa824d1082  IN   district0xMultiSig0 Ether0.00127143
0xb86726d9779d8920f1b437b687035c8e83158f418531a314eeefe85b3003b22b7 days 20 hrs ago0x0e90d8f85fc3107df47d20444244feaa824d1082  IN   district0xMultiSig0 Ether0.0013709
0x2eadaacd4c7831d95fff450f8da5d517e45ce2cb83f2af2d1b7c94a37b05a48a18 days 21 hrs ago0xa8dc2b53ecebeaa641ebb0601a69fbf936ee04f4  IN   district0xMultiSig0 Ether0.00156528
0x0835705992aedd6c662518430eb35b5f179677cfdba58d85eb0e88f7b319bd1318 days 21 hrs ago0x0e90d8f85fc3107df47d20444244feaa824d1082  IN   district0xMultiSig0 Ether0.001507286
0x0e91dde938e84e61fd55755fa102774f8fdf0fd35801a0bcff7fcaf823d64c1c21 days 21 hrs ago0xa8dc2b53ecebeaa641ebb0601a69fbf936ee04f4  IN   district0xMultiSig0 Ether0.00156528
0x1f874027c32446355500b45599f6da03803cb1e93181597f089acc79ba5ac64321 days 21 hrs ago0x0e90d8f85fc3107df47d20444244feaa824d1082  IN   district0xMultiSig0 Ether0.00205635
0xad8ae105ac9b7268ba7d8abad336316dfd931d6da34dc8b9d083aad457ce06c732 days 47 mins ago0xa8dc2b53ecebeaa641ebb0601a69fbf936ee04f4  IN   district0xMultiSig0 Ether0.00156528
0x527f8ad87f2bda73e7902728b15a841793e3549bcd983c0e5b1aac60504e595532 days 13 hrs ago0x0e90d8f85fc3107df47d20444244feaa824d1082  IN   district0xMultiSig0 Ether0.0013709
0x9229135afb8e1897bb6a6d719828e69e4af85cc320ee120a895b221eb102c67235 days 13 hrs ago0xa8dc2b53ecebeaa641ebb0601a69fbf936ee04f4  IN   district0xMultiSig0 Ether0.00156528
0x29397419f6e8f30284b1494eb0496d61a1f31bf1b5237e9d3ef2ad7b005a27d735 days 13 hrs ago0x0e90d8f85fc3107df47d20444244feaa824d1082  IN   district0xMultiSig0 Ether0.00205635
0xae41842d6a5ab04520a024e0391c0360e374b90d09e1e204faf7c28bca1b4c4e37 days 11 hrs ago0xa8dc2b53ecebeaa641ebb0601a69fbf936ee04f4  IN   district0xMultiSig0 Ether0.00206528
0x13c4fff700d2f4418d5d018fdfe796b669dd934f9822da572cd67260d08d13dc37 days 11 hrs ago0x0e90d8f85fc3107df47d20444244feaa824d1082  IN   district0xMultiSig0 Ether0.00150799
0xf93db58ca3e6c31b81662f4489a41ab371870ec95bc0f822b55dfeed829cc37c41 days 1 hr ago0xa8dc2b53ecebeaa641ebb0601a69fbf936ee04f4  IN   district0xMultiSig0 Ether0.000626112
0xd35d69d4f10c2cbf5bac7a84a47357001c7f8802780f992e07d1826ab46b018841 days 10 hrs ago0x0e90d8f85fc3107df47d20444244feaa824d1082  IN   district0xMultiSig0 Ether0.00068545
0xff845d62917baa185a9c5d7218ceb66710e27a2200ea0b418b1ce5180204dc6344 days 13 hrs ago0xa8dc2b53ecebeaa641ebb0601a69fbf936ee04f4  IN   district0xMultiSig0 Ether0.000313056
0x537425508ba59d8266e81d78757a8b9ed1e2921cc909959e64bf8e2c3f39399544 days 14 hrs ago0x0e90d8f85fc3107df47d20444244feaa824d1082  IN   district0xMultiSig0 Ether0.00095963
0xa8c790cc94da404202e7872e8c2bfdd5a47eb39d8ed2423e36fe4598fbc6c71150 days 13 hrs ago0xa8dc2b53ecebeaa641ebb0601a69fbf936ee04f4  IN   district0xMultiSig0 Ether0.000313056
0x4db11dec9ac0b86d3914b58b6d3b975d2da488cb3ad9cb95de92d9d9441b2c5b50 days 13 hrs ago0x0e90d8f85fc3107df47d20444244feaa824d1082  IN   district0xMultiSig0 Ether0.00137154
0xcb563526e2c94c3e3ea6df911a917e4b30a1f8ce5eca7d50d43687334bcaa01862 days 21 hrs ago0xa8dc2b53ecebeaa641ebb0601a69fbf936ee04f4  IN   district0xMultiSig0 Ether0.000313056
[ 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
0x7ebc12076dacd3f415cfba21288e7f872e5dad6b6b730ea6a294d4d324db024858294511 day 23 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680xbcd9a181ca8745a71a1b3848efa16fe7a80bff04103 Ether
0x18185ce90fa1d3d400140ef812d2acaba9396d5ee53e61ac423a94eea832c53058176024 days 10 mins ago0xd20e4d854c71de2428e1268167753e4c7070ae680x4da8473d85582f0839c42bc8067c3bcf5a6b13eb300 Ether
0x451fe6c38aec5bac4ae3ca266081ed420c18383c51a6d4433a18c8b4f728de0257950547 days 19 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x790ee7e92f9af7dcf849319954bd60d85316637742.487 Ether
0x06f2260642253635ca52a01472aa6bbfe2c41996a3c5cf90f20de7e2161dc07557950457 days 19 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x7fe59d375f0558ee16774e80858fee7770948ba463.706 Ether
0x2eadaacd4c7831d95fff450f8da5d517e45ce2cb83f2af2d1b7c94a37b05a48a573222318 days 21 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680xfe88dd131d675874d8475ed6d3e3e92993f76d5110.3 Ether
0x0e91dde938e84e61fd55755fa102774f8fdf0fd35801a0bcff7fcaf823d64c1c571534521 days 21 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x2a7c59ec1a2e10e5642e2e2b38c73053aca7150289.842 Ether
0xad8ae105ac9b7268ba7d8abad336316dfd931d6da34dc8b9d083aad457ce06c7565814832 days 47 mins ago0xd20e4d854c71de2428e1268167753e4c7070ae680xbcd9a181ca8745a71a1b3848efa16fe7a80bff0479 Ether
0x9229135afb8e1897bb6a6d719828e69e4af85cc320ee120a895b221eb102c672563832935 days 13 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x2a7c59ec1a2e10e5642e2e2b38c73053aca7150288 Ether
0xae41842d6a5ab04520a024e0391c0360e374b90d09e1e204faf7c28bca1b4c4e562742537 days 11 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680xd61a73832cab4744f955f1ed307db2ad70e1928676.51 Ether
0xf93db58ca3e6c31b81662f4489a41ab371870ec95bc0f822b55dfeed829cc37c560706341 days 1 hr ago0xd20e4d854c71de2428e1268167753e4c7070ae680x4da8473d85582f0839c42bc8067c3bcf5a6b13eb73 Ether
0xff845d62917baa185a9c5d7218ceb66710e27a2200ea0b418b1ce5180204dc63558694744 days 13 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680xedcce83fef99d12ef7f8104d84c4ec939d5bd6f46.667 Ether
0xa8c790cc94da404202e7872e8c2bfdd5a47eb39d8ed2423e36fe4598fbc6c711555262250 days 13 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x2a7c59ec1a2e10e5642e2e2b38c73053aca7150263.515 Ether
0xcb563526e2c94c3e3ea6df911a917e4b30a1f8ce5eca7d50d43687334bcaa018548137562 days 21 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x0e90d8f85fc3107df47d20444244feaa824d108214.569 Ether
0x5fab5902c307ece2e99647c19b0d868aabf7310f321c8e17f5d54fbe486be2d7547556963 days 21 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x2a7c59ec1a2e10e5642e2e2b38c73053aca7150249.6 Ether
0x2d0844c689589b8c35079ab592edaef716da0887007d89cdf6d88b183396ed89546528165 days 16 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x4da8473d85582f0839c42bc8067c3bcf5a6b13eb143.5762 Ether
0xa92c50c44948d771f2dea99d54b4c30d883cc436454f3a4183f91a3b09be4e5d541116374 days 19 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680xda0558688a562d246faf2948bd271a67b90d82e015.04 Ether
0x1143937d679962b2275a1b79cae11cc5e8438483c4dcc494ff5bc9ee86559df6539303677 days 19 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x2a7c59ec1a2e10e5642e2e2b38c73053aca71502135.75 Ether
0xca5b43697b613dc60868b8000a8b044b5f2b168a0012378a98b1e9a7ec061217532608689 days 8 mins ago0xd20e4d854c71de2428e1268167753e4c7070ae680x9b984d5a03980d8dc0a24506c968465424c81dbe104 Ether
0x189dce815fbfaeb8b6e288eeeef2cd2d9ccfc45e8efe059bd790a6b3a7fd7dfc530947691 days 18 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680xbcd9a181ca8745a71a1b3848efa16fe7a80bff0497 Ether
0x7422d00ec47778a928df77f6c422c733066fbf39d89fc9289a49d0853b7b9c07529113694 days 19 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x3bac75573d886403fab6b6bff889c4ccf746821294 Ether
0xdf13c1bb45f4c60c6d2ed64042f5207b36a0d844b916002e113798af0b9872ca526689798 days 22 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x2a7c59ec1a2e10e5642e2e2b38c73053aca7150283.63 Ether
0x75b6f42cc024ea7da94330e27946f7fb7004d415ea28ddadb7e0fdf01756269b5186287112 days 14 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x017ed31ad5b094cc62ce290a30b275ab0920a0ba46.35 Ether
0xa6f632d1f272564acdea05f18d74be41dd6f07993df1cc5e240e18455be2740b5185373112 days 18 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x2a7c59ec1a2e10e5642e2e2b38c73053aca7150277.56 Ether
0x5f4cfe633567d45d25a25c371b2b1fd0a5be113fb7f4f21e79da132f26c720ff5102785126 days 19 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x2a7c59ec1a2e10e5642e2e2b38c73053aca7150242.67 Ether
0x4082c1b55313ae56d0dfb71316429b13cc015a17d8f8084aecb6e5dd714499825085214129 days 18 hrs ago0xd20e4d854c71de2428e1268167753e4c7070ae680x4da8473d85582f0839c42bc8067c3bcf5a6b13eb6 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.