ETH Price: $2,188.82 (+1.83%)

Contract

0xB10bA7B334D3bd1b2110bA00bCA39696B6Df406D
 
Transaction Hash
Method
Block
From
To
Kill184393692023-10-27 5:10:23498 days ago1698383423IN
0xB10bA7B3...6B6Df406D
0 ETH0.0003337913.67574684
Change Owner184393612023-10-27 5:08:47498 days ago1698383327IN
0xB10bA7B3...6B6Df406D
0 ETH0.000311512.54901163
Kill184393542023-10-27 5:07:23498 days ago1698383243IN
0xB10bA7B3...6B6Df406D
0 ETH0.0003416713.99843824
Execute55112862018-04-26 21:42:392508 days ago1524778959IN
0xB10bA7B3...6B6Df406D
0 ETH0.0014594341
0xdc75f2db52419762018-03-12 12:15:022553 days ago1520856902IN
0xB10bA7B3...6B6Df406D
0 ETH0.000095214
Add Owner52419692018-03-12 12:12:592553 days ago1520856779IN
0xB10bA7B3...6B6Df406D
0 ETH0.000094234
Add Owner52419582018-03-12 12:10:542553 days ago1520856654IN
0xB10bA7B3...6B6Df406D
0 ETH0.00009424
0xdc75f2db42806482017-09-16 15:03:122730 days ago1505574192IN
0xB10bA7B3...6B6Df406D
0 ETH0.000095214

Latest 4 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer24705372016-10-19 20:09:373062 days ago1476907777
0xB10bA7B3...6B6Df406D
3.5 ETH
Transfer24705222016-10-19 20:05:423062 days ago1476907542
0xB10bA7B3...6B6Df406D
0.5 ETH
Transfer24705012016-10-19 19:59:123062 days ago1476907152
0xB10bA7B3...6B6Df406D
0.50992429 ETH
Transfer24684672016-10-19 10:46:163062 days ago1476873976
0xB10bA7B3...6B6Df406D
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Wallet

Compiler Version
v0.4.3-nightly.2016.9.30+commit.d5cfb17b

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2016-10-19
*/

pragma solidity ^0.4.0;

//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 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 Security Audit

Contract ABI

API
[{"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"}],"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"}]

60606040526040516111c03803806111c0833981016040908152815160805160a0519190930180516001908101815533600160a060020a0316600381905560009081526101026020529384205592918190849084905b825181101560cc578281815181101560025760209081029091010151600160a060020a0316600282810161010081101560025701558251600282019061010290600090869085908110156002576020908102909101810151600160a060020a03168252810191909152604001600020556001016055565b506000555061010581905562015180420461010755505050506110cd806100f36000396000f3606060405236156100da5760e060020a6000350463173825d9811461012c5780632f54bf6e146101855780634123cb6b1461019557806352375093146101a35780635c52c2f5146101b2578063659010e7146101e15780637065cb48146101f0578063746c917114610222578063797af62714610230578063b20d30a914610240578063b61d27f614610272578063b75c7dc6146102b5578063ba51a6df146102e9578063c2cf73261461031b578063c41a360a1461035e578063cbf0b0c014610388578063f00d4b5d146103ba578063f1736d86146103f1575b610400600034111561012a5760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b34610002576104006004356000600036604051808383808284378201915050925050506040518091039020610480815b600160a060020a03331660009081526101026020526040812054818082811415610d4157610eab565b3461000257610402600435610294565b346100025761041660015481565b34610002576104166101075481565b34610002576104006000366040518083838082843782019150509250505060405180910390206105ff8161015c565b34610002576104166101065481565b346100025761040060043560003660405180838380828437820191505092505050604051809103902061060e8161015c565b346100025761041660005481565b3461000257610402600435610457565b34610002576104006004356000366040518083838082843782019150509250505060405180910390206109238161015c565b346100025761041660048035906024803591604435918201910135600061092f335b600160a060020a03811660009081526101026020526040812054115b919050565b3461000257610400600435600160a060020a03331660009081526101026020526040812054908082811415610b6957610be8565b3461000257610400600435600036604051808383808284378201915050925050506040518091039020610bee8161015c565b3461000257610402600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548281811415610c4657610c5b565b346100025761046360043560006002600183016101008110156100025750505060038101546102b0565b3461000257610400600435600036604051808383808284378201915050925050506040518091039020610c648161015c565b34610002576104006004356024356000600036604051808383808284378201915050925050506040518091039020610c758161015c565b34610002576104166101055481565b005b604080519115158252519081900360200190f35b60408051918252519081900360200190f35b600036436040518084848082843782019150508281526020019350505050604051809103902090508050610a02815b6000816106d48161015c565b60408051600160a060020a03929092168252519081900360200190f35b156104ea57600160a060020a0383166000908152610102602052604081205492508214156104ef576104ea565b60408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a15b505050565b6001600160005054036000600050541115610509576104ea565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556105c05b6101045460005b81811015610eb3576101048054610108916000918490811015610002576000918252602080832090910154835282019290925260400181208054600160a060020a0319168155600181810183905560028281018054858255939493909281161561010002600019011604601f819010610f2b57505b505050600101610540565b6104ad5b60015b60015481101561060b575b600154811080156105f25750600281610100811015610002570154600014155b15610f49576001016105d2565b1561060b576000610106555b50565b1561069b5761069f82610294565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005055600154600160a060020a03831660008181526101026020908152604091829020939093558051918252517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3929181900390910190a15b5050565b156106a95761069b565b6106b1610539565b60015460fa90106106c4576106c46105c4565b60015460fa901061061c5761069b565b156107e65760008381526101086020526040812054600160a060020a0316146107e657604060008190208054600182810154935160029384018054600160a060020a039490941695949093919283928592918116156101000260001901160480156108175780601f106107ec57610100808354040283529160200191610817565b820191906000526020600020905b81548152906001019060200180831161076357829003601f168201915b5050965050505050505060405180910390a16000838152610108602052604081208054600160a060020a0319168155600181810183905560028281018054858255939493909281161561010002600019011604601f8190106108f157505b505050600191505b50919050565b820191906000526020600020905b8154815290600101906020018083116107fa57829003601f168201915b505091505060006040518083038185876185025a03f1505050600084815261010860209081526040805192819020805460018281015433600160a060020a0381811689529688018c9052948701819052919094166060860181905260a06080870181815260029485018054978816156101000260001901909716949094049087018190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a975093958a9592949193909160c0830190849080156107805780601f1061075557610100808354040283529160200191610780565b601f0160209004906000526020600020908101906107de91905b8082111561091f576000815560010161090b565b5090565b1561069b575061010555565b15610b315761094384600061102633610294565b15610428577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843782019150509250505060006040518083038185876185025a03f15060009350610b3192505050565b158015610a25575060008181526101086020526040812054600160a060020a0316145b15610b315760008181526101086020908152604082208054600160a060020a0319168817815560018181018890556002918201805481865294849020909491821615610100026000190190911691909104601f908101929092048101918591908790839010610b395760ff198135168380011785555b50610aa792915061090b565b50507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32813386888787604051808760001916815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b82800160010185558215610a9b579182015b82811115610a9b578235826000505591602001919060010190610b4b565b50506000828152610103602052604081206001810154600284900a929083161115610be85780546001828101805492909101835590839003905560408051600160a060020a03331681526020810186905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b50505050565b1561069b57600154821115610c025761069b565b6000829055610c0f610539565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001820154600282900a9081166000141593505b50505092915050565b1561069b5781600160a060020a0316ff5b15610be857610c8383610294565b15610c8d57610be8565b600160a060020a038416600090815261010260205260408120549250821415610cb557610be8565b610cbd610539565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a150505050565b60008581526101036020526040812080549093501415610ddb576000805483556001838101919091556101048054918201808255828015829011610d9857818360005260206000209182019101610d98919061090b565b505050600283018190556101048054879290811015610002576000919091527f4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe01555b506001810154600283900a90811660001415610eab5760408051600160a060020a03331681526020810187905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1815460019011610e9857600085815261010360205261010480546040909220600201549091811015610002576040600090812092815260208082209092018190558781526101039091528082556001828101829055600292909201559350610eab565b8154600019018255600182018054821790555b505050919050565b61069b6101045460005b81811015611091576101048054829081101561000257600091825260208220015414610f23576101048054610103916000918490811015610002576020600081812093815292909101548352820192909252604001812081815560018101829055600201555b600101610ebd565b601f0160209004906000526020600020908101906105b5919061090b565b5b60018054118015610f6c57506001546002906101008110156100025701546000145b15610f805760018054600019019055610f4a565b60015481108015610fa35750600154600290610100811015610002570154600014155b8015610fbd57506002816101008110156100025701546000145b1561102157600154600290610100811015610002570154600282610100811015610002570155806101026000600283610100811015610002570154815260208101919091526040016000908120919091556001546002906101008110156100025701555b6105c7565b156102b0576101075461103c5b62015180420490565b111561105557600061010655611050611033565b610107555b61010654808301108015906110735750610106546101055490830111155b15611089575061010680548201905560016102b0565b5060006102b0565b61010480546000808355919091526104ea907f4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe9081019061090b56

Deployed Bytecode

0x606060405236156100da5760e060020a6000350463173825d9811461012c5780632f54bf6e146101855780634123cb6b1461019557806352375093146101a35780635c52c2f5146101b2578063659010e7146101e15780637065cb48146101f0578063746c917114610222578063797af62714610230578063b20d30a914610240578063b61d27f614610272578063b75c7dc6146102b5578063ba51a6df146102e9578063c2cf73261461031b578063c41a360a1461035e578063cbf0b0c014610388578063f00d4b5d146103ba578063f1736d86146103f1575b610400600034111561012a5760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b565b34610002576104006004356000600036604051808383808284378201915050925050506040518091039020610480815b600160a060020a03331660009081526101026020526040812054818082811415610d4157610eab565b3461000257610402600435610294565b346100025761041660015481565b34610002576104166101075481565b34610002576104006000366040518083838082843782019150509250505060405180910390206105ff8161015c565b34610002576104166101065481565b346100025761040060043560003660405180838380828437820191505092505050604051809103902061060e8161015c565b346100025761041660005481565b3461000257610402600435610457565b34610002576104006004356000366040518083838082843782019150509250505060405180910390206109238161015c565b346100025761041660048035906024803591604435918201910135600061092f335b600160a060020a03811660009081526101026020526040812054115b919050565b3461000257610400600435600160a060020a03331660009081526101026020526040812054908082811415610b6957610be8565b3461000257610400600435600036604051808383808284378201915050925050506040518091039020610bee8161015c565b3461000257610402600435602435600082815261010360209081526040808320600160a060020a03851684526101029092528220548281811415610c4657610c5b565b346100025761046360043560006002600183016101008110156100025750505060038101546102b0565b3461000257610400600435600036604051808383808284378201915050925050506040518091039020610c648161015c565b34610002576104006004356024356000600036604051808383808284378201915050925050506040518091039020610c758161015c565b34610002576104166101055481565b005b604080519115158252519081900360200190f35b60408051918252519081900360200190f35b600036436040518084848082843782019150508281526020019350505050604051809103902090508050610a02815b6000816106d48161015c565b60408051600160a060020a03929092168252519081900360200190f35b156104ea57600160a060020a0383166000908152610102602052604081205492508214156104ef576104ea565b60408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a15b505050565b6001600160005054036000600050541115610509576104ea565b600060028361010081101561000257508301819055600160a060020a038416815261010260205260408120556105c05b6101045460005b81811015610eb3576101048054610108916000918490811015610002576000918252602080832090910154835282019290925260400181208054600160a060020a0319168155600181810183905560028281018054858255939493909281161561010002600019011604601f819010610f2b57505b505050600101610540565b6104ad5b60015b60015481101561060b575b600154811080156105f25750600281610100811015610002570154600014155b15610f49576001016105d2565b1561060b576000610106555b50565b1561069b5761069f82610294565b60018054810190819055600160a060020a038316906002906101008110156100025790900160005055600154600160a060020a03831660008181526101026020908152604091829020939093558051918252517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3929181900390910190a15b5050565b156106a95761069b565b6106b1610539565b60015460fa90106106c4576106c46105c4565b60015460fa901061061c5761069b565b156107e65760008381526101086020526040812054600160a060020a0316146107e657604060008190208054600182810154935160029384018054600160a060020a039490941695949093919283928592918116156101000260001901160480156108175780601f106107ec57610100808354040283529160200191610817565b820191906000526020600020905b81548152906001019060200180831161076357829003601f168201915b5050965050505050505060405180910390a16000838152610108602052604081208054600160a060020a0319168155600181810183905560028281018054858255939493909281161561010002600019011604601f8190106108f157505b505050600191505b50919050565b820191906000526020600020905b8154815290600101906020018083116107fa57829003601f168201915b505091505060006040518083038185876185025a03f1505050600084815261010860209081526040805192819020805460018281015433600160a060020a0381811689529688018c9052948701819052919094166060860181905260a06080870181815260029485018054978816156101000260001901909716949094049087018190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a975093958a9592949193909160c0830190849080156107805780601f1061075557610100808354040283529160200191610780565b601f0160209004906000526020600020908101906107de91905b8082111561091f576000815560010161090b565b5090565b1561069b575061010555565b15610b315761094384600061102633610294565b15610428577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843782019150509250505060006040518083038185876185025a03f15060009350610b3192505050565b158015610a25575060008181526101086020526040812054600160a060020a0316145b15610b315760008181526101086020908152604082208054600160a060020a0319168817815560018181018890556002918201805481865294849020909491821615610100026000190190911691909104601f908101929092048101918591908790839010610b395760ff198135168380011785555b50610aa792915061090b565b50507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32813386888787604051808760001916815260200186600160a060020a0316815260200185815260200184600160a060020a03168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b949350505050565b82800160010185558215610a9b579182015b82811115610a9b578235826000505591602001919060010190610b4b565b50506000828152610103602052604081206001810154600284900a929083161115610be85780546001828101805492909101835590839003905560408051600160a060020a03331681526020810186905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b50505050565b1561069b57600154821115610c025761069b565b6000829055610c0f610539565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15050565b506001820154600282900a9081166000141593505b50505092915050565b1561069b5781600160a060020a0316ff5b15610be857610c8383610294565b15610c8d57610be8565b600160a060020a038416600090815261010260205260408120549250821415610cb557610be8565b610cbd610539565b600160a060020a03831660028361010081101561000257508301819055600160a060020a03851660008181526101026020908152604080832083905584835291829020869055815192835282019290925281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a150505050565b60008581526101036020526040812080549093501415610ddb576000805483556001838101919091556101048054918201808255828015829011610d9857818360005260206000209182019101610d98919061090b565b505050600283018190556101048054879290811015610002576000919091527f4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe01555b506001810154600283900a90811660001415610eab5760408051600160a060020a03331681526020810187905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1815460019011610e9857600085815261010360205261010480546040909220600201549091811015610002576040600090812092815260208082209092018190558781526101039091528082556001828101829055600292909201559350610eab565b8154600019018255600182018054821790555b505050919050565b61069b6101045460005b81811015611091576101048054829081101561000257600091825260208220015414610f23576101048054610103916000918490811015610002576020600081812093815292909101548352820192909252604001812081815560018101829055600201555b600101610ebd565b601f0160209004906000526020600020908101906105b5919061090b565b5b60018054118015610f6c57506001546002906101008110156100025701546000145b15610f805760018054600019019055610f4a565b60015481108015610fa35750600154600290610100811015610002570154600014155b8015610fbd57506002816101008110156100025701546000145b1561102157600154600290610100811015610002570154600282610100811015610002570155806101026000600283610100811015610002570154815260208101919091526040016000908120919091556001546002906101008110156100025701555b6105c7565b156102b0576101075461103c5b62015180420490565b111561105557600061010655611050611033565b610107555b61010654808301108015906110735750610106546101055490830111155b15611089575061010680548201905560016102b0565b5060006102b0565b61010480546000808355919091526104ea907f4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe9081019061090b56

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

0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000984dfe36502de42f5b146eef4e33165b4b45d7f20000000000000000000000008eb566677367f6c149ca056efeb330a0f2b45e17

-----Decoded View---------------
Arg [0] : _owners (address[]): 0x984dFE36502dE42F5b146EeF4E33165b4b45D7f2,0x8eB566677367F6c149ca056EfEB330a0f2B45E17
Arg [1] : _required (uint256): 3
Arg [2] : _daylimit (uint256): 0

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [4] : 000000000000000000000000984dfe36502de42f5b146eef4e33165b4b45d7f2
Arg [5] : 0000000000000000000000008eb566677367f6c149ca056efeb330a0f2b45e17


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.