Sponsored Link:   Trade.io - The Exchange You've Been Waiting For Has Arrived. Instant Verification, Fully Customizable. Pre-Register today
Contract Overview
ETH Balance: 2.193064412788638664 Ether
ETH USD Value: $1,548.00 (@ $705.86/ETH)
No Of Transactions: 101 txns
  Latest 25 txns from a total Of 101 transactions View All

TxHash Age From To Value [TxFee]
0x25cb85c9c37387f81f8d7f28eb915ab723ae93244eb961159074c2cba65ab2f918 days 1 hr ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000037461
0x435ea48332c70d9e218dea23b4cf8e77eecacf0ef0a7d86dd8d6d65f0a6dba6318 days 12 hrs ago0x736af44d9c3cad2996dfb1a476da18225eeb1945  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000036931
0xa3e2888f1e2f993c298f41dfac7eccd9d41f837d34d22872f3c76a8c8b82fc1419 days 1 hr ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00184195
0x3eb23be2ce98c72ac24398dc8f57665c2a50c5557094136826a10889daba8d4735 days 13 mins ago0x0fb0c3599c9877a5ba1d1796a4bdd735dcd393af  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000037461
0x85b45a709551a3bd9d4ae9b6349a133c5b6c746b840c2b1766272169d0ebfb5d35 days 1 hr ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000036931
0xea41826d7b6df578c4badfbabff4ef24bcd877dc274cd7ae8fc6581276353ed835 days 3 hrs ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00184259
0x30e43c01fc4e4f671f02f12db52650d709a9081aaf2c620df2db36b460f3042353 days 8 hrs ago0x736af44d9c3cad2996dfb1a476da18225eeb1945  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000074858
0xd4966922820be27deb29916e3c51b4947d98618ec1b0046574d2122cb303c54753 days 9 hrs ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000073734
0xa60b87cadd3064ded7d5d9eb69f8da6fcfc694e66c8c7c6a8978c8b4da288bd453 days 10 hrs ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00184259
0xe69f576c3c26525d5d9eebf775ad728ebf7f5668e9250bac3a35b2310f21adc155 days 14 hrs ago0x736af44d9c3cad2996dfb1a476da18225eeb1945  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000074922
0x2c20c028152674a4bdf50d22e0c7cce556a5c43e1f91981ce702381edf009d2655 days 22 hrs ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000073862
0xe7e926e344a3989b10b3b9665b8706a95eccadc9026e2d2da562da55b59ecbcc55 days 22 hrs ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.0002
0xfd68540155852516e4c9d200363e9f0f2a6671499abcd4c031135f0d9fff71e856 days 57 mins ago0x736af44d9c3cad2996dfb1a476da18225eeb1945  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.0002
0xef24d54606560913448011f238e68fc2e1e64cb48a62d834ddaffe1650b4074a56 days 1 hr ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.001474072
0x403e62e2c10a8cd72a88e19c311efae543f9e7d1c66c759d173a40235c2cef0868 days 10 hrs ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000037461
0x5689928e978ae8d70316c738c77389134e12b450bdd5200119e5bbc861986add68 days 13 hrs ago0x736af44d9c3cad2996dfb1a476da18225eeb1945  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000036931
0x11d99cd2e679a5dbd97f998ebbe0f08a2cf5c5859876a921b4cf0abfd8f50c6968 days 23 hrs ago0xb2556a76da6e5b99e82fc156f8faad2778225161  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000024263
0xa8a23b0cbb207ec0d695bb34fdde6fa00f1ae69214f674ca853bbfd577ef8b2168 days 23 hrs ago0xb2556a76da6e5b99e82fc156f8faad2778225161  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000024263
0x31e0eea3115d8346ad7c46efec424e7c7c121258a28125c4f0fdd7829bd45e8d69 days 2 hrs ago0xb2556a76da6e5b99e82fc156f8faad2778225161  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000024263
0x2ca1ddc7ceb3114d81be9dda1237be9046d76be856d22ab7ada15590d90c4d8769 days 2 hrs ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00368518
0x7aeef01c5fd917585578ccb854d37bd68b8130c4f7e569b1fde511b85e5fb99b69 days 8 hrs ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.0004704
0x537f84f1d6cb1e87e274cab297f63eb13ee5ad45e172fe0a08bf4975812731ad78 days 2 hrs ago0x0fb0c3599c9877a5ba1d1796a4bdd735dcd393af  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.00099922
0xcf385703a9bedd1e5929e231ef9c39836d3fd57a25d86e28b6a9787e5b31ce3e78 days 7 hrs ago0xb2556a76da6e5b99e82fc156f8faad2778225161  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000024263
0x61fbdd653266d23e59b93972de0cc3af0c81f58e370830198a609ea04add13c378 days 8 hrs ago0xf6a7131693901fc8bd64fe73a31d5e23c310dc31  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.000036931
0xcbea5ce07a70d5c02bda7b18f50d93b230d72762883745126c93606fa0f55bb379 days 15 hrs ago0xa2b06657ac429196c321c4756967c79a213e955d  IN   0xf4702b0918a8a89dfc38459ce42198834818f26b0 Ether0.003869439
[ 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
0x25cb85c9c37387f81f8d7f28eb915ab723ae93244eb961159074c2cba65ab2f9539287918 days 1 hr ago0xf4702b0918a8a89dfc38459ce42198834818f26b0x33f200eec1a4aea5184ea54b7d4c12570e9794b33.67 Ether
0x820dfe6dc156a13d514258f8443151e80c7fc97ff9c247dad794b9a393bc9087539179218 days 5 hrs ago0x37e3efe76ee6cec50559bc07565eaf36ddc054670xf4702b0918a8a89dfc38459ce42198834818f26b0.2 Ether
0x3eb23be2ce98c72ac24398dc8f57665c2a50c5557094136826a10889daba8d47529127135 days 13 mins ago0xf4702b0918a8a89dfc38459ce42198834818f26b0xa54389e9d1044ba88dab9a8c8fa43e2fbfae63594 Ether
0xa6484403a8d1e60a461a3465e6776c1a8d760a618c5f3b026319fef2828c35f0528501836 days 1 hr ago0x37e3efe76ee6cec50559bc07565eaf36ddc054670xf4702b0918a8a89dfc38459ce42198834818f26b0.007 Ether
0x7dfcafca7814ea867d526b85921044a383edae00aefdbed14f12830606939402528496936 days 1 hr ago0x37e3efe76ee6cec50559bc07565eaf36ddc054670xf4702b0918a8a89dfc38459ce42198834818f26b0.009 Ether
0x76db8ee6c522032b621e3912d1731b3de7d23f83c90298253dd87223ae44a15a528491936 days 1 hr ago0x37e3efe76ee6cec50559bc07565eaf36ddc054670xf4702b0918a8a89dfc38459ce42198834818f26b0.009 Ether
0xa6dc2612195d64a5e2e7e24a60d309331fa21af9a533ab861be8345d24f24273521265548 days 8 hrs ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b0.0591 Ether
0xcf12edfe1c56a99dd0d4a43eac3d315cf528138acef98ef914c8ff26905c1a2a518495953 days 42 mins ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b0.001117 Ether
0x30e43c01fc4e4f671f02f12db52650d709a9081aaf2c620df2db36b460f30423518294253 days 8 hrs ago0xf4702b0918a8a89dfc38459ce42198834818f26b0x6cc54052082604263926ff0de0d780162c6d1f486 Ether
0x69e90e03944edd2b60cc85fc5f259dcfc05cc5d873f6840af2c83e5ed66b0658517564354 days 14 hrs ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b0.016 Ether
0xe69f576c3c26525d5d9eebf775ad728ebf7f5668e9250bac3a35b2310f21adc1516977255 days 14 hrs ago0xf4702b0918a8a89dfc38459ce42198834818f26b0x6cc54052082604263926ff0de0d780162c6d1f4816 Ether
0x7c02f4d2060c6a3f15994cb23f8c57d89da6c653f1a103c283e9f3ca497b422d515932557 days 9 hrs ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b0.02 Ether
0x403e62e2c10a8cd72a88e19c311efae543f9e7d1c66c759d173a40235c2cef08509405368 days 10 hrs ago0xf4702b0918a8a89dfc38459ce42198834818f26b0xa54389e9d1044ba88dab9a8c8fa43e2fbfae63594.3 Ether
0x9e7064fb1c9ac3c44119536d83d9eb4f209b85958181a9dc3efe3dd91cf8d1b6507635071 days 10 hrs ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b0.0497210768857628 Ether
0xaea2cfe2f64adc63524d78ce3666be426eb6759bd596d0535a9019f569374850503910977 days 16 hrs ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b0.042414 Ether
0x537f84f1d6cb1e87e274cab297f63eb13ee5ad45e172fe0a08bf4975812731ad503657178 days 2 hrs ago0xf4702b0918a8a89dfc38459ce42198834818f26b0xa54389e9d1044ba88dab9a8c8fa43e2fbfae63597.932 Ether
0x98d0e81d87c6f5fe2ac4c2e02162148ac85f4bdaa3f7951eaf816a700e81fa55502345580 days 7 hrs ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b0.05 Ether
0x64a29fcb0f39d7f772d142bb59ce235d7dfda8baf7e5b3c74757863451161fd9499964284 days 8 hrs ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b0.199 Ether
0xb5de2f34eaeeb36d374dbef10b34d8c07edeffec3271b55c36da1267f41d3a36498725586 days 10 hrs ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b0.250721986461013 Ether
0x467124d377edac837c8f35a6a4af9c9dafefb279bdbeb3392f8252905b186faf497189289 days 36 mins ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b0.075 Ether
0xfd927cbc818d538a107bd0f83462cfc4b4ed39d574c951efa740e9d9e9704bed496358690 days 10 hrs ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b1 Ether
0x4d884f3c1aa3d583d981f5e8ea367ac2e348b5ddb1f7e563da070c2a4e9ff30c495806691 days 8 hrs ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b0.34694621 Ether
0x4c1a950b621f26237830444496c8cc49157ddb35171e50283cf22bc5a0ecb935495767991 days 10 hrs ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b0.1 Ether
0x1acfd39e49a56fe13d8344cd42a84fdf038d35634ea6581d6a731f7ce97839fd494715793 days 5 hrs ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b0.476415188825934024 Ether
0x5b9b9d15209598805c7352294c0fb514038db9f1dbc322c706ffd7394b4c724f494231494 days 1 hr ago0x28c0034afb0723c298ec0aec277c8f2418098f240xf4702b0918a8a89dfc38459ce42198834818f26b2.09012083281239 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact match)
Contract Name: Wallet
Compiler Version: 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

-----Decoded View---------------
Found 8 constructor arguments :
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 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.