Contract Overview |  Etheroll_MultiSig2
Balance: 3,491.350067421635386003 Ether
Ether Value: $404,263.42 (@ $115.79/ETH)
Transactions: 69 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x73f0ed546cd7893abc5e04284b68522602603dd4at txn 0x1bdb64f3f4854fe930005c2e03dd4e4771470bfea737ece15ae2c26d4106686a
Token Balance:
 Latest 25 transactions from a total of 69 transactions

TxHash Age From To Value [TxFee]
0x330247c44bee6e3cf5bb84bb26a6f80f1033bff8ec718dfed547288b4978e64123 hrs 50 mins ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000123537
0x52c36010b2b6b85ba31d53dbcc9f6864c919cc1c9578d3c42eda9767c31a1ab823 hrs 54 mins ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000229005
0x8552553f1eaadb27b9c1aafd79f8d3057e4865967bfc10ba95a584cb03994d1b7 days 9 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000277095
0xf33950b192ecf5b95a02bc861535db2ea2ade9a22e64c00e5708d9ff7acabb9a16 days 12 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000082486
0x912f2dcb201a69a4bae620cde961eee60c007c9a280ff5233f260546acd0010716 days 12 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.00010267
0xc102b32230a66bffb02e97ffb1974a4ae2da70c56d19e79ae5a32b17ff6839eb34 days 8 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000666523
0x5c5101fbd822a8cd20ab6aadf718e7ad44fd86fc9cb9b47e8d261d562f16642d69 days 17 hrs ago0x47335c3d3de956c01e2ea7d354e48cd03c006b78  IN   Etheroll_MultiSig20 Ether0.000168608
0xdc13d58bfe89649e6c4b6fde6ed310a54f361436d04d237cd7ca4a763a5c7f4371 days 7 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000534345
0xafc49630b2376074bdab4ef660bf1a90439751d0fe77d5acbc11b1cf8e8b4eaa87 days 5 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000154005
0xf5032c8397788246a0ab83f50fe8c70eec3f0691ed3aae9f15c99efe29088d9b90 days 9 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000256355
0xf88f497418c652b900b82a5c078f8ff33421dd080e4ee50aef68861e91722f18103 days 10 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.00030801
0xf0996cb7d0c5557df9334fa3ebb070d78eb45b7476148aa1a70716ae17b49256161 days 4 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.001258617
0xc635a9f4c222f2cc179340df720581780698102281fd06547661af4b7ba3d367161 days 4 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.001389759
0x17925b2550045d80cb97ae4bd5a6782392cd94b774647729bab79dd4c152146d161 days 4 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000926506
0x28c2328006ac3d6a4ecf3fce96db26717d946d108ed4e984202104c01668e5bd161 days 4 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.00076271
0x106cec48f996794dbbeda5a3e524745281aa5f2830aaf17dbe157841ec1c9107164 days 3 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000820336
0xf41d8bf24a4a5840087bfb10ab44b721275c28f3df29a0c3793506fe589aad54166 days 54 mins ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.01754233
0x19dd3d1c9263b5486bfc8c5d49652b037f4ed96ad07318d8b2b53871d1636e31173 days 5 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.001296607
0x6cb870417353e9795656f284676c05dcbbde1809e5fa5e64160d38074bf9ebdc195 days 1 hr ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000563981
0x7494bafda0f39b800511a203510853ead983697f29a5393e9751aac92fcff5d1263 days 9 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000198537
0xf4643007bceb097f57b0f6422248783649e8dd9c09116d46011223456cee8eba263 days 10 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000228813
0x1f97ba3f6d40e733c162be55cf5d79c74dee8d84a90d7337864e2069ea9c8237264 days 9 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000198537
0x5cb8ac9df839c23cdd60a6c5f29df1c72e73130ab7e27c6a8064fb49a706c55b264 days 9 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000228621
0xfa203e66f3130d1b273ee04ce9fa5020c4a39b8232915896c96c22d830cf2933266 days 8 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.000153813
0x004c71fec1bd900ae76ed5e825099092a6563ef5309565e5df9da9b5e7f55d68294 days 4 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig20 Ether0.00020534
[ 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
0x330247c44bee6e3cf5bb84bb26a6f80f1033bff8ec718dfed547288b4978e641710350623 hrs 50 mins ago0xa86a60d53e6f474e049be54824551bb99f05adee0x73f0ed546cd7893abc5e04284b68522602603dd410 Ether
0x52c36010b2b6b85ba31d53dbcc9f6864c919cc1c9578d3c42eda9767c31a1ab8710349023 hrs 54 mins ago0xa86a60d53e6f474e049be54824551bb99f05adee0xc213fe40d18791e29f22da9d8ce250ea2f414a3630 Ether
0x8552553f1eaadb27b9c1aafd79f8d3057e4865967bfc10ba95a584cb03994d1b70679237 days 9 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x939653b0ab113e100a114eed5325d60338a3f5b85 Ether
0xf33950b192ecf5b95a02bc861535db2ea2ade9a22e64c00e5708d9ff7acabb9a701688516 days 12 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x73f0ed546cd7893abc5e04284b68522602603dd420 Ether
0x912f2dcb201a69a4bae620cde961eee60c007c9a280ff5233f260546acd00107701687716 days 12 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x73f0ed546cd7893abc5e04284b68522602603dd435 Ether
0xc102b32230a66bffb02e97ffb1974a4ae2da70c56d19e79ae5a32b17ff6839eb691259234 days 8 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x73f0ed546cd7893abc5e04284b68522602603dd4130 Ether
0xdc13d58bfe89649e6c4b6fde6ed310a54f361436d04d237cd7ca4a763a5c7f43668842771 days 7 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x6a8c9ae84c0c1afa5e8b2f933f592f5826cb90e130 Ether
0xafc49630b2376074bdab4ef660bf1a90439751d0fe77d5acbc11b1cf8e8b4eaa659143987 days 5 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x73f0ed546cd7893abc5e04284b68522602603dd420 Ether
0xf5032c8397788246a0ab83f50fe8c70eec3f0691ed3aae9f15c99efe29088d9b657197890 days 9 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0xef9ead6f47e5f6dd12ab092d82890ceb815cfa275 Ether
0xf88f497418c652b900b82a5c078f8ff33421dd080e4ee50aef68861e91722f186491981103 days 10 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x73f0ed546cd7893abc5e04284b68522602603dd430 Ether
0xf0996cb7d0c5557df9334fa3ebb070d78eb45b7476148aa1a70716ae17b492566144553161 days 4 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x6cbc5df5a156410414634da202875748d7eb6be619 Ether
0xc635a9f4c222f2cc179340df720581780698102281fd06547661af4b7ba3d3676144418161 days 4 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x8a489b750d3bb7d3496d7ffadcde3d6126e6ea9418 Ether
0x17925b2550045d80cb97ae4bd5a6782392cd94b774647729bab79dd4c152146d6144412161 days 4 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x41e30f35f8d21bfb86a33c2360aadbb807ebbed318 Ether
0x28c2328006ac3d6a4ecf3fce96db26717d946d108ed4e984202104c01668e5bd6144404161 days 4 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x2ee41ee6d02c5177786a83f5bbbc3fad37fe4dc718 Ether
0x106cec48f996794dbbeda5a3e524745281aa5f2830aaf17dbe157841ec1c91076127197164 days 3 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x73f0ed546cd7893abc5e04284b68522602603dd45 Ether
0xf41d8bf24a4a5840087bfb10ab44b721275c28f3df29a0c3793506fe589aad546115879166 days 54 mins ago0xa86a60d53e6f474e049be54824551bb99f05adee0xea8834c447600cc4513cd5d8f2cf744e807dea6f5 Ether
0x19dd3d1c9263b5486bfc8c5d49652b037f4ed96ad07318d8b2b53871d1636e316073356173 days 5 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x7e83dc1a90c29da3fa6c2a83d9857545deb357ab10 Ether
0x6cb870417353e9795656f284676c05dcbbde1809e5fa5e64160d38074bf9ebdc5943989195 days 1 hr ago0xa86a60d53e6f474e049be54824551bb99f05adee0xf7459cb2a7f9655e52f0082e65c70c4646efd8331 Ether
0x7494bafda0f39b800511a203510853ead983697f29a5393e9751aac92fcff5d15552258263 days 9 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0xd9a252b877fbd58bf0709b8a0260d98ca9440cf16.4 Ether
0xf4643007bceb097f57b0f6422248783649e8dd9c09116d46011223456cee8eba5552193263 days 10 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x2f7a3659630ab4ff326647f45f1e55440b6ff8126.4 Ether
0x1f97ba3f6d40e733c162be55cf5d79c74dee8d84a90d7337864e2069ea9c82375546596264 days 9 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x7401ec6e58d1b4133bf6c672ec98c352f1af814b5 Ether
0x5cb8ac9df839c23cdd60a6c5f29df1c72e73130ab7e27c6a8064fb49a706c55b5546561264 days 9 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x737c88f92fa43edb00830a3a3925ff984f4d954c7 Ether
0xfa203e66f3130d1b273ee04ce9fa5020c4a39b8232915896c96c22d830cf29335535479266 days 8 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x00b552e18162bd016857298c7977854ecc3b7b2d23.5 Ether
0x004c71fec1bd900ae76ed5e825099092a6563ef5309565e5df9da9b5e7f55d685371598294 days 4 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x73f0ed546cd7893abc5e04284b68522602603dd420 Ether
0x1c5b86a0593ac5f1354001a70e2d32a55ba20e8e02d0915ecba90569eba676835134322334 days 6 hrs ago0xa86a60d53e6f474e049be54824551bb99f05adee0x73f0ed546cd7893abc5e04284b68522602603dd410 Ether
[ Download CSV Export  ] 
Contract Name: Wallet
Compiler Text: v0.3.2-2016-04-18-81ae2a7
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

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

    // TYPES

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

    // EVENTS

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

    // MODIFIERS

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

    // METHODS

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

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

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

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

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

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

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

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

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

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

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

    // MODIFIERS

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

    // METHODS

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

    // FIELDS

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

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

    // EVENTS

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

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

    uint public version = 2;

    // TYPES

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

    // METHODS

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

    // FIELDS

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

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

  Contract Creation Code Switch To Opcodes View
6060604052600261010860005055604051611b51380380611b51833981016040528080518201919060200180519060200190919080519060200190919050505b805b83835b600060018351016001600050819055503373ffffffffffffffffffffffffffffffffffffffff16600260005060016101008110156100025790900160005b5081905550600161010260005060003373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005081905550600090505b825181101561016e5782818151811015610002579060200190602002015173ffffffffffffffffffffffffffffffffffffffff166002600050826002016101008110156100025790900160005b508190555080600201610102600050600085848151811015610002579060200190602002015173ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b80600101905080506100c2565b816000600050819055505b505050806101056000508190555061018f6101ad565b610107600050819055505b505b505050611992806101bf6000396000f35b600062015180420490506101bc565b9056606060405236156100f8576000357c010000000000000000000000000000000000000000000000000000000090048063173825d9146101605780632f54bf6e146101785780634123cb6b146101a457806352375093146101c757806354fd4d50146101ea5780635c52c2f51461020d578063659010e71461021c5780637065cb481461023f578063746c917114610257578063797af6271461027a578063b20d30a9146102a6578063b61d27f6146102be578063b75c7dc614610307578063ba51a6df1461031f578063c2cf732614610337578063cbf0b0c01461036c578063f00d4b5d14610384578063f1736d86146103a5576100f8565b61015e5b600034111561015b577fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3334604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b565b005b61017660048080359060200190919050506107c4565b005b61018e60048080359060200190919050506109a5565b6040518082815260200191505060405180910390f35b6101b16004805050610a91565b6040518082815260200191505060405180910390f35b6101d46004805050610b38565b6040518082815260200191505060405180910390f35b6101f76004805050610b42565b6040518082815260200191505060405180910390f35b61021a6004805050610adf565b005b6102296004805050610b2e565b6040518082815260200191505060405180910390f35b610255600480803590602001909190505061066e565b005b6102646004805050610a88565b6040518082815260200191505060405180910390f35b6102906004808035906020019091905050610f0e565b6040518082815260200191505060405180910390f35b6102bc6004808035906020019091905050610a9a565b005b6102f160048080359060200190919080359060200190919080359060200190820180359060200191909192905050610b9e565b6040518082815260200191505060405180910390f35b61031d60048080359060200190919050506103c8565b005b610335600480803590602001909190505061090f565b005b61035660048080359060200190919080359060200190919050506109e7565b6040518082815260200191505060405180910390f35b6103826004808035906020019091905050610b4c565b005b6103a360048080359060200190919080359060200190919050506104ca565b005b6103b26004805050610b24565b6040518082815260200191505060405180910390f35b60006000600061010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549250600083141561040f576104c4565b8260020a91506101036000506000858152602001908152602001600020600050905060008282600101600050541611156104c3578060000160008181505480929190600101919050555081816001016000828282505403925050819055507fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b3385604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b50505050565b600060003643604051808484808284378201915050828152602001935050505060405180910390206104fb816112db565b1561066757610509836109a5565b156105145750610669565b61010260005060008573ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005054915060008214156105565750610669565b61055e611777565b8273ffffffffffffffffffffffffffffffffffffffff166002600050836101008110156100025790900160005b5081905550600061010260005060008673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055508161010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8484604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15b505b505050565b600036436040518084848082843782019150508281526020019350505050604051809103902061069d816112db565b156107bf576106ab826109a5565b156106b657506107c1565b6106be611777565b60fa6001600050541015156106d7576106d561153d565b505b60fa6001600050541015156106ec57506107c1565b60016000818150548092919060010191905055508173ffffffffffffffffffffffffffffffffffffffff1660026000506001600050546101008110156100025790900160005b508190555060016000505461010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c382604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b505b50565b600060003643604051808484808284378201915050828152602001935050505060405180910390206107f5816112db565b156109095761010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549150600082141561083c575061090b565b6001600160005054036000600050541115610857575061090b565b60006002600050836101008110156100025790900160005b5081905550600061010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055506108b2611777565b6108ba61153d565b507f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da83604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b505b5050565b600036436040518084848082843782019150508281526020019350505050604051809103902061093e816112db565b156109a05760016000505482111561095657506109a2565b81600060005081905550610968611777565b7facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da826040518082815260200191505060405180910390a15b505b50565b6000600061010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050541190506109e2565b919050565b60006000600060006101036000506000878152602001908152602001600020600050925061010260005060008673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505491506000821415610a505760009350610a7f565b8160020a90506000818460010160005054161415610a755760009350610a7f56610a7e565b60019350610a7f565b5b50505092915050565b60006000505481565b60016000505481565b6000364360405180848480828437820191505082815260200193505050506040518091039020610ac9816112db565b15610ada5781610105600050819055505b505b50565b6000364360405180848480828437820191505082815260200193505050506040518091039020610b0e816112db565b15610b20576000610106600050819055505b505b565b6101056000505481565b6101066000505481565b6101076000505481565b6101086000505481565b6000364360405180848480828437820191505082815260200193505050506040518091039020610b7b816112db565b15610b99578173ffffffffffffffffffffffffffffffffffffffff16ff5b505b50565b6000610ba9336109a5565b15610f0557610bb7846116d7565b15610ca0577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd0043385878686604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a18473ffffffffffffffffffffffffffffffffffffffff168484846040518083838082843782019150509250505060006040518083038185876185025a03f1925050505060006001029050610f06565b600036436040518084848082843782019150508281526020019350505050604051809103902090508050610cd381610f0e565b158015610d3357506000610109600050600083815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610f045784610109600050600083815260200190815260200160002060005060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555083610109600050600083815260200190815260200160002060005060010160005081905550828261010960005060008481526020019081526020016000206000506002016000509190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e0857803560ff1916838001178555610e39565b82800160010185558215610e39579182015b82811115610e38578235826000505591602001919060010190610e1a565b5b509050610e649190610e46565b80821115610e605760008181506000905550600101610e46565b5090565b50507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32813386888787604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b5b5b949350505050565b600081610f1a816112db565b156112d4576000610109600050600085815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156112d357610109600050600084815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610109600050600085815260200190815260200160002060005060010160005054610109600050600086815260200190815260200160002060005060020160005060405180828054600181600116156101000203166002900480156110765780601f1061104b57610100808354040283529160200191611076565b820191906000526020600020905b81548152906001019060200180831161105957829003601f168201915b505091505060006040518083038185876185025a03f192505050507fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a3384610109600050600087815260200190815260200160002060005060010160005054610109600050600088815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166101096000506000898152602001908152602001600020600050600201600050604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156112005780601f106111d557610100808354040283529160200191611200565b820191906000526020600020905b8154815290600101906020018083116111e357829003601f168201915b5050965050505050505060405180910390a1610109600050600084815260200190815260200160002060006000820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000506000905560028201600050805460018160011615610100020316600290046000825580601f1061128957506112c6565b601f0160209004906000526020600020908101906112c591906112a7565b808211156112c157600081815060009055506001016112a7565b5090565b5b50505060019150506112d6565b5b505b919050565b600060006000600061010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549250600083141561132457611535565b610103600050600086815260200190815260200160002060005091506000826000016000505414156113fd57600060005054826000016000508190555060008260010160005081905550610104600050805480919060010190908154818355818115116113c3578183600052602060002091820191016113c291906113a4565b808211156113be57600081815060009055506001016113a4565b5090565b5b5050508260020160005081905550846101046000508360020160005054815481101561000257906000526020600020900160005b50819055505b8260020a90506000818360010160005054161415611534577fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda3386604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16001826000016000505411151561150757610104600050610103600050600087815260200190815260200160002060005060020160005054815481101561000257906000526020600020900160005b50600090556101036000506000868152602001908152602001600020600060008201600050600090556001820160005060009055600282016000506000905550506001935061153556611533565b816000016000818150548092919060019003919050555080826001016000828282505417925050819055505b5b5b505050919050565b60006000600190505b6001600050548110156116d2575b60016000505481108015611580575060006002600050826101008110156100025790900160005b505414155b15611592578080600101915050611554565b5b60016001600050541180156115c45750600060026000506001600050546101008110156100025790900160005b5054145b156115e357600160008181505480929190600190039190505550611593565b600160005054811080156116145750600060026000506001600050546101008110156100025790900160005b505414155b8015611637575060006002600050826101008110156100025790900160005b5054145b156116cd5760026000506001600050546101008110156100025790900160005b50546002600050826101008110156100025790900160005b50819055508061010260005060006002600050846101008110156100025790900160005b5054815260200190815260200160002060005081905550600060026000506001600050546101008110156100025790900160005b50819055505b611546565b5b5090565b60006116e2336109a5565b1561177157610107600050546116f6611980565b111561171b57600061010660005081905550611710611980565b610107600050819055505b610106600050548261010660005054011015801561174757506101056000505482610106600050540111155b15611768578161010660008282825054019250508190555060019050611772565b60009050611772565b5b919050565b60006000610104600050805490509150600090505b8181101561187857610109600050600061010460005083815481101561000257906000526020600020900160005b5054815260200190815260200160002060006000820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000506000905560028201600050805460018160011615610100020316600290046000825580601f1061182a5750611867565b601f0160209004906000526020600020908101906118669190611848565b808211156118625760008181506000905550600101611848565b5090565b5b5050505b806001019050805061178c565b611880611885565b5b5050565b60006000610104600050805490509150600090505b8181101561193857600060010261010460005082815481101561000257906000526020600020900160005b505414151561192a57610103600050600061010460005083815481101561000257906000526020600020900160005b50548152602001908152602001600020600060008201600050600090556001820160005060009055600282016000506000905550505b5b806001019050805061189a565b61010460005080546000825590600052602060002090810190611979919061195b565b80821115611975576000818150600090555060010161195b565b5090565b5b505b5050565b6000620151804204905061198f565b9056

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.