Sponsored Link:   Ducatur - EOS Hackathon Won! MVP Ready! Softcap reached! - Buy 1st Multichain Token - 3in1 (ETH,NEO,EOS)
Contract Overview
Balance: 1 wei
Ether Value: less than $0.01 (@ $534.95/ETH)
Transactions: 270 txns
 Latest 25 txns from a total Of 270 transactions
View All

TxHash Age From To Value [TxFee]
0x680f8782a567b96ba399bd138bc825ec806f2c0c3ffdf9158f1c92dabbe76feb330 days 20 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.001375101
0x12cb587d145eb420d3118e74b2d938332b20deacdba12ccd4bcb0c9e4b58c96b330 days 20 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.000957033
0x3a61b23c908e42b672cf39d4ed614a088f4b99e22fa5e272c2dc9c8f58c8de91343 days 6 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004276419
0x9deb80f559a4b6f810d54903a0b93f4ff75ca825c27fdfc9f17c8c574bb1c281343 days 6 hrs ago0x0d21abd3161b82509af789b55471c319a44d5f61  IN   0xe133c0af2d6f78787de40697e20168b13ec55e645.000080277844991 Ether0.000470883
0x9f59ca784ab487adca96d907a0d390589da73310bbca09c04c9e9c42a8c70c79343 days 7 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004275075
0xdf85da15bda951081e45797035395e9803fabf249a089868c941a2093516f6f1343 days 7 hrs ago0x0d21abd3161b82509af789b55471c319a44d5f61  IN   0xe133c0af2d6f78787de40697e20168b13ec55e647.1 Ether0.000470883
0x4cd6c673d25f74925d35372d283eac1bf2bf8ecc43d5fdf257e6908c29b40920343 days 7 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.0040715
0xee428e996b0b65e3b1f0ef79de31a6425290d7c4345a865638dc017dc5edea5c343 days 7 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e644.396 Ether0.00044846
0x566059877bcba4c6c8abaaccaa410fedc572220d477d1a60aea5de24ab5f0983343 days 7 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004276419
0x34941b7a2142a2bace27b71ff34152847ffbb7a4c981f2d2d03fd48b498c0ed3343 days 7 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004680753
0x4c3ebe0aaf329a2f6d6377fcf8425d1a94442c370e91f83276ab6151cfd59ce4343 days 7 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004680753
0x5e4904f861a712b77fe4cea4208ea1f2e2b84f1dd55245969bf3623a3c980151343 days 8 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004273731
0xfa2500b46046404af61401fd7e0ab62ab3595ce29d3780976ca82d956dd54bbb343 days 8 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.015873858
0xf02f7ca7c869bead094573567218c08b49d1b9076723f6911fc47949e7f228a6343 days 8 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004426044
0xbac0dd9368a3d77e59bebfae3ff188cbe8ce6e90329fcfeac75fa9b3e0d9a506343 days 11 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004273731
0x86eb91f3782604b1d3e1c9c721282278dbef13556e3b61346db445ebdf792e4f343 days 11 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.00407022
0x2829cde381cc93a578fbb06176a8796689b6c56e7f625fd53c3243f24a836266344 days 5 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004485663
0x47e6f214bc4027d3450a7196daf28339feb837847997e86d093aa5a7bde62f20345 days 5 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004273731
0x6ea29c72e94ad6ece40ecd6c0f54a7a046815f0b3a642cd3b05505f322789068345 days 6 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004273731
0x1e4204a6e03b4f22261acf6f8fe97acee2be9b5c9c36b4d0997e8798a4303d9b345 days 6 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004273731
0xd9de3f548ebca799f7d3be933500ad7f8d44fee5d9b25f7bb610cf033cb647d2345 days 6 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004273731
0xaa9a3a23128b031967482ef3dfcdf836f5956158aa1cd2f75305af37e9b9585d345 days 6 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004273731
0x7cbab25ca7e87d337537b74a3a956a2da3ff9cd72c657de323c9de48ac183ab9345 days 6 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004273731
0x0753e7711947489eb41ced130d0d311692db23bd62d260874df0e2cb92047944345 days 6 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.00427206
0xf11e744b9bdaaaada8108f5d639c62dcf9eb1fb0ed085edaee3ec016bed9aa95346 days 14 hrs ago0xf74a8994ddcba772f5f8c39ccd62b311f67050ad  IN   0xe133c0af2d6f78787de40697e20168b13ec55e640 Ether0.004273731
[ 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
0x97be14e0490ff5d472ce02e23383dc175a43037a5c6fa96f95fb32efb48aec6a4015022343 days 6 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xe133c0af2d6f78787de40697e20168b13ec55e641 wei
0x3a61b23c908e42b672cf39d4ed614a088f4b99e22fa5e272c2dc9c8f58c8de914015019343 days 6 hrs ago0xe133c0af2d6f78787de40697e20168b13ec55e640xe6517b766e6ee07f91b517435ed855926bcb1aae5.000080277844991575 Ether
0xa344667a781fcc446bea93b9d33e443675a60ddd0d92496482784e68b8117ac74014922343 days 7 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xe133c0af2d6f78787de40697e20168b13ec55e641 wei
0x9f59ca784ab487adca96d907a0d390589da73310bbca09c04c9e9c42a8c70c794014918343 days 7 hrs ago0xe133c0af2d6f78787de40697e20168b13ec55e640xe6517b766e6ee07f91b517435ed855926bcb1aae7.100000000000000001 Ether
0x5810e5da705ca4d570800494144a5216afac1931fdd898028cb0a898a637b2884014905343 days 7 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xe133c0af2d6f78787de40697e20168b13ec55e641 wei
0x4cd6c673d25f74925d35372d283eac1bf2bf8ecc43d5fdf257e6908c29b409204014870343 days 7 hrs ago0xe133c0af2d6f78787de40697e20168b13ec55e640xe6517b766e6ee07f91b517435ed855926bcb1aae4.396000000000000001 Ether
0x41afd62eaf51577e26f144cf7c8a28bf17ed31a8e0ed5a92858f3b79669852f94014848343 days 7 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xe133c0af2d6f78787de40697e20168b13ec55e641 wei
0x566059877bcba4c6c8abaaccaa410fedc572220d477d1a60aea5de24ab5f09834014844343 days 7 hrs ago0xe133c0af2d6f78787de40697e20168b13ec55e640xe6517b766e6ee07f91b517435ed855926bcb1aae3.402173913043478258 Ether
0x9a4dfd1fdacf5da98d2fe4f92638f178c90764851b0e3fccd33726594eb7d3a04014839343 days 7 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xe133c0af2d6f78787de40697e20168b13ec55e641 wei
0x34941b7a2142a2bace27b71ff34152847ffbb7a4c981f2d2d03fd48b498c0ed34014789343 days 7 hrs ago0xe133c0af2d6f78787de40697e20168b13ec55e640xe6517b766e6ee07f91b517435ed855926bcb1aae1.6 Ether
0xc7306a09e4fc85ba372d4b2a485b0c1a23c5545e4bb9e952030d9260bd00bd684014786343 days 7 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xe133c0af2d6f78787de40697e20168b13ec55e641 wei
0x4c3ebe0aaf329a2f6d6377fcf8425d1a94442c370e91f83276ab6151cfd59ce44014780343 days 7 hrs ago0xe133c0af2d6f78787de40697e20168b13ec55e640xe6517b766e6ee07f91b517435ed855926bcb1aae0.8 Ether
0x1c80894ca1efd89ace40b653b8aea292a2f94764c8b19d876c76b63ff1e8ebbf4014774343 days 7 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xe133c0af2d6f78787de40697e20168b13ec55e641 wei
0x5e4904f861a712b77fe4cea4208ea1f2e2b84f1dd55245969bf3623a3c9801514014705343 days 8 hrs ago0xe133c0af2d6f78787de40697e20168b13ec55e640xe6517b766e6ee07f91b517435ed855926bcb1aae0.4 Ether
0x1609f85adb8f9d1f1af8ee0847743d788c3db9a8122a7c18c42f1579493a7cb54014683343 days 8 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xe133c0af2d6f78787de40697e20168b13ec55e641 wei
0xfa2500b46046404af61401fd7e0ab62ab3595ce29d3780976ca82d956dd54bbb4014679343 days 8 hrs ago0xe133c0af2d6f78787de40697e20168b13ec55e640xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether
0xf02f7ca7c869bead094573567218c08b49d1b9076723f6911fc47949e7f228a64014650343 days 8 hrs ago0xe133c0af2d6f78787de40697e20168b13ec55e640xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether
0xbd6d8e8fca09d6eff043a2c1947ddbe23d5a0b15332642b9b4c337608da650dd4014158343 days 11 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xe133c0af2d6f78787de40697e20168b13ec55e640.406521739130434781 Ether
0xbac0dd9368a3d77e59bebfae3ff188cbe8ce6e90329fcfeac75fa9b3e0d9a5064014121343 days 11 hrs ago0xe133c0af2d6f78787de40697e20168b13ec55e640xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether
0xc79ade6bd62be3e73aa35a658c388e0552dd2f9e2f9fb9471117c7b9b4f9b7c54014069343 days 11 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xe133c0af2d6f78787de40697e20168b13ec55e640.406521739130434781 Ether
0x86eb91f3782604b1d3e1c9c721282278dbef13556e3b61346db445ebdf792e4f4014065343 days 11 hrs ago0xe133c0af2d6f78787de40697e20168b13ec55e640xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether
0xc5a4462b019a7623bf6ae40a980541b3ee8b3d9e11950c91daae10da5a6f27984010715344 days 5 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xe133c0af2d6f78787de40697e20168b13ec55e640.406521739130434781 Ether
0x2829cde381cc93a578fbb06176a8796689b6c56e7f625fd53c3243f24a8362664010678344 days 5 hrs ago0xe133c0af2d6f78787de40697e20168b13ec55e640xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether
0x5af0260170a45bd9eacbddfd193659ad67c7d023b60b59d7cce6f3b4e77d85c74006104345 days 5 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xe133c0af2d6f78787de40697e20168b13ec55e640.406521739130434781 Ether
0x47e6f214bc4027d3450a7196daf28339feb837847997e86d093aa5a7bde62f204006100345 days 5 hrs ago0xe133c0af2d6f78787de40697e20168b13ec55e640xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether
[ Download CSV Export  ] 
Contract Name: Wallet
Compiler Version: 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 <g@ethdev.com>
// 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 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.