Sponsored Link:    Adshares - Decentralized marketplace for advertising. Active ICO with a price floor and buyback option.
Contract Overview
ETH Balance: 0.094786091887209992 Ether
ETH USD Value: $21.72 (@ $229.16/ETH)
No Of Transactions: 58 txns
  Latest 25 txns from a total Of 58 transactions View All

TxHash Block Age From To Value [TxFee]
0x2b7b7e00f04f4827a9899b1863492fdff60dfe23b27d47497e7d2e82b4cb111d3313516137 days 17 hrs ago0xbd38efb4cbc15ae686e82801df4564991958a25b  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00075032
0xbd7fb3d04d5c13218d75f1023fcadf825e482577cfcdeb9fdcf00711575cab363313261137 days 18 hrs ago0x00a20f3eeea7397ef2c9e8545243f02be4a4fc32  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00073984
0xb0eed8d4f17ffe2d88927e2335845019f4b9a8ba0491d7c2feb78a88b09972a33313038137 days 19 hrs ago0x0015a773ed31fbfff5720b35be30968f10c2905c  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.003384
0xe9382e7fe0b4033f9bc6e5c0c0d5694741da7db2b739c34fd9c1df152a8f2a3f3310220138 days 6 hrs ago0x0015a773ed31fbfff5720b35be30968f10c2905c  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00075032
0xf3d507c29c895ae4ee991f57a308ac5945da167358f67da4c920046ba82493f03309135138 days 10 hrs ago0xbd38efb4cbc15ae686e82801df4564991958a25b  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00073984
0xa18fc19b3e569496f457e879e05012157b4e73edf0f0c37e6011dd4d791e93f33309126138 days 10 hrs ago0x00a20f3eeea7397ef2c9e8545243f02be4a4fc32  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00348306
0x3f405f9332aaea451c795a5c9a3e6bd5f2e351d851ea9329eb16235da8ec649a3307114138 days 19 hrs ago0x0015a773ed31fbfff5720b35be30968f10c2905c  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.0013226
0x330254792b9c00934fb3754031e5011ed69635a84acf22667a5a50431922d1893303110139 days 11 hrs ago0x00a20f3eeea7397ef2c9e8545243f02be4a4fc32  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00075032
0x246a6d5c01b957b34c9e1ffdb199180a905c0708d3ca13be78de50d8ce2afdfc3303101139 days 11 hrs ago0xbd38efb4cbc15ae686e82801df4564991958a25b  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00073984
0x5a1828b96ab9f86094695896db649fa1ec69a2d5c1238316d12e069447e06dcd3303088139 days 11 hrs ago0x0015a773ed31fbfff5720b35be30968f10c2905c  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00398343
0x180283ed03e6735bf676423bcc834fdba236f0c1f84bd91750ff79d824b3751e3283924142 days 15 hrs ago0x00a20f3eeea7397ef2c9e8545243f02be4a4fc32  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00180074
0x35ec71b0a17a7ecb8eb0397ab9aefdbf9611e0bb87d1ebbf561aff777c51d5d83283924142 days 15 hrs ago0x00a20f3eeea7397ef2c9e8545243f02be4a4fc32  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00075032
0x69be0afd17a9cb4ff11b3f003bc9b16af7ec22f8f7eb1801502920d21011a16d3283894142 days 16 hrs ago0xbd38efb4cbc15ae686e82801df4564991958a25b  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00073984
0xadeeade2ca470256795977b94d86092e352f267968b69bea3461206f2c6029d33283868142 days 16 hrs ago0x0015a773ed31fbfff5720b35be30968f10c2905c  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.003684
0x522b6aee57e81dfe59f12e1c48e1ae336fc4df717c6ee8b6462f62a603d5f1773267478145 days 9 hrs ago0x00a20f3eeea7397ef2c9e8545243f02be4a4fc32  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00081803
0x5ab93982bb5596a80ad9b4095bba443c6fa9888f376de024f067f4c8e46a01713267431145 days 9 hrs ago0x00a20f3eeea7397ef2c9e8545243f02be4a4fc32  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00180074
0x4122d97a33b7e26a9ea8ec383761e37ccbf4e3745b755c55aabe7123b018579c3267431145 days 9 hrs ago0x00a20f3eeea7397ef2c9e8545243f02be4a4fc32  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00096792
0xdb627697befa40f3a4a3ba5205c56ded6346479d7b55e34acaed4ba8810e3adb3267429145 days 9 hrs ago0xbd38efb4cbc15ae686e82801df4564991958a25b  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00080661
0x6923046ef8ca9be4c2d3fbc420148f773dbf0830d76f457c0c14a650ca7a23153267415145 days 9 hrs ago0x0015a773ed31fbfff5720b35be30968f10c2905c  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00379741
0x6bab94cb62f3ce18da1d8ef32708d5a9d88db62ecd892d0d023752e8c97f148e3267384145 days 9 hrs ago0x0015a773ed31fbfff5720b35be30968f10c2905c  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00073995
0x7723240dba5f9a7c48b426c141b7a87c8e8601b467456b3bc4ca62c39251c25b3267154145 days 10 hrs ago0x00a20f3eeea7397ef2c9e8545243f02be4a4fc32  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00180074
0xf95332d16cfcb03e3617c965fbc8eebe6af610ed1836c192fbf14da9f2e831d03267154145 days 10 hrs ago0x00a20f3eeea7397ef2c9e8545243f02be4a4fc32  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00075032
0xa959bab0128bc67e1466c2da0375f66bc1968a1622d8c00b1811fbaca6c1e4133265883145 days 15 hrs ago0xbd38efb4cbc15ae686e82801df4564991958a25b  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00073984
0x8ddcd9fa12a4a88716ca7ca8415cc4cd092a8eab690b0ff0b33bc8f0a6f3be563265815145 days 15 hrs ago0x0015a773ed31fbfff5720b35be30968f10c2905c  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.00338272
0x5b5f36890a66f70d8b99654d2709008cdd56dd87558b6c9d0be620779a9d2cf63261331146 days 9 hrs ago0x0015a773ed31fbfff5720b35be30968f10c2905c  IN   0x8c153c3be641e7e65a0eb97de6910450553ccae30 Ether0.0006787
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 17 Internal Transactions

ParentTxHash Block Age From To Value
0x2b7b7e00f04f4827a9899b1863492fdff60dfe23b27d47497e7d2e82b4cb111d3313516137 days 17 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x1e549606b695423368e851ff13edef7ea4790fe918,539.9 Ether
0xe9382e7fe0b4033f9bc6e5c0c0d5694741da7db2b739c34fd9c1df152a8f2a3f3310220138 days 6 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x1e549606b695423368e851ff13edef7ea4790fe920,000 Ether
0x3f405f9332aaea451c795a5c9a3e6bd5f2e351d851ea9329eb16235da8ec649a3307114138 days 19 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x7cb57b5a97eabe94205c07890be4c1ad31e486a850 Ether
0x330254792b9c00934fb3754031e5011ed69635a84acf22667a5a50431922d1893303110139 days 11 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x1e549606b695423368e851ff13edef7ea4790fe920,000 Ether
0x35ec71b0a17a7ecb8eb0397ab9aefdbf9611e0bb87d1ebbf561aff777c51d5d83283924142 days 15 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x1e549606b695423368e851ff13edef7ea4790fe930,000 Ether
0x522b6aee57e81dfe59f12e1c48e1ae336fc4df717c6ee8b6462f62a603d5f1773267478145 days 9 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x1e549606b695423368e851ff13edef7ea4790fe920,000 Ether
0xf95332d16cfcb03e3617c965fbc8eebe6af610ed1836c192fbf14da9f2e831d03267154145 days 10 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x1e549606b695423368e851ff13edef7ea4790fe99,999 Ether
0xa92f782b6d250b7c4c789297cd5e6a268825f9cbfe13c7af9758bac6504aca1a3261065146 days 10 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x1e549606b695423368e851ff13edef7ea4790fe91 Ether
0x8310d35fa85f703cda5e1e3e823b0a60904eb3214a84700307eeef31b764690b3242748149 days 11 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x1eeffde077a5375385e8e72321235ab1ddfecb7715,910 Ether
0x387a2e3997acd57d07c902d122b08a58ac674ed98ea9f8bcba2a7362f89795dc3242727149 days 11 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x1eeffde077a5375385e8e72321235ab1ddfecb771 Ether
0x1b907d8e6fcd2f54041587b51939575b824c17ae6bac45b4b1750c19b4e71c863225329152 days 9 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x1e549606b695423368e851ff13edef7ea4790fe920,000 Ether
0xf8f657bcad66e1a6e0e39256b73c79786270b669aa46766ce36fcef4774bcb763213063154 days 10 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x1e549606b695423368e851ff13edef7ea4790fe920,000 Ether
0x1ca6c4b3a8e41ef2cc23bf44ddb4cf6715d25447ed435da686629092b8855d6c3213011154 days 10 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30xbce173c414fe96f0f282e1db904fd4d45eee9e058,000 Ether
0x741039e0140d0cb9c5249c8751a02d52356a4e3a5d1182b053da306b38f11c0b3213006154 days 10 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x1e549606b695423368e851ff13edef7ea4790fe920,000 Ether
0xaba73c72fce9972318cc68e932ef9ae9ff7af5bf858c899c5127d49df3512c1d3213006154 days 10 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x0021b3a0c39a287568c2623245380bfd68158a964,500 Ether
0x3365ed45377f379c8c49d3fe59c8434618bdef0aab62c2be8c3a86390f6fceef3185941158 days 21 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x00ec6379d7186193983e90ba58d3cf169f7e4af340 Ether
0x739111fcdd7cb22635d41754b2e30b4dc1d515316093be4791084c2bb09335873185708158 days 22 hrs ago0x8c153c3be641e7e65a0eb97de6910450553ccae30x00ec6379d7186193983e90ba58d3cf169f7e4af315 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to SkipEmptyStringLiteral (low-severity), ConstantOptimizerSubtraction (low-severity), IdentityPrecompileReturnIgnored (low-severity) Solidity compiler bugs.

Contract Source Code Verified
Note: Displaying matching verified source code at contract 0x34912f042fb126fb9ea2a72ed1116a8d33d12487
Contract Name: Wallet
Compiler Version: v0.4.6+commit.2dabbdf0
Optimization Enabled: Yes
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.
pragma solidity ^0.4.6;

contract multiowned {

    // TYPES

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

    // EVENTS

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

    // MODIFIERS

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

    // METHODS

    // constructor is given number of sigs required to do protected "onlymanyowners" transactions
    // as well as the selection of addresses capable of confirming them.
    function multiowned(address[] _owners, uint _required) {
        m_numOwners = _owners.length + 1;
        m_owners[1] = uint(msg.sender);
        m_ownerIndex[uint(msg.sender)] = 1;
        for (uint i = 0; i < _owners.length; ++i)
        {
            m_owners[2 + i] = uint(_owners[i]);
            m_ownerIndex[uint(_owners[i])] = 2 + i;
        }
        m_required = _required;
    }

    // Revokes a prior confirmation of the given operation
    function revoke(bytes32 _operation) external {
        uint ownerIndex = m_ownerIndex[uint(msg.sender)];
        // make sure they're an owner
        if (ownerIndex == 0) return;
        uint ownerIndexBit = 2**ownerIndex;
        var pending = m_pending[_operation];
        if (pending.ownersDone & ownerIndexBit > 0) {
            pending.yetNeeded++;
            pending.ownersDone -= ownerIndexBit;
            Revoke(msg.sender, _operation);
        }
    }

    // Replaces an owner `_from` with another `_to`.
    function changeOwner(address _from, address _to) onlymanyowners(sha3(msg.data)) external {
        if (isOwner(_to)) return;
        uint ownerIndex = m_ownerIndex[uint(_from)];
        if (ownerIndex == 0) return;

        clearPending();
        m_owners[ownerIndex] = uint(_to);
        m_ownerIndex[uint(_from)] = 0;
        m_ownerIndex[uint(_to)] = ownerIndex;
        OwnerChanged(_from, _to);
    }

    function addOwner(address _owner) onlymanyowners(sha3(msg.data)) external {
        if (isOwner(_owner)) return;

        clearPending();
        if (m_numOwners >= c_maxOwners)
            reorganizeOwners();
        if (m_numOwners >= c_maxOwners)
            return;
        m_numOwners++;
        m_owners[m_numOwners] = uint(_owner);
        m_ownerIndex[uint(_owner)] = m_numOwners;
        OwnerAdded(_owner);
    }

    function removeOwner(address _owner) onlymanyowners(sha3(msg.data)) external {
        uint ownerIndex = m_ownerIndex[uint(_owner)];
        if (ownerIndex == 0) return;
        if (m_required > m_numOwners - 1) return;

        m_owners[ownerIndex] = 0;
        m_ownerIndex[uint(_owner)] = 0;
        clearPending();
        reorganizeOwners(); //make sure m_numOwner is equal to the number of owners and always points to the optimal free slot
        OwnerRemoved(_owner);
    }

    function changeRequirement(uint _newRequired) onlymanyowners(sha3(msg.data)) external {
        if (_newRequired > m_numOwners) return;
        m_required = _newRequired;
        clearPending();
        RequirementChanged(_newRequired);
    }

    // Gets an owner by 0-indexed position (using numOwners as the count)
    function getOwner(uint ownerIndex) external constant returns (address) {
        return address(m_owners[ownerIndex + 1]);
    }

    function isOwner(address _addr) returns (bool) {
        return m_ownerIndex[uint(_addr)] > 0;
    }

    function hasConfirmed(bytes32 _operation, address _owner) constant returns (bool) {
        var pending = m_pending[_operation];
        uint ownerIndex = m_ownerIndex[uint(_owner)];

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

        // determine the bit to set for this owner.
        uint ownerIndexBit = 2**ownerIndex;
        return !(pending.ownersDone & ownerIndexBit == 0);
    }

    // INTERNAL METHODS

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

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

    function reorganizeOwners() private {
        uint free = 1;
        while (free < m_numOwners)
        {
            while (free < m_numOwners && m_owners[free] != 0) free++;
            while (m_numOwners > 1 && m_owners[m_numOwners] == 0) m_numOwners--;
            if (free < m_numOwners && m_owners[m_numOwners] != 0 && m_owners[free] == 0)
            {
                m_owners[free] = m_owners[m_numOwners];
                m_ownerIndex[m_owners[free]] = free;
                m_owners[m_numOwners] = 0;
            }
        }
    }

    function clearPending() internal {
        uint length = m_pendingIndex.length;
        for (uint i = 0; i < length; ++i)
            if (m_pendingIndex[i] != 0)
                delete m_pending[m_pendingIndex[i]];
        delete m_pendingIndex;
    }

    // FIELDS

    // the number of owners that must confirm the same operation before it is run.
    uint public m_required;
    // pointer used to find a free slot in m_owners
    uint public m_numOwners;

    // list of owners
    uint[256] m_owners;
    uint constant c_maxOwners = 250;
    // index on the list of owners to allow reverse lookup
    mapping(uint => uint) m_ownerIndex;
    // the ongoing operations.
    mapping(bytes32 => PendingState) m_pending;
    bytes32[] m_pendingIndex;
}

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

    // MODIFIERS

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

    // METHODS

    // constructor - stores initial daily limit and records the present day's index.
    function daylimit(uint _limit) {
        m_dailyLimit = _limit;
        m_lastDay = today();
    }
    // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.
    function setDailyLimit(uint _newLimit) onlymanyowners(sha3(msg.data)) external {
        m_dailyLimit = _newLimit;
    }
    // resets the amount already spent today. needs many of the owners to confirm.
    function resetSpentToday() onlymanyowners(sha3(msg.data)) external {
        m_spentToday = 0;
    }

    // INTERNAL METHODS

    // checks to see if there is at least `_value` left from the daily limit today. if there is, subtracts it and
    // returns true. otherwise just returns false.
    function underLimit(uint _value) internal onlyowner returns (bool) {
        // reset the spend limit if we're on a different day to last time.
        if (today() > m_lastDay) {
            m_spentToday = 0;
            m_lastDay = today();
        }
        // check to see if there's enough left - if so, subtract and return true.
        // overflow protection                    // dailyLimit check
        if (m_spentToday + _value >= m_spentToday && m_spentToday + _value <= m_dailyLimit) {
            m_spentToday += _value;
            return true;
        }
        return false;
    }
    // determines today's index.
    function today() private constant returns (uint) { return now / 1 days; }

    // FIELDS

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

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

    // EVENTS

    // logged events:
    // Funds has arrived into the wallet (record how much).
    event Deposit(address _from, uint value);
    // Single transaction going out of the wallet (record who signed for it, how much, and to whom it's going).
    event SingleTransact(address owner, uint value, address to, bytes data);
    // Multi-sig transaction going out of the wallet (record who signed for it last, the operation hash, how much, and to whom it's going).
    event MultiTransact(address owner, bytes32 operation, uint value, address to, bytes data);
    // Confirmation still needed for a transaction.
    event ConfirmationNeeded(bytes32 operation, address initiator, uint value, address to, bytes data);

    // FUNCTIONS

    // 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).execute(to, value, data);
// Wallet(w).from(anotherOwner).confirm(h);
contract Wallet is multisig, multiowned, daylimit {

    // TYPES

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

    // METHODS

    // constructor - just pass on the owner array to the multiowned and
    // the limit to daylimit
    function Wallet(address[] _owners, uint _required, uint _daylimit)
            multiowned(_owners, _required) daylimit(_daylimit) {
    }

    // kills the contract sending everything to `_to`.
    function kill(address _to) onlymanyowners(sha3(msg.data)) external {
        suicide(_to);
    }

    // gets called when no other function matches
    function() payable {
        // just being sent some cash?
        if (msg.value > 0)
            Deposit(msg.sender, msg.value);
    }

    // Outside-visible transact entry point. Executes transaction immediately if below daily spend limit.
    // If not, goes into multisig process. We provide a hash on return to allow the sender to provide
    // shortcuts for the other confirmations (allowing them to avoid replicating the _to, _value
    // and _data arguments). They still get the option of using them if they want, anyways.
    function execute(address _to, uint _value, bytes _data) external onlyowner returns (bytes32 _r) {
        // first, take the opportunity to check that we're under the daily limit.
        if (underLimit(_value)) {
            SingleTransact(msg.sender, _value, _to, _data);
            // yes - just execute the call.
            _to.call.value(_value)(_data);
            return 0;
        }
        // determine our operation hash.
        _r = sha3(msg.data, block.number);
        if (!confirm(_r) && m_txs[_r].to == 0) {
            m_txs[_r].to = _to;
            m_txs[_r].value = _value;
            m_txs[_r].data = _data;
            ConfirmationNeeded(_r, msg.sender, _value, _to, _data);
        }
    }

    // confirm a transaction through just the hash. we use the previous transactions map, m_txs, in order
    // to determine the body of the transaction from the hash provided.
    function confirm(bytes32 _h) onlymanyowners(_h) returns (bool) {
        if (m_txs[_h].to != 0) {
            m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data);
            MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data);
            delete m_txs[_h];
            return true;
        }
    }

    // INTERNAL METHODS

    function clearPending() internal {
        uint length = m_pendingIndex.length;
        for (uint i = 0; i < length; ++i)
            delete m_txs[m_pendingIndex[i]];
        super.clearPending();
    }

    // FIELDS

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

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

  Contract Creation Code Switch To Opcodes View
606060405234610000576040516113bb3803806113bb83398101604090815281516020830151918301519201915b805b83835b815160019081019055600033600160a060020a03166003825b505550600160a060020a033316600090815261010260205260408120600190555b82518110156100ee57828181518110156100005790602001906020020151600160a060020a0316600282600201610100811015610000570160005b5081905550806002016101026000858481518110156100005790602001906020020151600160a060020a03168152602001908152602001600020819055505b60010161006c565b60008290555b50505061010581905561011264010000000061127861012182021704565b610107555b505b50505061012b565b6201518042045b90565b611282806101396000396000f3606060405236156100da5760e060020a6000350463173825d981146101305780632f54bf6e146101425780634123cb6b1461016657806352375093146101855780635c52c2f5146101a4578063659010e7146101b35780637065cb48146101d2578063746c9171146101e4578063797af62714610203578063b20d30a914610227578063b61d27f614610239578063b75c7dc61461026b578063ba51a6df1461027d578063c2cf73261461028f578063c41a360a146102b6578063cbf0b0c0146102e2578063f00d4b5d146102f4578063f1736d8614610309575b61012e5b600034111561012b5760408051600160a060020a033316815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15b5b565b005b346100005761012e600435610328565b005b3461000057610152600435610415565b604080519115158252519081900360200190f35b3461000057610173610436565b60408051918252519081900360200190f35b346100005761017361043c565b60408051918252519081900360200190f35b346100005761012e610443565b005b346100005761017361047b565b60408051918252519081900360200190f35b346100005761012e600435610482565b005b3461000057610173610571565b60408051918252519081900360200190f35b3461000057610152600435610577565b604080519115158252519081900360200190f35b346100005761012e6004356107e3565b005b34610000576101736004803590602480359160443591820191013561081c565b60408051918252519081900360200190f35b346100005761012e600435610ab3565b005b346100005761012e600435610b5e565b005b3461000057610152600435602435610be0565b604080519115158252519081900360200190f35b34610000576102c6600435610c35565b60408051600160a060020a039092168252519081900360200190f35b346100005761012e600435610c55565b005b346100005761012e600435602435610c93565b005b3461000057610173610d8c565b60408051918252519081900360200190f35b600060003660405180838380828437820191505092505050604051809103902061035181610d93565b1561040e57600160a060020a03831660009081526101026020526040902054915081151561037e5761040e565b60016001540360005411156103925761040e565b6000600283610100811015610000570160005b5055600160a060020a038316600090815261010260205260408120556103c9610f32565b6103d1611002565b60408051600160a060020a038516815290517f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da9181900360200190a15b5b5b505050565b600160a060020a03811660009081526101026020526040812054115b919050565b60015481565b6101075481565b60003660405180838380828437820191505092505050604051809103902061046a81610d93565b15610476576000610106555b5b5b50565b6101065481565b6000366040518083838082843782019150509250505060405180910390206104a981610d93565b1561056b576104b782610415565b156104c15761056b565b6104c9610f32565b60015460fa90106104dc576104dc611002565b5b60015460fa90106104ed5761056b565b60018054810190819055600160a060020a03831690600290610100811015610000570160005b5055600154600160a060020a03831660008181526101026020908152604091829020939093558051918252517f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c3929181900390910190a15b5b5b5050565b60005481565b60008161058381610d93565b156107da5760008381526101086020526040902054600160a060020a0316156107da5760008381526101086020526040908190208054600180830154935160029384018054600160a060020a0390941695949093919283928592918116156101000260001901160480156106385780601f1061060d57610100808354040283529160200191610638565b820191906000526020600020905b81548152906001019060200180831161061b57829003601f168201915b505091505060006040518083038185876185025a03f15050506000848152610108602090815260409182902060018082015482548551600160a060020a033381811683529682018c905296810183905295166060860181905260a06080870181815260029586018054958616156101000260001901909516959095049087018190527fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a975094958a95929491939290919060c08301908490801561073d5780601f106107125761010080835404028352916020019161073d565b820191906000526020600020905b81548152906001019060200180831161072057829003601f168201915b5050965050505050505060405180910390a16000838152610108602052604081208054600160a060020a0319168155600180820183905560028083018054858255939493909281161561010002600019011604601f81901061079f57506107d1565b601f0160209004906000526020600020908101906107d191905b808211156107cd57600081556001016107b9565b5090565b5b505050600191505b5b5b5b50919050565b60003660405180838380828437820191505092505050604051809103902061080a81610d93565b1561056b576101058290555b5b5b5050565b600061082733610415565b15610aa85761083584611131565b156108f3577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd00433858786866040518086600160a060020a0316815260200185815260200184600160a060020a0316815260200180602001828103825284848281815260200192508082843760405192018290039850909650505050505050a184600160a060020a03168484846040518083838082843782019150509250505060006040518083038185876185025a03f15060009350610aa892505050565b6000364360405180848480828437820191505082815260200193505050506040518091039020905061092481610577565b158015610947575060008181526101086020526040902054600160a060020a0316155b15610aa857600081815261010860209081526040822080546c01000000000000000000000000808a0204600160a060020a0319909116178155600180820188905560029182018054818652948490209094601f928116156101000260001901169290920481019290920481019185919087908390106109d15782800160ff198235161785556109fe565b828001600101855582156109fe579182015b828111156109fe5782358255916020019190600101906109e3565b5b50610a1f9291505b808211156107cd57600081556001016107b9565b5090565b50507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32813386888787604051808760001916815260200186600160a060020a0316815260200185815260200184600160a060020a031681526020018060200182810382528484828181526020019250808284376040519201829003995090975050505050505050a15b5b5b5b949350505050565b600160a060020a033316600090815261010260205260408120549080821515610adb57610b57565b50506000828152610103602052604081206001810154600284900a929083161115610b575780546001908101825581018054839003905560408051600160a060020a03331681526020810186905281517fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b929181900390910190a15b5b50505050565b600036604051808383808284378201915050925050506040518091039020610b8581610d93565b1561056b57600154821115610b995761056b565b6000829055610ba6610f32565b6040805183815290517facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da9181900360200190a15b5b5b5050565b600082815261010360209081526040808320600160a060020a038516845261010290925282205482811515610c185760009350610c2c565b8160020a9050808360010154166000141593505b50505092915050565b6000600282600101610100811015610000570160005b505490505b919050565b600036604051808383808284378201915050925050506040518091039020610c7c81610d93565b1561056b5781600160a060020a0316ff5b5b5b5050565b6000600036604051808383808284378201915050925050506040518091039020610cbc81610d93565b15610b5757610cca83610415565b15610cd457610b57565b600160a060020a038416600090815261010260205260409020549150811515610cfc57610b57565b610d04610f32565b82600160a060020a0316600283610100811015610000570160005b5055600160a060020a0380851660008181526101026020908152604080832083905593871680835291849020869055835192835282015281517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c929181900390910190a15b5b5b50505050565b6101055481565b600160a060020a033316600090815261010260205260408120548180821515610dbb57610f28565b60008581526101036020526040902080549092501515610e4f576000805483556001808401919091556101048054918201808255828015829011610e2457600083815260209020610e249181019083015b808211156107cd57600081556001016107b9565b5090565b5b50505060028301819055610104805487929081101561000057906000526020600020900160005b50555b8260020a90508082600101541660001415610f285760408051600160a060020a03331681526020810187905281517fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda929181900390910190a1815460019011610f155760008581526101036020526040902060020154610104805490919081101561000057906000526020600020900160005b506000908190558581526101036020526040812081815560018082018390556002909101919091559350610f2856610f28565b8154600019018255600182018054821790555b5b5b505050919050565b6101045460005b81811015610ff557610108600061010483815481101561000057906000526020600020900160005b50548152602081019190915260400160009081208054600160a060020a0319168155600180820183905560028083018054858255939493909281161561010002600019011604601f819010610fb65750610fe8565b601f016020900490600052602060002090810190610fe891905b808211156107cd57600081556001016107b9565b5090565b5b5050505b600101610f39565b61056b6111a4565b5b5050565b60015b600154811015610476575b600154811080156110325750600281610100811015610000570160005b505415155b1561103f57600101611010565b5b600160015411801561106457506002600154610100811015610000570160005b5054155b156110785760018054600019019055611040565b6001548110801561109c57506002600154610100811015610000570160005b505415155b80156110b85750600281610100811015610000570160005b5054155b15611128576002600154610100811015610000570160005b5054600282610100811015610000570160005b5055806101026000600283610100811015610000570160005b505481526020019081526020016000208190555060006002600154610100811015610000570160005b50555b611005565b5b50565b600061113c33610415565b15610431576101075461114d611278565b111561116657600061010655611161611278565b610107555b610106548281011080159061118357506101055482610106540111155b1561119957506101068054820190556001610431565b5060005b5b5b919050565b6101045460005b818110156112215761010481815481101561000057906000526020600020900160005b50541561121857610103600061010483815481101561000057906000526020600020900160005b505481526020810191909152604001600090812081815560018101829055600201555b5b6001016111ab565b610104805460008083559190915261040e907f4c0be60200faa20559308cb7b5a1bb3255c16cb1cab91f525b5ae7a03d02fabe908101905b808211156107cd57600081556001016107b9565b5090565b5b505b5050565b6201518042045b9056000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000008ac7230489e800000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f87e2d334428d69767dc05bb54f54988aedbee77
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.