Sponsored Link:  Download the Monaco app for Android and iOS on Aug 31 - www.mona.co
Contract Overview
ETH Balance: 1.000006534410357412 Ether
ETH USD Value: $358.13 (@ $358.13/ETH)
No Of Transactions: 65 txns
  Latest 25 txns from a total Of 65 transactions View All

TxHash Age From To Value [TxFee]
0xa5f691f032314a9b79a3152eb7e176b99451b414cfabe50566cf9222e03c57b520 days 4 hrs ago0x18788edabbabc203bc7c157518dc4b2d4529f884  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.0000024474
0x416351870bc25c5350f4dd0e168a6389722b477f822a57246d5c4b750f2d8893174 days 21 hrs ago0x617057bf5415d81fe19f8ef2cbbe4a9ee4c46da9  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.000487599
0x25412ab2f29810d1d642eca4827e3c91a0dcaf4c4e7021fde2b4362d5a5855de381 days 15 hrs ago0xfac5ca94758078fbfccd19db3558da7ee8a0a768  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330.61 Ether0.000483
0x6f11ed8fd633a9afe241793797c3ae952280351032e2310f22f19bb8905e6290448 days 10 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.0010314
0xcafc42b4dc0020075b286fc441719183c64a0ea6ec1a58cd89380adf42670052448 days 10 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00070802
0x8d4d6578631089cb0c698041dd404c41a25ca4f27e6086bf8a7b01d97a172fe3448 days 10 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00108638
0xfbd6a9d5e6ad7930e16638c746737266df7afa4f2c2c08b56e5de9fce1f0a4e2448 days 11 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.001206739082
0x73c85605085cea00a3d8198b8e763c228f9158894c59c4965a7b731d3a779618448 days 11 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00086814
0xb1d9035958ea5aa6ae7bd4f7c3e5f773f1ca46774c10e5df0b3fc670587101d7463 days 18 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00146686
0x64bc6a6a78c1f7bbad2fff3cf11c8f46cc086bd0a49856482b109988a2037d74492 days 20 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00149136
0xc2fad6040ec816cea35008285ab4178cf4ffc1eee292d414e320b2fa5dba0ca1492 days 20 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.0012663
0x2c60fd0d472b8beddf917363897cbeada479043334ce2643860b3267dca3d11f492 days 20 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00149264
0xbd6d06ae2204a0b0486891a5be4548123de7c70d1a3fd2d35f9e6d76e85a3d6e492 days 21 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00146814
0xf8d07a6d1819583479894f394e38dc7bb9e9609eef0bb6e61de064d40690a78a519 days 9 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.001652962288
0xb3a8b2041a15b222d8ad5080c22ee3c4ef13786c63ceba683a53a400a75a66a0521 days 10 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00146814
0x5e2a895a5c7d1f7c030d1eb4bc43a603769a3d85a25ec2435a2da965db5fbcf1523 days 13 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.001276078095
0x530cbdfb882dcdb47730e2d2fcb318f81b202f6d618ece3fac363e79a2fc9a9d525 days 13 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00078638
0x009def2f07edeb16123f38ba14da7133462de126ef201a0afe904c38dcaaa45a525 days 20 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00098822
0x39a9d97d93430c8f32a744bc27c104209048763ba41c1c73a56e58a0c1e93aed536 days 12 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00240595816
0x8fe59853957062b9576d75e95d85b454a14c09ed038221f4f7371e171bd09c57536 days 13 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00078894
0x009fe37338db8d9504d68087c6811fb0b4e0640bf40114131841064dd669ecb4536 days 13 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00105007914
0xaebd13bf5539c415b219ef5f96b765bf682a43de78dd9c05462ca10ecf33b06f536 days 13 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00108845
0x0753b672e66628f8110d3e76c3e17f5836240d6873f38cf5d4c6ac03c198b8cf536 days 13 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.0009530686
0xa514b7625ce53c9782a2d4d9e2c7349fb64af11a42099d5375e0092eedc72f15536 days 13 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.002483717325
0x0e7c36791aa843d94b24d5b57759e33d27522367dfccf14d53d263a603eb5be2536 days 13 hrs ago0x4c9aacb6d5169d014e5e300c5d246ce5a3c6b246  IN   0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330 Ether0.00089723396
[ 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
0x8d4d6578631089cb0c698041dd404c41a25ca4f27e6086bf8a7b01d97a172fe32158691448 days 10 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330xfac5ca94758078fbfccd19db3558da7ee8a0a7681 Ether
0x530cbdfb882dcdb47730e2d2fcb318f81b202f6d618ece3fac363e79a2fc9a9d1693312525 days 13 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330x2423febc9a0eecc5521c3ffbdbeececdf4765e7d2.7 Ether
0x009def2f07edeb16123f38ba14da7133462de126ef201a0afe904c38dcaaa45a1691546525 days 20 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330x2423febc9a0eecc5521c3ffbdbeececdf4765e7d5.3 Ether
0x8fe59853957062b9576d75e95d85b454a14c09ed038221f4f7371e171bd09c571627061536 days 13 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330x2423febc9a0eecc5521c3ffbdbeececdf4765e7d82.7463 Ether
0x009fe37338db8d9504d68087c6811fb0b4e0640bf40114131841064dd669ecb41627040536 days 13 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330x2423febc9a0eecc5521c3ffbdbeececdf4765e7d6.404511494252873563 Ether
0xaebd13bf5539c415b219ef5f96b765bf682a43de78dd9c05462ca10ecf33b06f1627021536 days 13 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330x5fc4a733d3e78bcebe92ac870fee33fc357f75df1.00011 Ether
0x0753b672e66628f8110d3e76c3e17f5836240d6873f38cf5d4c6ac03c198b8cf1626970536 days 13 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330x2423febc9a0eecc5521c3ffbdbeececdf4765e7d49 Ether
0x0e7c36791aa843d94b24d5b57759e33d27522367dfccf14d53d263a603eb5be21626927536 days 13 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330x578ad70a4a50247a9cd8600a3ba1e07ebbfb866f1 Ether
0x8b18a4bd0393187ad4e16a8f353fe5c3251718b74a6eaf75a8944d5acee1fddd1623985537 days 1 hr ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330x537090e42bb4843bb5ed6e20f1899875190bef510.073637702503681885 Ether
0xae7f9b43e22ca5a5db16d628adf94157388a19a7606a7c7f3b193b7babaddfb51620077537 days 17 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330x4b77563a7ea65c00886df4509dd673235b6ab8e71.005410847671848445 Ether
0xac1201fd1031d4391fe379966ee83fb6eddf00cba5a2ff270f6107a0c9f91d7a1601490540 days 19 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330x2423febc9a0eecc5521c3ffbdbeececdf4765e7d48 Ether
0xf7601723b3379917ca22c39a1164ef3d7a4690f841cf87b055e71d8ca81eddc41588060543 days 1 hr ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330xd0e54c256a695573edb75c943b0db62231d6c9b91 Ether
0xfb6ea47f4992ee2aa2529ea201c21c329d95a4d25a8c8fd98e18cd46e305cbc51583729543 days 18 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330xbb9bc244d798123fde783fcc1c72d3bb8c1894132.03 Ether
0xfc070c6ad49bf637d9ac9bb74e4c66fe0ff20bce9cae513462cb621928746f331564898546 days 21 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330x2423febc9a0eecc5521c3ffbdbeececdf4765e7d31 Ether
0x5d9a20ec4fe14113d83c226bbc7b5c00a1c6cb2f9a5ea8b8c6b4ea8c1edca2291545669550 days 1 hr ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330x2423febc9a0eecc5521c3ffbdbeececdf4765e7d20 Ether
0xd0ec3d457cc9848228d160d4cc99356c2c531657280f4ecfe4594b6de8f491d51505967556 days 15 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330xbb9bc244d798123fde783fcc1c72d3bb8c1894135 Ether
0x55005185f1a8336f13608bebbbfa2f7813f19f2096aeb687da5d7cbb77d832c11505950556 days 16 hrs ago0x766812a16c4e8341b450acec9bba3c71adef56810xe76563eb8413ede9b4a1a3c1f3280a95c4b60a335 Ether
0x31414df3b58340a1a04c39c30429e4ab58005a949c2dcbe8056f57367c92d3c61505935556 days 16 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330xbb9bc244d798123fde783fcc1c72d3bb8c1894132.8 Ether
0x3bbca84a735387edc7e5cb49e5eee5598a5e7ae00f25351154903ac854a87d831505862556 days 16 hrs ago0x766812a16c4e8341b450acec9bba3c71adef56810xe76563eb8413ede9b4a1a3c1f3280a95c4b60a331 Ether
0x1ea6652ff6591b2def8fedd0a54ebf0af4e5e0658ea3d807e53a731d19bdb65a1505837556 days 16 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330x766812a16c4e8341b450acec9bba3c71adef56810.097751710654936461 Ether
0x36a1aec8bd8b824f7a55188aea7524dee6b0328c5e9dd13e462a97bc10d23eed1499573557 days 17 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330xbb9bc244d798123fde783fcc1c72d3bb8c18941325 Ether
0x1f76a95f4aec92042e9d9444d5f63a9fdc280d1dd3974b2ab17dae58af5e01251491825559 days 21 mins ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330xbb9bc244d798123fde783fcc1c72d3bb8c18941325 Ether
0x35aa514f97f14b8caad5b82c4f8ceaf56cb4345985c62f85c4064a280425d4061474946561 days 19 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330xbb9bc244d798123fde783fcc1c72d3bb8c18941311 Ether
0x9afaa2e2cfd1ebed9b7944eaa681fccd5c1097def22a29f9fa9f20125ae6f0c01463358563 days 17 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330xbb9bc244d798123fde783fcc1c72d3bb8c1894136 Ether
0x999a9576b4e4c7a140e10b1d168ee9def882883607b0085271794109c970e03b1453279565 days 10 hrs ago0xe76563eb8413ede9b4a1a3c1f3280a95c4b60a330xbb9bc244d798123fde783fcc1c72d3bb8c189413100 Ether
[ Download CSV Export  ] 
Contract Name: Wallet
Compiler Version: v0.3.2-2016-04-18-81ae2a7
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
//sol Wallet
// Multi-sig, daily-limited account proxy/wallet.
// @authors:
// Gav Wood <[email protected]>
// inheritable "property" contract that enables methods to be protected by requiring the acquiescence of either a
// single, or, crucially, each of a number of, designated owners.
// usage:
// use modifiers onlyowner (just own owned) or onlymanyowners(hash), whereby the same hash must be provided by
// some number (specified in constructor) of the set of owners (specified in the constructor, modifiable) before the
// interior is executed.
contract multiowned {

    // TYPES

    // struct for the status of a pending operation.
    struct PendingState {
        uint yetNeeded;
        uint ownersDone;
        uint index;
    }

    // EVENTS

    // this contract only has five types of events: it can accept a confirmation, in which case
    // we record owner and operation (hash) alongside it.
    event Confirmation(address owner, bytes32 operation);
    event Revoke(address owner, bytes32 operation);
    // some others are in the case of an owner changing.
    event OwnerChanged(address oldOwner, address newOwner);
    event OwnerAdded(address newOwner);
    event OwnerRemoved(address oldOwner);
    // the last one is emitted if the required signatures change
    event RequirementChanged(uint newRequirement);

    // MODIFIERS

    // simple single-sig function modifier.
    modifier onlyowner {
        if (isOwner(msg.sender))
            _
    }
    // multi-sig function modifier: the operation must have an intrinsic hash in order
    // that later attempts can be realised as the same underlying operation and
    // thus count as confirmations.
    modifier onlymanyowners(bytes32 _operation) {
        if (confirmAndCheck(_operation))
            _
    }

    // METHODS

    // constructor is given number of sigs required to do protected "onlymanyowners" transactions
    // as well as the selection of addresses capable of confirming them.
    function multiowned(address[] _owners, uint _required) {
        m_numOwners = _owners.length + 1;
        m_owners[1] = uint(msg.sender);
        m_ownerIndex[uint(msg.sender)] = 1;
        for (uint i = 0; i < _owners.length; ++i)
        {
            m_owners[2 + i] = uint(_owners[i]);
            m_ownerIndex[uint(_owners[i])] = 2 + i;
        }
        m_required = _required;
    }
    
    // Revokes a prior confirmation of the given operation
    function revoke(bytes32 _operation) external {
        uint ownerIndex = m_ownerIndex[uint(msg.sender)];
        // make sure they're an owner
        if (ownerIndex == 0) return;
        uint ownerIndexBit = 2**ownerIndex;
        var pending = m_pending[_operation];
        if (pending.ownersDone & ownerIndexBit > 0) {
            pending.yetNeeded++;
            pending.ownersDone -= ownerIndexBit;
            Revoke(msg.sender, _operation);
        }
    }
    
    // Replaces an owner `_from` with another `_to`.
    function changeOwner(address _from, address _to) onlymanyowners(sha3(msg.data, block.number)) external {
        if (isOwner(_to)) return;
        uint ownerIndex = m_ownerIndex[uint(_from)];
        if (ownerIndex == 0) return;

        clearPending();
        m_owners[ownerIndex] = uint(_to);
        m_ownerIndex[uint(_from)] = 0;
        m_ownerIndex[uint(_to)] = ownerIndex;
        OwnerChanged(_from, _to);
    }
    
    function addOwner(address _owner) onlymanyowners(sha3(msg.data, block.number)) external {
        if (isOwner(_owner)) return;

        clearPending();
        if (m_numOwners >= c_maxOwners)
            reorganizeOwners();
        if (m_numOwners >= c_maxOwners)
            return;
        m_numOwners++;
        m_owners[m_numOwners] = uint(_owner);
        m_ownerIndex[uint(_owner)] = m_numOwners;
        OwnerAdded(_owner);
    }
    
    function removeOwner(address _owner) onlymanyowners(sha3(msg.data, block.number)) external {
        uint ownerIndex = m_ownerIndex[uint(_owner)];
        if (ownerIndex == 0) return;
        if (m_required > m_numOwners - 1) return;

        m_owners[ownerIndex] = 0;
        m_ownerIndex[uint(_owner)] = 0;
        clearPending();
        reorganizeOwners(); //make sure m_numOwner is equal to the number of owners and always points to the optimal free slot
        OwnerRemoved(_owner);
    }
    
    function changeRequirement(uint _newRequired) onlymanyowners(sha3(msg.data, block.number)) external {
        if (_newRequired > m_numOwners) return;
        m_required = _newRequired;
        clearPending();
        RequirementChanged(_newRequired);
    }
    
    function isOwner(address _addr) returns (bool) {
        return m_ownerIndex[uint(_addr)] > 0;
    }
    
    function hasConfirmed(bytes32 _operation, address _owner) constant returns (bool) {
        var pending = m_pending[_operation];
        uint ownerIndex = m_ownerIndex[uint(_owner)];

        // make sure they're an owner
        if (ownerIndex == 0) return false;

        // determine the bit to set for this owner.
        uint ownerIndexBit = 2**ownerIndex;
        if (pending.ownersDone & ownerIndexBit == 0) {
            return false;
        } else {
            return true;
        }
    }
    
    // INTERNAL METHODS

    function confirmAndCheck(bytes32 _operation) internal returns (bool) {
        // determine what index the present sender is:
        uint ownerIndex = m_ownerIndex[uint(msg.sender)];
        // make sure they're an owner
        if (ownerIndex == 0) return;

        var pending = m_pending[_operation];
        // if we're not yet working on this operation, switch over and reset the confirmation status.
        if (pending.yetNeeded == 0) {
            // reset count of confirmations needed.
            pending.yetNeeded = m_required;
            // reset which owners have confirmed (none) - set our bitmap to 0.
            pending.ownersDone = 0;
            pending.index = m_pendingIndex.length++;
            m_pendingIndex[pending.index] = _operation;
        }
        // determine the bit to set for this owner.
        uint ownerIndexBit = 2**ownerIndex;
        // make sure we (the message sender) haven't confirmed this operation previously.
        if (pending.ownersDone & ownerIndexBit == 0) {
            Confirmation(msg.sender, _operation);
            // ok - check if count is enough to go ahead.
            if (pending.yetNeeded <= 1) {
                // enough confirmations: reset and run interior.
                delete m_pendingIndex[m_pending[_operation].index];
                delete m_pending[_operation];
                return true;
            }
            else
            {
                // not enough: record that this owner in particular confirmed.
                pending.yetNeeded--;
                pending.ownersDone |= ownerIndexBit;
            }
        }
    }

    function reorganizeOwners() private returns (bool) {
        uint free = 1;
        while (free < m_numOwners)
        {
            while (free < m_numOwners && m_owners[free] != 0) free++;
            while (m_numOwners > 1 && m_owners[m_numOwners] == 0) m_numOwners--;
            if (free < m_numOwners && m_owners[m_numOwners] != 0 && m_owners[free] == 0)
            {
                m_owners[free] = m_owners[m_numOwners];
                m_ownerIndex[m_owners[free]] = free;
                m_owners[m_numOwners] = 0;
            }
        }
    }
    
    function clearPending() internal {
        uint length = m_pendingIndex.length;
        for (uint i = 0; i < length; ++i)
            if (m_pendingIndex[i] != 0)
                delete m_pending[m_pendingIndex[i]];
        delete m_pendingIndex;
    }
        
    // FIELDS

    // the number of owners that must confirm the same operation before it is run.
    uint public m_required;
    // pointer used to find a free slot in m_owners
    uint public m_numOwners;
    
    // list of owners
    uint[256] m_owners;
    uint constant c_maxOwners = 250;
    // index on the list of owners to allow reverse lookup
    mapping(uint => uint) m_ownerIndex;
    // the ongoing operations.
    mapping(bytes32 => PendingState) m_pending;
    bytes32[] m_pendingIndex;
}

// inheritable "property" contract that enables methods to be protected by placing a linear limit (specifiable)
// on a particular resource per calendar day. is multiowned to allow the limit to be altered. resource that method
// uses is specified in the modifier.
contract daylimit is multiowned {

    // MODIFIERS

    // simple modifier for daily limit.
    modifier limitedDaily(uint _value) {
        if (underLimit(_value))
            _
    }

    // METHODS

    // constructor - stores initial daily limit and records the present day's index.
    function daylimit(uint _limit) {
        m_dailyLimit = _limit;
        m_lastDay = today();
    }
    // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.
    function setDailyLimit(uint _newLimit) onlymanyowners(sha3(msg.data, block.number)) external {
        m_dailyLimit = _newLimit;
    }
    // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.
    function resetSpentToday() onlymanyowners(sha3(msg.data, block.number)) external {
        m_spentToday = 0;
    }
    
    // INTERNAL METHODS
    
    // checks to see if there is at least `_value` left from the daily limit today. if there is, subtracts it and
    // returns true. otherwise just returns false.
    function underLimit(uint _value) internal onlyowner returns (bool) {
        // reset the spend limit if we're on a different day to last time.
        if (today() > m_lastDay) {
            m_spentToday = 0;
            m_lastDay = today();
        }
        // check to see if there's enough left - if so, subtract and return true.
        if (m_spentToday + _value >= m_spentToday && m_spentToday + _value <= m_dailyLimit) {
            m_spentToday += _value;
            return true;
        }
        return false;
    }
    // determines today's index.
    function today() private constant returns (uint) { return now / 1 days; }

    // FIELDS

    uint public m_dailyLimit;
    uint public m_spentToday;
    uint public m_lastDay;
}

// interface contract for multisig proxy contracts; see below for docs.
contract multisig {

    // EVENTS

    // logged events:
    // Funds has arrived into the wallet (record how much).
    event Deposit(address from, uint value);
    // Single transaction going out of the wallet (record who signed for it, how much, and to whom it's going).
    event SingleTransact(address owner, uint value, address to, bytes data);
    // Multi-sig transaction going out of the wallet (record who signed for it last, the operation hash, how much, and to whom it's going).
    event MultiTransact(address owner, bytes32 operation, uint value, address to, bytes data);
    // Confirmation still needed for a transaction.
    event ConfirmationNeeded(bytes32 operation, address initiator, uint value, address to, bytes data);
    
    // FUNCTIONS
    
    // TODO: document
    function changeOwner(address _from, address _to) external;
    function execute(address _to, uint _value, bytes _data) external returns (bytes32);
    function confirm(bytes32 _h) returns (bool);
}

// usage:
// bytes32 h = Wallet(w).from(oneOwner).transact(to, value, data);
// Wallet(w).from(anotherOwner).confirm(h);
contract Wallet is multisig, multiowned, daylimit {

    uint public version = 2;

    // TYPES

    // Transaction structure to remember details of transaction lest it need be saved for a later call.
    struct Transaction {
        address to;
        uint value;
        bytes data;
    }

    // METHODS

    // constructor - just pass on the owner array to the multiowned and
    // the limit to daylimit
    function Wallet(address[] _owners, uint _required, uint _daylimit)
            multiowned(_owners, _required) daylimit(_daylimit) {
    }
    
    // kills the contract sending everything to `_to`.
    function kill(address _to) onlymanyowners(sha3(msg.data, block.number)) external {
        suicide(_to);
    }
    
    // gets called when no other function matches
    function() {
        // just being sent some cash?
        if (msg.value > 0)
            Deposit(msg.sender, msg.value);
    }
    
    // Outside-visible transact entry point. Executes transacion immediately if below daily spend limit.
    // If not, goes into multisig process. We provide a hash on return to allow the sender to provide
    // shortcuts for the other confirmations (allowing them to avoid replicating the _to, _value
    // and _data arguments). They still get the option of using them if they want, anyways.
    function execute(address _to, uint _value, bytes _data) external onlyowner returns (bytes32 _r) {
        // first, take the opportunity to check that we're under the daily limit.
        if (underLimit(_value)) {
            SingleTransact(msg.sender, _value, _to, _data);
            // yes - just execute the call.
            _to.call.value(_value)(_data);
            return 0;
        }
        // determine our operation hash.
        _r = sha3(msg.data, block.number);
        if (!confirm(_r) && m_txs[_r].to == 0) {
            m_txs[_r].to = _to;
            m_txs[_r].value = _value;
            m_txs[_r].data = _data;
            ConfirmationNeeded(_r, msg.sender, _value, _to, _data);
        }
    }
    
    // confirm a transaction through just the hash. we use the previous transactions map, m_txs, in order
    // to determine the body of the transaction from the hash provided.
    function confirm(bytes32 _h) onlymanyowners(_h) returns (bool) {
        if (m_txs[_h].to != 0) {
            m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data);
            MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data);
            delete m_txs[_h];
            return true;
        }
    }
    
    // INTERNAL METHODS
    
    function clearPending() internal {
        uint length = m_pendingIndex.length;
        for (uint i = 0; i < length; ++i)
            delete m_txs[m_pendingIndex[i]];
        super.clearPending();
    }

    // FIELDS

    // pending transactions we have at present.
    mapping (bytes32 => Transaction) m_txs;
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"removeOwner","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"m_numOwners","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"m_lastDay","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"resetSpentToday","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"m_spentToday","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"addOwner","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"m_required","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_h","type":"bytes32"}],"name":"confirm","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_newLimit","type":"uint256"}],"name":"setDailyLimit","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"execute","outputs":[{"name":"_r","type":"bytes32"}],"type":"function"},{"constant":false,"inputs":[{"name":"_operation","type":"bytes32"}],"name":"revoke","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_newRequired","type":"uint256"}],"name":"changeRequirement","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"_operation","type":"bytes32"},{"name":"_owner","type":"address"}],"name":"hasConfirmed","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"kill","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"name":"changeOwner","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"m_dailyLimit","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"},{"name":"_daylimit","type":"uint256"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"operation","type":"bytes32"}],"name":"Confirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"operation","type":"bytes32"}],"name":"Revoke","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldOwner","type":"address"}],"name":"OwnerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newRequirement","type":"uint256"}],"name":"RequirementChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"data","type":"bytes"}],"name":"SingleTransact","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"operation","type":"bytes32"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"data","type":"bytes"}],"name":"MultiTransact","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"operation","type":"bytes32"},{"indexed":false,"name":"initiator","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"data","type":"bytes"}],"name":"ConfirmationNeeded","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052600261010860005055604051611b51380380611b51833981016040528080518201919060200180519060200190919080519060200190919050505b805b83835b600060018351016001600050819055503373ffffffffffffffffffffffffffffffffffffffff16600260005060016101008110156100025790900160005b5081905550600161010260005060003373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005081905550600090505b825181101561016e5782818151811015610002579060200190602002015173ffffffffffffffffffffffffffffffffffffffff166002600050826002016101008110156100025790900160005b508190555080600201610102600050600085848151811015610002579060200190602002015173ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b80600101905080506100c2565b816000600050819055505b505050806101056000508190555061018f6101ad565b610107600050819055505b505b505050611992806101bf6000396000f35b600062015180420490506101bc565b9056606060405236156100f8576000357c010000000000000000000000000000000000000000000000000000000090048063173825d9146101605780632f54bf6e146101785780634123cb6b146101a457806352375093146101c757806354fd4d50146101ea5780635c52c2f51461020d578063659010e71461021c5780637065cb481461023f578063746c917114610257578063797af6271461027a578063b20d30a9146102a6578063b61d27f6146102be578063b75c7dc614610307578063ba51a6df1461031f578063c2cf732614610337578063cbf0b0c01461036c578063f00d4b5d14610384578063f1736d86146103a5576100f8565b61015e5b600034111561015b577fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3334604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b565b005b61017660048080359060200190919050506107c4565b005b61018e60048080359060200190919050506109a5565b6040518082815260200191505060405180910390f35b6101b16004805050610a91565b6040518082815260200191505060405180910390f35b6101d46004805050610b38565b6040518082815260200191505060405180910390f35b6101f76004805050610b42565b6040518082815260200191505060405180910390f35b61021a6004805050610adf565b005b6102296004805050610b2e565b6040518082815260200191505060405180910390f35b610255600480803590602001909190505061066e565b005b6102646004805050610a88565b6040518082815260200191505060405180910390f35b6102906004808035906020019091905050610f0e565b6040518082815260200191505060405180910390f35b6102bc6004808035906020019091905050610a9a565b005b6102f160048080359060200190919080359060200190919080359060200190820180359060200191909192905050610b9e565b6040518082815260200191505060405180910390f35b61031d60048080359060200190919050506103c8565b005b610335600480803590602001909190505061090f565b005b61035660048080359060200190919080359060200190919050506109e7565b6040518082815260200191505060405180910390f35b6103826004808035906020019091905050610b4c565b005b6103a360048080359060200190919080359060200190919050506104ca565b005b6103b26004805050610b24565b6040518082815260200191505060405180910390f35b60006000600061010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549250600083141561040f576104c4565b8260020a91506101036000506000858152602001908152602001600020600050905060008282600101600050541611156104c3578060000160008181505480929190600101919050555081816001016000828282505403925050819055507fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b3385604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b50505050565b600060003643604051808484808284378201915050828152602001935050505060405180910390206104fb816112db565b1561066757610509836109a5565b156105145750610669565b61010260005060008573ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005054915060008214156105565750610669565b61055e611777565b8273ffffffffffffffffffffffffffffffffffffffff166002600050836101008110156100025790900160005b5081905550600061010260005060008673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055508161010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8484604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15b505b505050565b600036436040518084848082843782019150508281526020019350505050604051809103902061069d816112db565b156107bf576106ab826109a5565b156106b657506107c1565b6106be611777565b60fa6001600050541015156106d7576106d561153d565b505b60fa6001600050541015156106ec57506107c1565b60016000818150548092919060010191905055508173ffffffffffffffffffffffffffffffffffffffff1660026000506001600050546101008110156100025790900160005b508190555060016000505461010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c382604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b505b50565b600060003643604051808484808284378201915050828152602001935050505060405180910390206107f5816112db565b156109095761010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549150600082141561083c575061090b565b6001600160005054036000600050541115610857575061090b565b60006002600050836101008110156100025790900160005b5081905550600061010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055506108b2611777565b6108ba61153d565b507f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da83604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b505b5050565b600036436040518084848082843782019150508281526020019350505050604051809103902061093e816112db565b156109a05760016000505482111561095657506109a2565b81600060005081905550610968611777565b7facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da826040518082815260200191505060405180910390a15b505b50565b6000600061010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050541190506109e2565b919050565b60006000600060006101036000506000878152602001908152602001600020600050925061010260005060008673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505491506000821415610a505760009350610a7f565b8160020a90506000818460010160005054161415610a755760009350610a7f56610a7e565b60019350610a7f565b5b50505092915050565b60006000505481565b60016000505481565b6000364360405180848480828437820191505082815260200193505050506040518091039020610ac9816112db565b15610ada5781610105600050819055505b505b50565b6000364360405180848480828437820191505082815260200193505050506040518091039020610b0e816112db565b15610b20576000610106600050819055505b505b565b6101056000505481565b6101066000505481565b6101076000505481565b6101086000505481565b6000364360405180848480828437820191505082815260200193505050506040518091039020610b7b816112db565b15610b99578173ffffffffffffffffffffffffffffffffffffffff16ff5b505b50565b6000610ba9336109a5565b15610f0557610bb7846116d7565b15610ca0577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd0043385878686604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a18473ffffffffffffffffffffffffffffffffffffffff168484846040518083838082843782019150509250505060006040518083038185876185025a03f1925050505060006001029050610f06565b600036436040518084848082843782019150508281526020019350505050604051809103902090508050610cd381610f0e565b158015610d3357506000610109600050600083815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610f045784610109600050600083815260200190815260200160002060005060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555083610109600050600083815260200190815260200160002060005060010160005081905550828261010960005060008481526020019081526020016000206000506002016000509190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e0857803560ff1916838001178555610e39565b82800160010185558215610e39579182015b82811115610e38578235826000505591602001919060010190610e1a565b5b509050610e649190610e46565b80821115610e605760008181506000905550600101610e46565b5090565b50507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32813386888787604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b5b5b949350505050565b600081610f1a816112db565b156112d4576000610109600050600085815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156112d357610109600050600084815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610109600050600085815260200190815260200160002060005060010160005054610109600050600086815260200190815260200160002060005060020160005060405180828054600181600116156101000203166002900480156110765780601f1061104b57610100808354040283529160200191611076565b820191906000526020600020905b81548152906001019060200180831161105957829003601f168201915b505091505060006040518083038185876185025a03f192505050507fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a3384610109600050600087815260200190815260200160002060005060010160005054610109600050600088815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166101096000506000898152602001908152602001600020600050600201600050604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156112005780601f106111d557610100808354040283529160200191611200565b820191906000526020600020905b8154815290600101906020018083116111e357829003601f168201915b5050965050505050505060405180910390a1610109600050600084815260200190815260200160002060006000820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000506000905560028201600050805460018160011615610100020316600290046000825580601f1061128957506112c6565b601f0160209004906000526020600020908101906112c591906112a7565b808211156112c157600081815060009055506001016112a7565b5090565b5b50505060019150506112d6565b5b505b919050565b600060006000600061010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549250600083141561132457611535565b610103600050600086815260200190815260200160002060005091506000826000016000505414156113fd57600060005054826000016000508190555060008260010160005081905550610104600050805480919060010190908154818355818115116113c3578183600052602060002091820191016113c291906113a4565b808211156113be57600081815060009055506001016113a4565b5090565b5b5050508260020160005081905550846101046000508360020160005054815481101561000257906000526020600020900160005b50819055505b8260020a90506000818360010160005054161415611534577fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda3386604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16001826000016000505411151561150757610104600050610103600050600087815260200190815260200160002060005060020160005054815481101561000257906000526020600020900160005b50600090556101036000506000868152602001908152602001600020600060008201600050600090556001820160005060009055600282016000506000905550506001935061153556611533565b816000016000818150548092919060019003919050555080826001016000828282505417925050819055505b5b5b505050919050565b60006000600190505b6001600050548110156116d2575b60016000505481108015611580575060006002600050826101008110156100025790900160005b505414155b15611592578080600101915050611554565b5b60016001600050541180156115c45750600060026000506001600050546101008110156100025790900160005b5054145b156115e357600160008181505480929190600190039190505550611593565b600160005054811080156116145750600060026000506001600050546101008110156100025790900160005b505414155b8015611637575060006002600050826101008110156100025790900160005b5054145b156116cd5760026000506001600050546101008110156100025790900160005b50546002600050826101008110156100025790900160005b50819055508061010260005060006002600050846101008110156100025790900160005b5054815260200190815260200160002060005081905550600060026000506001600050546101008110156100025790900160005b50819055505b611546565b5b5090565b60006116e2336109a5565b1561177157610107600050546116f6611980565b111561171b57600061010660005081905550611710611980565b610107600050819055505b610106600050548261010660005054011015801561174757506101056000505482610106600050540111155b15611768578161010660008282825054019250508190555060019050611772565b60009050611772565b5b919050565b60006000610104600050805490509150600090505b8181101561187857610109600050600061010460005083815481101561000257906000526020600020900160005b5054815260200190815260200160002060006000820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000506000905560028201600050805460018160011615610100020316600290046000825580601f1061182a5750611867565b601f0160209004906000526020600020908101906118669190611848565b808211156118625760008181506000905550600101611848565b5090565b5b5050505b806001019050805061178c565b611880611885565b5b5050565b60006000610104600050805490509150600090505b8181101561193857600060010261010460005082815481101561000257906000526020600020900160005b505414151561192a57610103600050600061010460005083815481101561000257906000526020600020900160005b50548152602001908152602001600020600060008201600050600090556001820160005060009055600282016000506000905550505b5b806001019050805061189a565b61010460005080546000825590600052602060002090810190611979919061195b565b80821115611975576000818150600090555060010161195b565b5090565b5b505b5050565b6000620151804204905061198f565b9056
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.