Sponsored Link:  Dmarket – first cross-game trading platform based on blockchain technology. Check the Whitepaper.
Contract Overview
ETH Balance: 6,879.2298138386 Ether
ETH USD Value: $1,992,362.54 (@ $289.62/ETH)
No Of Transactions: 75 txns
  Latest 25 txns from a total Of 75 transactions View All

TxHash Age From To Value [TxFee]
0x5940c2f8ae2d3ecb51c09afa5d741f6338747ac11d8398a28596f6d6a2f656333 days 9 hrs ago0xce20efb3786237d661082d4b2b9e1438dc6108ee  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.004559746751
0x5afb5be38f55e327859346fded5e025d4f0eab0093370a79b7091b9c8c7de62d5 days 15 hrs ago0xce20efb3786237d661082d4b2b9e1438dc6108ee  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.000825534275
0x1b831c37fa493a57460d807fb4b9f332167b8fccdf3cfed7a5499442672cce709 days 6 hrs ago0x246c1243e51cab00064ebb199eaf463449f7928f  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.00385791671
0x929f648b7d8f78585ac5de9058dbb770749cf87cc044dcae35cca33684512f5424 days 8 hrs ago0xce20efb3786237d661082d4b2b9e1438dc6108ee  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.000792624
0x747498d92fd86a50e8a7333e855d19a1f69ebd99cfe9a86a5cc20609e5ba435c24 days 8 hrs ago0xce20efb3786237d661082d4b2b9e1438dc6108ee  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.000792624
0x13e618760421d94b10f876bfd6f82fafae77b009d81a2c0e6c16e8180e59106624 days 9 hrs ago0x246c1243e51cab00064ebb199eaf463449f7928f  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.003669456
0x6bc825e004d921be2c5277c07db8d46bc6af92fd6a219b95e85f296632b986f924 days 9 hrs ago0x246c1243e51cab00064ebb199eaf463449f7928f  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.003882732
0x7311715ef58c676004f09e45e84cd4e3bfc280a8cf2d2c4596f70227554a3d7a30 days 10 hrs ago0x108ee2c83f82954842504f0622710baaa46bd14f  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.000178784
0x2a750ab4546f93ae548ec658b9725cae0810980586b50fd5caa102b758c66c5330 days 11 hrs ago0x108ee2c83f82954842504f0622710baaa46bd14f  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.000184928
0x2751eb604421fb3b477b5d8b972f53dbd7b5faa71dc69658702dff3f3732e2e550 days 4 hrs ago0x246c1243e51cab00064ebb199eaf463449f7928f  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.005822082
0x649f5bcecc9e152a0cd889d4e42246806dc7a0d3ebd8f58e9799a36d1cd7525552 days 15 hrs ago0x246c1243e51cab00064ebb199eaf463449f7928f  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.001324163425
0xf5eea18c8f334fdbca4941caab67af436ac7553f6b73309ead78824ec8d59fb454 days 6 hrs ago0xce20efb3786237d661082d4b2b9e1438dc6108ee  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.006470412
0xaa08c85d2de7ec6c324ff5502bcb806228d83fa91420149b3c41ef032ae264aa54 days 6 hrs ago0xce20efb3786237d661082d4b2b9e1438dc6108ee  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.00140599748
0x56122a733fdc4af0a73ed9b366f32c16cce8e3115bc1f280302c2549e490d06154 days 6 hrs ago0xce20efb3786237d661082d4b2b9e1438dc6108ee  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.00140719052
0xc75d565fcda7e2cebd223ea0f4cdfec79f7901b514d48ed60a6231b6536f049754 days 7 hrs ago0xce20efb3786237d661082d4b2b9e1438dc6108ee  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.00140599748
0x1a406366a4df9b80407a00efb83b3cf7c8580507b726be6340d0328bc4409ca154 days 12 hrs ago0x246c1243e51cab00064ebb199eaf463449f7928f  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.008962639133
0x3a60b22c6d50edbdf084d6afafb9ed784801532216a3ce438e36ec63996ff09d54 days 12 hrs ago0x246c1243e51cab00064ebb199eaf463449f7928f  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.0087368
0xccd236dcf5e80571a7fdc016c20ca25e690889604b6ff454c3bf76287810f47754 days 12 hrs ago0x246c1243e51cab00064ebb199eaf463449f7928f  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.0092446
0xe1682dfd29cde3b16ecbfda58ddd3c4dc653a40f0c9a902256c2ac82b3c118ae66 days 14 hrs ago0xc2d9f9c9dd6f76784a8f56f936953b6661a12da8  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.000833632147
0xc782d4337a23c8f8a38f78ee1bb7392fb5d1f4e024d4988dcb2cf7225b99c86368 days 12 hrs ago0x246c1243e51cab00064ebb199eaf463449f7928f  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.004467179652
0x95a6dc9896d8297f46a3eba4c64aceb55d9505151676c74d919030092a765d5485 days 17 hrs ago0xce20efb3786237d661082d4b2b9e1438dc6108ee  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.00075488
0xe0bfa15d98adb4a29d9b3fd4499f9be6149f5da70462d8274b12a2ccc5b3259f85 days 17 hrs ago0xce20efb3786237d661082d4b2b9e1438dc6108ee  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.00075488
0x247a82b620f932b95b9740c5bc34124c05849680eb10f04ff59f1a1d75be80c385 days 17 hrs ago0xce20efb3786237d661082d4b2b9e1438dc6108ee  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.00075488
0x2a1bd4e06074becb51c38e161f449e70c3efd8af6f874795ff60c8679bda060886 days 3 hrs ago0x246c1243e51cab00064ebb199eaf463449f7928f  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.00042882
0x61abdb4b4123cd39cb4bb8e4f9f05b8c898e4edc6db1b19e09ad32071e9225ea86 days 3 hrs ago0x246c1243e51cab00064ebb199eaf463449f7928f  IN   0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00 Ether0.00349472
[ 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
0x5afb5be38f55e327859346fded5e025d4f0eab0093370a79b7091b9c8c7de62d41563455 days 15 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x7f6da78982c4b0d7414d6fc47fce730fee8c9bff13.7 Ether
0x929f648b7d8f78585ac5de9058dbb770749cf87cc044dcae35cca33684512f54407720324 days 8 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x38ceccbe1c2d7d8d67f365b13d813700d045acdf22.07 Ether
0x747498d92fd86a50e8a7333e855d19a1f69ebd99cfe9a86a5cc20609e5ba435c407720124 days 8 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x7f2edb1195091625322ff3be9d802fcc84790eb222.07 Ether
0x649f5bcecc9e152a0cd889d4e42246806dc7a0d3ebd8f58e9799a36d1cd75255394235352 days 15 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x5884125bb2bbc3e8b02e94ebf1eacf97489ad3c32.36 Ether
0xaa08c85d2de7ec6c324ff5502bcb806228d83fa91420149b3c41ef032ae264aa393410454 days 6 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x38ceccbe1c2d7d8d67f365b13d813700d045acdf16.08 Ether
0x56122a733fdc4af0a73ed9b366f32c16cce8e3115bc1f280302c2549e490d061393410354 days 6 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x7f2edb1195091625322ff3be9d802fcc84790eb216.08 Ether
0xc75d565fcda7e2cebd223ea0f4cdfec79f7901b514d48ed60a6231b6536f0497393410154 days 7 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x270b22be16e84d1383c4f1a0b384089b492e88bc28.41 Ether
0xe1682dfd29cde3b16ecbfda58ddd3c4dc653a40f0c9a902256c2ac82b3c118ae387129566 days 14 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00xd39379d7887c6a9ebd01007e2b96efc77465204725,195.564 Ether
0x95a6dc9896d8297f46a3eba4c64aceb55d9505151676c74d919030092a765d54376965085 days 17 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x38ceccbe1c2d7d8d67f365b13d813700d045acdf22.9 Ether
0xe0bfa15d98adb4a29d9b3fd4499f9be6149f5da70462d8274b12a2ccc5b3259f376965085 days 17 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x7f2edb1195091625322ff3be9d802fcc84790eb222.9 Ether
0x247a82b620f932b95b9740c5bc34124c05849680eb10f04ff59f1a1d75be80c3376964785 days 17 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x270b22be16e84d1383c4f1a0b384089b492e88bc39.83 Ether
0xc40e06c4163c8d61352be21be678cfda268d9e345f54018724e2a32ebfac13a53616899113 days 5 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00xd39379d7887c6a9ebd01007e2b96efc7746520473,688.17 Ether
0xc8d45e39db4617016f56b2c23deb3bcfb4d7e37274a929bb1aec4190db7e91253616283113 days 8 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x7f2edb1195091625322ff3be9d802fcc84790eb2123.47 Ether
0x914d5079ed3e1df493fb1223c8febb0b67f930e990d10e74229dd439229dc0ea3616241113 days 8 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x38ceccbe1c2d7d8d67f365b13d813700d045acdf58.26 Ether
0x17828cf8865da781abdf250b1d520f54cd6bfb82c7dac48dbe9b01c32f93aa3b3616239113 days 8 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x270b22be16e84d1383c4f1a0b384089b492e88bc112.66 Ether
0x5b5f5d4e4bdbd11f10864f870fed3e5cb421c26027f9a8f47a930b8ac84aca843616176113 days 8 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x38ceccbe1c2d7d8d67f365b13d813700d045acdf0.1 Ether
0x1236a8e37ea2743805d160e9abc4a241de085224899f35249deb1623a664df7a3616173113 days 8 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x7f2edb1195091625322ff3be9d802fcc84790eb20.1 Ether
0x489050342582a4cd51e68e514664a156336587088e591781be83d3673e513dd53498803133 days 14 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00xd39379d7887c6a9ebd01007e2b96efc7746520474,635.85 Ether
0x32069578f638c9bd298c22221ea8feb552de1c34acc5f85e95f676d3fde5023b3434066144 days 12 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x270b22be16e84d1383c4f1a0b384089b492e88bc0.6661861614 Ether
0xf065337ced30c886526cfd856ef1b0c5f6b515c08c9ec4ed6181c33fa6449a833422993146 days 9 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x270b22be16e84d1383c4f1a0b384089b492e88bc156.27 Ether
0xce468a56399ec3ca87af71ffd979722f5110d98a8715fc7a42a5d158005c03553315233164 days 10 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00xd39379d7887c6a9ebd01007e2b96efc7746520471,970.86 Ether
0x58d57703cfbf3b1b1533d8602f65246a36a7183b2a8215620cc0f395cac5016d3304435166 days 5 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x270b22be16e84d1383c4f1a0b384089b492e88bc380.13 Ether
0xe828cb4cced00e73f38002d8f8d0b8542ee4ba2cc3ce3e675b0a27bab7a08b4a3061513206 days 11 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00x270b22be16e84d1383c4f1a0b384089b492e88bc714.29 Ether
0x82fd3be6fb434efdcd6b700a09aea0729bebf97b59dd25474db7c2c0024ecc4b3013345214 days 11 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00xd39379d7887c6a9ebd01007e2b96efc7746520474,912.61 Ether
0x10e2f684c81350dcd5f8f06d07a52c1d3e9063af27a8f837068db8f7b18e37c93013331214 days 11 hrs ago0x5e01f73fede1f844d3c6fbd1383aeb2307a7a2b00xd39379d7887c6a9ebd01007e2b96efc7746520471 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.