Sponsored:   [Largest VC Funded] TEMCO, millions sold out in seconds. Join TEMCO's last presale at CoinBene!
Contract Overview | Etheroll_MultiSig1
Balance: 12,997.077899212495238615 Ether
Ether Value: $1,179,484.82 (@ $90.75/ETH)
Transactions: 93 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x73f0ed546cd7893abc5e04284b68522602603dd4at txn 0xcdda1d9d440ef138b16ffda653c978b4dcff6450ccb4abb304fc3fd484d4cea2
Token Balance:
 Latest 25 transactions from a total of 93 transactions

TxHash Age From To Value [TxFee]
0x3544e28a41ddc026da954458cdfc9f7065b9d1e470af6862406d23a4f92ccf2135 days 9 hrs ago0x06c3d7be79e1bfbf4f364d2024808c5fc758f7c3  IN   Etheroll_MultiSig10 Ether0.0012221935
0x9533f095512378caf180a259d55663e79ae80787c7ac075442abeb6e01b17aa035 days 9 hrs ago0x06c3d7be79e1bfbf4f364d2024808c5fc758f7c3  IN   Etheroll_MultiSig10 Ether0.00018872
0x0d182812e420577a2f4b6f138a98b00c99f5285b5ac7229545b403cc9f04be2a35 days 9 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig10 Ether0.001295224
0x404e5f8e69927a6615905c3e6f60567706736a5679cf82804afc752bc91b8fab83 days 23 hrs ago0x06c3d7be79e1bfbf4f364d2024808c5fc758f7c3  IN   Etheroll_MultiSig10 Ether0.000179284
0x1092559f79ed690d3098a2f1f07bd7ed1f0c3aace85a39f8b1f13cfba07e64e384 days ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig10 Ether0.002405416
0xef7f62b2037faa4db6399a0406a25493e37c6b23ebec9f775f9d7579764b2102122 days 13 mins ago0x06c3d7be79e1bfbf4f364d2024808c5fc758f7c3  IN   Etheroll_MultiSig10 Ether0.00037744
0xbf023039ef5db236460cbaba7b82baad71fe4b7dc3ff4c827009bf7d3258d7c7122 days 17 mins ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig10 Ether0.01942836
0x8624622cec7384a7b641a56d3368b1fd3053dee4d15a36f7dc0179b248c49063126 days 2 hrs ago0x06c3d7be79e1bfbf4f364d2024808c5fc758f7c3  IN   Etheroll_MultiSig10 Ether0.000129777
0x99f421c21d73517e71ab8dd3ee9a5f4db86418b858b9ba7a9fff59f3717fed52126 days 2 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig10 Ether0.00148128
0xee50b12122efddc718c1f381ecde0065e67354943516f2baf525836e9d1143b4133 days 7 hrs ago0x06c3d7be79e1bfbf4f364d2024808c5fc758f7c3  IN   Etheroll_MultiSig10 Ether0.0000793452
0x0e7a7052630d05258ca32c020697f371e8a406737b8a1d74a9cb46bd7a5df531133 days 8 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig10 Ether0.002035352
0x368e1201799400e677d63d5d1a82bc8d3a34782d7f9a6c5b38379d9a469468eb135 days 4 hrs ago0x06c3d7be79e1bfbf4f364d2024808c5fc758f7c3  IN   Etheroll_MultiSig10 Ether0.00006277195
0x03b78bd0ee367167f2b49e99aff0920438283be27fbf9cadb7c9729d816dda0c135 days 5 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig10 Ether0.00244916
0x48a6d511139202311aa8afa0de456b90891b21ee12be1de0b5bffd012662284c135 days 8 hrs ago0x06c3d7be79e1bfbf4f364d2024808c5fc758f7c3  IN   Etheroll_MultiSig10 Ether0.0000641201
0xe22fb0b9295d3cae42042c01b096834c83b02dfa594593d409f068e8afd5afef135 days 8 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig10 Ether0.001109808
0xd937342ef2c5c8d4caaba380cf1d06bb35d3fad5d10464224259eb778de3f5f2177 days 10 hrs ago0x06c3d7be79e1bfbf4f364d2024808c5fc758f7c3  IN   Etheroll_MultiSig10 Ether0.00003812144
0x2ebd15e157b5e0317689fea551a285c93dd657c50ecf0fef5f8f8b01bf6ad1c6177 days 10 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig10 Ether0.000370064
0x1e2efa5e2660e5b87e45a9d63faf3c457e24e2fdc2fbfe19e7de57e6e0c834f5212 days 22 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig10 Ether0.000300174
0x2c6edb3849334a7ddb8c1c9527badd3adf06c0780b17f5a4a1c553a14839f730217 days 46 mins ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig10 Ether0.001925748
0x7596411b1b836de04ff8b97438b9ebbc409723bdc6ccff03038e0796920c22f2217 days 46 mins ago0x06c3d7be79e1bfbf4f364d2024808c5fc758f7c3  IN   Etheroll_MultiSig10 Ether0.000476267
0xd6fbfac451b7cd9c2a652b66fcfa68e9e72972f56689188fa3d9c2c20deffd7b217 days 1 hr ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig10 Ether0.0037032
0x3f3d082de9c92560b7f864bba33062e1d4147711aa8eba846e8f4d574eabb840224 days 8 hrs ago0x06c3d7be79e1bfbf4f364d2024808c5fc758f7c3  IN   Etheroll_MultiSig10 Ether0.000096112
0x27a7459bd316c13d5edaaf719bc0c7f4e673bf61eb74c7c55d9121947df828a3224 days 8 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig10 Ether0.000370064
0x517577162f1ecd94f9359eece4372b22c3296028656e6771493adeb80777eb87231 days 22 hrs ago0x06c3d7be79e1bfbf4f364d2024808c5fc758f7c3  IN   Etheroll_MultiSig10 Ether0.000113136
0xa69f3c8bfed1b240a929e6094032e55195b79030e751c0d6e9572010713a3dc0231 days 22 hrs ago0x73f0ed546cd7893abc5e04284b68522602603dd4  IN   Etheroll_MultiSig10 Ether0.000064323
[ 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
0x9533f095512378caf180a259d55663e79ae80787c7ac075442abeb6e01b17aa0668834535 days 9 hrs ago0x24c3235558572cff8054b5a419251d3b0d43e91b0xadd9418c1cc318ddf2fa4ad907a960d244bbbe54147.08 Ether
0x404e5f8e69927a6615905c3e6f60567706736a5679cf82804afc752bc91b8fab639076783 days 23 hrs ago0x24c3235558572cff8054b5a419251d3b0d43e91b0xadd9418c1cc318ddf2fa4ad907a960d244bbbe54107.17 Ether
0xef7f62b2037faa4db6399a0406a25493e37c6b23ebec9f775f9d7579764b21026163636122 days 13 mins ago0x24c3235558572cff8054b5a419251d3b0d43e91b0xadd9418c1cc318ddf2fa4ad907a960d244bbbe54218 Ether
0x8624622cec7384a7b641a56d3368b1fd3053dee4d15a36f7dc0179b248c490636139364126 days 2 hrs ago0x24c3235558572cff8054b5a419251d3b0d43e91b0xa52e014b3f5cc48287c2d483a3e026c32cc76e6d74.072944307367285433 Ether
0xd7c5f71bd1b52e6ff125087d1e3dbeaee4b3b5a1dd5239e88038f49a2a5754bb6139240126 days 3 hrs ago0xa4463f9ff0d87531232c8c4819b536c332da6eac0x24c3235558572cff8054b5a419251d3b0d43e91b74.072944307367285433 Ether
0xee50b12122efddc718c1f381ecde0065e67354943516f2baf525836e9d1143b46096649133 days 7 hrs ago0x24c3235558572cff8054b5a419251d3b0d43e91b0xa4463f9ff0d87531232c8c4819b536c332da6eac633 Ether
0x368e1201799400e677d63d5d1a82bc8d3a34782d7f9a6c5b38379d9a469468eb6085583135 days 4 hrs ago0x24c3235558572cff8054b5a419251d3b0d43e91b0xa52e014b3f5cc48287c2d483a3e026c32cc76e6d4,622 Ether
0xf64f381a83cd3b9c8eae3a81096491c30826b4dd1f48d69da9e63986ecbcb8a36084983135 days 7 hrs ago0x048717ea892f23fb0126f00640e2b18072efd9d20x24c3235558572cff8054b5a419251d3b0d43e91b4,615 Ether
0xeeb1de6c3fad433f58bcdf5826200e7e1dd75400609a3613c836fe1611366aa86084931135 days 7 hrs ago0x048717ea892f23fb0126f00640e2b18072efd9d20x24c3235558572cff8054b5a419251d3b0d43e91b1 Ether
0x1772ff6325af6e1f7faf88ea746a799ef5ec50b4875e5cccaec25d0b7907ec436084915135 days 7 hrs ago0xa52e014b3f5cc48287c2d483a3e026c32cc76e6d0x24c3235558572cff8054b5a419251d3b0d43e91b1 Ether
0x9f55563bf040655d643d860677ead20cde4b9155f0cb8f5e2e518867da9638d46084889135 days 7 hrs ago0xa52e014b3f5cc48287c2d483a3e026c32cc76e6d0x24c3235558572cff8054b5a419251d3b0d43e91b1 Ether
0x48a6d511139202311aa8afa0de456b90891b21ee12be1de0b5bffd012662284c6084686135 days 8 hrs ago0x24c3235558572cff8054b5a419251d3b0d43e91b0xa52e014b3f5cc48287c2d483a3e026c32cc76e6d5 Ether
0x713600aeb663815d1226384548f949a45671463adaaeebe9f548c8cb3e7d518a6063994138 days 20 hrs ago0x048717ea892f23fb0126f00640e2b18072efd9d20x24c3235558572cff8054b5a419251d3b0d43e91b633 Ether
0xd937342ef2c5c8d4caaba380cf1d06bb35d3fad5d10464224259eb778de3f5f25837593177 days 10 hrs ago0x24c3235558572cff8054b5a419251d3b0d43e91b0xadd9418c1cc318ddf2fa4ad907a960d244bbbe54106.2 Ether
0x7596411b1b836de04ff8b97438b9ebbc409723bdc6ccff03038e0796920c22f25611978217 days 46 mins ago0x24c3235558572cff8054b5a419251d3b0d43e91b0x048717ea892f23fb0126f00640e2b18072efd9d259.653785553066935567 Ether
0xbce3015c06c8bc2987fd37fd96652e492db51c292bab588d820f18a318d170295611561217 days 2 hrs ago0xa4463f9ff0d87531232c8c4819b536c332da6eac0x24c3235558572cff8054b5a419251d3b0d43e91b59.653785553066935567 Ether
0x3f3d082de9c92560b7f864bba33062e1d4147711aa8eba846e8f4d574eabb8405569916224 days 8 hrs ago0x24c3235558572cff8054b5a419251d3b0d43e91b0xa4463f9ff0d87531232c8c4819b536c332da6eac433 Ether
0x6f57edf6b77961234f8ba7a9d730ec32cf4343d18ae340408272098306e36f895540220229 days 13 hrs ago0x048717ea892f23fb0126f00640e2b18072efd9d20x24c3235558572cff8054b5a419251d3b0d43e91b433 Ether
0x517577162f1ecd94f9359eece4372b22c3296028656e6771493adeb80777eb875526781231 days 22 hrs ago0x24c3235558572cff8054b5a419251d3b0d43e91b0xadd9418c1cc318ddf2fa4ad907a960d244bbbe5437.12 Ether
0x86fa7096cc87f994388aa5eb7ddfa9be0542ed350f7c1d5480183270bcd751275330583265 days 2 hrs ago0x24c3235558572cff8054b5a419251d3b0d43e91b0x048717ea892f23fb0126f00640e2b18072efd9d24,172.272695395098616431 Ether
0xef958d0c74da35d07e63eb5d43dc2e00ac12c71c7b8a063fd71333ce88253f735330488265 days 2 hrs ago0xddf0d0b9914d530e0b743808249d9af901f1bd010x24c3235558572cff8054b5a419251d3b0d43e91b4,170.943283630392734079 Ether
0x4ac07fcb44f63396ffdb47f402c10dafd99ad6c12369f4f0b900c0baae4427d75330138265 days 4 hrs ago0x24c3235558572cff8054b5a419251d3b0d43e91b0x048717ea892f23fb0126f00640e2b18072efd9d21 Ether
0x4db3410385c8ac1dfbfaeafaf51f6a09f4322ccf3bf4ce6738ec89306f8ed9f65189631288 days 21 hrs ago0x24c3235558572cff8054b5a419251d3b0d43e91b0xddf0d0b9914d530e0b743808249d9af901f1bd014,387.67269030985562061 Ether
0x8fe44cfb3aced72fd65166eeddbb1cf5ac6832b2e8f2393737364620fa8ca2bc5189334288 days 22 hrs ago0x3ad2bfea535bf1673f22de61b19f758a2dd0efff0x24c3235558572cff8054b5a419251d3b0d43e91b4,386.67269030985562061 Ether
0x144919ed11c4778470d3b9c4987924cbbf1c641d7d8382eb43e645091e2cc4185147037296 days 3 hrs ago0x24c3235558572cff8054b5a419251d3b0d43e91b0xadd9418c1cc318ddf2fa4ad907a960d244bbbe54152.887076893903479662 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]m>
// 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.