Contract Overview
ETH Balance: 80,801.795868985630195342 Ether
ETH USD Value: $4,034,433.67 (@ $49.93/ETH)
No Of Transactions: 55 txns + 24 internalTxns
  Latest 25 txns from a total Of 55 transactions View All

TxHash Block Age From To Value [TxFee]
0x754011561ee485595579c1bb03711eb7d629c3bfecc6f661b58250e8adf7337935698754 days 10 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00075488
0xc6c5e43def85373875ced196e0f85bb3c06d689bdde362336d5dabbf6bd0ee0635677274 days 19 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00370064
0x8435fdaf3fc4039808372d69bf8e742cfe705241fc86b15c2e285425367406cd348736518 days 13 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00077037
0xeb0d5888c2a5716ec77a452975d2ba9b56645a0088e7bf6d8c42616877c7b538348735018 days 14 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00089271
0xc9e4a40ba3083e41d82753a2e5fc38582ae27ed3d4246ac14ee93407e11e88e1348734618 days 14 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00384868
0xef1c9acefbd3658149664daacc836f28248a4bafda3149aef53cf2ccbe1b8df0348734518 days 14 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00493092
0xda1530e5ef0dc981c4070454ce66aa50e8e1a074595f88e53bc97266f18f8f1f346430722 days 11 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00042754
0xb7aa50bab34412a373d8c07cd707885fea3f6775d9dc9d87d571ab6cc9f25108345725423 days 15 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00083357
0x6ab3a58f2c020395590e1083d3f3b393ad28e1803a1f5e937f89a7c69a0dad5d345723823 days 15 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00384868
0x01603f584a3de0b004fe103ea097d3fb358b241693da3d3c4749d8f94c1381a6345723023 days 15 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00046912
0x7326cdada14a1756c333fb3acd484f89995082b0a54c66089f43947bac13a4cc345693523 days 16 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.0034988
0x0312a6a1e6c226f7b2bcad314ac3e0934a267e3fa0150ec9c10b1a5bd8890e59345679423 days 17 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00075424
0x2d75f6d237ccd91469001781487acdcb070e9f77f8a6d23751eb1339e9bf5fca345677223 days 17 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.0034988
0xeabf8e5dcaf1c311f28fff530c4c82d394a32e4eb2e47269550d5ab0b2c8afb9345673823 days 17 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00075488
0xd2bb52cd4517205bd5b40304c6849bf183411d7d52b4b25fccb9b13fcffb4ca7345673023 days 17 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00075488
0x9384ae20b514eea98790aac528652a0edc7351d3aa866d4b2daa67d082d389a7345672123 days 17 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.0034988
0x4c7641bbd96bc3f88a177a274c2955a73d3f2542e99deebaf51e0c61e22ccf44345672023 days 17 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00075488
0x0203ecb79efa96562e96b022b63222cf0e9f4bfbab4ff0443beb577c81c9612a345669623 days 17 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.0034988
0x94687ac78eae3d5a78ae33d9a5603c5ae6c0cc1415a7255c395af1b5c2daa4d4345667723 days 17 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00349752
0xa8b364e6ec4a79e8e6a325e0208e79870a603e5bab817bdab76fc013e1b23bb4345649123 days 18 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00162358
0xec68d2f2fe15c0aef850c1227c85cb3335aa652e0d8660c14bfe7f072128c05d345615923 days 20 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00075488
0x3c8aa38300103bcef7c029e6ee2f68517c23ed30cb53d5de6fa756ecd60fc51b345614523 days 20 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.0034988
0xd34ccc5de0e79eafe8de598c7e4fbcd695a602a8f5a200c3f37bb8d69dc935dc345592223 days 21 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00075488
0x3555a01d58621d1c56cf0ea515ce6c0139837056fe146e6301c99c507c555289345591723 days 21 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.0034988
0x253e9cfb420d22c625e8691a9f68c15ebf0c64b30086d4e83c34db4a4cddc70e345591423 days 21 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00100488

[Download: CSV Export ]    
 Internal Transactions as a result of Contract Execution
  Latest 24 Internal Transactions

ParentTxHash Block Age From To Value
0x754011561ee485595579c1bb03711eb7d629c3bfecc6f661b58250e8adf7337935698754 days 10 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xb858a246c76da205da6619720d67be0fcbe02c281,690 Ether
0x8435fdaf3fc4039808372d69bf8e742cfe705241fc86b15c2e285425367406cd348736518 days 13 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xaa67443b843452de93f579fa8b6316ba901f64c33,000.02 Ether
0xeb0d5888c2a5716ec77a452975d2ba9b56645a0088e7bf6d8c42616877c7b538348735018 days 14 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xaa67443b843452de93f579fa8b6316ba901f64c31,000.01 Ether
0xb7aa50bab34412a373d8c07cd707885fea3f6775d9dc9d87d571ab6cc9f25108345725423 days 15 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x13cb6864dcb352d036fddc634124b43fe9ff25e42,000.01 Ether
0x0312a6a1e6c226f7b2bcad314ac3e0934a267e3fa0150ec9c10b1a5bd8890e59345679423 days 17 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x0747b69f75123fcc2276fd5d4fe87e68cda0b2044,000.01 Ether
0xeabf8e5dcaf1c311f28fff530c4c82d394a32e4eb2e47269550d5ab0b2c8afb9345673823 days 17 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x3a8e947be4325eba134ae34c796834787ac8cf052,990.03 Ether
0xd2bb52cd4517205bd5b40304c6849bf183411d7d52b4b25fccb9b13fcffb4ca7345673023 days 17 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xbc77c8e904b6ee395f100288dd2764607e208f422,000.01 Ether
0x4c7641bbd96bc3f88a177a274c2955a73d3f2542e99deebaf51e0c61e22ccf44345672023 days 17 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xe05eeb31abcd9eb8cbc0d01690a8e1f812f0bfa42,500.02 Ether
0xa8b364e6ec4a79e8e6a325e0208e79870a603e5bab817bdab76fc013e1b23bb4345649123 days 18 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x3a8e947be4325eba134ae34c796834787ac8cf0510 Ether
0xec68d2f2fe15c0aef850c1227c85cb3335aa652e0d8660c14bfe7f072128c05d345615923 days 20 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x076a2167662bf436f0d1ecef57d42d9d6f1b2abe444 Ether
0xd34ccc5de0e79eafe8de598c7e4fbcd695a602a8f5a200c3f37bb8d69dc935dc345592223 days 21 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xb858a246c76da205da6619720d67be0fcbe02c282,000 Ether
0x253e9cfb420d22c625e8691a9f68c15ebf0c64b30086d4e83c34db4a4cddc70e345591423 days 21 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xe05eeb31abcd9eb8cbc0d01690a8e1f812f0bfa41,000 Ether
0xa7a190abd474f878e007bdefbdc9c67355111b414d1d669b45a2221a26e9c6de345265224 days 10 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xb858a246c76da205da6619720d67be0fcbe02c281,480 Ether
0x1bac199054010108bab75ef5c7c575d640a30d42677d4e67257ba016dc41800c343808726 days 21 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x264329859e860b2cd5a8cc313c9840085ebd4c6e840 Ether
0xf4dd14446b74f3869b897a81ce9b50d3cb23552b19542d97ce4f0a932cb7891a343807426 days 21 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x264329859e860b2cd5a8cc313c9840085ebd4c6e900 Ether
0xd612ce4eb34d26ae6dad7eb52d9048f0899dc75b5ed6ada1f3df07d95f2e1f5b343802126 days 21 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x264329859e860b2cd5a8cc313c9840085ebd4c6e1 Ether
0xf2ea1887331ee9473a449f5509cce8f511662f34127bd511d8eb225763f30e8f337844336 days 21 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x0747b69f75123fcc2276fd5d4fe87e68cda0b2042,272 Ether
0x9d63374770dfb92265c169087380842172c81816f018f5abc62cb45d740aa268337839936 days 21 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x0747b69f75123fcc2276fd5d4fe87e68cda0b204263 Ether
0xa3fa72a5507982c3de5ed2e0fac1c6815d145fc919be54def21cf0ac855e503e321686863 days 18 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x6c9d6ba4e9f7e992eb4347ba8f2611b68b4aabca3,722 Ether
0x5ada541333ce293d39ac5ce12f76641249cd7f2f29f12ee7f47ce378119dbb55321677863 days 19 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x3456e9ec839dbb2edf274dc6dc23fc9575bd23c94,000 Ether
0x15d5c3061ec59749283b143a3ac25532474084f39a3bc8f56a2ec298fa97fe81321675763 days 19 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x3456e9ec839dbb2edf274dc6dc23fc9575bd23c92,735 Ether
0x828066221156abe476d7391c39a94da7b28f537095d22c1bb210230ac7d8e136321667063 days 19 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x3456e9ec839dbb2edf274dc6dc23fc9575bd23c91 Ether
0x3fe7b1a06a7bb504173f5a1cb06bff045288e6cf59aba2802fe794d2a837afa42752798140 days 11 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x38355ab2667ed167cadcd132603bc6236c8295de1,000 Ether
0x793b7c91952ea85f2d43036a7ea25c5f2574ab3d4a1291d0806ad01923aff0dc2752739140 days 11 hrs ago0x2eab7d90b42b99af77acdffe2c21e24776c0bbe70xdf62d2bcbfb92af1987a10fc5641e7c24dc93f102.9 Ether

[Download: CSV Export ]    
Warning: The compiled contract might be susceptible to IdentityPrecompileReturnIgnored (low-severity), HighOrderByteCleanStorage (high-severity), SendFailsForZeroEther (low-severity), DynamicAllocationInfiniteLoop (low-severity), CleanBytesHigherOrderBits (medium/high-severity) Solidity compiler bugs.

Contract Source Code Verified
Note: Displaying matching verified source code at contract 0x5cb5f46a655c02889172323760d12d0e5d83cdaf
Contract Name: Wallet
Compiler Version: v0.3.2-2016-04-18-81ae2a7
Optimization Enabled: No
Online Solidity Editor:  -NA-



  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