Sponsored Link: Join FundYourselfNow ICO – Crypto crowdfunding platform to find talent, raise funding while protecting project fraud
Contract Overview
ETH Balance: 6.725187563274494491 Ether
ETH USD Value: $1,591.99 (@ $236.72/ETH)
No Of Transactions: 670 txns
  Latest 25 txns from a total Of 670 transactions View All

TxHash Block Age From To Value [TxFee]
0xc80522d43e9feb2b08eca6a50578b632dadd3206e41f3bd2ffd093107b8f15c039324146 hrs 21 mins agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.11721822 Ether0.00044972
0x3d88748bcb8de9c5989336db85ada8f43e777b9dbde24e701c477f6b7c60bee9393162810 hrs 18 mins agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.13131587 Ether0.00044972
0xfeecbd23bf525c3cf4e0d5e6ab401718461232f4408c4921b056caf04bf8e094393072114 hrs 34 mins agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.12287783 Ether0.00044972
0xc4dd6256cbceb3b33687ed3f6caf7036b8ab4cc17eac1e06e478056c51c52539392951420 hrs 16 mins agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.11680117 Ether0.00044972
0x151785c9db6af5a26127db898bb819de2a69aa7e196838cc14a7df5a6581054739285751 day 54 mins agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.12170212 Ether0.00044972
0x42dff2f27aad3e1756bf797d0f6ab188033c3f105b64dc14cfdd6beae5b29bb739277421 day 5 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.11212511 Ether0.00044972
0x3fcf1f7eceae4469e8755cf9ddd1295556442eaadc74fade880e0f5d348862f639276581 day 5 hrs ago0x000b9aff896edf3e9a7652a09470157541a8c3d7  IN   0x89145f218a049963af6575ce8dfbe503fec730370 Ether0.00125364
0xe4eeab7991e028ffe03b3240aec06a7ed6c61fbe8a341f7ad266a9f23453204039269511 day 9 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.10910161 Ether0.00044972
0xf132ede6c5218ced2fef7d9c6f5fada9183a2b138f483c7e9bc1c73918fb051439260781 day 13 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.29290506 Ether0.00044972
0x1d949b3e37c84503f19391d6e399c3d991706009513944742cc2f018431b3c9139238691 day 23 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.11324922 Ether0.00044972
0xa9f2d221870f28c3d3c14e934b441de2e34c9ea551f762ff71d01185857f939339232602 days 2 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.31000967 Ether0.00044972
0xcf476ff6cd3c2de0ca37e2f724640e1601c3d3ca57898eeff951b19f3c4aefa139223912 days 7 hrs ago0x000b9aff896edf3e9a7652a09470157541a8c3d7  IN   0x89145f218a049963af6575ce8dfbe503fec730370 Ether0.00262026
0x3b267f10d7dd7058648f3a7f18f501cf061c109f6772ee24488041262610492739202852 days 17 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.11515923 Ether0.00044972
0x7074e0070536da306319fe5c766db89b92f59792e5711a626c21a8a9ca54649239194642 days 21 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.10908197 Ether0.00044972
0xb6a3c89181bca1f322e27de877c11c93a22f305eab9651c0daeb6c1da4d95ed539186663 days 1 hr agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.10498385 Ether0.00044972
0xd5fef4ff99684551913438be9ab0459dc0233a353b76029dfe5769871a1d42bc39178073 days 5 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.13084792 Ether0.00044972
0x6fce8348a799ed7de884156d5681369a7837257f9d30d676dbc30057c3f62e3f39169693 days 9 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.12454139 Ether0.00044972
0x4497adca54c62a911385de971888040aea2363893af394a45be8ffad6d6b356839161333 days 13 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.11268056 Ether0.00044972
0xc2b5434af0a227007bb499c0afb3359b9f6e559be54060ed68bfb5c100afa79139153593 days 17 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.11219086 Ether0.00044972
0x15a8a638a48f3fcd2f416c7747f455d9b98bb9c4c2694f85c085158d6913699f39145553 days 21 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.11358361 Ether0.00044972
0x3c343e706b5b73350bc6fccd40412d1f60a7610b242d4417bd14b802f579ced639143023 days 22 hrs ago0x000b9aff896edf3e9a7652a09470157541a8c3d7  IN   0x89145f218a049963af6575ce8dfbe503fec730370 Ether0.00155296
0x39b9de1080067b3a3730a65b41d9efd1ae7760640567342ce590bf3226e4dcb139138654 days 28 mins agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.3805051 Ether0.00044972
0x8448e3643d0c703c66662c34b543c988091a5d8d7a1c41f97b3fffbbae7c8c7e39125994 days 6 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.18582794 Ether0.00044972
0x73a4540a757f04bda61be5a537278e679743625c486574de6de426739b4b909339111804 days 13 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.14334126 Ether0.00044972
0x1907fdbffab7dbffa1f078e8bc8eec3dd520685f7417bfd8cf93b7ccea65b8ff39111294 days 13 hrs agoDwarfPool1  IN   0x89145f218a049963af6575ce8dfbe503fec730370.12114889 Ether0.00044972

[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
0x3fcf1f7eceae4469e8755cf9ddd1295556442eaadc74fade880e0f5d348862f639276581 day 5 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d10.832 Ether
0xcf476ff6cd3c2de0ca37e2f724640e1601c3d3ca57898eeff951b19f3c4aefa139223912 days 7 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d11.73 Ether
0x3c343e706b5b73350bc6fccd40412d1f60a7610b242d4417bd14b802f579ced639143023 days 22 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d11 Ether
0xb26848109989f077198802a928a3f9be76a5baabcec0c8df6fc1ec6e9301720b39080815 days 5 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x55d34b686aa8c04921397c5807db9ecedba00a4c0.5 Ether
0xcf28e329395d67d8d80aeb7838337767d3c24050d617720dd99906bbb7f93c0239052085 days 18 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2193171125d89940c207fde06ce21c7c3aff75a42 Ether
0xd4944aba6ce6067f8cb173450e549df59e374324f988a64c1f46fcc1b86e228f38905608 days 14 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d11 Ether
0x65dc3eb8729eb8a6af767e15fac804697e38403f61fa308321b1f5b650ef61fe38886008 days 23 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x000b9aff896edf3e9a7652a09470157541a8c3d71 Ether
0x93baa2ed5f5db46b05cdaa666b4b0613be4e9211def133b0ff74073c74c802c038871409 days 6 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d11 Ether
0x30713b43f180de8a082941bba49753977b5d3b867eb15843bea88029542935a0386328913 days 17 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d11 Ether
0xf89e2ae4f65bd065f725e1fbf7cd54ee603ee4fe6185a6a3dd0392a40b36dd89384988816 days 6 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d10.8 Ether
0xd86b0b6375bc514908c3df804ab533aa3c2597c8b590d9f76cbdff71339695be384528617 days 3 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x478a42dfd8a311b15fd9097365a41de0cd8116630.8 Ether
0x2e36aa2f7d8fe4f32f41dd09f1f98a5cce8d9110fa7463b07aa25dd57d9d71ee382970620 days 3 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d10.9 Ether
0xaf10dc6e06b40b88a00584c876ef489c1fb1182b1266eb5573dd117cee052b2c382596120 days 20 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d11 Ether
0xb4b22666e1819e41be8762f2c8de21f0e309de1c6407e2ccbb0d5c0043dda227382592720 days 20 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d10.7 Ether
0xeb0266e1fb02b7985422054330f3881213fa6180f15c42e58044eb27708b766c382373121 days 6 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d11 Ether
0xa238ab4b5c8b27e952653557fc5f089a11ceabe66a39b47e6d5c9d79df2ac5d2382197321 days 14 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d10.8 Ether
0x49269a59de4c87fa3a0919b30b136feda06e7e9fb52a3b6d34cb1cf4198f7cb2381823222 days 8 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x2ddbae31dd3017bbdd67ce1053569fa9181610d11.7 Ether
0xea6bf0a76da2b673a0f013a1de6f7fe4ef36a22af4873288eb7e1630eecea989381579522 days 19 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed1 Ether
0xc4d331125ca08c03b14e158b8147d2f3a8d5b5ccdc769ba24362358d52f9d7e9381501622 days 23 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed1 Ether
0x86bfff5c3ab01f8e7bcc3ef0073fb7ada6db40faa040c7ccdeb3af8a6a480937381057623 days 19 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed1 Ether
0xe58c5d99cd7a78682695106af3851c85981a98031b3c41e316c96d9aef871082380300725 days 6 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed1 Ether
0x2a20e42c2248fcbfb6e85422b628f5dfe2003ddc47018fca437301b8ca9004d4379983025 days 21 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed1 Ether
0x1fd7874893c2a0353a254cbb1dde70029c55b3a5942587050ebe21b1a5f547ff379371327 days 8 mins ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed1.65 Ether
0xf2b0d4da7658b39fc72ec3a0c3ffe79bba1bda1b92b8e6dd5cb442cb2bd659a0378330128 days 21 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed1 Ether
0x1f444cd10e3d7048030e85914736a86f38b43b9dd96b3c74f78dff1fb91d5327377237730 days 21 hrs ago0x89145f218a049963af6575ce8dfbe503fec730370x025dfd00555007a4664071ba077b2f691d0ddaed2 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
Online Solidity Editor:  -NA-



  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.