Sponsored Link: Crowdsale has finished. Check out the KICKICO platform to find new ICOs to start.
Contract Overview
ETH Balance: 65,092.495398081630195342 Ether
ETH USD Value: $16,764,572.19 (@ $257.55/ETH)
No Of Transactions: 114 txns
Misc
Address Watch Add To Watch List
Contract Creator 0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfbat txn 0x99dd0ec891e99ce92bc740b9fc0da18c76ce3e1d1e3f8fff45e8c8fe093f5fe9
Token Tracker
  Latest 25 txns from a total Of 114 transactions View All

TxHash Age From To Value [TxFee]
0x98bfe620db6214de83e6f751fd887af6263ec3247a4d0fdc8c52fc104453037d11 hrs 2 mins ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00734748
0xcd3a7b804ae8d2eafb1570347f448d5992e6dda9332caffa96d88cdb63987ada11 hrs 8 mins ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00367374
0x34272fd669680ae5c0eff928474e98f41445133a86429ba565f1c3effa5ebefa11 hrs 40 mins ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.007771344
0xc02f690edfdda6bedffb3c863a0f8420a4f281e12f0c9659c61b704a173900b79 days 10 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.000941325826
0x9e32e78e2d78af488ec8e752cdce855e2bdf65c68cb8589cedc06af2a000e86f9 days 10 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.000944126961
0x083ec7a6a0036012267d06da47ad6796b0ec7621c8847cfabcb8aa71d3e838419 days 10 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.001250721755
0x7991c76ca409c9063834e649f5dcd3102131ccf08f5929a5f33f0f29ebd313299 days 10 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.000943477046
0xb10cf66c61bc6eef36f50732b2d7e812dbbc2546a2d992a04b37a8643b0465f69 days 10 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.000855750751
0x14380fff0ca9c83b95a67480d19360391e4cb19897dc785fb89ee13fe722d4e09 days 14 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00367374
0x7b5a81404f4a172d86d105dedfbcef53b46a5f2172d6d49dd2325764e40710fb9 days 14 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00367374
0xaf7464d8c1e4b2fa35b77d7b9d70cafeba20915749b7d5ae911e589fc7a1c4a39 days 14 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.0034988
0x0fd3dd503c48f31378e2a8dd2817072032b207755e150182e2085259079883a39 days 14 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00555096
0xa3c33b370ec4c8dea9ed3c620733a03ada5c426cb9b5a963a724ee15aea3bc0c21 days 14 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00555096
0x295f0186f882c05c3c9b5943009fc04be54d49bf2e6b08e4642c041e3765656822 days 1 hr ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00135972
0xf890a89e549041052967d0658179829db31f5ec0220eedbc9e9f9f702f85456d24 days 15 mins ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00554904
0x706f14e6e611ea85ca9f5afa7cf46a716675ceca86d72283b2a2b536a9d4e68625 days 13 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.000950838316
0xf4a5d721c99aa5fe86caecf6e64a2475c45f856a5fcb1acfad2fc058e972307125 days 15 hrs ago0x55d3412c741bd6a3871c48a2f1987bbb5c4807d4  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00339936
0x77488355d12fac49419204079665b192f7639f5d6871b319b0b444d45d0fefb331 days 14 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00102542
0x8d6411e9b769af55fac1bc185838ba3333d2be9b7568c690ddd70a242eb0d01349 days 53 mins ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.000150976
0xdc4915bd785126e399abe6e4b431b6de6988b65d6654683cfd4e39e5fb8cfb1749 days 2 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.001400032
0xa9f62b3a0cb1477cc0e90d488a2f8ced53435185d786a0b72f98d892ee67aced49 days 2 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00152542
0x9006811e7ce63891fd789e80473547f059e84a5b3148ffccc65a40c74b5894ee50 days 23 hrs ago0xa3ad1e4cbd54d4be96b2e1fe0d3fb373b5accbfb  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.000792624
0x732afe0f890f7a38ae8fe6a8962e7d9cf006fedabe9158459940cbdb5ce7104e50 days 23 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.00367374
0x111046d94a195d17e941975bc4ef00c82785b4e39c800fb03d96e134f8d8988550 days 23 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.000792624
0xac08d241e02183fcd91be2978ade54f76000b83c69aa622eeafd87e6e7553d0950 days 23 hrs ago0xeec32fe22e28cd8bf0d1fc55095db0be37be2374  IN   0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100 Ether0.000792624
[ 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
0xc02f690edfdda6bedffb3c863a0f8420a4f281e12f0c9659c61b704a173900b742685899 days 10 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xe4333a256b520757ce458d7746740c31a4e8151d162.8 Ether
0x9e32e78e2d78af488ec8e752cdce855e2bdf65c68cb8589cedc06af2a000e86f42685869 days 10 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xebff3feba1cc980dce6946b69e96e3e59edf01b6142 Ether
0x083ec7a6a0036012267d06da47ad6796b0ec7621c8847cfabcb8aa71d3e8384142685849 days 10 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xb5984954cdf7df8a0ef8e663082bb7815738f92f351 Ether
0x7991c76ca409c9063834e649f5dcd3102131ccf08f5929a5f33f0f29ebd3132942685799 days 10 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xc41297bdbbfd30b94243f7e68c8f4ac7bcf82ac974 Ether
0xb10cf66c61bc6eef36f50732b2d7e812dbbc2546a2d992a04b37a8643b0465f642685779 days 10 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x076a2167662bf436f0d1ecef57d42d9d6f1b2abe167 Ether
0x295f0186f882c05c3c9b5943009fc04be54d49bf2e6b08e4642c041e37656568422384322 days 1 hr ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x4d668900572e68a9e2a360112930c1161beb0a5b2,000 Ether
0x706f14e6e611ea85ca9f5afa7cf46a716675ceca86d72283b2a2b536a9d4e686421155525 days 13 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x4d668900572e68a9e2a360112930c1161beb0a5b300 Ether
0x77488355d12fac49419204079665b192f7639f5d6871b319b0b444d45d0fefb3418846031 days 14 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x0747b69f75123fcc2276fd5d4fe87e68cda0b20410 Ether
0x8d6411e9b769af55fac1bc185838ba3333d2be9b7568c690ddd70a242eb0d013411655749 days 53 mins ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xdbb2a0fa44d383ffc0adb3c6e60878b29977b9174,990 Ether
0xa9f62b3a0cb1477cc0e90d488a2f8ced53435185d786a0b72f98d892ee67aced411628849 days 2 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xdbb2a0fa44d383ffc0adb3c6e60878b29977b91710 Ether
0x9006811e7ce63891fd789e80473547f059e84a5b3148ffccc65a40c74b5894ee410871650 days 23 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x1bfdfb875a35792c2b75cd0c35c153d79ca062ba390 Ether
0x111046d94a195d17e941975bc4ef00c82785b4e39c800fb03d96e134f8d89885410868250 days 23 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x076a2167662bf436f0d1ecef57d42d9d6f1b2abe309 Ether
0xac08d241e02183fcd91be2978ade54f76000b83c69aa622eeafd87e6e7553d09410867750 days 23 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xebb7b028be87f7fa1bde1c716a2a2ed2ffcf427988 Ether
0x89981310e1bc1346413a7a1874d432fd784ed214afbdf44cf87e9d76305fbfc4410866251 days 2 mins ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xebb7b028be87f7fa1bde1c716a2a2ed2ffcf427984 Ether
0x7982b2862381eb6047b392bb16c4064a08615d8d9fa7373e0ab2c6c35ad887f0410866151 days 2 mins ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x1bfdfb875a35792c2b75cd0c35c153d79ca062ba14 Ether
0xf3300d6f560db986b7b627153b48591cb44ae79cec2f8fab30fe5c4a78122d2c410851151 days 51 mins ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x45caa15878aa302e4f50e45f240caa54fe0a3454298 Ether
0x1d4f87f68d250d64eba2b698216f85bd493979beb18f83f99222990cb6603520410688651 days 10 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x45caa15878aa302e4f50e45f240caa54fe0a34540.044410889550117689 Ether
0x4ca67c762a4b54c5c6a66922dcf56097f24a5744b2817cff16c2401b253a5885408113357 days 3 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x9ca4c6063c00f36304c09c6b3961e7fbd53a4c8b1,200 Ether
0xe0c84b06eb76c8da406bbb48e514cd5dd22162de00e4eb499cf4452b14f1f680407196759 days 2 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xd2aeb95542051234860d8c6714a229008d84e153400 Ether
0x3dd306126a9024539fa99aaf3db66c745df504ee700056b08a685f23736566d6404643164 days 15 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xd2aeb95542051234860d8c6714a229008d84e15392 Ether
0x17c653e5a9ff614981372ba7bb15bf2f5e77bfce15f6cf36eb32604878b84968401009472 days 15 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x076a2167662bf436f0d1ecef57d42d9d6f1b2abe463 Ether
0xfc2437b86f172dba28bdf0eaeaf35778312f80f54bca210b76baf5598ffa9da5396539181 days 16 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xb858a246c76da205da6619720d67be0fcbe02c2854 Ether
0x8ab4cdabe40431c08d88c13c04c01c3a16365bc7b709509fdc5fb1e6c37aae5e3866748101 days 1 hr ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xa7ce4ccc77a8337cfe99fbd4d986fec6f62ecfd350 Ether
0xffde7d72030183690c52749eebab79b46ef13fce04d97611b0ac8820f62192763851511103 days 23 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100x623ebe6b201d719ac3d37b8b25c3528a209b3667400 Ether
0x99eef55834edb990f90d0377a07a8db2e919c76201c557ae4431770621316e203761302120 days 21 hrs ago0xdf62d2bcbfb92af1987a10fc5641e7c24dc93f100xb858a246c76da205da6619720d67be0fcbe02c281,135 Ether
[ Download CSV Export  ] 
Contract Name: Wallet
Compiler Version: v0.3.2-2016-04-18-81ae2a7
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
//sol Wallet
// Multi-sig, daily-limited account proxy/wallet.
// @authors:
// Gav Wood <g@ethdev.com>
// inheritable "property" contract that enables methods to be protected by requiring the acquiescence of either a
// single, or, crucially, each of a number of, designated owners.
// usage:
// use modifiers onlyowner (just own owned) or onlymanyowners(hash), whereby the same hash must be provided by
// some number (specified in constructor) of the set of owners (specified in the constructor, modifiable) before the
// interior is executed.
contract multiowned {

    // TYPES

    // struct for the status of a pending operation.
    struct PendingState {
        uint yetNeeded;
        uint ownersDone;
        uint index;
    }

    // EVENTS

    // this contract only has five types of events: it can accept a confirmation, in which case
    // we record owner and operation (hash) alongside it.
    event Confirmation(address owner, bytes32 operation);
    event Revoke(address owner, bytes32 operation);
    // some others are in the case of an owner changing.
    event OwnerChanged(address oldOwner, address newOwner);
    event OwnerAdded(address newOwner);
    event OwnerRemoved(address oldOwner);
    // the last one is emitted if the required signatures change
    event RequirementChanged(uint newRequirement);

    // MODIFIERS

    // simple single-sig function modifier.
    modifier onlyowner {
        if (isOwner(msg.sender))
            _
    }
    // multi-sig function modifier: the operation must have an intrinsic hash in order
    // that later attempts can be realised as the same underlying operation and
    // thus count as confirmations.
    modifier onlymanyowners(bytes32 _operation) {
        if (confirmAndCheck(_operation))
            _
    }

    // METHODS

    // constructor is given number of sigs required to do protected "onlymanyowners" transactions
    // as well as the selection of addresses capable of confirming them.
    function multiowned(address[] _owners, uint _required) {
        m_numOwners = _owners.length + 1;
        m_owners[1] = uint(msg.sender);
        m_ownerIndex[uint(msg.sender)] = 1;
        for (uint i = 0; i < _owners.length; ++i)
        {
            m_owners[2 + i] = uint(_owners[i]);
            m_ownerIndex[uint(_owners[i])] = 2 + i;
        }
        m_required = _required;
    }
    
    // Revokes a prior confirmation of the given operation
    function revoke(bytes32 _operation) external {
        uint ownerIndex = m_ownerIndex[uint(msg.sender)];
        // make sure they're an owner
        if (ownerIndex == 0) return;
        uint ownerIndexBit = 2**ownerIndex;
        var pending = m_pending[_operation];
        if (pending.ownersDone & ownerIndexBit > 0) {
            pending.yetNeeded++;
            pending.ownersDone -= ownerIndexBit;
            Revoke(msg.sender, _operation);
        }
    }
    
    // Replaces an owner `_from` with another `_to`.
    function changeOwner(address _from, address _to) onlymanyowners(sha3(msg.data, block.number)) external {
        if (isOwner(_to)) return;
        uint ownerIndex = m_ownerIndex[uint(_from)];
        if (ownerIndex == 0) return;

        clearPending();
        m_owners[ownerIndex] = uint(_to);
        m_ownerIndex[uint(_from)] = 0;
        m_ownerIndex[uint(_to)] = ownerIndex;
        OwnerChanged(_from, _to);
    }
    
    function addOwner(address _owner) onlymanyowners(sha3(msg.data, block.number)) external {
        if (isOwner(_owner)) return;

        clearPending();
        if (m_numOwners >= c_maxOwners)
            reorganizeOwners();
        if (m_numOwners >= c_maxOwners)
            return;
        m_numOwners++;
        m_owners[m_numOwners] = uint(_owner);
        m_ownerIndex[uint(_owner)] = m_numOwners;
        OwnerAdded(_owner);
    }
    
    function removeOwner(address _owner) onlymanyowners(sha3(msg.data, block.number)) external {
        uint ownerIndex = m_ownerIndex[uint(_owner)];
        if (ownerIndex == 0) return;
        if (m_required > m_numOwners - 1) return;

        m_owners[ownerIndex] = 0;
        m_ownerIndex[uint(_owner)] = 0;
        clearPending();
        reorganizeOwners(); //make sure m_numOwner is equal to the number of owners and always points to the optimal free slot
        OwnerRemoved(_owner);
    }
    
    function changeRequirement(uint _newRequired) onlymanyowners(sha3(msg.data, block.number)) external {
        if (_newRequired > m_numOwners) return;
        m_required = _newRequired;
        clearPending();
        RequirementChanged(_newRequired);
    }
    
    function isOwner(address _addr) returns (bool) {
        return m_ownerIndex[uint(_addr)] > 0;
    }
    
    function hasConfirmed(bytes32 _operation, address _owner) constant returns (bool) {
        var pending = m_pending[_operation];
        uint ownerIndex = m_ownerIndex[uint(_owner)];

        // make sure they're an owner
        if (ownerIndex == 0) return false;

        // determine the bit to set for this owner.
        uint ownerIndexBit = 2**ownerIndex;
        if (pending.ownersDone & ownerIndexBit == 0) {
            return false;
        } else {
            return true;
        }
    }
    
    // INTERNAL METHODS

    function confirmAndCheck(bytes32 _operation) internal returns (bool) {
        // determine what index the present sender is:
        uint ownerIndex = m_ownerIndex[uint(msg.sender)];
        // make sure they're an owner
        if (ownerIndex == 0) return;

        var pending = m_pending[_operation];
        // if we're not yet working on this operation, switch over and reset the confirmation status.
        if (pending.yetNeeded == 0) {
            // reset count of confirmations needed.
            pending.yetNeeded = m_required;
            // reset which owners have confirmed (none) - set our bitmap to 0.
            pending.ownersDone = 0;
            pending.index = m_pendingIndex.length++;
            m_pendingIndex[pending.index] = _operation;
        }
        // determine the bit to set for this owner.
        uint ownerIndexBit = 2**ownerIndex;
        // make sure we (the message sender) haven't confirmed this operation previously.
        if (pending.ownersDone & ownerIndexBit == 0) {
            Confirmation(msg.sender, _operation);
            // ok - check if count is enough to go ahead.
            if (pending.yetNeeded <= 1) {
                // enough confirmations: reset and run interior.
                delete m_pendingIndex[m_pending[_operation].index];
                delete m_pending[_operation];
                return true;
            }
            else
            {
                // not enough: record that this owner in particular confirmed.
                pending.yetNeeded--;
                pending.ownersDone |= ownerIndexBit;
            }
        }
    }

    function reorganizeOwners() private returns (bool) {
        uint free = 1;
        while (free < m_numOwners)
        {
            while (free < m_numOwners && m_owners[free] != 0) free++;
            while (m_numOwners > 1 && m_owners[m_numOwners] == 0) m_numOwners--;
            if (free < m_numOwners && m_owners[m_numOwners] != 0 && m_owners[free] == 0)
            {
                m_owners[free] = m_owners[m_numOwners];
                m_ownerIndex[m_owners[free]] = free;
                m_owners[m_numOwners] = 0;
            }
        }
    }
    
    function clearPending() internal {
        uint length = m_pendingIndex.length;
        for (uint i = 0; i < length; ++i)
            if (m_pendingIndex[i] != 0)
                delete m_pending[m_pendingIndex[i]];
        delete m_pendingIndex;
    }
        
    // FIELDS

    // the number of owners that must confirm the same operation before it is run.
    uint public m_required;
    // pointer used to find a free slot in m_owners
    uint public m_numOwners;
    
    // list of owners
    uint[256] m_owners;
    uint constant c_maxOwners = 250;
    // index on the list of owners to allow reverse lookup
    mapping(uint => uint) m_ownerIndex;
    // the ongoing operations.
    mapping(bytes32 => PendingState) m_pending;
    bytes32[] m_pendingIndex;
}

// inheritable "property" contract that enables methods to be protected by placing a linear limit (specifiable)
// on a particular resource per calendar day. is multiowned to allow the limit to be altered. resource that method
// uses is specified in the modifier.
contract daylimit is multiowned {

    // MODIFIERS

    // simple modifier for daily limit.
    modifier limitedDaily(uint _value) {
        if (underLimit(_value))
            _
    }

    // METHODS

    // constructor - stores initial daily limit and records the present day's index.
    function daylimit(uint _limit) {
        m_dailyLimit = _limit;
        m_lastDay = today();
    }
    // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.
    function setDailyLimit(uint _newLimit) onlymanyowners(sha3(msg.data, block.number)) external {
        m_dailyLimit = _newLimit;
    }
    // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.
    function resetSpentToday() onlymanyowners(sha3(msg.data, block.number)) external {
        m_spentToday = 0;
    }
    
    // INTERNAL METHODS
    
    // checks to see if there is at least `_value` left from the daily limit today. if there is, subtracts it and
    // returns true. otherwise just returns false.
    function underLimit(uint _value) internal onlyowner returns (bool) {
        // reset the spend limit if we're on a different day to last time.
        if (today() > m_lastDay) {
            m_spentToday = 0;
            m_lastDay = today();
        }
        // check to see if there's enough left - if so, subtract and return true.
        if (m_spentToday + _value >= m_spentToday && m_spentToday + _value <= m_dailyLimit) {
            m_spentToday += _value;
            return true;
        }
        return false;
    }
    // determines today's index.
    function today() private constant returns (uint) { return now / 1 days; }

    // FIELDS

    uint public m_dailyLimit;
    uint public m_spentToday;
    uint public m_lastDay;
}

// interface contract for multisig proxy contracts; see below for docs.
contract multisig {

    // EVENTS

    // logged events:
    // Funds has arrived into the wallet (record how much).
    event Deposit(address from, uint value);
    // Single transaction going out of the wallet (record who signed for it, how much, and to whom it's going).
    event SingleTransact(address owner, uint value, address to, bytes data);
    // Multi-sig transaction going out of the wallet (record who signed for it last, the operation hash, how much, and to whom it's going).
    event MultiTransact(address owner, bytes32 operation, uint value, address to, bytes data);
    // Confirmation still needed for a transaction.
    event ConfirmationNeeded(bytes32 operation, address initiator, uint value, address to, bytes data);
    
    // FUNCTIONS
    
    // TODO: document
    function changeOwner(address _from, address _to) external;
    function execute(address _to, uint _value, bytes _data) external returns (bytes32);
    function confirm(bytes32 _h) returns (bool);
}

// usage:
// bytes32 h = Wallet(w).from(oneOwner).transact(to, value, data);
// Wallet(w).from(anotherOwner).confirm(h);
contract Wallet is multisig, multiowned, daylimit {

    uint public version = 2;

    // TYPES

    // Transaction structure to remember details of transaction lest it need be saved for a later call.
    struct Transaction {
        address to;
        uint value;
        bytes data;
    }

    // METHODS

    // constructor - just pass on the owner array to the multiowned and
    // the limit to daylimit
    function Wallet(address[] _owners, uint _required, uint _daylimit)
            multiowned(_owners, _required) daylimit(_daylimit) {
    }
    
    // kills the contract sending everything to `_to`.
    function kill(address _to) onlymanyowners(sha3(msg.data, block.number)) external {
        suicide(_to);
    }
    
    // gets called when no other function matches
    function() {
        // just being sent some cash?
        if (msg.value > 0)
            Deposit(msg.sender, msg.value);
    }
    
    // Outside-visible transact entry point. Executes transacion immediately if below daily spend limit.
    // If not, goes into multisig process. We provide a hash on return to allow the sender to provide
    // shortcuts for the other confirmations (allowing them to avoid replicating the _to, _value
    // and _data arguments). They still get the option of using them if they want, anyways.
    function execute(address _to, uint _value, bytes _data) external onlyowner returns (bytes32 _r) {
        // first, take the opportunity to check that we're under the daily limit.
        if (underLimit(_value)) {
            SingleTransact(msg.sender, _value, _to, _data);
            // yes - just execute the call.
            _to.call.value(_value)(_data);
            return 0;
        }
        // determine our operation hash.
        _r = sha3(msg.data, block.number);
        if (!confirm(_r) && m_txs[_r].to == 0) {
            m_txs[_r].to = _to;
            m_txs[_r].value = _value;
            m_txs[_r].data = _data;
            ConfirmationNeeded(_r, msg.sender, _value, _to, _data);
        }
    }
    
    // confirm a transaction through just the hash. we use the previous transactions map, m_txs, in order
    // to determine the body of the transaction from the hash provided.
    function confirm(bytes32 _h) onlymanyowners(_h) returns (bool) {
        if (m_txs[_h].to != 0) {
            m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data);
            MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data);
            delete m_txs[_h];
            return true;
        }
    }
    
    // INTERNAL METHODS
    
    function clearPending() internal {
        uint length = m_pendingIndex.length;
        for (uint i = 0; i < length; ++i)
            delete m_txs[m_pendingIndex[i]];
        super.clearPending();
    }

    // FIELDS

    // pending transactions we have at present.
    mapping (bytes32 => Transaction) m_txs;
}

  Contract ABI  
[{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"removeOwner","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"m_numOwners","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"m_lastDay","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"resetSpentToday","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"m_spentToday","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"addOwner","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"m_required","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_h","type":"bytes32"}],"name":"confirm","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_newLimit","type":"uint256"}],"name":"setDailyLimit","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"execute","outputs":[{"name":"_r","type":"bytes32"}],"type":"function"},{"constant":false,"inputs":[{"name":"_operation","type":"bytes32"}],"name":"revoke","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_newRequired","type":"uint256"}],"name":"changeRequirement","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"_operation","type":"bytes32"},{"name":"_owner","type":"address"}],"name":"hasConfirmed","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"kill","outputs":[],"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"name":"changeOwner","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"m_dailyLimit","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"},{"name":"_daylimit","type":"uint256"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"operation","type":"bytes32"}],"name":"Confirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"operation","type":"bytes32"}],"name":"Revoke","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOwner","type":"address"}],"name":"OwnerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldOwner","type":"address"}],"name":"OwnerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newRequirement","type":"uint256"}],"name":"RequirementChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"data","type":"bytes"}],"name":"SingleTransact","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"operation","type":"bytes32"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"data","type":"bytes"}],"name":"MultiTransact","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"operation","type":"bytes32"},{"indexed":false,"name":"initiator","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"data","type":"bytes"}],"name":"ConfirmationNeeded","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052600261010860005055604051611b51380380611b51833981016040528080518201919060200180519060200190919080519060200190919050505b805b83835b600060018351016001600050819055503373ffffffffffffffffffffffffffffffffffffffff16600260005060016101008110156100025790900160005b5081905550600161010260005060003373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005081905550600090505b825181101561016e5782818151811015610002579060200190602002015173ffffffffffffffffffffffffffffffffffffffff166002600050826002016101008110156100025790900160005b508190555080600201610102600050600085848151811015610002579060200190602002015173ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b80600101905080506100c2565b816000600050819055505b505050806101056000508190555061018f6101ad565b610107600050819055505b505b505050611992806101bf6000396000f35b600062015180420490506101bc565b9056606060405236156100f8576000357c010000000000000000000000000000000000000000000000000000000090048063173825d9146101605780632f54bf6e146101785780634123cb6b146101a457806352375093146101c757806354fd4d50146101ea5780635c52c2f51461020d578063659010e71461021c5780637065cb481461023f578063746c917114610257578063797af6271461027a578063b20d30a9146102a6578063b61d27f6146102be578063b75c7dc614610307578063ba51a6df1461031f578063c2cf732614610337578063cbf0b0c01461036c578063f00d4b5d14610384578063f1736d86146103a5576100f8565b61015e5b600034111561015b577fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3334604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b565b005b61017660048080359060200190919050506107c4565b005b61018e60048080359060200190919050506109a5565b6040518082815260200191505060405180910390f35b6101b16004805050610a91565b6040518082815260200191505060405180910390f35b6101d46004805050610b38565b6040518082815260200191505060405180910390f35b6101f76004805050610b42565b6040518082815260200191505060405180910390f35b61021a6004805050610adf565b005b6102296004805050610b2e565b6040518082815260200191505060405180910390f35b610255600480803590602001909190505061066e565b005b6102646004805050610a88565b6040518082815260200191505060405180910390f35b6102906004808035906020019091905050610f0e565b6040518082815260200191505060405180910390f35b6102bc6004808035906020019091905050610a9a565b005b6102f160048080359060200190919080359060200190919080359060200190820180359060200191909192905050610b9e565b6040518082815260200191505060405180910390f35b61031d60048080359060200190919050506103c8565b005b610335600480803590602001909190505061090f565b005b61035660048080359060200190919080359060200190919050506109e7565b6040518082815260200191505060405180910390f35b6103826004808035906020019091905050610b4c565b005b6103a360048080359060200190919080359060200190919050506104ca565b005b6103b26004805050610b24565b6040518082815260200191505060405180910390f35b60006000600061010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549250600083141561040f576104c4565b8260020a91506101036000506000858152602001908152602001600020600050905060008282600101600050541611156104c3578060000160008181505480929190600101919050555081816001016000828282505403925050819055507fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b3385604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b50505050565b600060003643604051808484808284378201915050828152602001935050505060405180910390206104fb816112db565b1561066757610509836109a5565b156105145750610669565b61010260005060008573ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005054915060008214156105565750610669565b61055e611777565b8273ffffffffffffffffffffffffffffffffffffffff166002600050836101008110156100025790900160005b5081905550600061010260005060008673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055508161010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8484604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15b505b505050565b600036436040518084848082843782019150508281526020019350505050604051809103902061069d816112db565b156107bf576106ab826109a5565b156106b657506107c1565b6106be611777565b60fa6001600050541015156106d7576106d561153d565b505b60fa6001600050541015156106ec57506107c1565b60016000818150548092919060010191905055508173ffffffffffffffffffffffffffffffffffffffff1660026000506001600050546101008110156100025790900160005b508190555060016000505461010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c382604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b505b50565b600060003643604051808484808284378201915050828152602001935050505060405180910390206107f5816112db565b156109095761010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549150600082141561083c575061090b565b6001600160005054036000600050541115610857575061090b565b60006002600050836101008110156100025790900160005b5081905550600061010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055506108b2611777565b6108ba61153d565b507f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da83604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b505b5050565b600036436040518084848082843782019150508281526020019350505050604051809103902061093e816112db565b156109a05760016000505482111561095657506109a2565b81600060005081905550610968611777565b7facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da826040518082815260200191505060405180910390a15b505b50565b6000600061010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050541190506109e2565b919050565b60006000600060006101036000506000878152602001908152602001600020600050925061010260005060008673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505491506000821415610a505760009350610a7f565b8160020a90506000818460010160005054161415610a755760009350610a7f56610a7e565b60019350610a7f565b5b50505092915050565b60006000505481565b60016000505481565b6000364360405180848480828437820191505082815260200193505050506040518091039020610ac9816112db565b15610ada5781610105600050819055505b505b50565b6000364360405180848480828437820191505082815260200193505050506040518091039020610b0e816112db565b15610b20576000610106600050819055505b505b565b6101056000505481565b6101066000505481565b6101076000505481565b6101086000505481565b6000364360405180848480828437820191505082815260200193505050506040518091039020610b7b816112db565b15610b99578173ffffffffffffffffffffffffffffffffffffffff16ff5b505b50565b6000610ba9336109a5565b15610f0557610bb7846116d7565b15610ca0577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd0043385878686604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a18473ffffffffffffffffffffffffffffffffffffffff168484846040518083838082843782019150509250505060006040518083038185876185025a03f1925050505060006001029050610f06565b600036436040518084848082843782019150508281526020019350505050604051809103902090508050610cd381610f0e565b158015610d3357506000610109600050600083815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610f045784610109600050600083815260200190815260200160002060005060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555083610109600050600083815260200190815260200160002060005060010160005081905550828261010960005060008481526020019081526020016000206000506002016000509190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e0857803560ff1916838001178555610e39565b82800160010185558215610e39579182015b82811115610e38578235826000505591602001919060010190610e1a565b5b509050610e649190610e46565b80821115610e605760008181506000905550600101610e46565b5090565b50507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32813386888787604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b5b5b949350505050565b600081610f1a816112db565b156112d4576000610109600050600085815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156112d357610109600050600084815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610109600050600085815260200190815260200160002060005060010160005054610109600050600086815260200190815260200160002060005060020160005060405180828054600181600116156101000203166002900480156110765780601f1061104b57610100808354040283529160200191611076565b820191906000526020600020905b81548152906001019060200180831161105957829003601f168201915b505091505060006040518083038185876185025a03f192505050507fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a3384610109600050600087815260200190815260200160002060005060010160005054610109600050600088815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166101096000506000898152602001908152602001600020600050600201600050604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156112005780601f106111d557610100808354040283529160200191611200565b820191906000526020600020905b8154815290600101906020018083116111e357829003601f168201915b5050965050505050505060405180910390a1610109600050600084815260200190815260200160002060006000820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000506000905560028201600050805460018160011615610100020316600290046000825580601f1061128957506112c6565b601f0160209004906000526020600020908101906112c591906112a7565b808211156112c157600081815060009055506001016112a7565b5090565b5b50505060019150506112d6565b5b505b919050565b600060006000600061010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549250600083141561132457611535565b610103600050600086815260200190815260200160002060005091506000826000016000505414156113fd57600060005054826000016000508190555060008260010160005081905550610104600050805480919060010190908154818355818115116113c3578183600052602060002091820191016113c291906113a4565b808211156113be57600081815060009055506001016113a4565b5090565b5b5050508260020160005081905550846101046000508360020160005054815481101561000257906000526020600020900160005b50819055505b8260020a90506000818360010160005054161415611534577fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda3386604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16001826000016000505411151561150757610104600050610103600050600087815260200190815260200160002060005060020160005054815481101561000257906000526020600020900160005b50600090556101036000506000868152602001908152602001600020600060008201600050600090556001820160005060009055600282016000506000905550506001935061153556611533565b816000016000818150548092919060019003919050555080826001016000828282505417925050819055505b5b5b505050919050565b60006000600190505b6001600050548110156116d2575b60016000505481108015611580575060006002600050826101008110156100025790900160005b505414155b15611592578080600101915050611554565b5b60016001600050541180156115c45750600060026000506001600050546101008110156100025790900160005b5054145b156115e357600160008181505480929190600190039190505550611593565b600160005054811080156116145750600060026000506001600050546101008110156100025790900160005b505414155b8015611637575060006002600050826101008110156100025790900160005b5054145b156116cd5760026000506001600050546101008110156100025790900160005b50546002600050826101008110156100025790900160005b50819055508061010260005060006002600050846101008110156100025790900160005b5054815260200190815260200160002060005081905550600060026000506001600050546101008110156100025790900160005b50819055505b611546565b5b5090565b60006116e2336109a5565b1561177157610107600050546116f6611980565b111561171b57600061010660005081905550611710611980565b610107600050819055505b610106600050548261010660005054011015801561174757506101056000505482610106600050540111155b15611768578161010660008282825054019250508190555060019050611772565b60009050611772565b5b919050565b60006000610104600050805490509150600090505b8181101561187857610109600050600061010460005083815481101561000257906000526020600020900160005b5054815260200190815260200160002060006000820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000506000905560028201600050805460018160011615610100020316600290046000825580601f1061182a5750611867565b601f0160209004906000526020600020908101906118669190611848565b808211156118625760008181506000905550600101611848565b5090565b5b5050505b806001019050805061178c565b611880611885565b5b5050565b60006000610104600050805490509150600090505b8181101561193857600060010261010460005082815481101561000257906000526020600020900160005b505414151561192a57610103600050600061010460005083815481101561000257906000526020600020900160005b50548152602001908152602001600020600060008201600050600090556001820160005060009055600282016000506000905550505b5b806001019050805061189a565b61010460005080546000825590600052602060002090810190611979919061195b565b80821115611975576000818150600090555060010161195b565b5090565b5b505b5050565b6000620151804204905061198f565b9056
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.