Sponsored Link:   Buy your 1st Ethereum in 5 minutes. Trusted by more than 100k buyers.
Contract Overview | TheDaoCurator
ETH Balance: 780.933042994747017538 Ether
ETH USD Value: $365,695.33 (@ $468.28/ETH)
No Of Transactions: 515 txns
  Latest 25 txns from a total Of 515 transactions View All

TxHash Age From To Value [TxFee]
0xc6eca3ae7f6f3fd982cb5bdf502e9d677bfcb0e2a7057f8ae4b5e1becfac551824 days 17 hrs ago0x18788edabbabc203bc7c157518dc4b2d4529f884  IN   TheDaoCurator0 Ether0.0000024412
0xf1daa07e61ca8e3615fbfcbc589a9f09827c7ae55e4440a32c7fe3b161e291e127 days 6 hrs ago0x8e8a24cba9f2702243ad65bada9b0e8cbc62fd96  IN   TheDaoCurator0 Ether0.000184585
0xa392e3a8190db318f679896f44ecaad0ad21115327484e34a7f20e49790bdd9127 days 6 hrs ago0x8e8a24cba9f2702243ad65bada9b0e8cbc62fd96  IN   TheDaoCurator0 Ether0.000184265
0xb7ff7f95c107fdb8c2d494556a76e329522f6fdb15c5314b0e289176052184c127 days 6 hrs ago0x8e8a24cba9f2702243ad65bada9b0e8cbc62fd96  IN   TheDaoCurator0 Ether0.000184585
0x95f57d4aa2780e2b6dfe5e9f62c663a1d38c4bfa42e91c3208d4b58f3c7f0f4a27 days 6 hrs ago0x8e8a24cba9f2702243ad65bada9b0e8cbc62fd96  IN   TheDaoCurator0 Ether0.000184585
0xb9e09efa2c1a472b4868da5ad634dcb6da2f6533dc71143d25864d35402ee86b27 days 6 hrs ago0x8e8a24cba9f2702243ad65bada9b0e8cbc62fd96  IN   TheDaoCurator0 Ether0.000184585
0x6c4ebfad46b3672fd5a6dcb7998fac7ec7f4eb58af52512de00a9cf035bf673429 days 11 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   TheDaoCurator0 Ether0.000174051
0x472f4dcde253a9388a2f3ed4a08b98be23c10b77e09610e550e33ebe3a58c89329 days 11 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   TheDaoCurator0 Ether0.000174051
0xa5d67a6613d4ae23853024ec9ec9902883b001b2709dc458defa702e6c5c476e29 days 11 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   TheDaoCurator0 Ether0.000174243
0x8ee4094137866585b8979fc18cb5a00a76e17876a00718a6fb28e0a249e551f829 days 11 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   TheDaoCurator0 Ether0.000184097
0x4c8b68bd9faa94a48f972c87872a76361d9b3de326f25cc2d2ea00e177a8266251 days 8 hrs ago0x2ff4d83d13fb20b88614fbe38aaceaadad9d53fc  IN   TheDaoCurator0 Ether0.00019632
0xba6e9559730e405ac33691f432ae3d435dcdffe8dc8c21680634440abd854efc51 days 8 hrs ago0x2ff4d83d13fb20b88614fbe38aaceaadad9d53fc  IN   TheDaoCurator0 Ether0.000189408
0x91dd86913ea4879b38101d70ea958ea565cb3655a098a094b83de5bd41e6f7ff51 days 8 hrs ago0x2ff4d83d13fb20b88614fbe38aaceaadad9d53fc  IN   TheDaoCurator0 Ether0.00019604
0xa6e30e58a903d4cfadad28a8cdb3527ad651feaffb9f44e3ed6c7e2450c9cc2f51 days 8 hrs ago0x2ff4d83d13fb20b88614fbe38aaceaadad9d53fc  IN   TheDaoCurator0 Ether0.000189896
0x97a4efdd78f251901183f030fff2c8051431b0bb3b01a7f99329a3c354608e1869 days 23 mins ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   TheDaoCurator0 Ether0.0010774068
0xffaa61af56e61e4015fed20e8e7d251ced175202184901c40e5365e8446e6a62127 days 15 hrs ago0xca0a9abc107f146ff41e92e5f8e29656cc6c98a6  IN   TheDaoCurator0 Ether0.000498477
0xbcbc596237de84322cbd67f03bc1feddc703282343b217c0b680864c855156cb127 days 15 hrs ago0xca0a9abc107f146ff41e92e5f8e29656cc6c98a6  IN   TheDaoCurator0 Ether0.00050862
0x702b3ad62683f662fee5c064cfe48d9360e57947c078d2f31a80a0dc6814e959127 days 15 hrs ago0xca0a9abc107f146ff41e92e5f8e29656cc6c98a6  IN   TheDaoCurator0 Ether0.000501165
0x4231c1481968027b02f04d84868a2a5a59126a272db552bfbe62bf1ea136c450132 days 7 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   TheDaoCurator0 Ether0.005153904
0xa96d0790cc70a79e3c62e74bf5fdabe9256aef69d35e572f8401f30840024241138 days 1 hr ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   TheDaoCurator0 Ether0.007546788
0x172763ebb9e6f7d2cc2ea99f841c28b35629e8edec7f986df575e2ede7663523187 days 20 hrs ago0x82aeb1d8939f514318449fa8ec704a94dc16e01d  IN   TheDaoCurator0 Ether0.000800847484
0xae3559eb8e477d010d1481191bbf40c85409875358ca6793c9ce6d9d6e52d4d3209 days 17 hrs ago0x8e8a24cba9f2702243ad65bada9b0e8cbc62fd96  IN   TheDaoCurator0 Ether0.00073834
0x57e12e7cad7474d2625f5e5964089dfc6e42dd45cb5192d020f5da71f674e00f209 days 19 hrs ago0x839395e20bbb182fa440d08f850e6c7a8f6f0780  IN   TheDaoCurator0 Ether0.00368322
0xab09c2bb5098d547e308ba00517358ce966a7a97a8f66c20dd1f0076ee4c7ad9212 days 3 hrs ago0x8e8a24cba9f2702243ad65bada9b0e8cbc62fd96  IN   TheDaoCurator0 Ether0.00142286
0xcf69e6345b0251735adf0f8c768e7720b42f8385d1f0c6617d7b600c60f5f4c4213 days 8 hrs ago0xf9ffba430e290c7fa4be61e3a2f905f6c99dd616  IN   TheDaoCurator0 Ether0.00073834
[ 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
0xb0e623abd59df40e28919aa730e223cbba11ed9eef07341a884f91f519848aef422781484 days 7 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965260.0015 Ether
0x1e7f25df7512cb013ed351513a3945142ef3e153fb65b64e42bb7ac29f90e8394142000106 days 3 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965260.1 Ether
0xc831449f727d5205b3345841286007cc0e47317aea50929a3b69eeb68b5a82ec4045352128 days 5 hrs ago0xd1c37dffd4ef36867c5bd7e59566358ea3d21e630xda4a4626d3e16e094de3225a751aab7128e965260.002 Ether
0x930624fc58552443354f4d942e28908de50f9353b3a2828d5311fd42f1ddc69b4045269128 days 6 hrs ago0xd1c37dffd4ef36867c5bd7e59566358ea3d21e630xda4a4626d3e16e094de3225a751aab7128e965260.01 Ether
0x96baefa11e18cfdd94fae186ff00aab3860f559200f523ee2a880471f4fafa753944700149 days 4 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e9652612.93 Ether
0x90cd121e01b9d77491459da14323ffd2d6ab3f5bc00904a5803ee62e3906e9013878346162 days 6 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965260.9500000001 Ether
0x3cd5b2ea487b4dd3323f17ff3f3bd16d98bb4ce9f4b5141cbc330f04effc77813854241166 days 20 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965261 Ether
0xe256ca729f0f2e5dd151ea05647b89447cdfce65dae5cc38eab071e1e2d39fe63841933169 days 4 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965260.99 Ether
0xe982bc80aea02a662a4a6d273d34bdd7e6b451c1f88237d7072301a06cfc792e3829257171 days 14 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965260.2 Ether
0x172763ebb9e6f7d2cc2ea99f841c28b35629e8edec7f986df575e2ede76635233741941187 days 20 hrs ago0xda4a4626d3e16e094de3225a751aab7128e965260xf90104ca5d09e641af4bc32bcf7993fbc13cacfe5.0880228909 Ether
0x337586c95ab5bdf0631f89c0537800c0a6decf5bde447567f8f9ffcd5ca70a2b3734676189 days 4 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965260.000333333333333333 Ether
0xdbd18134c8c7c41ff1ebb357d9cfb0bc126043c8ff481122a9b184de1dd1d1ed3709874193 days 18 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965260.1001 Ether
0x46d4661ca3ec9f560dd7fc04c8c649ad6d458bd47805f709b9a0a621ecb2239d3607060211 days 23 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965266.08802289090909091 Ether
0x1f75a5ab098a19ffac7f7017a9d9a7d3d33b046dd9ab22e830b9e5ce2ac605f93599397213 days 8 hrs ago0xda4a4626d3e16e094de3225a751aab7128e965260xe77febabdf080f0f5dca1d3f5766f2a79c0ffa7c385.046 Ether
0xbec7bfce2967b3cd114c1c5b12a76d50993d0ae7016473f3a64b3b05a00334df3577258217 days 3 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e96526385.056 Ether
0xd87affd8c547939a2349389a62afb9eab9a2db816d4ef2c160ec83532112f6f53577041217 days 4 hrs ago0xda4a4626d3e16e094de3225a751aab7128e965260xe54e1456f591642bbc3f2b8c158f51a62e70c1b325 Ether
0x4415445259faeaf7df8b67e88d586937c712c3f26a293044a0a0c5ccb1a7ee083554504221 days 1 hr ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965261.401229508196721311 Ether
0xbe70ad10b52885b34501b13151e1162d8e539a1ed71f571e5fff4cf75d2a20083534807224 days 10 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965260.01 Ether
0xf28fcda6879d15590cd7438e1872bbae7c40fd46efef37477808eeea6f0e492c3493295231 days 13 hrs ago0xda4a4626d3e16e094de3225a751aab7128e965260x016e469cf1e84bdb12761570b9856707c136f85055.925641025641 Ether
0x3b3a85d1028c9c92f487df8911b4c1593abdd2e8d61ab02ccaf696f489a70e333460345237 days 2 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965260.007 Ether
0x82d4b864aa6eceece059ca7a61297d8ee618428bc9ea7223bfdaf6a371dfc16e3375275251 days 9 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965260.1 Ether
0x6d9dd409c84bc90f48033e34ecad167281ae3fb1563c18766db347b3ce02504e3344239256 days 13 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e96526101.1239 Ether
0xd6a6ee614c0ea31af08f2da225d7caee801bec5b51b3d984470ca959bdb058c63198104280 days 21 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965260.07 Ether
0x0e3a7b945bb0baeca2fb608e52f722ff11aff757e52cd09ee051d1fd382b15153073377301 days 12 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965261.950962407407407407 Ether
0x091ded60219a81339aa8dc6387bdc2384bfb20e6722250fdaaab91ee2390cc382948214322 days 4 hrs ago0xbf4ed7b27f1d666546e30d74d50d173d20bca7540xda4a4626d3e16e094de3225a751aab7128e965261 Ether
[ Download CSV Export  ] 



  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)) external {
        if (isOwner(_to)) return;
        uint ownerIndex = m_ownerIndex[uint(_from)];
        if (ownerIndex == 0) return;

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

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

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

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

        // determine the bit to set for this owner.
        uint ownerIndexBit = 2**ownerIndex;
        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)) external {
        m_dailyLimit = _newLimit;
    }
    // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.
    function resetSpentToday() onlymanyowners(sha3(msg.data)) external {
        m_spentToday = 0;
    }
    
    // INTERNAL METHODS
    
    // checks to see if there is at least `_value` left from the daily limit today. if there is, subtracts it and
    // returns true. otherwise just returns false.
    function underLimit(uint _value) internal onlyowner returns (bool) {
        // reset the spend limit if we're on a different day to last time.
        if (today() > m_lastDay) {
            m_spentToday = 0;
            m_lastDay = today();
        }
        // check to see if there's enough left - if so, subtract and return true.
        if (m_spentToday + _value >= m_spentToday && m_spentToday + _value < m_dailyLimit) {
            m_spentToday += _value;
            return true;
        }
        return false;
    }
    // determines today's index.
    function today() private constant returns (uint) { return now / 1 days; }

	// FIELDS

    uint public m_dailyLimit;
    uint m_spentToday;
    uint m_lastDay;
}

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

	// EVENTS

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

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

	// TYPES

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

    // METHODS

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

	// FIELDS

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

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

  Contract Creation Code Switch To Opcodes View
6060604052604051611120380380611120833981016040908152815160805160a0519190930180516001908101815533600160a060020a0316600381905560009081526101026020529384205592918190849084905b82518110156100db57828181518110156100025790602001906020020151600160a060020a0316600260005082600201610100811015610002570160009190558351600283019161010291869085908110156100025790602001906020020151600160a060020a0316815260200190815260200160002060005081905550600101610055565b8160006000508190555050505080610105600050819055506100ff62015180420490565b610107555050505061100b806101156000396000f3606060405236156100b95760e060020a6000350463173825d9811461010b5780632f54bf6e1461015f5780634123cb6b146101875780635c52c2f5146101905780637065cb48146101ba578063746c9171146101e7578063797af627146101f0578063b20d30a914610203578063b61d27f614610230578063b75c7dc614610251578063ba51a6df14610280578063c2cf7326146102ad578063cbf0b0c0146102eb578063f00d4b5d14610318578063f1736d861461034a575b61035460003411156101095760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b610354600435600060003660405180838380828437820191505092505050604051809103902061064e815b600160a060020a03331660009081526101026020526040812054818082811415610c7a57610dd3565b6103566004355b600160a060020a03811660009081526101026020526040812054115b919050565b61035660015481565b61035460003660405180838380828437820191505092505050604051809103902061079f81610136565b6103546004356000366040518083838082843782019150509250505060405180910390206105c681610136565b61035660005481565b6103566004355b600081610a3b81610136565b61035460043560003660405180838380828437820191505092505050604051809103902061079381610136565b6103566004803590602480359160443591820191013560006107be33610166565b610354600435600160a060020a03331660009081526101026020526040812054908082811415610368576103e7565b61035460043560003660405180838380828437820191505092505050604051809103902061070d81610136565b610356600435602435600082815261010360209081526040808320600160a060020a038516845261010290925282205482818114156107665761078a565b6103546004356000366040518083838082843782019150509250505060405180910390206107ad81610136565b610354600435602435600060003660405180838380828437820191505092505050604051809103902061047281610136565b6103566101055481565b005b60408051918252519081900360200190f35b50506000828152610103602052604081206001810154600284900a9290831611156103e75780546001828101805492909101835590839003905560408051600160a060020a03331681526020810186905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b50505050565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a1505b505050565b156103e75761048083610166565b1561048b575061046d565b600160a060020a0384166000908152610102602052604081205492508214156104b4575061046d565b6103ed5b6101045460005b81811015610f1e57610104805461010891600091849081101561000257600080516020610feb8339815191520154825250602091909152604081208054600160a060020a0319168155600181810183905560028281018054858255939493909281161561010002600019011604601f819010610fa357505b5050506001016104bf565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005055600154600160a060020a03831660008181526101026020908152604091829020939093558051918252517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3929181900390910190a15b505b50565b156105c1576105d482610166565b156105df57506105c3565b6105e76104b8565b60015460fa90106105fc576105fa610611565b505b60015460fa901061054257506105c3565b6106cb5b600060015b600154811015610a37575b600154811080156106415750600281610100811015610002570154600014155b15610ddb57600101610621565b1561046d57600160a060020a03831660009081526101026020526040812054925082141561067c57506105c1565b600160016000505403600060005054111561069757506105c1565b600060028361010081101561000257508301819055600160a060020a0384168152610102602052604081205561060d6104b8565b5060408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a1505050565b156105c15760015482111561072257506105c3565b600082905561072f6104b8565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001820154600282900a90811660001415610785576000935061078a565b600193505b50505092915050565b156105c1575061010555565b156105c35760006101065550565b156105c15781600160a060020a0316ff5b156109ff576107d2846000610eb533610166565b15610891577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843782019150509250505060006040518083038185876185025a03f150600093506109ff92505050565b6000364360405180848480828437820191505082815260200193505050506040518091039020905080506108c4816101f7565b1580156108e7575060008181526101086020526040812054600160a060020a0316145b156109ff5760008181526101086020908152604082208054600160a060020a0319168817815560018181018890556002918201805481865294849020909491821615610100026000190190911691909104601f908101929092048101918591908790839010610a075760ff198135168380011785555b506109799291505b80821115610a375760008155600101610965565b50507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf328133868887876040518087815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b8280016001018555821561095d579182015b8281111561095d578235826000505591602001919060010190610a19565b5090565b15610abe5760008381526101086020526040812054600160a060020a031614610abe5760408051600091909120805460018281015460029384018054600160a060020a0394909416959194909391928392859291811615610100026000190116048015610aef5780601f10610ac457610100808354040283529160200191610aef565b50919050565b820191906000526020600020905b815481529060010190602001808311610ad257829003601f168201915b505091505060006040518083038185876185025a03f1505050600084815261010860209081526040918290208054600180830154855133600160a060020a0381811683529682018c9052968101829052929094166060830181905260a06080840181815260029586018054948516156101000260001901909416959095049084018190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a97508a95949193919060c083019084908015610bf15780601f10610bc657610100808354040283529160200191610bf1565b820191906000526020600020905b815481529060010190602001808311610bd457829003601f168201915b5050965050505050505060405180910390a16000838152610108602052604081208054600160a060020a0319168155600181810183905560028281018054858255939493909281161561010002600019011604601f819010610c5c57505b5050506001915050610182565b601f016020900490600052602060002090810190610c4f9190610965565b60008581526101036020526040812080549093501415610d02576000805483556001838101919091556101048054918201808255828015829011610cd157818360005260206000209182019101610cd19190610965565b50505060028301819055610104805487929081101561000257600091909152600080516020610feb83398151915201555b506001810154600283900a90811660001415610dd35760408051600160a060020a03331681526020810187905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1815460019011610dc0576000858152610103602052604090206002015461010480549091908110156100025760406000908120600080516020610feb833981519152929092018190558082556001828101829055600292909201559450610dd39050565b8154600019018255600182018054821790555b505050919050565b5b60018054118015610dfe57506001546002906101008110156100025701546000145b15610e125760018054600019019055610ddc565b60015481108015610e355750600154600290610100811015610002570154600014155b8015610e4f57506002816101008110156100025701546000145b15610eb057600154600290610100811015610002578101549082610100811015610002579090016000505580610102600060028361010081101561000257810154825260209290925260408120929092556001546101008110156100025701555b610616565b156101825761010754610ecb5b62015180420490565b1115610ee457600061010655610edf610ec2565b610107555b6101065480830110801590610f00575061010554610106548301105b15610f1657506101068054820190556001610182565b506000610182565b6105c16101045460005b81811015610fc15761010480548290811015610002576000918252600080516020610feb833981519152015414610f9b57610104805461010391600091849081101561000257600080516020610feb83398151915201548252506020919091526040812081815560018101829055600201555b600101610f28565b601f0160209004906000526020600020908101906105379190610965565b610104805460008083559190915261046d90600080516020610feb83398151915290810190610965564c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe

    Constructor Arguments (ABI-encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6000000000000000000000000b2c1b92f4bed7a173547cc601fb73a1254d10d260000000000000000000000000029218e1dab069656bfb8a75947825e7989b987000000000000000000000000cee96fd34ec793b05ee5b232b0110eac0cc3327e000000000000000000000000b274363d5971b60b6aca27d6f030355e9aa2cf23000000000000000000000000c947faed052820f1ad6f4dda435e684a2cd06bb4000000000000000000000000ae90d602778ed98478888fa2756339dd013e34c1000000000000000000000000e578fb92640393b95b53197914bd560b7bc2aac8000000000000000000000000a1e9989b4ef5d7fa12235dc9c7524895d68ba662000000000000000000000000127ac03acfad15f7a49dd037e52d5507260e14250000000000000000000000000037a6b811ffeb6e072da21179d11b1406371c63

-----Decoded View---------------
Found 15 constructor arguments :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [4] : 0000000000000000000000001db3439a222c519ab44bb1144fc28167b4fa6ee6
Arg [5] : 000000000000000000000000b2c1b92f4bed7a173547cc601fb73a1254d10d26
Arg [6] : 0000000000000000000000000029218e1dab069656bfb8a75947825e7989b987
Arg [7] : 000000000000000000000000cee96fd34ec793b05ee5b232b0110eac0cc3327e
Arg [8] : 000000000000000000000000b274363d5971b60b6aca27d6f030355e9aa2cf23
Arg [9] : 000000000000000000000000c947faed052820f1ad6f4dda435e684a2cd06bb4
Arg [10] : 000000000000000000000000ae90d602778ed98478888fa2756339dd013e34c1
Arg [11] : 000000000000000000000000e578fb92640393b95b53197914bd560b7bc2aac8
Arg [12] : 000000000000000000000000a1e9989b4ef5d7fa12235dc9c7524895d68ba662
Arg [13] : 000000000000000000000000127ac03acfad15f7a49dd037e52d5507260e1425
Arg [14] : 0000000000000000000000000037a6b811ffeb6e072da21179d11b1406371c63

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.