Sponsored:   [Largest VC Funded] TEMCO, millions sold out in seconds. Join TEMCO's last presale at CoinBene!
Contract Overview
Balance: 1,000,000.01246312536412941 Ether
Ether Value: $91,170,001.14 (@ $91.17/ETH)
Transactions: 410 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x2903cadbe271e057edef157340b52a5898d7424fat txn 0x50690212781712b70e7ac412b9e3595d847a644e852a9929b6624c749d8ea7fc
Token Balance:
 Latest 25 transactions from a total of 410 transactions

TxHash Age From To Value [TxFee]
0x88f87e27d8c63e66671e96a7a39bb2ed1dbe9b8e7d58600a92736315ec5d3dc27 days 6 hrs ago0x68b8afad1317fa02a02d79e4eb5d8c3cfb8d44e7  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0.001 Ether0.0000538152
0x20697b15ec41b4769e6983f41fb3234e55a2c61690d6838f7f2098e77bb499c017 days 1 hr ago0xfcb8a43012d38640a4ba1cd8c5d0069c9a3599fb  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000590448
0x1a1f9818baac23a66323cd7eb258b836ceb30b5440271e6b1311f5f22044fa7217 days 1 hr ago0xfcb8a43012d38640a4ba1cd8c5d0069c9a3599fb  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000604416
0x3275c428645eb52a7bd0ec9b0a4dd0a606b0885b395260d16665fe695b5aa33825 days 7 hrs ago0xc4ce7b61c02b75a84547884f7039c082c5c7edba  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000165977
0x86b575163780c790411ef7fc6302ac393158e0652518f655f8c1677675038ae725 days 7 hrs ago0xc4ce7b61c02b75a84547884f7039c082c5c7edba  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000170324
0xd88681286af53a5a537c0d4626903504257ead547ecfabfc4597b9daecfd293b35 days 9 hrs ago0x89c2f73bc7df2fffa3f50cab45add2990d77ba4a  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.00023711
0x1c31b37cdb052b9c2c6f689d693d059790ccb94ba81e544e0949a5c0d8dff68738 days 10 hrs ago0xc4ce7b61c02b75a84547884f7039c082c5c7edba  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000255409
0xb61a91ffc9f25ae49d15379c68fc403a514beea53e37c55222df1ff7bab8da9853 days 6 hrs ago0xc1ad8ad25057eef91e7ccdd83e7b2d04b1e5598f  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000176648
0xdf9354bf9f8c80b35a5a4c6d01a4e94cdedc47bdb3ef78c4e2aa85532d891e9353 days 6 hrs ago0xc1ad8ad25057eef91e7ccdd83e7b2d04b1e5598f  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0.0001 Ether0.000176648
0x38426a2565d5ac211e6662b046cb78cc653afb3cbf2d9ec09d62f0df81d4979453 days 6 hrs ago0xc1ad8ad25057eef91e7ccdd83e7b2d04b1e5598f  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000176648
0x49e55cc7ed754b56fdd5ea92ec3b8737de6b7362374b5a1bed437e15c3dc08aa90 days 16 hrs ago0xfff7880fe491ff2d41dddf4173d5c4c535b4a8c3  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000042152
0x1256d39445de1443717cb5ab1980af4401b478526e899617145bd513d25bb97194 days 16 hrs ago0x00a3152c274f68d42cb5b15fe0526d4ba143995a  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.00015072
0xc3b3780e39ec180e5561f197318a01d1151cffd8b638fd731c1001ae07e1252f103 days 20 hrs ago0x5023cfabaea4d331fa78d50cc5de5102341df649  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000070605
0x45d32b831168395ac0b18e35723027dfa88fc8b324fc6a913617e9b342b4a31e106 days 2 hrs ago0x90c1bd18caf3867d3f7474e1ea55a27a4310f418  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000073806
0x1b2b71bde83b20754b6347d79a407c82aff95d6ed1e12597c5fa317ab7a6d870120 days 23 hrs ago0x00a3152c274f68d42cb5b15fe0526d4ba143995a  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.00011304
0xd5efa56ac22d3e7a35dca07ca9a141967906e5746afeb43d9cf6e5cddafdfd80146 days 17 hrs ago0xbd237a6df1aae2faa85ef690a33768f73d41604f  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000069657
0xd0a2fe7e3f4db4a0242bfcfe9790bdeca6c25d4aac75881cd5f32be26a3a1598155 days 17 hrs ago0x9e7eec3c6ff9475da10c1561f060a28cd18a75c4  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000579232
0x5a37d4c1c660b3d18f8afda957733a74b6537d2c649068993145c73ce4b31216155 days 17 hrs ago0x9e7eec3c6ff9475da10c1561f060a28cd18a75c4  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000592775
0x0cbf26cde251094354393f428023bf85ab0b694a6707d9ae8b88f324a124a51a159 days 13 hrs ago0x23b08ba164115624053b5c0b946fcbf49eb6f68f  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.00009414
0xbd39e73c884019c31e44bae644b3b6b8a38ac32dbb7e235ab8ab8a9d49c9c753159 days 13 hrs ago0x23b08ba164115624053b5c0b946fcbf49eb6f68f  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.00009414
0x476fcadbdfcea8aadc2eb4004842f50815d1131b922d820088d4116f9f4ee749159 days 13 hrs ago0x23b08ba164115624053b5c0b946fcbf49eb6f68f  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000102504
0xa4e12f6f9da59593c6ef97956de0944c28429d30966154350ec064b5c5b6097f159 days 13 hrs ago0x23b08ba164115624053b5c0b946fcbf49eb6f68f  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000102504
0xfa1d236ff77ef53c695bf6f6b252e91a4cc817e2afac020c97bfacd3568f3853159 days 13 hrs ago0x23b08ba164115624053b5c0b946fcbf49eb6f68f  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000102504
0x6bcc4471d650b09801f03b315d12b704cce9deecd954027cfd60a5e89117254e159 days 14 hrs ago0x23b08ba164115624053b5c0b946fcbf49eb6f68f  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.00009414
0x205e87a9645495cddb8092baa0527ef9ec197d08b6a5a78fc4a641b489506323159 days 14 hrs ago0x23b08ba164115624053b5c0b946fcbf49eb6f68f  IN   0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0 Ether0.000092876
[ 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
0x9d9f3f5c9f6b483ec711a7b8c3d49538e41997117bd60412eb5554cb2c567eda5687389203 days 16 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x876eabf441b2ee5b5b0554fd502a8e0600950cfa400,000 Ether
0x1e9ed6236afb884fe7cad9a807886ba61b9e9a2fc944a991e3e8725d2158c7b25493855237 days 15 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x876eabf441b2ee5b5b0554fd502a8e0600950cfa100,000 Ether
0x49349ef7c05476670c86d40826ad8e428bf82cff9f97477b5ead2ce324a1fcd93963736532 days 19 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e5,008.942796 Ether
0xda659500c919d4ed23330230f1c3643fd62e72388167d260ba926945495f71993633794594 days 16 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e1,000,000 Ether
0x342f7c330c09195ab3fd649ff71148e447ee960b561ff5d5bd99e29fe1172e5b3559994607 days 13 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x61d5a4d5bd270e59e9320243e574288e2a199fed100,000 Ether
0xa0d05595548d9f6889dbade2f81492975e1eebde1b1512df13ba27631c24186b3451269626 days 1 hr ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e405,000.01 Ether
0x1f971e1ff9399f3b89c843acb4a416c6eda7b95b001e63ec52e6ac13cdd91d053448121626 days 14 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e25,000 Ether
0x3470118e8c275ad6327bdbb8f7670fe87c9fcc8d308c00c59a9d7484cc2497483447138626 days 18 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e30,000 Ether
0x7e8b275bb9d4f352144743299156162736939817365d04b7c73f1b978eecc3293434808628 days 20 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e20,000 Ether
0x0e92cd4998fd99f90cefc7151cdef44485bea4dfc7eb40d9cc09d9743cfb4be13428773629 days 20 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e20,000 Ether
0x6dd614794f70a1ee203de747785a83ccb24845577ee9f695368eb2579cd983182865130723 days 8 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e2 wei
0xbe78f781996e44c7d9e3a43bb35d9529eb6cf105375bf335998273602ee029db2865037723 days 8 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e2 wei
0x482214a3af89608131b24713d78897aa5b3e556d87d0563c236bfa243986dbd42865023723 days 8 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e2 wei
0x29d23985c39e6ea3c7669df26cf12b31e814bbe218def19844d07322c17ae7da2865017723 days 8 hrs ago0xf1bc217a1e50a697d37caf568d5260033d53e1e90xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e2 wei
0xcc6f7c57175addcf7608bdda90e314db18cb22f548aef3c5264fb16582f87db72208364832 days 4 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e100,000 Ether
0x9fa9e3929ffcd5821b54117403a51e7cc402c1f48409f360ec5f8d3805e0e2f42113435847 days 21 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e100,000 Ether
0xfec253fb3571d18886529d4676b4038b4a0e9835a22dd0c2eb2eefb2dcd788772097390850 days 13 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e200,000 Ether
0x51a0661b8e8d1e2c0ca72d621a1e95db1ebcce463757b3826705f69a1002463b2075009854 days 5 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e199,800 Ether
0x68da64df1d9dd897c8b1287d64da4813bb87e36f9f2ea6f39865db34fe99fd482074991854 days 5 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e100 Ether
0x847ce8cb8a8ed74c1ae18a20506320087a4bad288ff937a482eef53f4311fa412063443856 days 3 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e600,000 Ether
0xecf5c7534a842c3b4fff05feb72df40b17c41f45f00ef8ee47f8724ee4e0babc2063409856 days 4 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7727e5113d1d161373623e5f49fd568b4f543a9e100 Ether
0x9cd0a5621976eb0d3f580fc1b6e96141390854a02d44e3bf915b11a326ff23c01747062908 days 14 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0xcafb10ee663f465f9d10588ac44ed20ed608c11e200,000 Ether
0x7b8b3a2f01a2cbb6fae8894ab7c817557f7267d8c24b85783792e8aba2d796a51747062908 days 14 hrs ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7180eb39a6264938fdb3effd7341c4727c38215340,000 Ether
0x054c0b880005ffea90212a81909a3b17fff04153ed2406ca39ed43087f59305e1666154922 days 45 mins ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0x7180eb39a6264938fdb3effd7341c4727c38215320 Ether
0xc190e18d1eb41ed85c5e4af421b728bf2386fba0d4ff2b03992aba9ee1cb20ae1659875923 days 1 hr ago0xab7c74abc0c4d48d1bdad5dcb26153fc8780f83e0xadc71d9dc3fac8c4ae1a0b22c04c520510e2c72a2.1 Ether
[ Download CSV Export  ] 



  Contract Source Code   Find Similiar Contracts

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

    // TYPES

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

    // EVENTS

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

    // MODIFIERS

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

    // METHODS

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

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

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

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

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

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

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

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

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

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

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

    // MODIFIERS

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

    // METHODS

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

    // FIELDS

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

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

    // EVENTS

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

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

    uint public version = 2;

    // TYPES

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

    // METHODS

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

    // FIELDS

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

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

  Contract Creation Code Switch To Opcodes View
6060604052600261010860005055604051611b51380380611b51833981016040528080518201919060200180519060200190919080519060200190919050505b805b83835b600060018351016001600050819055503373ffffffffffffffffffffffffffffffffffffffff16600260005060016101008110156100025790900160005b5081905550600161010260005060003373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005081905550600090505b825181101561016e5782818151811015610002579060200190602002015173ffffffffffffffffffffffffffffffffffffffff166002600050826002016101008110156100025790900160005b508190555080600201610102600050600085848151811015610002579060200190602002015173ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055505b80600101905080506100c2565b816000600050819055505b505050806101056000508190555061018f6101ad565b610107600050819055505b505b505050611992806101bf6000396000f35b600062015180420490506101bc565b9056606060405236156100f8576000357c010000000000000000000000000000000000000000000000000000000090048063173825d9146101605780632f54bf6e146101785780634123cb6b146101a457806352375093146101c757806354fd4d50146101ea5780635c52c2f51461020d578063659010e71461021c5780637065cb481461023f578063746c917114610257578063797af6271461027a578063b20d30a9146102a6578063b61d27f6146102be578063b75c7dc614610307578063ba51a6df1461031f578063c2cf732614610337578063cbf0b0c01461036c578063f00d4b5d14610384578063f1736d86146103a5576100f8565b61015e5b600034111561015b577fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c3334604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b565b005b61017660048080359060200190919050506107c4565b005b61018e60048080359060200190919050506109a5565b6040518082815260200191505060405180910390f35b6101b16004805050610a91565b6040518082815260200191505060405180910390f35b6101d46004805050610b38565b6040518082815260200191505060405180910390f35b6101f76004805050610b42565b6040518082815260200191505060405180910390f35b61021a6004805050610adf565b005b6102296004805050610b2e565b6040518082815260200191505060405180910390f35b610255600480803590602001909190505061066e565b005b6102646004805050610a88565b6040518082815260200191505060405180910390f35b6102906004808035906020019091905050610f0e565b6040518082815260200191505060405180910390f35b6102bc6004808035906020019091905050610a9a565b005b6102f160048080359060200190919080359060200190919080359060200190820180359060200191909192905050610b9e565b6040518082815260200191505060405180910390f35b61031d60048080359060200190919050506103c8565b005b610335600480803590602001909190505061090f565b005b61035660048080359060200190919080359060200190919050506109e7565b6040518082815260200191505060405180910390f35b6103826004808035906020019091905050610b4c565b005b6103a360048080359060200190919080359060200190919050506104ca565b005b6103b26004805050610b24565b6040518082815260200191505060405180910390f35b60006000600061010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549250600083141561040f576104c4565b8260020a91506101036000506000858152602001908152602001600020600050905060008282600101600050541611156104c3578060000160008181505480929190600101919050555081816001016000828282505403925050819055507fc7fb647e59b18047309aa15aad418e5d7ca96d173ad704f1031a2c3d7591734b3385604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b50505050565b600060003643604051808484808284378201915050828152602001935050505060405180910390206104fb816112db565b1561066757610509836109a5565b156105145750610669565b61010260005060008573ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005054915060008214156105565750610669565b61055e611777565b8273ffffffffffffffffffffffffffffffffffffffff166002600050836101008110156100025790900160005b5081905550600061010260005060008673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055508161010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c8484604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15b505b505050565b600036436040518084848082843782019150508281526020019350505050604051809103902061069d816112db565b156107bf576106ab826109a5565b156106b657506107c1565b6106be611777565b60fa6001600050541015156106d7576106d561153d565b505b60fa6001600050541015156106ec57506107c1565b60016000818150548092919060010191905055508173ffffffffffffffffffffffffffffffffffffffff1660026000506001600050546101008110156100025790900160005b508190555060016000505461010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055507f994a936646fe87ffe4f1e469d3d6aa417d6b855598397f323de5b449f765f0c382604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b505b50565b600060003643604051808484808284378201915050828152602001935050505060405180910390206107f5816112db565b156109095761010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549150600082141561083c575061090b565b6001600160005054036000600050541115610857575061090b565b60006002600050836101008110156100025790900160005b5081905550600061010260005060008573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050819055506108b2611777565b6108ba61153d565b507f58619076adf5bb0943d100ef88d52d7c3fd691b19d3a9071b555b651fbf418da83604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b505b5050565b600036436040518084848082843782019150508281526020019350505050604051809103902061093e816112db565b156109a05760016000505482111561095657506109a2565b81600060005081905550610968611777565b7facbdb084c721332ac59f9b8e392196c9eb0e4932862da8eb9beaf0dad4f550da826040518082815260200191505060405180910390a15b505b50565b6000600061010260005060008473ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050541190506109e2565b919050565b60006000600060006101036000506000878152602001908152602001600020600050925061010260005060008673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505491506000821415610a505760009350610a7f565b8160020a90506000818460010160005054161415610a755760009350610a7f56610a7e565b60019350610a7f565b5b50505092915050565b60006000505481565b60016000505481565b6000364360405180848480828437820191505082815260200193505050506040518091039020610ac9816112db565b15610ada5781610105600050819055505b505b50565b6000364360405180848480828437820191505082815260200193505050506040518091039020610b0e816112db565b15610b20576000610106600050819055505b505b565b6101056000505481565b6101066000505481565b6101076000505481565b6101086000505481565b6000364360405180848480828437820191505082815260200193505050506040518091039020610b7b816112db565b15610b99578173ffffffffffffffffffffffffffffffffffffffff16ff5b505b50565b6000610ba9336109a5565b15610f0557610bb7846116d7565b15610ca0577f92ca3a80853e6663fa31fa10b99225f18d4902939b4c53a9caae9043f6efd0043385878686604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018060200182810382528484828181526020019250808284378201915050965050505050505060405180910390a18473ffffffffffffffffffffffffffffffffffffffff168484846040518083838082843782019150509250505060006040518083038185876185025a03f1925050505060006001029050610f06565b600036436040518084848082843782019150508281526020019350505050604051809103902090508050610cd381610f0e565b158015610d3357506000610109600050600083815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610f045784610109600050600083815260200190815260200160002060005060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555083610109600050600083815260200190815260200160002060005060010160005081905550828261010960005060008481526020019081526020016000206000506002016000509190828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e0857803560ff1916838001178555610e39565b82800160010185558215610e39579182015b82811115610e38578235826000505591602001919060010190610e1a565b5b509050610e649190610e46565b80821115610e605760008181506000905550600101610e46565b5090565b50507f1733cbb53659d713b79580f79f3f9ff215f78a7c7aa45890f3b89fc5cddfbf32813386888787604051808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252848482818152602001925080828437820191505097505050505050505060405180910390a15b5b5b949350505050565b600081610f1a816112db565b156112d4576000610109600050600085815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156112d357610109600050600084815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610109600050600085815260200190815260200160002060005060010160005054610109600050600086815260200190815260200160002060005060020160005060405180828054600181600116156101000203166002900480156110765780601f1061104b57610100808354040283529160200191611076565b820191906000526020600020905b81548152906001019060200180831161105957829003601f168201915b505091505060006040518083038185876185025a03f192505050507fe7c957c06e9a662c1a6c77366179f5b702b97651dc28eee7d5bf1dff6e40bb4a3384610109600050600087815260200190815260200160002060005060010160005054610109600050600088815260200190815260200160002060005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166101096000506000898152602001908152602001600020600050600201600050604051808673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff168152602001806020018281038252838181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156112005780601f106111d557610100808354040283529160200191611200565b820191906000526020600020905b8154815290600101906020018083116111e357829003601f168201915b5050965050505050505060405180910390a1610109600050600084815260200190815260200160002060006000820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000506000905560028201600050805460018160011615610100020316600290046000825580601f1061128957506112c6565b601f0160209004906000526020600020908101906112c591906112a7565b808211156112c157600081815060009055506001016112a7565b5090565b5b50505060019150506112d6565b5b505b919050565b600060006000600061010260005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549250600083141561132457611535565b610103600050600086815260200190815260200160002060005091506000826000016000505414156113fd57600060005054826000016000508190555060008260010160005081905550610104600050805480919060010190908154818355818115116113c3578183600052602060002091820191016113c291906113a4565b808211156113be57600081815060009055506001016113a4565b5090565b5b5050508260020160005081905550846101046000508360020160005054815481101561000257906000526020600020900160005b50819055505b8260020a90506000818360010160005054161415611534577fe1c52dc63b719ade82e8bea94cc41a0d5d28e4aaf536adb5e9cccc9ff8c1aeda3386604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16001826000016000505411151561150757610104600050610103600050600087815260200190815260200160002060005060020160005054815481101561000257906000526020600020900160005b50600090556101036000506000868152602001908152602001600020600060008201600050600090556001820160005060009055600282016000506000905550506001935061153556611533565b816000016000818150548092919060019003919050555080826001016000828282505417925050819055505b5b5b505050919050565b60006000600190505b6001600050548110156116d2575b60016000505481108015611580575060006002600050826101008110156100025790900160005b505414155b15611592578080600101915050611554565b5b60016001600050541180156115c45750600060026000506001600050546101008110156100025790900160005b5054145b156115e357600160008181505480929190600190039190505550611593565b600160005054811080156116145750600060026000506001600050546101008110156100025790900160005b505414155b8015611637575060006002600050826101008110156100025790900160005b5054145b156116cd5760026000506001600050546101008110156100025790900160005b50546002600050826101008110156100025790900160005b50819055508061010260005060006002600050846101008110156100025790900160005b5054815260200190815260200160002060005081905550600060026000506001600050546101008110156100025790900160005b50819055505b611546565b5b5090565b60006116e2336109a5565b1561177157610107600050546116f6611980565b111561171b57600061010660005081905550611710611980565b610107600050819055505b610106600050548261010660005054011015801561174757506101056000505482610106600050540111155b15611768578161010660008282825054019250508190555060019050611772565b60009050611772565b5b919050565b60006000610104600050805490509150600090505b8181101561187857610109600050600061010460005083815481101561000257906000526020600020900160005b5054815260200190815260200160002060006000820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000506000905560028201600050805460018160011615610100020316600290046000825580601f1061182a5750611867565b601f0160209004906000526020600020908101906118669190611848565b808211156118625760008181506000905550600101611848565b5090565b5b5050505b806001019050805061178c565b611880611885565b5b5050565b60006000610104600050805490509150600090505b8181101561193857600060010261010460005082815481101561000257906000526020600020900160005b505414151561192a57610103600050600061010460005083815481101561000257906000526020600020900160005b50548152602001908152602001600020600060008201600050600090556001820160005060009055600282016000506000905550505b5b806001019050805061189a565b61010460005080546000825590600052602060002090810190611979919061195b565b80821115611975576000818150600090555060010161195b565b5090565b5b505b5050565b6000620151804204905061198f565b9056

    Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000002903cadbe271e057edef157340b52a5898d7424f000000000000000000000000ba7ca1bcf210c1b37cf5818816c4a819c3040ea700000000000000000000000014cd6536d449e3f6878f2d6859e1ff92ae0990e60000000000000000000000000c24441e42277445e38e02dfc3494577c05ba46b

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [2] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [4] : 0000000000000000000000002903cadbe271e057edef157340b52a5898d7424f
Arg [5] : 000000000000000000000000ba7ca1bcf210c1b37cf5818816c4a819c3040ea7
Arg [6] : 00000000000000000000000014cd6536d449e3f6878f2d6859e1ff92ae0990e6
Arg [7] : 0000000000000000000000000c24441e42277445e38e02dfc3494577c05ba46b


 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.