Sponsored Link:  Up to 2% Cryptocurrency Cashback - Reserve your card - Monaco App - www.mona.co
Contract Overview
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 1057 txns
  Latest 25 txns from a total Of 1057 transactions View All

TxHash Age From To Value [TxFee]
0x15b51d8cccee4bcb377d14d38b9e0f4ab340d5c9392a41b2cbde531e0f73499d55 days 2 hrs ago0x000b9aff896edf3e9a7652a09470157541a8c3d7  IN   0x89145f218a049963af6575ce8dfbe503fec730370 Ether0.00020452
0x0cba855c36d00e764b47704da66c735661e8490408b34fe92847fbe269d6de6855 days 2 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.200027105017802 Ether0.000089944
0xf3312f2a976195d7644ac58d8bc9006aa03923d7cd7320d0ba436599b28dd57f57 days 13 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.215543553913373 Ether0.000089944
0x2a221f5b8d0ec617b8675c3508a1ec87779e02478086cb46d8f2d8821b878c0157 days 20 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.213840353220922 Ether0.000089944
0xec023b13567fc4a22bfff1a6d6131c125dc5a6a455825e9cf1b00e3b17dbe50957 days 23 hrs ago0x000b9aff896edf3e9a7652a09470157541a8c3d7  IN   0x89145f218a049963af6575ce8dfbe503fec730370 Ether0.00076503
0x2df92e032d79c08e901d0d4a4e9f3daf79797897033096ee43f0ec643368340958 days 3 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.202995978516381 Ether0.000089944
0x5be355e2cf7637d6c13fe790556c837ea442a5dd73a31fca3d7152840f02667158 days 9 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.205549008138221 Ether0.000089944
0x2b1ca11bc0800b8db3161fa33c51c1f2a553207035c68bf49931c73c97fbf26d58 days 17 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.220361900779754 Ether0.000089944
0xb02c2b977fa3f69397fdc8f36a23fe9b3bed8a77bf2a700cc4c0ffb85a100e4659 days 3 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.202834824570336 Ether0.000089944
0xdbd889dbc3355bc6a61909461ffd6f66f9b8d4cdda0f86264c5e230b771e1bab59 days 11 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.200396171561536 Ether0.000089944
0xc8e15193f634d43b2012ad574fbe39d0973ef22323ac7c30f6f3f9c352f783d359 days 20 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.215520563385546 Ether0.000089944
0x250787fc57b14e402c04b9beec85e9ed7d66d93fa3f1ae234feac756a4e9a4cc60 days 4 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.218266375500786 Ether0.000089944
0xf8f1d1fbba92842571bbf86ba93151b7cf6285208a40e847d515fb795750b3e260 days 14 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.245491329736599 Ether0.000089944
0x4eb68d7e7cd3d65740fd815eef4e705cacb7b8b41c153f3bb3ae85572f55de4b60 days 23 hrs ago0x000b9aff896edf3e9a7652a09470157541a8c3d7  IN   0x89145f218a049963af6575ce8dfbe503fec730370 Ether0.00139428479
0x3bda9ba14f1f90f26ee5f4354cd27c4e9c9b42d79e718fe3b23a611ca019a8d461 days 1 min agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.255813327782268 Ether0.000089944
0xed381de8ef7e506f59ecabdb82eea3b192ab1e29cbcc18fd3ba18dfabdcb401a61 days 3 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.408553014445468 Ether0.000089944
0x90b7cd95894f9f17042f99484a6503cf581537dda768bbf23942a2a4610ada9062 days 7 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.205619791768299 Ether0.000089944
0x39d590bec6c2af13de81735bd37e61ef0dc382a5ef8810e8aedbe38a6794b94f62 days 16 hrs ago0x000b9aff896edf3e9a7652a09470157541a8c3d7  IN   0x89145f218a049963af6575ce8dfbe503fec730370 Ether0.001071042
0x73c4b5a245d42dfc58fd8df86a338e8331e14a4472e1f7898976611241fd2aba62 days 17 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.213473216624248 Ether0.000089944
0xc5f2184f5ab6ffaea29dfc3526caff5e819e77e2ebc3baba7386778b1c84a5fb63 days 7 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.200912575825032 Ether0.000089944
0x4ed7836da625b90edaf5d6cbd5a04478d9ff071f25ad2b2367779db261dc77ea63 days 17 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.201910415724497 Ether0.000089944
0x369abd0948e3265d23705bd3fb6abf35d0627d0527f40cfae8d080e102c79d3964 days 2 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.202940940443573 Ether0.000089944
0x7d2a584863d2f6dde758e5487ec9d21c119a51e23bd748b8638d253710f11a8f64 days 13 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.214957924083457 Ether0.000089944
0x48a5454f9116b9098e58e08525c7443b2b3abd82c0fdd17b6af1268a18cbad7f65 days 2 hrs agoNanopool  IN   0x89145f218a049963af6575ce8dfbe503fec730370.202328121454542 Ether0.000089944
0x9b157fe6b8029af82430160def047f6c3c9ba272b9c5d9c50132a957054d5c4f65 days 12 hrs ago0x000b9aff896edf3e9a7652a09470157541a8c3d7  IN   0x89145f218a049963af6575ce8dfbe503fec730370 Ether0.001071042
[ 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
0x15b51d8cccee4bcb377d14d38b9e0f4ab340d5c9392a41b2cbde531e0f73499d439287255 days 2 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.634413735099291515 Ether
0xec023b13567fc4a22bfff1a6d6131c125dc5a6a455825e9cf1b00e3b17dbe509437508357 days 23 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d71.74 Ether
0x4eb68d7e7cd3d65740fd815eef4e705cacb7b8b41c153f3bb3ae85572f55de4b436417360 days 23 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.85 Ether
0x39d590bec6c2af13de81735bd37e61ef0dc382a5ef8810e8aedbe38a6794b94f435909662 days 16 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed1.3 Ether
0x9b157fe6b8029af82430160def047f6c3c9ba272b9c5d9c50132a957054d5c4f435100265 days 12 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed3.3 Ether
0xcd28baffce6cb7e7437bebb8e28a94e642b6530eac55584051c433482c10eb3b432755673 days 15 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d71.25 Ether
0xd553e183cb536c0fd09596b1d875bf369a4ffa53dd9846746780101051caa3dd431656677 days 12 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.56 Ether
0x3afdf81e7f9e185b1c72d624b66a9089ef44c602ef1242fbe8f29b142c2c4a05431260378 days 21 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed1.04 Ether
0x3c04f10ccb39794126ec88a4ef20176b613a929bb11abd1a007378093c519fc6429725483 days 23 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.99 Ether
0xaa8b712ca65aaa774c0a90163a47bd0617482b105f7bf51857bf78177b59a520428748386 days 16 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d10.55 Ether
0x2396da8dd47c5e23f1ca399f4dcfa6702d02a9368715f7f072bd851921cae54d427851789 days 3 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.2 Ether
0xbc0302ff6e0f34a5cf0d3b4d5629b3c5927ae3d52224d145b5b8d03c520749b4427638689 days 17 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.185 Ether
0x22d9ac056a5018ca755ba9a2f2bf05511fa5e9603de16d77223257f2d2b41135427354690 days 12 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.52 Ether
0x3a88af5a6e46dc7a20a067066fad21d0757c99c4bc6e186b5cf4a9d1e5d424e7426220393 days 16 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.57 Ether
0xfcfae2dcc5aaac219fa894f07bfc48e6d80bd76986eb2c162f4d9dbdca2f54ca425631195 days 8 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.33 Ether
0xf7d6173666e248a044fecc07fa0ad66fd1979c9c16ec540ed51cd06683c082b9425287196 days 7 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed0.8 Ether
0xdb755f1aa8d222dd89505112a51435a8b0dfe72fdce95cc583ecf4b630da5f97424522998 days 11 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed0.5 Ether
0xe056de061215e5319389bb486131b89b58143e81b5302c21dece68dc64dfcd41424006299 days 22 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.31 Ether
0x0d598756edc158dcff6f083e9e09efb79ff76f1d8cefa0873da31abcb008972d4236977100 days 19 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d72.2 Ether
0xd835ed510055d50b108881acb2fa22ae6b11f242432a49778fc3abfc2b70ec0a4228179103 days 7 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.16 Ether
0x6f4b6dfb2dc8d315e8b14fc12a4b83c5230e14ff1c4b13ec69dcca090226d8324209886108 days 12 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.25 Ether
0x539fce45fc0f14cba1d9ddc9ad64a3438d4e2353e9393e19088a4ee45b15771b4206705109 days 10 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.166 Ether
0xf111734a533eba12b781d01a5a579ad89ac0b903caa3c940f43bb49f5cd40af74205948109 days 15 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed0.28 Ether
0x053ef692bc0ba6bea3c55dc1c291d5c70db9ff34950c20f1d8d1d028dffbcb6f4202215110 days 16 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed0.19 Ether
0x8b24fd93365b4ea6a7152400dc42d979e91e7a3e3ffff853f1b215e1bfd163884200537111 days 4 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d70.2 Ether
[ Download CSV Export  ] 
Contract Name: Wallet
Compiler Version: v0.4.6+commit.2dabbdf0
Optimization Enabled: Yes
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.
pragma solidity ^0.4.6;

contract multiowned {

    // TYPES

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

    // EVENTS

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

    // MODIFIERS

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

    // METHODS

    // constructor is given number of sigs required to do protected "onlymanyowners" transactions
    // as well as the selection of addresses capable of confirming them.
    function multiowned(address[] _owners, uint _required) {
        m_numOwners = _owners.length + 1;
        m_owners[1] = uint(msg.sender);
        m_ownerIndex[uint(msg.sender)] = 1;
        for (uint i = 0; i < _owners.length; ++i)
        {
            m_owners[2 + i] = uint(_owners[i]);
            m_ownerIndex[uint(_owners[i])] = 2 + i;
        }
        m_required = _required;
    }

    // Revokes a prior confirmation of the given operation
    function revoke(bytes32 _operation) external {
        uint ownerIndex = m_ownerIndex[uint(msg.sender)];
        // make sure they're an owner
        if (ownerIndex == 0) return;
        uint ownerIndexBit = 2**ownerIndex;
        var pending = m_pending[_operation];
        if (pending.ownersDone & ownerIndexBit > 0) {
            pending.yetNeeded++;
            pending.ownersDone -= ownerIndexBit;
            Revoke(msg.sender, _operation);
        }
    }

    // Replaces an owner `_from` with another `_to`.
    function changeOwner(address _from, address _to) onlymanyowners(sha3(msg.data)) external {
        if (isOwner(_to)) return;
        uint ownerIndex = m_ownerIndex[uint(_from)];
        if (ownerIndex == 0) return;

        clearPending();
        m_owners[ownerIndex] = uint(_to);
        m_ownerIndex[uint(_from)] = 0;
        m_ownerIndex[uint(_to)] = ownerIndex;
        OwnerChanged(_from, _to);
    }

    function addOwner(address _owner) onlymanyowners(sha3(msg.data)) external {
        if (isOwner(_owner)) return;

        clearPending();
        if (m_numOwners >= c_maxOwners)
            reorganizeOwners();
        if (m_numOwners >= c_maxOwners)
            return;
        m_numOwners++;
        m_owners[m_numOwners] = uint(_owner);
        m_ownerIndex[uint(_owner)] = m_numOwners;
        OwnerAdded(_owner);
    }

    function removeOwner(address _owner) onlymanyowners(sha3(msg.data)) external {
        uint ownerIndex = m_ownerIndex[uint(_owner)];
        if (ownerIndex == 0) return;
        if (m_required > m_numOwners - 1) return;

        m_owners[ownerIndex] = 0;
        m_ownerIndex[uint(_owner)] = 0;
        clearPending();
        reorganizeOwners(); //make sure m_numOwner is equal to the number of owners and always points to the optimal free slot
        OwnerRemoved(_owner);
    }

    function changeRequirement(uint _newRequired) onlymanyowners(sha3(msg.data)) external {
        if (_newRequired > m_numOwners) return;
        m_required = _newRequired;
        clearPending();
        RequirementChanged(_newRequired);
    }

    // Gets an owner by 0-indexed position (using numOwners as the count)
    function getOwner(uint ownerIndex) external constant returns (address) {
        return address(m_owners[ownerIndex + 1]);
    }

    function isOwner(address _addr) returns (bool) {
        return m_ownerIndex[uint(_addr)] > 0;
    }

    function hasConfirmed(bytes32 _operation, address _owner) constant returns (bool) {
        var pending = m_pending[_operation];
        uint ownerIndex = m_ownerIndex[uint(_owner)];

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

        // determine the bit to set for this owner.
        uint ownerIndexBit = 2**ownerIndex;
        return !(pending.ownersDone & ownerIndexBit == 0);
    }

    // INTERNAL METHODS

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

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

    function reorganizeOwners() private {
        uint free = 1;
        while (free < m_numOwners)
        {
            while (free < m_numOwners && m_owners[free] != 0) free++;
            while (m_numOwners > 1 && m_owners[m_numOwners] == 0) m_numOwners--;
            if (free < m_numOwners && m_owners[m_numOwners] != 0 && m_owners[free] == 0)
            {
                m_owners[free] = m_owners[m_numOwners];
                m_ownerIndex[m_owners[free]] = free;
                m_owners[m_numOwners] = 0;
            }
        }
    }

    function clearPending() internal {
        uint length = m_pendingIndex.length;
        for (uint i = 0; i < length; ++i)
            if (m_pendingIndex[i] != 0)
                delete m_pending[m_pendingIndex[i]];
        delete m_pendingIndex;
    }

    // FIELDS

    // the number of owners that must confirm the same operation before it is run.
    uint public m_required;
    // pointer used to find a free slot in m_owners
    uint public m_numOwners;

    // list of owners
    uint[256] m_owners;
    uint constant c_maxOwners = 250;
    // index on the list of owners to allow reverse lookup
    mapping(uint => uint) m_ownerIndex;
    // the ongoing operations.
    mapping(bytes32 => PendingState) m_pending;
    bytes32[] m_pendingIndex;
}

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

    // MODIFIERS

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

    // METHODS

    // constructor - stores initial daily limit and records the present day's index.
    function daylimit(uint _limit) {
        m_dailyLimit = _limit;
        m_lastDay = today();
    }
    // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.
    function setDailyLimit(uint _newLimit) onlymanyowners(sha3(msg.data)) external {
        m_dailyLimit = _newLimit;
    }
    // resets the amount already spent today. needs many of the owners to confirm.
    function resetSpentToday() onlymanyowners(sha3(msg.data)) external {
        m_spentToday = 0;
    }

    // INTERNAL METHODS

    // checks to see if there is at least `_value` left from the daily limit today. if there is, subtracts it and
    // returns true. otherwise just returns false.
    function underLimit(uint _value) internal onlyowner returns (bool) {
        // reset the spend limit if we're on a different day to last time.
        if (today() > m_lastDay) {
            m_spentToday = 0;
            m_lastDay = today();
        }
        // check to see if there's enough left - if so, subtract and return true.
        // overflow protection                    // dailyLimit check
        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).execute(to, value, data);
// Wallet(w).from(anotherOwner).confirm(h);
contract Wallet is multisig, multiowned, daylimit {

    // TYPES

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

    // METHODS

    // constructor - just pass on the owner array to the multiowned and
    // the limit to daylimit
    function Wallet(address[] _owners, uint _required, uint _daylimit)
            multiowned(_owners, _required) daylimit(_daylimit) {
    }

    // kills the contract sending everything to `_to`.
    function kill(address _to) onlymanyowners(sha3(msg.data)) external {
        suicide(_to);
    }

    // gets called when no other function matches
    function() payable {
        // just being sent some cash?
        if (msg.value > 0)
            Deposit(msg.sender, msg.value);
    }

    // Outside-visible transact entry point. Executes transaction 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":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"m_numOwners","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"m_lastDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"resetSpentToday","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"m_spentToday","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"m_required","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_h","type":"bytes32"}],"name":"confirm","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newLimit","type":"uint256"}],"name":"setDailyLimit","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"execute","outputs":[{"name":"_r","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_operation","type":"bytes32"}],"name":"revoke","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newRequired","type":"uint256"}],"name":"changeRequirement","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_operation","type":"bytes32"},{"name":"_owner","type":"address"}],"name":"hasConfirmed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"ownerIndex","type":"uint256"}],"name":"getOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"kill","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"m_dailyLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"},{"name":"_daylimit","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"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
606060405234610000576040516113bb3803806113bb83398101604090815281516020830151918301519201915b805b83835b815160019081019055600033600160a060020a03166003825b505550600160a060020a033316600090815261010260205260408120600190555b82518110156100ee57828181518110156100005790602001906020020151600160a060020a0316600282600201610100811015610000570160005b5081905550806002016101026000858481518110156100005790602001906020020151600160a060020a03168152602001908152602001600020819055505b60010161006c565b60008290555b50505061010581905561011264010000000061127861012182021704565b610107555b505b50505061012b565b6201518042045b90565b611282806101396000396000f3606060405236156100da5760e060020a6000350463173825d981146101305780632f54bf6e146101425780634123cb6b1461016657806352375093146101855780635c52c2f5146101a4578063659010e7146101b35780637065cb48146101d2578063746c9171146101e4578063797af62714610203578063b20d30a914610227578063b61d27f614610239578063b75c7dc61461026b578063ba51a6df1461027d578063c2cf73261461028f578063c41a360a146102b6578063cbf0b0c0146102e2578063f00d4b5d146102f4578063f1736d8614610309575b61012e5b600034111561012b5760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b5b565b005b346100005761012e600435610328565b005b3461000057610152600435610415565b604080519115158252519081900360200190f35b3461000057610173610436565b60408051918252519081900360200190f35b346100005761017361043c565b60408051918252519081900360200190f35b346100005761012e610443565b005b346100005761017361047b565b60408051918252519081900360200190f35b346100005761012e600435610482565b005b3461000057610173610571565b60408051918252519081900360200190f35b3461000057610152600435610577565b604080519115158252519081900360200190f35b346100005761012e6004356107e3565b005b34610000576101736004803590602480359160443591820191013561081c565b60408051918252519081900360200190f35b346100005761012e600435610ab3565b005b346100005761012e600435610b5e565b005b3461000057610152600435602435610be0565b604080519115158252519081900360200190f35b34610000576102c6600435610c35565b60408051600160a060020a039092168252519081900360200190f35b346100005761012e600435610c55565b005b346100005761012e600435602435610c93565b005b3461000057610173610d8c565b60408051918252519081900360200190f35b600060003660405180838380828437820191505092505050604051809103902061035181610d93565b1561040e57600160a060020a03831660009081526101026020526040902054915081151561037e5761040e565b60016001540360005411156103925761040e565b6000600283610100811015610000570160005b5055600160a060020a038316600090815261010260205260408120556103c9610f32565b6103d1611002565b60408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a15b5b5b505050565b600160a060020a03811660009081526101026020526040812054115b919050565b60015481565b6101075481565b60003660405180838380828437820191505092505050604051809103902061046a81610d93565b15610476576000610106555b5b5b50565b6101065481565b6000366040518083838082843782019150509250505060405180910390206104a981610d93565b1561056b576104b782610415565b156104c15761056b565b6104c9610f32565b60015460fa90106104dc576104dc611002565b5b60015460fa90106104ed5761056b565b60018054810190819055600160a060020a03831690600290610100811015610000570160005b5055600154600160a060020a03831660008181526101026020908152604091829020939093558051918252517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3929181900390910190a15b5b5b5050565b60005481565b60008161058381610d93565b156107da5760008381526101086020526040902054600160a060020a0316156107da5760008381526101086020526040908190208054600180830154935160029384018054600160a060020a0390941695949093919283928592918116156101000260001901160480156106385780601f1061060d57610100808354040283529160200191610638565b820191906000526020600020905b81548152906001019060200180831161061b57829003601f168201915b505091505060006040518083038185876185025a03f15050506000848152610108602090815260409182902060018082015482548551600160a060020a033381811683529682018c905296810183905295166060860181905260a06080870181815260029586018054958616156101000260001901909516959095049087018190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a975094958a95929491939290919060c08301908490801561073d5780601f106107125761010080835404028352916020019161073d565b820191906000526020600020905b81548152906001019060200180831161072057829003601f168201915b5050965050505050505060405180910390a16000838152610108602052604081208054600160a060020a0319168155600180820183905560028083018054858255939493909281161561010002600019011604601f81901061079f57506107d1565b601f0160209004906000526020600020908101906107d191905b808211156107cd57600081556001016107b9565b5090565b5b505050600191505b5b5b5b50919050565b60003660405180838380828437820191505092505050604051809103902061080a81610d93565b1561056b576101058290555b5b5b5050565b600061082733610415565b15610aa85761083584611131565b156108f3577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a0316815260200180602001828103825284848281815260200192508082843760405192018290039850909650505050505050a184600160a060020a03168484846040518083838082843782019150509250505060006040518083038185876185025a03f15060009350610aa892505050565b6000364360405180848480828437820191505082815260200193505050506040518091039020905061092481610577565b158015610947575060008181526101086020526040902054600160a060020a0316155b15610aa857600081815261010860209081526040822080546c01000000000000000000000000808a0204600160a060020a0319909116178155600180820188905560029182018054818652948490209094601f928116156101000260001901169290920481019290920481019185919087908390106109d15782800160ff198235161785556109fe565b828001600101855582156109fe579182015b828111156109fe5782358255916020019190600101906109e3565b5b50610a1f9291505b808211156107cd57600081556001016107b9565b5090565b50507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32813386888787604051808760001916815260200186600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284376040519201829003995090975050505050505050a15b5b5b5b949350505050565b600160a060020a033316600090815261010260205260408120549080821515610adb57610b57565b50506000828152610103602052604081206001810154600284900a929083161115610b575780546001908101825581018054839003905560408051600160a060020a03331681526020810186905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5b50505050565b600036604051808383808284378201915050925050506040518091039020610b8581610d93565b1561056b57600154821115610b995761056b565b6000829055610ba6610f32565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15b5b5b5050565b600082815261010360209081526040808320600160a060020a038516845261010290925282205482811515610c185760009350610c2c565b8160020a9050808360010154166000141593505b50505092915050565b6000600282600101610100811015610000570160005b505490505b919050565b600036604051808383808284378201915050925050506040518091039020610c7c81610d93565b1561056b5781600160a060020a0316ff5b5b5b5050565b6000600036604051808383808284378201915050925050506040518091039020610cbc81610d93565b15610b5757610cca83610415565b15610cd457610b57565b600160a060020a038416600090815261010260205260409020549150811515610cfc57610b57565b610d04610f32565b82600160a060020a0316600283610100811015610000570160005b5055600160a060020a0380851660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b5b5b50505050565b6101055481565b600160a060020a033316600090815261010260205260408120548180821515610dbb57610f28565b60008581526101036020526040902080549092501515610e4f576000805483556001808401919091556101048054918201808255828015829011610e2457600083815260209020610e249181019083015b808211156107cd57600081556001016107b9565b5090565b5b50505060028301819055610104805487929081101561000057906000526020600020900160005b50555b8260020a90508082600101541660001415610f285760408051600160a060020a03331681526020810187905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1815460019011610f155760008581526101036020526040902060020154610104805490919081101561000057906000526020600020900160005b506000908190558581526101036020526040812081815560018082018390556002909101919091559350610f2856610f28565b8154600019018255600182018054821790555b5b5b505050919050565b6101045460005b81811015610ff557610108600061010483815481101561000057906000526020600020900160005b50548152602081019190915260400160009081208054600160a060020a0319168155600180820183905560028083018054858255939493909281161561010002600019011604601f819010610fb65750610fe8565b601f016020900490600052602060002090810190610fe891905b808211156107cd57600081556001016107b9565b5090565b5b5050505b600101610f39565b61056b6111a4565b5b5050565b60015b600154811015610476575b600154811080156110325750600281610100811015610000570160005b505415155b1561103f57600101611010565b5b600160015411801561106457506002600154610100811015610000570160005b5054155b156110785760018054600019019055611040565b6001548110801561109c57506002600154610100811015610000570160005b505415155b80156110b85750600281610100811015610000570160005b5054155b15611128576002600154610100811015610000570160005b5054600282610100811015610000570160005b5055806101026000600283610100811015610000570160005b505481526020019081526020016000208190555060006002600154610100811015610000570160005b50555b611005565b5b50565b600061113c33610415565b15610431576101075461114d611278565b111561116657600061010655611161611278565b610107555b610106548281011080159061118357506101055482610106540111155b1561119957506101068054820190556001610431565b5060005b5b5b919050565b6101045460005b818110156112215761010481815481101561000057906000526020600020900160005b50541561121857610103600061010483815481101561000057906000526020600020900160005b505481526020810191909152604001600090812081815560018101829055600201555b5b6001016111ab565b610104805460008083559190915261040e907f4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe908101905b808211156107cd57600081556001016107b9565b5090565b5b505b5050565b6201518042045b9056000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000008ac7230489e800000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f87e2d334428d69767dc05bb54f54988aedbee77

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.