Contract Overview
Balance: 101,356.540470910138039651 Ether
Ether Value: $20,490,238.22 (@ $202.16/ETH)
Transactions: 58 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x6c9d6ba4e9f7e992eb4347ba8f2611b68b4aabcaat txn 0xe2c6c9bc23eed2481ffc4d4fab01d16ca873aa6c0396aba96c391613d4d9e92a
Token Balance:
 Latest 25 txns From a total of 58 Transactions

TxHash Age From To Value [TxFee]
0x33f0fcb8ae231bc4c7a6d4beafc6efe861326e8687aa46998354559eeadf5f1814 days 16 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.00113232
0xfb45ca83c3da46fe2c854b4eb69f80edfc269302ae4ac601211ae4341c2d1aab15 days 3 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.007588936
0xac24afc032f8de05c049fe583bc07c23e1b659edb43fdf73bf2fa4180908b5db16 days 16 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.00113232
0x74897e39b32b023b3e21fdc35472ab374d5e5236168b2fd1547b49dc1fb7765616 days 16 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.0092516
0x000dcb0b4a7eee9cc45502efda2d604f4a4cb4a4714b7acf7abe2a5d1774437616 days 16 hrs ago0x1289915922c427772990a6b67c811fb217f780ce  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.0012301
0xdf10560d61576268a6b1bd58f15d8a6f86e66693ecf27b58de0c7dd52f351f3c16 days 17 hrs ago0x1289915922c427772990a6b67c811fb217f780ce  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.0012301
0xa218f8fb85dad72f290ad43d570649f394f1ebab80e136d591566d0cbd79dbd217 days 1 hr ago0x1289915922c427772990a6b67c811fb217f780ce  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.0012301
0xe55516162a59750459b0ab449b73e6deb170d32390c331593b3aa834f48eb1bf23 days 21 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.00113232
0xd590c1e442801be3290e159afdd685d0df8eb58f1446c402381360033bfc280425 days 16 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.0092516
0x4db79e01e95de3fa42689265ca9213fcb9be2d7cc7ada75de080460ee972b7c747 days 14 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.000073998
0x1134e4b2271b6b4b367f12deafca458f9e2e928c1a968e82207e0c9e5d76601a90 days 2 hrs ago0x429dc9d3197ef46439510a3d23363c6f84266b7a  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.000094844
0x8e8b9e27ddeaf868c07dd328fa22380390fdbe9f9723f490b3adfb198ee565c090 days 2 hrs ago0x429dc9d3197ef46439510a3d23363c6f84266b7a  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.00009414
0x33e4612443d9c5a0034c2db7643310e40d0faa759ea4e03f6dc858c506c2327490 days 2 hrs ago0x429dc9d3197ef46439510a3d23363c6f84266b7a  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.000116095
0x3efae522b2b9bfbcfd551c2d426c01f5dd45f50ed8f0e6133cfaa22082b626a590 days 2 hrs ago0x429dc9d3197ef46439510a3d23363c6f84266b7a  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.000118555
0xf09a6770a47c1df3e16e9b682855985aac857d2bbb82f72ffd5e0ca87d783b0e90 days 2 hrs ago0x429dc9d3197ef46439510a3d23363c6f84266b7a  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.00014292
0xaa6ce44910d0e55738693d4d15dd0286efaa9471f5eec17080b2d6ac999f050e95 days 15 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.00370064
0xaee9785c7dd4455c06e06d6d40e1de2770865e113a1df8dfb196f25ff5892c35205 days 18 hrs ago0x7700edddd3fc34c18fe2ab14b5345f1596d10553  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00.00001 Ether0.00013518
0xf743ec4758d6fd7fbd1e1596cd5616b24edcdf54f294cf9673dec653068382ed283 days 4 hrs ago0x6c9d6ba4e9f7e992eb4347ba8f2611b68b4aabca  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.0018872
0x7505d216933cc18fe605e9c0edb2f13b29287b2667500221d0a0a34a5b272220283 days 7 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.014062432
0xfb14217a4e4302e51b65d193b64b05cc47b0b42b2144fcba775a17a8e58d1bfd298 days 12 hrs ago0x6c9d6ba4e9f7e992eb4347ba8f2611b68b4aabca  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.00075488
0xdffb8bbfd65371e7241677166381a44ddc649da454912ed2f68bbf92e6c8dd8f299 days 14 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.00370064
0x769c55bd56b20754ac2b27b49410b0825691a69232e8a7eaef33cb1e51728d2f305 days 8 hrs ago0x6c9d6ba4e9f7e992eb4347ba8f2611b68b4aabca  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.00150976
0xab818a9230113d64802776d97bbb6a8b7c54b65a9cf49b4265b31e39de828048305 days 9 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.00740384
0x1c1355cd132d655e743ec3739c287d60ab9dcf717c632e3fd2c3beed330abcad306 days 23 hrs ago0x6c9d6ba4e9f7e992eb4347ba8f2611b68b4aabca  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.00150976
0xee2ceee5f1c928c733f1efdabbf73df2d4754512b99397d0eafb1b59c687c026307 days 2 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00 Ether0.00740384
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 17 Internal Transactions

ParentTxHash Block Age From To Value
0x33f0fcb8ae231bc4c7a6d4beafc6efe861326e8687aa46998354559eeadf5f18648027514 days 16 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x4f4bf053e072d9d2ea431780bc498623f88e74cb7,000 Ether
0xac24afc032f8de05c049fe583bc07c23e1b659edb43fdf73bf2fa4180908b5db646773616 days 16 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x4f4bf053e072d9d2ea431780bc498623f88e74cb1,000 Ether
0xe55516162a59750459b0ab449b73e6deb170d32390c331593b3aa834f48eb1bf642359623 days 21 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x4f4bf053e072d9d2ea431780bc498623f88e74cb100 Ether
0xf743ec4758d6fd7fbd1e1596cd5616b24edcdf54f294cf9673dec653068382ed4902141283 days 4 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x2c9cf2fe0d35c2e0bbd69e35f0ecdafea48cc8dc2,000 Ether
0xfb14217a4e4302e51b65d193b64b05cc47b0b42b2144fcba775a17a8e58d1bfd4816873298 days 12 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x2c9cf2fe0d35c2e0bbd69e35f0ecdafea48cc8dc2,000 Ether
0x769c55bd56b20754ac2b27b49410b0825691a69232e8a7eaef33cb1e51728d2f4776295305 days 8 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x2c9cf2fe0d35c2e0bbd69e35f0ecdafea48cc8dc5,000 Ether
0x1c1355cd132d655e743ec3739c287d60ab9dcf717c632e3fd2c3beed330abcad4767206306 days 23 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x2c9cf2fe0d35c2e0bbd69e35f0ecdafea48cc8dc6,500 Ether
0x1faab4d044947a66363efadd400939dce8a8dfc4765a1ed1f4e1e11a02267bbd4731750313 days 4 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x2c9cf2fe0d35c2e0bbd69e35f0ecdafea48cc8dc2,800 Ether
0x9d8dd1eb4195867cfa9e0ed9e8b38f12bf989646d3ef373a0aa8e0372805805b4695707319 days 10 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x2c9cf2fe0d35c2e0bbd69e35f0ecdafea48cc8dc240.303743932330465709 Ether
0x3f399c2d626a9f46a23ef8c5653ef1371c7f1c8fc5a4c5e1ccf72c18c5a100254695700319 days 10 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x2c9cf2fe0d35c2e0bbd69e35f0ecdafea48cc8dc960.26887528507982235 Ether
0x19a6fda3a67318bf7b6af55a75117cd55bcc8fc2917b48c99ca077cb046ee2dd4695696319 days 10 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x2c9cf2fe0d35c2e0bbd69e35f0ecdafea48cc8dc1,196.343972819064937551 Ether
0xa411125e647ef287936c55f92d782168ad51dc963f0625908b7dcd4ef3ccf04d4683233321 days 15 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x2c9cf2fe0d35c2e0bbd69e35f0ecdafea48cc8dc880.242947053386734739 Ether
0x272cd92df2ef2f17d21e0e0590d1764be1348bdaa023d512916ebf1d9cb1d0974633411329 days 23 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x97f08019acccd3d1b7e0dd2f0efe84a48e9fdf670.3 Ether
0x5c69490978e59129466fa3bb0a035f44af0ae454ed07838a02a6d4b140f38e183216681610 days 12 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x3456e9ec839dbb2edf274dc6dc23fc9575bd23c91 Ether
0x0b01ea3fb5e481439275d2850e1ac151ebdd6f4858907ad2ff69dbbe8093ce312752788687 days 4 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00x38355ab2667ed167cadcd132603bc6236c8295de1,000 Ether
0x4f4939bbe3b3764ca343c50d87896aba3daede24e6d0d7019bc10bcd610540fc2740865689 days 3 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00xeec32fe22e28cd8bf0d1fc55095db0be37be237415 Ether
0x207bacfda2410766a0792608f6f7c1283dbc180f9958851c1f84d2033a14bccc2740793689 days 3 hrs ago0x6c76bb6843c2ed9a5ad484edc9fecba5cd80b6a00xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb15 Ether
[ Download CSV Export  ] 
Contract Name: Wallet
Compiler Text: v0.3.2-2016-04-18-81ae2a7
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

//sol Wallet
// Multi-sig, daily-limited account proxy/wallet.
// @authors:
// Gav Wood <[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 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 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.