Sponsored Link:    Adshares - Decentralized marketplace for advertising. Active ICO with a price floor and buyback option.
Contract Overview
ETH Balance: 72,983.682265063295919748 Ether
ETH USD Value: $14,663,881.44 (@ $200.92/ETH)
No Of Transactions: 109 txns
  Latest 25 txns from a total Of 109 transactions View All

TxHash Block Age From To Value [TxFee]
0x19e8e1908831a4ffc28f9452a13d53c933135176e66b4dd71d48a14df91c7017381325352 days 22 hrs ago0x9e9e3b33bc71aea932a956d0f9dd790d2b3dffa3  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00045617
0xfde2d0f2e97a3bd1d514bc7f3c4ef76b114d076df9f8cc4a7b69b77ca00fae2b381325352 days 22 hrs ago0x9e9e3b33bc71aea932a956d0f9dd790d2b3dffa3  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00161701
0xdc81eff532b6423928f598f650658ce284443b72436dbe3870a239b89c1ce4af3175356162 days 21 hrs ago0x9e9e3b33bc71aea932a956d0f9dd790d2b3dffa3  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00082098
0xf57e3310c7686404b6b5aeb7483b5ec8594168255f2c429f05f6978a6a5166203175348162 days 21 hrs ago0x9e9e3b33bc71aea932a956d0f9dd790d2b3dffa3  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.0034823
0x29d6cbe3d2a84b20466550f577316a290f8c2edf4c44b1cf0dac5fceee7dd8053175259162 days 22 hrs ago0x9e9e3b33bc71aea932a956d0f9dd790d2b3dffa3  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00074906
0x493caea3ace2f79fa450d1fbccb5f677c00d3517ecdcb58da9f11a75e6a0fb983175144162 days 22 hrs ago0x78783f3fbab2b56f14c1f777db8a8679ad578f6a  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00348358
0x702177aacf116b9402fe5ddbce8a16fc2b7e2c8285aec47fe35adab6c12953353175138162 days 22 hrs ago0x78783f3fbab2b56f14c1f777db8a8679ad578f6a  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.0013219
0xb92284400f60e01288d938cb6e231a16ed57b3ea8456e18b672d4e8ea92cfbcd2215399321 days 20 hrs ago0x78783f3fbab2b56f14c1f777db8a8679ad578f6a  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.0006433
0xba1cb2303684e20bd9d6ef266116c77e1fd270a1818c2a065c3c4ff2c2af67722178608327 days 22 hrs agoPoloniex Wallet  IN   0xbf35faa9c265baf50c9cff8c389c363b057532759.99 Ether0.00067332
0x526fac097d9fb4e71f1fe7b2d29fd50bd0606de87ef67ecd3e165c857556ca612166297329 days 23 hrs ago0xc1d67c0dac847b0ebddd1895580635f51c4552f7  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00044255
0x9a36743386da3d03a49c3ec92ebe2d240961b614741e5059a8c5b0dfdbc38f6c2166193330 days 10 mins ago0xc1d67c0dac847b0ebddd1895580635f51c4552f7  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750.0001 Ether0.00047132
0x3b7bb11ae0365c4a039a32daf5777b0c1329b2c08de2dc5e1aeb726bcaf96fab2166187330 days 12 mins ago0xc1d67c0dac847b0ebddd1895580635f51c4552f7  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750.0001 Ether0.000441
0x21424d10067d3f4f6a7c509233a75bc03800d60c6bedeba9525998008f56f2ee2133718335 days 9 hrs ago0x78783f3fbab2b56f14c1f777db8a8679ad578f6a  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00242662
0x3a5cf38f1c200b9981f0208b9e8e84cc094baea16ab767c839dff900e4b592432133684335 days 9 hrs ago0x9e9e3b33bc71aea932a956d0f9dd790d2b3dffa3  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00499992
0x17cf32f54d173aba29afd86345c2611c794011aebaf30f972981fe20971b9f132133639335 days 9 hrs ago0x78783f3fbab2b56f14c1f777db8a8679ad578f6a  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00242662
0x5d80d6dfa244c44b1f1222cdd02804803301ce2ef6b941309d25d323a4dc2b5b2133622335 days 9 hrs ago0x9e9e3b33bc71aea932a956d0f9dd790d2b3dffa3  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00499992
0xd2c1cf97725a741876e16c2a906c093ec8c49dd25b96c3b1a42cb2283959accc2133586335 days 9 hrs ago0x9e9e3b33bc71aea932a956d0f9dd790d2b3dffa3  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00242662
0x26b82e6898f6dc313ec0807faea341f2c6a3717676f607bfba458d8ef45577bf2133575335 days 9 hrs ago0x78783f3fbab2b56f14c1f777db8a8679ad578f6a  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00499864
0x70fe700a9dab53ca17abbe3a4c75cc17cf9c919b71d47728622fd8f8442352032133536335 days 9 hrs ago0x78783f3fbab2b56f14c1f777db8a8679ad578f6a  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00242662
0x5223517067c419358c143b209004686e2bc937fe513aec222717e0f389c9ffc92133514335 days 9 hrs ago0x9e9e3b33bc71aea932a956d0f9dd790d2b3dffa3  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.0124966
0xce9d95d235ecbafa27e43f151aa6116f8f8005ddf70e31ad5a781f89c67ce1662133490335 days 9 hrs ago0x9e9e3b33bc71aea932a956d0f9dd790d2b3dffa3  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00258295
0x268a4e90eea1547c82e31ef00cbe0cfedc9a5b2397cdb2b63ceb3d14219c275b2133216335 days 10 hrs ago0x9e9e3b33bc71aea932a956d0f9dd790d2b3dffa3  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00097476
0x0336bf81ce73b5a34df925dde6365cc1410c336552174d108d7d9f77a052391f2133192335 days 11 hrs ago0x78783f3fbab2b56f14c1f777db8a8679ad578f6a  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00499864
0x8df11c9a74e7ee5e280a8fd5add7fe70eb2c669e0d3604eacafbd954faee32f82133069335 days 11 hrs ago0x78783f3fbab2b56f14c1f777db8a8679ad578f6a  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.00103446
0x08108462377dca841da05e49b1f412b40db24bae5ae88d3803b5afab30b12d212132984335 days 11 hrs ago0x78783f3fbab2b56f14c1f777db8a8679ad578f6a  IN   0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether0.0012341
[ 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
0xfde2d0f2e97a3bd1d514bc7f3c4ef76b114d076df9f8cc4a7b69b77ca00fae2b381325352 days 22 hrs ago0xbf35faa9c265baf50c9cff8c389c363b057532750x019a86adcac53b2bf423bc3944907de1c363a2281 Ether
0xdc81eff532b6423928f598f650658ce284443b72436dbe3870a239b89c1ce4af3175356162 days 21 hrs ago0xbf35faa9c265baf50c9cff8c389c363b057532750x7be7fad439128cca6738f8a6813519af4248365c90 Ether
0x29d6cbe3d2a84b20466550f577316a290f8c2edf4c44b1cf0dac5fceee7dd8053175259162 days 22 hrs ago0xbf35faa9c265baf50c9cff8c389c363b057532750x7be7fad439128cca6738f8a6813519af4248365c5,000 Ether
0x702177aacf116b9402fe5ddbce8a16fc2b7e2c8285aec47fe35adab6c12953353175138162 days 22 hrs ago0xbf35faa9c265baf50c9cff8c389c363b057532750x7be7fad439128cca6738f8a6813519af4248365c10 Ether
0xcca3760ba74e616b49fe3a3ea32fe9a42de3723fd9e48cbd6ab8a9fba5907ada2905885207 days 10 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xbf35faa9c265baf50c9cff8c389c363b057532751 wei
0xf4595a5072a7a1d1f1e901063271fb9c7b286ac4ca9416cc58310adf88c0747e2905780207 days 11 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xbf35faa9c265baf50c9cff8c389c363b057532751 wei
0xf4595a5072a7a1d1f1e901063271fb9c7b286ac4ca9416cc58310adf88c0747e2905780207 days 11 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xbf35faa9c265baf50c9cff8c389c363b057532751 wei
0x1e22d796ba4041153fbfa7821cfd39192bfa97ea747028c0a123f0dad776b32f2905764207 days 11 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xbf35faa9c265baf50c9cff8c389c363b057532751 wei
0x1e22d796ba4041153fbfa7821cfd39192bfa97ea747028c0a123f0dad776b32f2905764207 days 11 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xbf35faa9c265baf50c9cff8c389c363b057532751 wei
0x43dfe4c0d9aeef250e49ef52024a099cf01e7062d4e53782ace4b8bf9d2b5d2e2905751207 days 11 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xbf35faa9c265baf50c9cff8c389c363b057532751 wei
0xc9621226660af4357ae36b7bf7b7a34934c9d62141c6c127317159a80773299e2905703207 days 11 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xbf35faa9c265baf50c9cff8c389c363b057532751 wei
0xae4723e9947316ec4c10ce740c675e9980c22a90229a4ac85c438ed8ac6fbb192905696207 days 11 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xbf35faa9c265baf50c9cff8c389c363b057532751 wei
0xb9b1218eaf95a67600302e7ccb6759d7dc148655275038f751f43ec777ce2d212905690207 days 11 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xbf35faa9c265baf50c9cff8c389c363b057532751 wei
0xfa598ad0a2df84faa9ebb8d84358be8d7a073707d1c002a048af5fe9f7d74e7b2443513284 days 1 hr ago0xa4d68b67cfce13668b8d47cd507841beb556d6830xbf35faa9c265baf50c9cff8c389c363b057532750 Ether
0xee56f3fcdbd9c5c841433427d8014030ff9eea7376c3d89c3bc164f6d89775ec2441021284 days 10 hrs ago0x249663b2e6d0a17ea86f2e4332217dbb80dd96850xbf35faa9c265baf50c9cff8c389c363b057532750 Ether
0xa42a34c592d9865f88719f7172cdd1f290d9d9ebfba5dfc0f78bfffdb0fb5cef2441004284 days 10 hrs ago0xb52223cf79eb34c3a6ff66190935a0b3415a8e5f0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether
0x55a7452f88fb95fc84cd1e468deb216976b295041a02778ce879ebe92a2fff102440983284 days 11 hrs ago0x44399ca5a757ab31beee28c6d9f45eb1c2f4ee270xbf35faa9c265baf50c9cff8c389c363b057532750 Ether
0xee89bb8a22850a7f3982c110a281e95dd3a76a5f1785b30293f6b229b7b9f4362440980284 days 11 hrs ago0xd4e0272463a262ed2a771aecb87d1c5ff4dce4640xbf35faa9c265baf50c9cff8c389c363b057532750 Ether
0xc7f358968cde37eeac39415342be7d9fbae1c938e5a6c040e7cfa528967dad9e2440519284 days 12 hrs ago0x7ea06491cb8f6bf05ac9567a3ccc7eaa18f81ce00xbf35faa9c265baf50c9cff8c389c363b057532750 Ether
0x5b6a3aff7cef98765f217c92a11fe077499d9ad2878edeb2edf5383290e539212440478284 days 12 hrs ago0x119fa0906121ae8fdac542e40dd32694f6b7f3aa0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether
0xdb1162782bf7034814a6e6914127fd979de8fe29a449c1f87cbd637a7fd961412439239284 days 17 hrs ago0xc283eb357b41332804094c6f09a69ef2abe9988d0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether
0x1991524a58e703839da835605e42cb55f6968d2ea24340438e60791f115256642439203284 days 17 hrs ago0xba8621531a87477cfcf23c28542435b843442c0e0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether
0xa06073a9e79dcf4e7b2c4e9c49d412503374245a341ba63a7d92f11f6541550a2439083284 days 18 hrs ago0xe8d4c0c195b87a24ba1010cc56d211285d1426b20xbf35faa9c265baf50c9cff8c389c363b057532750 Ether
0x89908c880c26dfbee3a3a491b7ab2f34d91eb2e012fe9f0c86fcebf7ccbef9302438936284 days 19 hrs ago0x1baaa8ae2b57fd0f52fa4005e54ce917cbaff69d0xbf35faa9c265baf50c9cff8c389c363b057532750 Ether
0x87bcc2b9f442ba26916a39230292a42c3a05802d353b0285667727b6b7bcbf112438848284 days 19 hrs ago0x837f3e8caeee45522cab71867886768c2da32b300xbf35faa9c265baf50c9cff8c389c363b057532750 Ether
[ Download CSV Export  ] 



  Contract Source Code   Find Similiar Contracts
//sol Wallet
// Multi-sig, daily-limited account proxy/wallet.
// @authors:
// Gav Wood <g@ethdev.com>
// 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)) 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)) 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)) 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)) 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;
        return !(pending.ownersDone & ownerIndexBit == 0);
    }
    
    // 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 {
        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)) 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)) 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 m_spentToday;
    uint 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 {

	// 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)) 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":false,"inputs":[],"name":"resetSpentToday","outputs":[],"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
60606040526040516110ee3803806110ee833981016040908152815160805160a0519190930180516001908101815533600160a060020a0316600381905560009081526101026020529384205592918190849084905b82518110156100db57828181518110156100025790602001906020020151600160a060020a0316600260005082600201610100811015610002570160009190558351600283019161010291869085908110156100025790602001906020020151600160a060020a0316815260200190815260200160002060005081905550600101610055565b8160006000508190555050505080610105600050819055506100ff62015180420490565b6101075550505050610fd9806101156000396000f3606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e1461015b5780634123cb6b146101835780635c52c2f51461018c5780637065cb48146101b2578063746c9171146101db578063797af627146101e4578063b20d30a9146101f7578063b61d27f614610220578063b75c7dc614610241578063ba51a6df14610270578063c2cf732614610299578063cbf0b0c0146102d7578063f00d4b5d14610300578063f1736d861461032e575b61033860003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b6103386004356000600036604051808383808284375050509081018190039020905061062e815b600160a060020a03331660009081526101026020526040812054818082811415610c4757610d9f565b61033a6004355b600160a060020a03811660009081526101026020526040812054115b919050565b61033a60015481565b610338600036604051808383808284375050509081018190039020905061076f81610132565b61033860043560003660405180838380828437505050908101819003902090506105aa81610132565b61033a60005481565b61033a6004355b600081610a0581610132565b610338600435600036604051808383808284375050509081018190039020905061076381610132565b61033a60048035906024803591604435918201910135600061078e33610162565b610338600435600160a060020a0333166000908152610102602052604081205490808281141561034c576103cb565b61033860043560003660405180838380828437505050908101819003902090506106ec81610132565b61033a600435602435600082815261010360209081526040808320600160a060020a038516845261010290925282205482818114156107455761075a565b610338600435600036604051808383808284375050509081018190039020905061077d81610132565b6103386004356024356000600036604051808383808284375050509081018190039020905061045681610132565b61033a6101055481565b005b60408051918252519081900360200190f35b50506000828152610103602052604081206001810154600284900a9290831611156103cb5780546001828101805492909101835590839003905560408051600160a060020a03331681526020810186905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b50505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a1505b505050565b156103cb5761046483610162565b1561046f5750610451565b600160a060020a0384166000908152610102602052604081205492508214156104985750610451565b6103d15b6101045460005b81811015610eec57610104805461010891600091849081101561000257600080516020610fb98339815191520154825250602091909152604081208054600160a060020a0319168155600181810183905560028281018054858255939493909281161561010002600019011604601f819010610f7157505b5050506001016104a3565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005055600154600160a060020a03831660008181526101026020908152604091829020939093558051918252517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3929181900390910190a15b505b50565b156105a5576105b882610162565b156105c357506105a7565b6105cb61049c565b60015460fa90106105de576105de6105f3565b60015460fa901061052657506105a7565b6106ab5b60015b6001548110156105a7575b600154811080156106215750600281610100811015610002570154600014155b15610da757600101610601565b1561045157600160a060020a03831660009081526101026020526040812054925082141561065c57506105a5565b600160016000505403600060005054111561067757506105a5565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556105ef61049c565b60408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b156105a55760015482111561070157506105a7565b600082905561070e61049c565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001820154600282900a9081166000141593505b50505092915050565b156105a5575061010555565b156105a75760006101065550565b156105a55781600160a060020a0316ff5b156109c9576107a2846000610e8133610162565b1561085e577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843750505090810191506000908083038185876185025a03f150600093506109c992505050565b6000364360405180848480828437505050909101908152604051908190036020019020915061088e9050816101eb565b1580156108b1575060008181526101086020526040812054600160a060020a0316145b156109c95760008181526101086020908152604082208054600160a060020a0319168817815560018181018890556002918201805481865294849020909491821615610100026000190190911691909104601f9081019290920481019185919087908390106109d15760ff198135168380011785555b506109439291505b80821115610a01576000815560010161092f565b50507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b82800160010185558215610927579182015b828111156109275782358260005055916020019190600101906109e3565b5090565b15610a885760008381526101086020526040812054600160a060020a031614610a885760408051600091909120805460018281015460029384018054600160a060020a0394909416959194909391928392859291811615610100026000190116048015610ab95780601f10610a8e57610100808354040283529160200191610ab9565b50919050565b820191906000526020600020905b815481529060010190602001808311610a9c57829003601f168201915b505091505060006040518083038185876185025a03f1505050600084815261010860209081526040805192819020805460018281015433600160a060020a0381811689529688018c9052948701819052919094166060860181905260a06080870181815260029485018054978816156101000260001901909716949094049087018190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a975093958a9592949193909160c083019084908015610bbe5780601f10610b9357610100808354040283529160200191610bbe565b820191906000526020600020905b815481529060010190602001808311610ba157829003601f168201915b5050965050505050505060405180910390a16000838152610108602052604081208054600160a060020a0319168155600181810183905560028281018054858255939493909281161561010002600019011604601f819010610c2957505b505050600191505061017e565b601f016020900490600052602060002090810190610c1c919061092f565b60008581526101036020526040812080549093501415610ccf576000805483556001838101919091556101048054918201808255828015829011610c9e57818360005260206000209182019101610c9e919061092f565b50505060028301819055610104805487929081101561000257600091909152600080516020610fb983398151915201555b506001810154600283900a90811660001415610d9f5760408051600160a060020a03331681526020810187905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1815460019011610d8c576000858152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610fb98339815191529290920181905580825560018281018290556002909201559450610d9f9050565b8154600019018255600182018054821790555b505050919050565b5b60018054118015610dca57506001546002906101008110156100025701546000145b15610dde5760018054600019019055610da8565b60015481108015610e015750600154600290610100811015610002570154600014155b8015610e1b57506002816101008110156100025701546000145b15610e7c57600154600290610100811015610002578101549082610100811015610002579090016000505580610102600060028361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b6105f6565b1561017e5761010754610e975b62015180420490565b1115610eb057600061010655610eab610e8e565b610107555b6101065480830110801590610ece5750610106546101055490830111155b15610ee45750610106805482019055600161017e565b50600061017e565b6105a56101045460005b81811015610f8f5761010480548290811015610002576000918252600080516020610fb9833981519152015414610f6957610104805461010391600091849081101561000257600080516020610fb983398151915201548252506020919091526040812081815560018101829055600201555b600101610ef6565b601f01602090049060005260206000209081019061051b919061092f565b610104805460008083559190915261045190600080516020610fb98339815191529081019061092f564c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe
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.