Sponsored Link: Join FundYourselfNow ICO (20% bonus) – One-stop crowdfunding platform for projects seeking funding and talented helpers
Contract Overview
ETH Balance: 11.09784125999999 Ether
ETH USD Value: $3,553.86 (@ $320.23/ETH)
No Of Transactions: 84 txns + 261 internalTxns
  Latest 25 txns from a total Of 84 transactions View All

TxHash Block Age From To Value [TxFee]
0x639bec27266b8bfe93478b06dd06c7f8a77924231d192a2314f6e4a58246c0ad358811260 days 5 hrs ago0x70c2c84f46d19e3357726df506a206f1a94922a4  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac470.09784126 Ether0.00044846
0x6b5d23ce7f1dc58b9d8323d2e9137b476394dff5ce1129e76946ea40b6cbd75b356502264 days 5 hrs ago0xf9eb09b6bdb4767c7316de4ad85b69d4cf2661dd  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac4710 Ether0.00044846
0xe19173679908f39c0cc062459ac41a8c579c04282c750eee4af854722af20269352974170 days 6 hrs ago0x99254fea60d6a461efd38e67aa640c4dbf868e38  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether0.01083168
0x8a197609ed83c7db8e5e47e1e141452671843652a9d00a338951b459e8c450eb345236183 days 10 hrs ago0x99254fea60d6a461efd38e67aa640c4dbf868e38  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether0.00102542
0xb51e245c180c1165b1d66f2965549f6ce19f17237b8dc009b3f67fe536be7da5343274586 days 17 hrs ago0x99254fea60d6a461efd38e67aa640c4dbf868e38  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether0.0010267
0x40f99a35014ed0a3cd80b42150535f3cf292cbe1bc84d84817f28e19adb8371e342343388 days 7 hrs ago0x99254fea60d6a461efd38e67aa640c4dbf868e38  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether0.00870227
0x49cd6d8218be886a8c266bd769141ab0ee1204cdbb20b486158dc12e1d9e0df1342154988 days 14 hrs ago0x99254fea60d6a461efd38e67aa640c4dbf868e38  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether0.01083168
0x25bf35ae897b9304e1d1ae0a27357ed9a2ae4612d3d3659f61864112984e7bd8341632089 days 11 hrs ago0x99254fea60d6a461efd38e67aa640c4dbf868e38  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether0.01083168
0x078df44a1e2445f8383f4aea0739bbbb0d6e1c02608289a492575b33ed41c317340642791 days 3 hrs ago0x99254fea60d6a461efd38e67aa640c4dbf868e38  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether0.00082486
0x3defca96abb8d05627f1851cc85bb375fd462f45f5977aa622dbde39ffb049f5340640891 days 3 hrs ago0x99254fea60d6a461efd38e67aa640c4dbf868e38  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether0.00081846
0x0fc3c2d8d18fb91aa218278166b48aedfcc2dc1c3d26cda8716e78c0f3596417340622891 days 4 hrs ago0x99254fea60d6a461efd38e67aa640c4dbf868e38  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether0.00200456
0x48d0e4c652ffe7a9ff4900cb4ff87ef9d82f47fcdad7efc0a16c3400bcba69cb338195295 days 5 hrs ago0xff043cef2e4bcdf1cad6c6f13606948c5309fecb  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac4710 Ether0.00044846
0xf34eadc868521a89d04e929b6e03f30ebf24b5b50e938490cc3dc6db8e97336d338003195 days 13 hrs ago0xff616e67257ab8dbcea952bceca9fa082cdbf4f4  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac470.99 Ether0.00044846
0x1e49bf8d07357319e8549f9c4455d5bf8a9a9cf5ed4a63dbdbdeb44801bdac6f337848095 days 19 hrs ago0xed6d42dd1d479e535f4c39ad7430d5079e5eff5a  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac471 Ether0.00044846
0x2f4a9f4056800582e12fee647aeef04bbd20dca587642fa7496dbfa923ad5b8d337589196 days 6 hrs ago0x00c80e131f0761af3152e7fa8d054468c135bfe0  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac471.5 Ether0.00044846
0xa6d24edbc5b895d4121300698d5959b69fabdd59029f27115d33ac0ed4ad4575337444596 days 12 hrs ago0xff9ce630d37192cb273cc672f12a0387c6f1185e  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac4710 Ether0.00044846
0xe4e044310270c8548446ea2429472e6265d8e8bc952a5c1c7339c1829d7e62c6337180296 days 22 hrs ago0x103d6fb9cb7d7fa9aefe4b2becd655e3a24a7fc1  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac4710 Ether0.00044846
0x2d21e8f619554cf0d1c0f06b18e651240db3fe9a0ae1ea6db6438415875bc169336834097 days 12 hrs ago0x99d18220df24555fcda4eae77bb7712226929e9d  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac471 Ether0.00091934
0x02aadc3abfd636a05575b6af6fe2a81c984e3e261c6b67fcb1deb217bb6b5d2c336314498 days 9 hrs ago0xd8f2a1ebe7cd7524f19feae3ad1339bb4bac0b04  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac4710.29091 Ether0.00094176
0x102643812641a7cd94aabae803f9728110260e21483f37df2620b54535ae23f13345683101 days 7 hrs ago0x8efdb5ee103c2295dab1410b4e3d1ed7a91584d4  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac471 Ether0.00022423
0x39c2ee7715e3a23f750dd99940b2255ea3ccc38e179ac03f03ec98a2a8a42dfa3343731101 days 15 hrs ago0xeafbd0496447667a64c55b00584891c0f92650f3  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac47100 Ether0.0004933
0x09b6f1bc540e7e8b63b8a2b29df08e62f85fe08ba85cbed88be812cf2e804cfa3340724102 days 2 hrs ago0xabe1704fdec51a8e3c1712c731e3386d27e8e721  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac475 Ether0.0004933
0x4e583587c7081f041002b5f467e4bc48196f94b6148f3fa3d7be94baecd604d93328068104 days 5 hrs ago0x79d94aae97baf2017c1cd39f3b406d60712d086f  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac4710 Ether0.00044846
0xd6bb8f8e5eae91126e712a8c2c0e31b0401bc1234baa0c9c7be6728ec857fc8f3308774107 days 11 hrs ago0x1c97121e0e4497b48eb5327fe9f0dfaa9f88fdb1  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac474 Ether0.00091934
0x2cb2d4602c0e238836fa96e5c5c4e57cfef023244150b4f6cc4c9bdf9b5628353305659108 days ago0x22a45c365b8db00cf72c75a9cc57e0264fb4fb97  IN   0x0c7c0b72004a7a66ffa780637427fed0c4faac471 Ether0.00091934

[Download: CSV Export ]    
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns from a total of 261 View All
ParentTxHash Block Age From To Value
0xe19173679908f39c0cc062459ac41a8c579c04282c750eee4af854722af20269352974170 days 6 hrs ago0x0c7c0b72004a7a66ffa780637427fed0c4faac470x83a394bd343bbf98c5abbad158faad0fb73e2e19500 Ether
0x8a197609ed83c7db8e5e47e1e141452671843652a9d00a338951b459e8c450eb345236183 days 10 hrs ago0x0c7c0b72004a7a66ffa780637427fed0c4faac470x83a394bd343bbf98c5abbad158faad0fb73e2e19114 Ether
0xb51e245c180c1165b1d66f2965549f6ce19f17237b8dc009b3f67fe536be7da5343274586 days 17 hrs ago0x0c7c0b72004a7a66ffa780637427fed0c4faac470x83a394bd343bbf98c5abbad158faad0fb73e2e1935 Ether
0x40f99a35014ed0a3cd80b42150535f3cf292cbe1bc84d84817f28e19adb8371e342343388 days 7 hrs ago0x0c7c0b72004a7a66ffa780637427fed0c4faac470x83a394bd343bbf98c5abbad158faad0fb73e2e1927 Ether
0x49cd6d8218be886a8c266bd769141ab0ee1204cdbb20b486158dc12e1d9e0df1342154988 days 14 hrs ago0x0c7c0b72004a7a66ffa780637427fed0c4faac470x83a394bd343bbf98c5abbad158faad0fb73e2e1985 Ether
0x25bf35ae897b9304e1d1ae0a27357ed9a2ae4612d3d3659f61864112984e7bd8341632089 days 11 hrs ago0x0c7c0b72004a7a66ffa780637427fed0c4faac470x83a394bd343bbf98c5abbad158faad0fb73e2e1950 Ether
0x078df44a1e2445f8383f4aea0739bbbb0d6e1c02608289a492575b33ed41c317340642791 days 3 hrs ago0x0c7c0b72004a7a66ffa780637427fed0c4faac470x83a394bd343bbf98c5abbad158faad0fb73e2e19250 Ether
0x3defca96abb8d05627f1851cc85bb375fd462f45f5977aa622dbde39ffb049f5340640891 days 3 hrs ago0x0c7c0b72004a7a66ffa780637427fed0c4faac470x83a394bd343bbf98c5abbad158faad0fb73e2e190.00000000000001 Ether
0x0fc3c2d8d18fb91aa218278166b48aedfcc2dc1c3d26cda8716e78c0f3596417340622891 days 4 hrs ago0x0c7c0b72004a7a66ffa780637427fed0c4faac470x83a394bd343bbf98c5abbad158faad0fb73e2e190.9741156710625663 Ether
0x0d93e04907bb7c6f6d2e5950294b6e1a2672c97d22a62ef3bef42c7008e512852865438180 days 19 hrs ago0x0c7c0b72004a7a66ffa780637427fed0c4faac470x1c23fa32496edab8583565138e87786e2b45a3b50.1 Ether
0xe77d499158b23f21f0d0e675b7c8042bd04e79f28045a8f5a730310fa89b677d2862317181 days 8 hrs ago0x0c7c0b72004a7a66ffa780637427fed0c4faac470xdbf9401dd7d3c25e7c2cc1614cc36112dbf5f2f80.1 Ether
0x43958d4a2826abddbe4b3714264fdd4e45295c8ea91aa08253cf0c23d1f2412d2440499251 days 5 hrs ago0xef909db0b425eaa3d50cb364ca438853aa10d8d60x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether
0x1b6da3573ebd20ec0c893e26c641459809ec5ac5cf54b315f994e96f05733e1a2440380251 days 6 hrs ago0xdec22dcddf052e5e1e945bf6f125f5c9099276720x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether
0xe893f0ad5f1c47c56a85217ad6d480105de29ede3aa1a780f34238428b6441252440294251 days 6 hrs ago0x884491c74c949c615df03ccb29ef191e0b1e86590x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether
0x21acb3569d3ec94e3a9a9a82ba9b60904024a46c49a4b5ce5ea3d69940e452422440167251 days 7 hrs ago0x2183c347c480aa6b559ad1162ee180ddddf85add0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether
0xc9132debb721220970bd6228aecce9a79bb5937040329585379d7fe7ea0aecc72439674251 days 9 hrs ago0xb458a1793f2b92fb51a73d80b97717160c0448e50x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether
0x105b9056c78a85402f2dca66b0c9d7f10159391b125b2a8393c9a4afc95a54d32439662251 days 9 hrs ago0xdcb802517753ad91e95f4529ea94d12129b1104a0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether
0xf3ebadc7e934547b0b1093041f8320354991ae483e4bb8afb0ccba255f746f662439396251 days 10 hrs ago0x0edab53bee6522bb4074e0c3bd997386e57458580x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether
0x31ee9b794686496c82bc062f71fc384adc3d789eb46dba577e726c8238146f552438890251 days 12 hrs ago0x758e255e8fff2839fb79ae722a5446783b98b8cf0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether
0x613f0b1d392517ab1134ca668e847a754c31a2b486f59dbf16f0150ea22313c52438778251 days 12 hrs ago0xd311f58ace9dabf180fbc86cd5325b04c6ba22ad0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether
0x83a92ddb36714a4f8c41ed3163656ff7d7ae3a610f558d88db7807235b728e662438728251 days 13 hrs ago0xbf550228a3900781e251afaebaf5320800712a7f0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether
0x9ec87bdc4f0c2dda468e724c1161d4643213f40a173f8ed5b3b0fd27ea25b9d02438724251 days 13 hrs ago0x5fcdb21847cf8fe09054df8cc263fbf024b1c8670x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether
0xf2c2fc96c0f402d964aed503b98ba6167f2f3a92c017dd56c10bcad3ecefadb72438532251 days 13 hrs ago0x654fac05f25e397181c2974340e12fc8ade970e40x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether
0xf65b16965d0dbfbb9c5d4647683e0b8866ffc669ccb9f427964a52fdc18c9f542438532251 days 13 hrs ago0xe18999da9a4d4f544c182216b3e7b7cb0d59368a0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether
0x6d9bda52e78f0b9769ac3bc56c14ee91c0a81683f38d820cad8faefcceea25df2438482251 days 14 hrs ago0x05b37f9e04e6adfea1a2c4f02574f47efc041aad0x0c7c0b72004a7a66ffa780637427fed0c4faac470 Ether

[Download: CSV Export ]    
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 <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, 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