Sponsored Link: Monaco VISA® - World’s Best Cryptocurrency CardICO LIVE NOW
Contract Overview
ETH Balance: 0 Ether
ETH USD Value: $0
No Of Transactions: 110 txns + 57 internalTxns
  Latest 25 txns from a total Of 110 transactions View All

TxHash Block Age From To Value [TxFee]
0x40a8580871d919fe16b0c358b5d41e2139ea3e9694868d7641727955fad2adb1378142438 mins ago0xe1af840a5a1cb1efdf608a97aa632f4aa39ed199  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00 Ether0.00082358
0x7105f74e58b66d57bfb556b9df57a758c6a62febdbd4a5b1aa61cd18963e93c0378138248 mins ago0xa7ade9b79cb9e8aa34d0cd3632c98d6ab093a13f  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b014.9 Ether0.00044846
0xb0a7f735f642c0817b107cffa34e9cd5cd4b354c6851f89bb5aa5a7e6f4bad7837810072 hrs 26 mins ago0xe1af840a5a1cb1efdf608a97aa632f4aa39ed199  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00 Ether0.00082358
0x8293bba1bb1cc9ba89b7ffd2ea6f34620f3bd4f4fe9d45fb0f76e683a324a5c937809642 hrs 39 mins ago0x1fd6267f0d86f62d88172b998390afee2a1f54b6  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b01.2 Ether0.00045854
0x63417478a05cc4ff9acaae4983b8bb4d5562d3041a90077cb362df715e867d3937800136 hrs 48 mins ago0xe1af840a5a1cb1efdf608a97aa632f4aa39ed199  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00 Ether0.00107803
0x59f6f728f5f738ec9401a11cd8df94d1cf2541c88f437abddbcff877e76fba3a37798947 hrs 15 mins agoPoloniex Wallet  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b01.0055741 Ether0.00068877
0xd0e2b0e6e777ba899e5a586abc7e538f52abed4be53324a43bd6e56ddbf30dee377674121 hrs 15 mins ago0xe1af840a5a1cb1efdf608a97aa632f4aa39ed199  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00 Ether0.00086475
0x730e5d84d3a2456de09f45b18473a919aba71c0017caa952a2a51697f8670e8b377646422 hrs 28 mins agoPoloniex Wallet  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b012 Ether0.00067269
0x2dd4aabad098739a747a8412a54493d3b073b044630b657894fd2204b5e907b137757041 day 1 hr ago0xe1af840a5a1cb1efdf608a97aa632f4aa39ed199  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00 Ether0.00082486
0x7d834e7525ee55eec8eeaf16a1b3aeb7014ce9677763caa9a72603b8279a436137756181 day 2 hrs ago0x1fd6267f0d86f62d88172b998390afee2a1f54b6  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b01.03440841 Ether0.00045854
0xe1d2956e93cdefefbc1dd95d6320bdec35c2b4617a67ac6433512373ef3ee07137751881 day 4 hrs ago0xe1af840a5a1cb1efdf608a97aa632f4aa39ed199  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00 Ether0.00107803
0x635a976bd5edf0d8e5080da9ad308d41ddc8abaafe16a77edfd91e2c22cf7f4537750431 day 4 hrs agoPoloniex Wallet  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00.59167432 Ether0.00070716
0xf067737a6ce33c1c23e93dda49c24e4e2801f6917519afc49f5f1ff4f200eb9a37699452 days 2 hrs ago0xe1af840a5a1cb1efdf608a97aa632f4aa39ed199  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00 Ether0.00094711
0x6f65581feaab10fb7086db84d34c2a073b05b95f57c358ca7b27ac6ba4a01adb37697632 days 3 hrs agoPoloniex Wallet  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b01.79960128 Ether0.00069406
0xe90faa1858a4a80fc4fe49df4135f0c72216d26583262ecc43751ca8ed5d134437693152 days 5 hrs ago0xe1af840a5a1cb1efdf608a97aa632f4aa39ed199  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00 Ether0.00102542
0x2baeabc89464e226e119ffcbfec0ddceefb0497d8470093d0c1e3f892c204f0d37688722 days 7 hrs ago0xdf577a582fff64ade3f52685668cf64e0f7ab91a  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b010 Ether0.00047088
0x19d1d6313d2eade9165f2c90f5bd7091cd6b928f818b1699cf6d0b48d1cdf8a437673762 days 14 hrs ago0xe1af840a5a1cb1efdf608a97aa632f4aa39ed199  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00 Ether0.00094711
0xcbbad83a98f4f72db756ef7c4b7ab00da9f7134d902e8f7780a6bed465f52b8037671922 days 15 hrs ago0x32f71c41abb5b522e996934588df6d908529219d  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00.5 Ether0.00024665
0x782b16d56a974df546d3227fbe9e468f1083a4a03e76fdf089992ddc5363b49037655702 days 22 hrs ago0xe1af840a5a1cb1efdf608a97aa632f4aa39ed199  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00 Ether0.00094858
0x32a0df6ba3891dc3fd6fb2f372b5f5ba82608002775b455e936c4e7ff074066037652132 days 23 hrs agoPoloniex Wallet  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b01.01 Ether0.00073834
0x815150065e4a274244eafd20c1ed0c17740426719e4b23ea6ce1f60edf8b4d5137647203 days 1 hr ago0xe1af840a5a1cb1efdf608a97aa632f4aa39ed199  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00 Ether0.00098983
0x9cf23d9f1e99a26713815529c54a4c20185350022ec12cf6df229361f5145d0337646033 days 2 hrs agoPoloniex Wallet  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00.99449132 Ether0.00067269
0xef5ebf8d7fca5a85de61f751c754220cab37548db4ce52b26d107e92f8e56de937638983 days 5 hrs ago0xe1af840a5a1cb1efdf608a97aa632f4aa39ed199  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00 Ether0.00090593
0x223225fe97ffa72309e6c9d89bf4fa989526611fc15dbb61e7250ff2d305413c37638853 days 5 hrs agoPoloniex Wallet  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b01.5 Ether0.00075876
0xd83610c02078da61a49887f23351179395da6de3726e9b3fd35809879fcacbcb37632733 days 8 hrs ago0xe1af840a5a1cb1efdf608a97aa632f4aa39ed199  IN   0x7b174f95594e81ef1bb86e4affc382d1505e02b00 Ether0.0012305

[Download: CSV Export ]    
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns from a total of 57 View All
ParentTxHash Block Age From To Value
0x40a8580871d919fe16b0c358b5d41e2139ea3e9694868d7641727955fad2adb1378142438 mins ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed19914.9 Ether
0xb0a7f735f642c0817b107cffa34e9cd5cd4b354c6851f89bb5aa5a7e6f4bad7837810072 hrs 26 mins ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1991.2 Ether
0x63417478a05cc4ff9acaae4983b8bb4d5562d3041a90077cb362df715e867d3937800136 hrs 48 mins ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1991.0055741 Ether
0xd0e2b0e6e777ba899e5a586abc7e538f52abed4be53324a43bd6e56ddbf30dee377674121 hrs 15 mins ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed19912 Ether
0x2dd4aabad098739a747a8412a54493d3b073b044630b657894fd2204b5e907b137757041 day 1 hr ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1991.03440841 Ether
0xe1d2956e93cdefefbc1dd95d6320bdec35c2b4617a67ac6433512373ef3ee07137751881 day 4 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1990.59167432 Ether
0xf067737a6ce33c1c23e93dda49c24e4e2801f6917519afc49f5f1ff4f200eb9a37699452 days 2 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1991.79960128 Ether
0xe90faa1858a4a80fc4fe49df4135f0c72216d26583262ecc43751ca8ed5d134437693152 days 5 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed19910 Ether
0x19d1d6313d2eade9165f2c90f5bd7091cd6b928f818b1699cf6d0b48d1cdf8a437673762 days 14 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1990.5 Ether
0x782b16d56a974df546d3227fbe9e468f1083a4a03e76fdf089992ddc5363b49037655702 days 22 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1991.01000132 Ether
0x815150065e4a274244eafd20c1ed0c17740426719e4b23ea6ce1f60edf8b4d5137647203 days 1 hr ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1990.99449 Ether
0xef5ebf8d7fca5a85de61f751c754220cab37548db4ce52b26d107e92f8e56de937638983 days 5 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1991.5 Ether
0xd83610c02078da61a49887f23351179395da6de3726e9b3fd35809879fcacbcb37632733 days 8 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1991.43 Ether
0x5a1c599d6448a9cd39f8469ec75722d5f28f610df48c47df944f98ed94d1723237622593 days 12 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1991 Ether
0x2f9ce6f70d0e40baedde29b59ac35363b05325a59b8682dc392a16ecbcd2550f37608003 days 19 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1996 Ether
0x42967cda8d017d5e92f9b4bfce0177e239b191b231b64507413dc91839279e1237603223 days 21 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1990.73 Ether
0xed7a09128fba2946776e993c8c6fffb5b589f9b34662525a6e976213962baaf537584614 days 5 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1990.50178863 Ether
0x524615c1814eb3d7107671e2825b679e1eb58611264f1afc0b2478f6db1cf45037578814 days 8 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1991 Ether
0x6f8be1254de2bb3e2e77b22900b97f4c408436cb22587f6134574f1758889ac037552304 days 19 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1990.5 Ether
0x701ac0f404dff712de45210593bc993ce3a68a86df072e306fa9bb218ab30a7037541555 days 32 mins ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1995.7 Ether
0x73f8c273bd22b38f159242681fc7715e260c7f37eb47e13e21107e5b55db65aa37530215 days 5 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1991.00009574 Ether
0x9ed8fa85d1359cba40bf7fa1bb4af07c54a0959a324377f6f22cdc96a4f0045937528145 days 6 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1990.72 Ether
0x19b69b1f5e1e58da707f1cb7c8b87238a7eeb331eb44df18b805d19bd70d904e37522085 days 9 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1992.0303 Ether
0x2be12ae82b1ba9a76ecba1e42e02a0fc19e389a87408bf671764d8ba6ef202a637512455 days 13 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1990.98 Ether
0xe970ca944c1f370cf05aa1b1a48fcf1bca888255027735913c2722381240b88337490385 days 23 hrs ago0x7b174f95594e81ef1bb86e4affc382d1505e02b00xe1af840a5a1cb1efdf608a97aa632f4aa39ed1995.99 Ether

[Download: CSV Export ]    
Warning: The compiled contract might be susceptible to IdentityPrecompileReturnIgnored (low-severity), HighOrderByteCleanStorage (high-severity), SendFailsForZeroEther (low-severity), DynamicAllocationInfiniteLoop (low-severity), CleanBytesHigherOrderBits (medium/high-severity) Solidity compiler bugs.

Contract Source Code Verified
Note: Displaying matching verified source code at contract 0x5cb5f46a655c02889172323760d12d0e5d83cdaf
Contract Name: Wallet
Compiler Version: v0.3.2-2016-04-18-81ae2a7
Optimization Enabled: No
Online Solidity Editor:  -NA-



  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