Sponsored Link:   DocTailor - Legal Self Customisable Smart Contract Platform - Bridging the Gap Between Business & Cryptocurrency Holders - Join Now!
Contract Overview
ETH Balance: 1,400,000.011363125364129408 Ether
ETH USD Value: $935,074,007.59 (@ $667.91/ETH)
No Of Transactions: 316 txns
Misc  
   
Address Watch Add To Watch List
Contract Creator 0x2903cadbe271e057edef157340b52a5898d7424fat txn 0x50690212781712b70e7ac412b9e3595d847a644e852a9929b6624c749d8ea7fc
Token Balances
  Latest 25 txns from a total Of 316 transactions View All

TxHash Age From To Value [TxFee]
0x1e9ed6236afb884fe7cad9a807886ba61b9e9a2fc944a991e3e8725d2158c7b25 hrs 32 mins ago0x2903cadbe271e057edef157340b52a5898d7424f  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000037712
0x9c19d1afe0db97dd78e9ee264f04bbe73048c2d6905a7d2dae99dabdf9f293c35 hrs 38 mins ago0x0c24441e42277445e38e02dfc3494577c05ba46b  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.00017494
0x1342ca482c79e376fe57b6e38ab12c5928d29fa1e1e69a23ecad89092469b55a5 hrs 39 mins ago0x0c24441e42277445e38e02dfc3494577c05ba46b  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000021441
0x73dd15bf4624b65a979a048c3f0605a3d7d9facd5e1542ab08891f3e738a4caf6 hrs 13 mins ago0x0c24441e42277445e38e02dfc3494577c05ba46b  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000370064
0x0d01730073cd92a2296c2a79bd9773a3ec0f057f111f81535ffb60083c85ef2416 hrs 52 mins ago0x99e4a442d9c348476feb7d8e7d5133a0804687c6  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.00002473
0xd6341052a4c8a1895345f68a8ca60bdb3475e3a04da6c0550279dec5ec03f48d16 hrs 58 mins ago0x99e4a442d9c348476feb7d8e7d5133a0804687c6  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000022897
0x7b874c066d588c291c73a7403f664d6f0777f932cdf223a7ad5422939522963e17 hrs 2 mins ago0x2ab33dcf1654b7dcbab4f83ded130d9ce8e19378  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000070605
0x86546a4498565da81824299ccb836d5e38834541a29976b69a220bbc3b73eaf217 hrs 23 mins ago0x2ab33dcf1654b7dcbab4f83ded130d9ce8e19378  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.00002473
0x6c434e6090cb2ccef89f661f37c132fd132eab22e6283067f2d6dcaee1e268ee17 hrs 38 mins ago0x2ab33dcf1654b7dcbab4f83ded130d9ce8e19378  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000022897
0xedcfc4a3ef5d5d40f59899813a75c012dfbaeb99402fbd35efc891920b7e169917 hrs 50 mins ago0x2ab33dcf1654b7dcbab4f83ded130d9ce8e19378  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000023535
0xd8df011e6112e2855717a46a16975a3b467bbb69f6db0a26ad6e0803f376dae923 days 4 hrs ago0x7700edddd3fc34c18fe2ab14b5345f1596d10553  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0.00001 Ether0.00013518
0x2f73d4ca0bd2b665bd72280c26a7ae79a28ed8bc0e46b364ddb54b1b18a4bb2d27 days 3 hrs ago0x6ad5d08fc3f57d6fb611dc52915696b98dfd1380  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.0000239492
0x77371bbc03345ae86bc96c68331d328bd64563ebeb7e314c655dc9e67311158e27 days 3 hrs ago0x6ad5d08fc3f57d6fb611dc52915696b98dfd1380  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000972151
0x643e3c91e0fa57221137c2f02929bde5c79c05e0c07f447c661fc28fbe6e365d27 days 3 hrs ago0x6ad5d08fc3f57d6fb611dc52915696b98dfd1380  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000963049
0xba290ffea068b1e239dd4eb00e88f4fa609fb00c77314161dbb6fb45297816a227 days 3 hrs ago0x6ad5d08fc3f57d6fb611dc52915696b98dfd1380  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000963049
0xa51150a7d40d60ef35f6110b989b496253e73f031e5e89cc78c406835a74c7da27 days 3 hrs ago0x6ad5d08fc3f57d6fb611dc52915696b98dfd1380  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000992938
0x044e14d764780356443181eb4f4d839789d43a2d55ecc66459a8eaee16473ea127 days 3 hrs ago0x6ad5d08fc3f57d6fb611dc52915696b98dfd1380  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000964935
0x7abdd9980e09c2283a4652c23a13b8384f3fbf127939be87439eebc3c23bd58731 days 39 mins ago0x05d1ced0df69365ae80e8acce0f20368be7c35dd  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.0000024268
0x5425aad0f4a7e2dde3786dbf16bc78f951b5e688d579dfc425ff01a82cd3bb9231 days 9 hrs ago0x05d1ced0df69365ae80e8acce0f20368be7c35dd  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.0000025184
0x1256e5b6de0e64dae0670b01745fe9339f83f3a0633d06a969bcb3ff827c225c31 days 9 hrs ago0x05d1ced0df69365ae80e8acce0f20368be7c35dd  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.0000023386
0x9337ff148ef31feead31e93b584ca2f51d88db20264832c840b3a393bbac661431 days 15 hrs ago0x05d1ced0df69365ae80e8acce0f20368be7c35dd  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.0000024257
0x671008393b9532d3e31775d0a4b8919bbe105e85f38f4831ca1c30fe9a1a759532 days 2 hrs ago0x05d1ced0df69365ae80e8acce0f20368be7c35dd  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.0000269918
0x3b80e8f2c47bd21880c3e14d98330d06fcb555d4280e0099da9823d8b8e9a1e832 days 2 hrs ago0x05d1ced0df69365ae80e8acce0f20368be7c35dd  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.0000913193
0xad269cf149e17e3bb2773c244e692555f5e068e047140149a0ea7b50aa661f7e32 days 2 hrs ago0x05d1ced0df69365ae80e8acce0f20368be7c35dd  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.0002809499
0xe8b4e414e23a586ae9494615074c347daeaa8b0f1f4c583e2dcdbcce4cbb33f132 days 2 hrs ago0x05d1ced0df69365ae80e8acce0f20368be7c35dd  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.0007631318
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 24 Internal Transactions

ParentTxHash Block Age From To Value
0x1e9ed6236afb884fe7cad9a807886ba61b9e9a2fc944a991e3e8725d2158c7b254938555 hrs 32 mins ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x876eabf441b2ee5b5b0554fd502a8e0600950cfa100,000 Ether
0x49349ef7c05476670c86d40826ad8e428bf82cff9f97477b5ead2ce324a1fcd93963736295 days 10 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e5,008.942796 Ether
0xda659500c919d4ed23330230f1c3643fd62e72388167d260ba926945495f71993633794357 days 6 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e1,000,000 Ether
0x342f7c330c09195ab3fd649ff71148e447ee960b561ff5d5bd99e29fe1172e5b3559994370 days 3 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x61d5a4d5bd270e59e9320243e574288e2a199fed100,000 Ether
0xa0d05595548d9f6889dbade2f81492975e1eebde1b1512df13ba27631c24186b3451269388 days 16 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e405,000.01 Ether
0x1f971e1ff9399f3b89c843acb4a416c6eda7b95b001e63ec52e6ac13cdd91d053448121389 days 4 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e25,000 Ether
0x3470118e8c275ad6327bdbb8f7670fe87c9fcc8d308c00c59a9d7484cc2497483447138389 days 8 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e30,000 Ether
0x7e8b275bb9d4f352144743299156162736939817365d04b7c73f1b978eecc3293434808391 days 10 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e20,000 Ether
0x0e92cd4998fd99f90cefc7151cdef44485bea4dfc7eb40d9cc09d9743cfb4be13428773392 days 10 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e20,000 Ether
0x6dd614794f70a1ee203de747785a83ccb24845577ee9f695368eb2579cd983182865130485 days 22 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e2 wei
0xbe78f781996e44c7d9e3a43bb35d9529eb6cf105375bf335998273602ee029db2865037485 days 22 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e2 wei
0x482214a3af89608131b24713d78897aa5b3e556d87d0563c236bfa243986dbd42865023485 days 22 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e2 wei
0x29d23985c39e6ea3c7669df26cf12b31e814bbe218def19844d07322c17ae7da2865017485 days 22 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e2 wei
0xcc6f7c57175addcf7608bdda90e314db18cb22f548aef3c5264fb16582f87db72208364594 days 18 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e100,000 Ether
0x9fa9e3929ffcd5821b54117403a51e7cc402c1f48409f360ec5f8d3805e0e2f42113435610 days 11 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e100,000 Ether
0xfec253fb3571d18886529d4676b4038b4a0e9835a22dd0c2eb2eefb2dcd788772097390613 days 3 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e200,000 Ether
0x51a0661b8e8d1e2c0ca72d621a1e95db1ebcce463757b3826705f69a1002463b2075009616 days 20 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e199,800 Ether
0x68da64df1d9dd897c8b1287d64da4813bb87e36f9f2ea6f39865db34fe99fd482074991616 days 20 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e100 Ether
0x847ce8cb8a8ed74c1ae18a20506320087a4bad288ff937a482eef53f4311fa412063443618 days 18 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e600,000 Ether
0xecf5c7534a842c3b4fff05feb72df40b17c41f45f00ef8ee47f8724ee4e0babc2063409618 days 18 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e100 Ether
0x9cd0a5621976eb0d3f580fc1b6e96141390854a02d44e3bf915b11a326ff23c01747062671 days 4 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0xcafb10ee663f465f9d10588ac44ed20ed608c11e200,000 Ether
0x7b8b3a2f01a2cbb6fae8894ab7c817557f7267d8c24b85783792e8aba2d796a51747062671 days 4 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7180eb39a6264938fdb3effd7341c4727c38215340,000 Ether
0x054c0b880005ffea90212a81909a3b17fff04153ed2406ca39ed43087f59305e1666154684 days 15 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7180eb39a6264938fdb3effd7341c4727c38215320 Ether
0xc190e18d1eb41ed85c5e4af421b728bf2386fba0d4ff2b03992aba9ee1cb20ae1659875685 days 16 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0xadc71d9dc3fac8c4ae1a0b22c04c520510e2c72a2.1 Ether
[ Download CSV Export  ] 
Contract Name: Wallet
Compiler Version: v0.3.2+commit.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

    Constructor Arguments (ABI-encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002903cadbe271e057edef157340b52a5898d7424f000000000000000000000000ba7ca1bcf210c1b37cf5818816c4a819c3040ea700000000000000000000000014cd6536d449e3f6878f2d6859e1ff92ae0990e60000000000000000000000000c24441e42277445e38e02dfc3494577c05ba46b

-----Decoded View---------------
Found 8 constructor arguments :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [2] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 0000000000000000000000002903cadbe271e057edef157340b52a5898d7424f
Arg [5] : 000000000000000000000000ba7ca1bcf210c1b37cf5818816c4a819c3040ea7
Arg [6] : 00000000000000000000000014cd6536d449e3f6878f2d6859e1ff92ae0990e6
Arg [7] : 0000000000000000000000000c24441e42277445e38e02dfc3494577c05ba46b


 

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.