Latest 25 transactions from a total of 115 transactions

TxHash Age From To Value [TxFee]
0x645473c606071e7b5a21b53cb3c26c69920d094579182be90e7dbca00926df9382 days 9 hrs ago0x736af44d9c3cad2996dfb1a476da18225eeb1945  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00026502
0x2064cf13c9bd72682101d2206f3c23380ce97350526a714b5f28af8352c744be83 days 1 hr ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000332379
0xe4a8709feaf2274ebf38ff2902116b68aef2d4d83cac00d5f4b852867324d1fb83 days 1 hr ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.001599056
0x1cbb11d2a2eef5ab0b352ce0e32a2529eef6643484451d74214a85c15546d679153 days 5 hrs ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00045432
0xad861d7fd0cc7a1146014c7e7ffd6dc52aa221331fe129d1988c21fef91543bb154 days 6 hrs ago0xb2556a76da6e5b99e82fc156f8faad2778225161  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000145578
0xea03a9e8cd4c29457dd426dd35a6f739ad003782c099b1484e9cd3a4d963cbea154 days 19 hrs ago0x736af44d9c3cad2996dfb1a476da18225eeb1945  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00036931
0xc4d223a421432ca9225fc9f808fd66516f9bbd99a29b77e98e323fb6dd5f1857154 days 20 hrs ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.002796556
0x39e8f48dc48d7203cf540beeafd6da4f7061c34066156cbe466bb916ba9fd739164 days 16 hrs ago0x736af44d9c3cad2996dfb1a476da18225eeb1945  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000037461
0xfd464687cf1aaaa034730f5cd7d877ff86ffe02ff18a921fa31c096563f763d3164 days 21 hrs ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000110793
0x4ddfc0d227768b551fcbff7f23929ed51e464363c5f2cb94b9fa861535848e9a165 days 2 hrs ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00174148
0xfd46f59bdc3c99671e2b46cbf5707c802b3a8954a114d58bd24a3e2abe9c91eb165 days 2 hrs ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00184195
0xe7300fec369088285eabec24e942bc67f39db9573558729ee58c476ddf6fcb64217 days 22 hrs ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000074922
0x8bed9f10aeb9a8d433176c19669f12bba824ba028cd23ebb0d9d41df1c918a2c217 days 22 hrs ago0x736af44d9c3cad2996dfb1a476da18225eeb1945  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000110793
0x06077328bf76e72de9b7c3b673b780f0fe78a0dd9a2d79b7123c5a11fe50de8e218 days 3 hrs ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00184259
0x25cb85c9c37387f81f8d7f28eb915ab723ae93244eb961159074c2cba65ab2f9248 days 18 hrs ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000037461
0x435ea48332c70d9e218dea23b4cf8e77eecacf0ef0a7d86dd8d6d65f0a6dba63249 days 5 hrs ago0x736af44d9c3cad2996dfb1a476da18225eeb1945  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000036931
0xa3e2888f1e2f993c298f41dfac7eccd9d41f837d34d22872f3c76a8c8b82fc14249 days 18 hrs ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00184195
0x3eb23be2ce98c72ac24398dc8f57665c2a50c5557094136826a10889daba8d47265 days 17 hrs ago0x0fb0c3599c9877a5ba1d1796a4bdd735dcd393af  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000037461
0x85b45a709551a3bd9d4ae9b6349a133c5b6c746b840c2b1766272169d0ebfb5d265 days 18 hrs ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000036931
0xea41826d7b6df578c4badfbabff4ef24bcd877dc274cd7ae8fc6581276353ed8265 days 20 hrs ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00184259
0x30e43c01fc4e4f671f02f12db52650d709a9081aaf2c620df2db36b460f30423284 days 1 hr ago0x736af44d9c3cad2996dfb1a476da18225eeb1945  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000074858
0xd4966922820be27deb29916e3c51b4947d98618ec1b0046574d2122cb303c547284 days 2 hrs ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000073734
0xa60b87cadd3064ded7d5d9eb69f8da6fcfc694e66c8c7c6a8978c8b4da288bd4284 days 3 hrs ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00184259
0xe69f576c3c26525d5d9eebf775ad728ebf7f5668e9250bac3a35b2310f21adc1286 days 7 hrs ago0x736af44d9c3cad2996dfb1a476da18225eeb1945  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000074922
0x2c20c028152674a4bdf50d22e0c7cce556a5c43e1f91981ce702381edf009d26286 days 15 hrs ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000073862
[ 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
0x645473c606071e7b5a21b53cb3c26c69920d094579182be90e7dbca00926df93636454182 days 9 hrs ago0xf4702b0918a8a89dfc38459ce42198834818f26b0xa54389e9d1044ba88dab9a8c8fa43e2fbfae635914.523844482710974936 Ether
0xf3940af7a84b68b00867e6cf95016b182f7a06003f530e1493e374588d5d00c36245167102 days 6 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.00323436186040494 Ether
0xac85a87a0dc5df33127734aa52a4d83847a0e37d460c7b0df96827f06b9046676230089104 days 19 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b10.7999870625524 Ether
0xb151295e10dbf07df16e1194cebad39a4aef53da9dab0c88f2f7e0da7edfd1ae6223590105 days 22 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.022641 Ether
0xba4721eb2ff5fa2deb7f82c762e4142a4bc8ad50aa9a7003a4724511523641fa6204202109 days 4 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.049185699318929102 Ether
0x79b518c7dba68fc9cf75a8598df55eb82a391aeee786a8402533b5efb1ab6d286182996112 days 18 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.014 Ether
0xe939494514aae5ddd6e49f702e1f7b2e224fe9795f3c9dad4502591488afb99d6170647114 days 20 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.001 Ether
0xf87d0647345724952161bf8b09a675226d4ceb84341c757a2e099cf7072a74126170632114 days 20 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.001 Ether
0xde50ef649c465d702041c2316782a721a7f97b5db62488fe1ba90b96eb7482346167984115 days 7 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.00663 Ether
0x0c0016be098394ab808833645487af3aee436dd2c4f7e95ab68a97d6ab4585ab6141315119 days 19 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.0005 Ether
0xf5901e778af79404f5d3a9de6d25a05bff0af098aa5f8683b65833395bc35b1f6099755126 days 20 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.4 Ether
0x93cc2f8258228e35efc480697d4564fa90e7391d0a0862f6961b5bdbadda8f406074701131 days 2 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b1.99999999999994 Ether
0x5b912a666f1488b28663cd89fefd925651a42c81dc1f93f4601c8c1c6fb57ed96063535132 days 23 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.0111599669664976 Ether
0x4dee0be6d50ce8a25c8ce19ad41bb0ef4d4e5e0b21da70c4472e6d54936f3d006060591133 days 11 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.021462 Ether
0x585435be6084fa589ead2a1964a9a3fe971c4ef65666928317c5527759303e086041517136 days 16 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.011 Ether
0xe7cc89a0c6f11e2a06772bd12593988731a3014587a14d016d75655d88f6a9f56024037139 days 15 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.0322518222279555 Ether
0xd0e11feb803d57f12fd0af3a9cf3d405d8a0fb27a1e4ad4bf0673d0a6c1d74d26022627139 days 21 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.02355 Ether
0xdbaee4486622e91eef1bcebda131bdddf3b8a7519041bcbe8fc6df4ebe6588d66009958142 days 54 mins ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.0043 Ether
0x6ca75575ef05fb779269d7d71f16db741c02a5b7a0b34d2158a37b3d615a3ec46009783142 days 1 hr ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.00197565987039671 Ether
0x53becb42361ae7ebe4d0cb2bd4a9ea741344941a12d9688b087616481161e0c96006297142 days 15 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.00397107633949738 Ether
0x881ea1b8f6f751680c6880995f28363695c79729c84f64b1a36560225daaed6a6006297142 days 15 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.00199541646910068 Ether
0x2ab8d85fb6ed6d250a6d33ad2df4361bbc7fd4f1d3b20e8e170d7a52f9a840a46005189142 days 20 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.021501214818637 Ether
0xf2cecda22092882e5fe04b4a31be0c993f966d3d95ed5910a417821401182eff6001203143 days 12 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.021501214818637 Ether
0x61ca7945bf899773cfed5827d16091a698ca49636f0f05164893f3d9657de1075995652144 days 11 hrs ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.00201517306780465 Ether
0x099626b4114ffb5b9860bbd0c9ef372d52fa4a6fdefef66afefe8a6259b611305992362145 days 34 mins ago0x817dbb65f822198825cc6b9c92fcbfea63abc7f10xf4702b0918a8a89dfc38459ce42198834818f26b0.019756598703967 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Wallet
Compiler Text: v0.4.18+commit.9cf6e910
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.11;
//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

    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 ABI  
[{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"m_numOwners","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"m_lastDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resetSpentToday","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"m_spentToday","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"m_required","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_h","type":"bytes32"}],"name":"confirm","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newLimit","type":"uint256"}],"name":"setDailyLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","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,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_operation","type":"bytes32"}],"name":"revoke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newRequired","type":"uint256"}],"name":"changeRequirement","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_operation","type":"bytes32"},{"name":"_owner","type":"address"}],"name":"hasConfirmed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ownerIndex","type":"uint256"}],"name":"getOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"m_dailyLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"},{"name":"_daylimit","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","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"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000f57600080fd5b60405161132e38038061132e833981016040528080518201919060200180519190602001805191508190508383600082516001908101815533600160a060020a031660038190556000908152610102602052604081209190915590505b82518110156100e75782818151811061008157fe5b90602001906020020151600160a060020a0316600282810161010081106100a457fe5b01556002810161010260008584815181106100bb57fe5b90602001906020020151600160a060020a0316815260208101919091526040016000205560010161006c565b50600055506101058190556101076401000000006110b161011582021704565b610107555061011e92505050565b62015180420490565b6112018061012d6000396000f3006060604052600436106100fb5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663173825d9811461014b5780632f54bf6e1461016a5780634123cb6b1461019d57806352375093146101c25780635c52c2f5146101d5578063659010e7146101e85780637065cb48146101fb578063746c91711461021a578063797af6271461022d578063b20d30a914610243578063b61d27f614610259578063b75c7dc614610288578063ba51a6df1461029e578063c2cf7326146102b4578063c41a360a146102d6578063cbf0b0c014610308578063f00d4b5d14610327578063f1736d861461034c575b6000341115610149577fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3334604051600160a060020a03909216825260208201526040908101905180910390a15b005b341561015657600080fd5b610149600160a060020a036004351661035f565b341561017557600080fd5b610189600160a060020a0360043516610446565b604051901515815260200160405180910390f35b34156101a857600080fd5b6101b0610467565b60405190815260200160405180910390f35b34156101cd57600080fd5b6101b061046d565b34156101e057600080fd5b610149610474565b34156101f357600080fd5b6101b06104aa565b341561020657600080fd5b610149600160a060020a03600435166104b1565b341561022557600080fd5b6101b06105a4565b341561023857600080fd5b6101896004356105aa565b341561024e57600080fd5b6101496004356107c8565b341561026457600080fd5b6101b060048035600160a060020a03169060248035916044359182019101356107fb565b341561029357600080fd5b6101496004356109f0565b34156102a957600080fd5b610149600435610a9a565b34156102bf57600080fd5b610189600435600160a060020a0360243516610b19565b34156102e157600080fd5b6102ec600435610b6e565b604051600160a060020a03909116815260200160405180910390f35b341561031357600080fd5b610149600160a060020a0360043516610b89565b341561033257600080fd5b610149600160a060020a0360043581169060243516610bc1565b341561035757600080fd5b6101b0610cc1565b6000803660405180838380828437820191505092505050604051809103902061038781610cc8565b1561044157600160a060020a0383166000908152610102602052604090205491508115156103b457610441565b600180540360005411156103c757610441565b600060028361010081106103d757fe5b0155600160a060020a038316600090815261010260205260408120556103fb610e27565b610403610ea8565b7f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da83604051600160a060020a03909116815260200160405180910390a15b505050565b600160a060020a03811660009081526101026020526040812054115b919050565b60015481565b6101075481565b60003660405180838380828437820191505092505050604051809103902061049b81610cc8565b156104a7576000610106555b50565b6101065481565b6000366040518083838082843782019150509250505060405180910390206104d881610cc8565b156105a0576104e682610446565b156104f0576105a0565b6104f8610e27565b60015460fa901061050b5761050b610ea8565b60015460fa901061051b576105a0565b60018054810190819055600160a060020a03831690600290610100811061053e57fe5b0155600154600160a060020a0383166000908152610102602052604090819020919091557f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c390839051600160a060020a03909116815260200160405180910390a15b5050565b60005481565b6000816105b681610cc8565b156107c25760008381526101086020526040902054600160a060020a0316156107c257600083815261010860205260409081902080546001820154600160a060020a03909116929091600201905180828054600181600116156101000203166002900480156106665780601f1061063b57610100808354040283529160200191610666565b820191906000526020600020905b81548152906001019060200180831161064957829003601f168201915b505091505060006040518083038185876187965a03f15050506000848152610108602052604090819020600181015481547fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a945033938893600160a060020a03909216916002019051600160a060020a03808716825260208201869052604082018590528316606082015260a0608082018181528354600261010060018316150260001901909116049183018290529060c08301908490801561076a5780601f1061073f5761010080835404028352916020019161076a565b820191906000526020600020905b81548152906001019060200180831161074d57829003601f168201915b5050965050505050505060405180910390a1600083815261010860205260408120805473ffffffffffffffffffffffffffffffffffffffff1916815560018101829055906107bb60028301826110bb565b5050600191505b50919050565b6000366040518083838082843782019150509250505060405180910390206107ef81610cc8565b156105a0575061010555565b600061080633610446565b156109e85761081484610fbe565b156108ca577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd0043385878686604051600160a060020a038087168252602082018690528416604082015260806060820181815290820183905260a082018484808284378201915050965050505050505060405180910390a184600160a060020a03168484846040518083838082843782019150509250505060006040518083038185876187965a03f150600093506109e892505050565b6000364360405180848480828437909101928352505060200191506040905051809103902090506108fa816105aa565b15801561091d575060008181526101086020526040902054600160a060020a0316155b156109e857600081815261010860205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0387161781556001810185905561096c9060020184846110ff565b507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32813386888787604051868152600160a060020a038087166020830152604082018690528416606082015260a06080820181815290820183905260c08201848480828437820191505097505050505050505060405180910390a15b949350505050565b600160a060020a033316600090815261010260205260408120549080821515610a1857610a94565b50506000828152610103602052604081206001810154600284900a929083161115610a94578054600190810182558101805483900390557fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b3385604051600160a060020a03909216825260208201526040908101905180910390a15b50505050565b600036604051808383808284378201915050925050506040518091039020610ac181610cc8565b156105a057600154821115610ad5576105a0565b6000829055610ae2610e27565b7facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da8260405190815260200160405180910390a15050565b600082815261010360209081526040808320600160a060020a038516845261010290925282205482811515610b515760009350610b65565b8160020a9050808360010154166000141593505b50505092915050565b60006002600183016101008110610b8157fe5b015492915050565b600036604051808383808284378201915050925050506040518091039020610bb081610cc8565b156105a05781600160a060020a0316ff5b60008036604051808383808284378201915050925050506040518091039020610be981610cc8565b15610a9457610bf783610446565b15610c0157610a94565b600160a060020a038416600090815261010260205260409020549150811515610c2957610a94565b610c31610e27565b600160a060020a0383166002836101008110610c4957fe5b0155600160a060020a038085166000908152610102602052604080822082905591851681528190208390557fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c908590859051600160a060020a039283168152911660208201526040908101905180910390a150505050565b6101055481565b600160a060020a033316600090815261010260205260408120548180821515610cf057610e1f565b60008581526101036020526040902080549092501515610d4f57600080548355600180840191909155610104805491610d2b9190830161117d565b6002830181905561010480548792908110610d4257fe5b6000918252602090912001555b8260020a90508082600101541660001415610e1f577fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda3386604051600160a060020a03909216825260208201526040908101905180910390a1815460019011610e0c576000858152610103602052604090206002015461010480549091908110610dd557fe5b6000918252602080832090910182905586825261010390526040812081815560018082018390556002909101919091559350610e1f565b8154600019018255600182018054821790555b505050919050565b6101045460005b81811015610ea057610108600061010483815481101515610e4b57fe5b600091825260208083209091015483528201929092526040018120805473ffffffffffffffffffffffffffffffffffffffff191681556001810182905590610e9660028301826110bb565b5050600101610e2e565b6105a061102e565b60015b6001548110156104a7575b60015481108015610ed557506002816101008110610ed057fe5b015415155b15610ee257600101610eb6565b60018054118015610f0357506001546002906101008110610eff57fe5b0154155b15610f175760018054600019019055610ee2565b60015481108015610f3957506001546002906101008110610f3457fe5b015415155b8015610f5257506002816101008110610f4e57fe5b0154155b15610fb9576001546002906101008110610f6857fe5b01546002826101008110610f7857fe5b01558061010260006002836101008110610f8e57fe5b01548152602001908152602001600020819055506000600260015461010081101515610fb657fe5b01555b610eab565b6000610fc933610446565b156104625761010754610fda6110b1565b1115610ff357600061010655610fee6110b1565b610107555b610106548281011080159061101057506101055482610106540111155b1561102657506101068054820190556001610462565b506000919050565b6101045460005b818110156110a45761010480548290811061104c57fe5b6000918252602090912001541561109c5761010360006101048381548110151561107257fe5b60009182526020808320909101548352820192909252604001812081815560018101829055600201555b600101611035565b6105a061010460006111a1565b6201518042045b90565b50805460018160011615610100020316600290046000825580601f106110e157506104a7565b601f0160209004906000526020600020908101906104a791906111bb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106111405782800160ff1982351617855561116d565b8280016001018555821561116d579182015b8281111561116d578235825591602001919060010190611152565b506111799291506111bb565b5090565b815481835581811511610441576000838152602090206104419181019083016111bb565b50805460008255906000526020600020908101906104a791905b6110b891905b8082111561117957600081556001016111c15600a165627a7a7230582013013903c3aea90ef86fc7872eb7b71e0b19a3e7d524d694e9bd94b90ff7020600290000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000736af44d9c3cad2996dfb1a476da18225eeb19450000000000000000000000000fb0c3599c9877a5ba1d1796a4bdd735dcd393af0000000000000000000000003754cfb6970ef98742e38acc21de028cf53bc362000000000000000000000000a2b06657ac429196c321c4756967c79a213e955d

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

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 000000000000000000000000736af44d9c3cad2996dfb1a476da18225eeb1945
Arg [5] : 0000000000000000000000000fb0c3599c9877a5ba1d1796a4bdd735dcd393af
Arg [6] : 0000000000000000000000003754cfb6970ef98742e38acc21de028cf53bc362
Arg [7] : 000000000000000000000000a2b06657ac429196c321c4756967c79a213e955d


   Swarm Source:
bzzr://13013903c3aea90ef86fc7872eb7b71e0b19a3e7d524d694e9bd94b90ff70206

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.