Contract Overview
Balance: 484.725962132389077336 Ether
Ether Value: $57,992.61 (@ $119.64/ETH)
Transactions: 280 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0xed5a90efa30637606ddaf4f4b3d42bb49d79bd4eat txn 0x634a2f98ee92482edcf9ce8fb524ab7ee085d7afa66e45a8cf355f53bd5dc9ff
Token Balance:
 Latest 25 transactions from a total of 280 transactions

TxHash Age From To Value [TxFee]
0x9ffd6ef7174b118d5c90dcd357dea246c88787cd5302dfe6971a4cc17d94702a40 days 3 hrs ago0xfa221b3e900c0db2174b0deb598b7d1e58ae7f69  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.000265791
0x6c031b4fedf30d32f0dd606e3a3d617a8bc6d922b3ed06bfec9962ce207d00a140 days 5 hrs ago0x9748fe7de8512c1d1962689f5fc017a4c8705732  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.0004191408
0x14ff9b429973bdf607722aaa0ec0f6779b1c5fa84b7d957ddf511f73418f4c5541 days 3 mins ago0xfa221b3e900c0db2174b0deb598b7d1e58ae7f69  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.000310791
0x092a34241507ed161c48db576f2a12fd39c8b7fd98d5e76b7cefaa72aeb23db941 days 3 hrs ago0x9748fe7de8512c1d1962689f5fc017a4c8705732  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.0004013822
0xf74529df722a6d4834b30f2b84b20264d6e63fa1065e7669ba6300e08b3b170044 days 4 hrs ago0xfa221b3e900c0db2174b0deb598b7d1e58ae7f69  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.0002676432
0x9dbd642cf88e74f388e6aeeafbe92697636bddc614a55696306f5d6d6c1b98c046 days 3 hrs ago0x9748fe7de8512c1d1962689f5fc017a4c8705732  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.0004572942
0xe2c9023f8fccd521a51a29c2d5f7c0fb90fd5eb974e2560e86498f6067955c2246 days 6 hrs ago0xfa221b3e900c0db2174b0deb598b7d1e58ae7f69  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.0003487472
0x4689153391fbaee05fa828ff7ec0e08112bd4c844c001a66b9603080383049e346 days 6 hrs ago0xfa221b3e900c0db2174b0deb598b7d1e58ae7f69  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.0003721074
0xa089e40e791aa014eafba15170c88f419835f66a1fec12d1b999dc2b2c22b76c47 days 6 hrs ago0x9748fe7de8512c1d1962689f5fc017a4c8705732  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.0006506962
0xc24fd6198ac823a82667e4bbd5e78fa0e4200dee35e6c26383130a8c1acdcc1564 days 11 hrs ago0x9748fe7de8512c1d1962689f5fc017a4c8705732  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.0005409934
0x4a09309b87576c4376f8af4b3e01a10ccc40a9521d08d6e809290718312780dc109 days 10 hrs ago0x9748fe7de8512c1d1962689f5fc017a4c8705732  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.000442985
0x2db6a48082400ef88d003770c564b9e238ae930fd238fe1490dc64737ea546ae109 days 10 hrs ago0x9748fe7de8512c1d1962689f5fc017a4c8705732  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.0003366686
0x3b294a0aa245ad154cfe3537c17cce4d0cf8a3acbc1021e32adc5f7cb55154a8109 days 10 hrs ago0x9748fe7de8512c1d1962689f5fc017a4c8705732  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.0003278089
0x8a3927cc8004af202fa51e3ae18c0da5429f658832ba44f17b3778d956696148109 days 10 hrs ago0x9748fe7de8512c1d1962689f5fc017a4c8705732  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.0003278089
0xd13e77669ee05b60ffe2d13150f81d4cd6263b132148bdd3473be10652e28692110 days 12 hrs ago0xb818d0c4e83be8c6fa2b5786bd01c74b82aea51b  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.0015531746
0xf6a8c91e6434f8a281979b0e94c4eb35121e65a296b5f10405760f417b960377110 days 12 hrs ago0xb818d0c4e83be8c6fa2b5786bd01c74b82aea51b  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.001571202
0x39cbff1262c1bc016e313b9de0ac478dd0e12bb61de449ca45f50062048073de110 days 12 hrs ago0xb818d0c4e83be8c6fa2b5786bd01c74b82aea51b  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.001571202
0xb108ec83b5c5211ac3140e9ecea5ebbf6586b81f7ee4219bd51343f4da2196e4110 days 12 hrs ago0xb818d0c4e83be8c6fa2b5786bd01c74b82aea51b  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.001571778
0x4d89aa77023212939ce3c4c3c8f7f520bf5141277760a5387ad5d6b14fc85b81117 days 11 hrs ago0xb818d0c4e83be8c6fa2b5786bd01c74b82aea51b  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.000932373
0xabdd409db084851c5f2be52bd7cc1e3bb1ef60ee39b324c2932308b74e21ace0117 days 11 hrs ago0x9748fe7de8512c1d1962689f5fc017a4c8705732  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.001483913
0xa5e8ca821942c3e7d1e4cce3771b43edd2b4a3a62a78d10c183a0942866b3aa3118 days 7 hrs ago0xb818d0c4e83be8c6fa2b5786bd01c74b82aea51b  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.000932373
0x7f386e0d5c1e42d9727338b829d5a8ae7aee177b5278d6ea25f4678f306ab4fb118 days 8 hrs ago0x9748fe7de8512c1d1962689f5fc017a4c8705732  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.001482825
0x12cc798f8b69b5f2651ee7cf1664cbedfe7c8812f2d254d2a537ec2de6194201133 days 3 hrs ago0xb818d0c4e83be8c6fa2b5786bd01c74b82aea51b  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.000621582
0x2ca715b7b68d75ef7b0deb7f50d0a2f7673493d75453184a95753df6caebb9ae133 days 3 hrs ago0x9748fe7de8512c1d1962689f5fc017a4c8705732  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.0006808542
0xa3eb3bc90e49df59d7e0f471f67ce36402f6f485532d6c1a7538a2a45fc04bf8133 days 3 hrs ago0xb818d0c4e83be8c6fa2b5786bd01c74b82aea51b  IN   0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0 Ether0.000621582
[ 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
0xf74529df722a6d4834b30f2b84b20264d6e63fa1065e7669ba6300e08b3b1700685751844 days 4 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x193eb6299b4df1337e2f9e45b345367876e773556,000 Ether
0xe2c9023f8fccd521a51a29c2d5f7c0fb90fd5eb974e2560e86498f6067955c22684475546 days 6 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x193eb6299b4df1337e2f9e45b345367876e773551 Ether
0x9f25925dde1009a1ee47218647d5b1282f319b3171bc8b9ccc1e8c2025b034dc6188258154 days 11 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0xb818d0c4e83be8c6fa2b5786bd01c74b82aea51b0.75 Ether
0xdda7ff823e6d675ad37c5211ae055f9bec61a5c89df0f244cf23538a5c13b7c56124179165 days 7 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0xaacdbd8839f49a7ba6da2803554beb33b52d31801 Ether
0xe2a96a43ad6f6aece2ea5240b5b45756bb418172b0aaf965bcde6c1665027dbd6124069165 days 8 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0xfa221b3e900c0db2174b0deb598b7d1e58ae7f691 Ether
0x618c4116e59aa5483645b782269d2d30587df72ac9db48631196efb8841fe2cb5823689216 days 10 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0xb818d0c4e83be8c6fa2b5786bd01c74b82aea51b0.5 Ether
0xb3ae799469009904eb1a23165e36370a1f24d76cf92c1355835bc1cfcc19d6215823687216 days 10 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0xfa221b3e900c0db2174b0deb598b7d1e58ae7f690.25 Ether
0x610b28f2e8d2babda705cb427fcc802730efb6a29b670a1ed2342bbc3f869afd5744501230 days 4 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x008024771614f4290696b63ba3dd3a1ceb34d4d9300 Ether
0x4ec1205536b0192bc2898bbd4504f4852f8d336417f0edaa03daf3017f453bbf5625466251 days 7 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x008024771614f4290696b63ba3dd3a1ceb34d4d91,500 Ether
0x12117267bcc90ef57d76192c29778303a27a83c7abecc85b6d2602ee012ea2fb5596422256 days 9 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x008024771614f4290696b63ba3dd3a1ceb34d4d9150 Ether
0xf5653e3cc44123b4caa3f5e60e47509c5c338a9229a95fbb7fc7b796e9890c045547078264 days 23 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x008024771614f4290696b63ba3dd3a1ceb34d4d9145 Ether
0x31498bd381813430faf3ec70d9f8e7b5b34d424082fb7ae37ab62943683060995505920272 days 4 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x008024771614f4290696b63ba3dd3a1ceb34d4d9161 Ether
0xd983c6658f20ad2336a480713beb7f325813a40ed67e35ddef2d237c57b1ee005267961312 days 5 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x9901731ca68560475aa6010e3dc1dd191c13ffc1410 Ether
0x53150570972899691998dfb873f54f40611057fb0ac505897c2f99ae75b788785266410312 days 11 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x132e2f8ad2c9dfd61fa8813f95e97350623bd1926.51 Ether
0xaf74edb099b689a5901848110bd6db107b88018155be282d1495ff97f1f086125265636312 days 14 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x008024771614f4290696b63ba3dd3a1ceb34d4d9410 Ether
0xc3e0e99369b0f84957a0750d2fe6c8bd143d979b93f52ef9fc921b41902234f85180962326 days 23 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x008024771614f4290696b63ba3dd3a1ceb34d4d9300 Ether
0x2696475ee2c9c6ca41af422946988afea6740989c76089ae360a523254f492035174357328 days 2 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x9901731ca68560475aa6010e3dc1dd191c13ffc1110 Ether
0x6babd16c8dbe9f13637cca6b02713ccd5f98836a614adf3079438fd1eeb90cf15138977334 days 3 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x9748fe7de8512c1d1962689f5fc017a4c87057321 Ether
0x884bb3d204f376365cb0cc0575a30effa497087f66d25380f207863ec7e3162d5049166349 days 6 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0xc24187374ea94f4483bfc37cbb2645de665466570.1 Ether
0x951ad25cdc1251fc4ab8aeb39cefd9242a45cb3c050b2ee3af6e833f20ada5bd5008096356 days 4 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x55cd48b75f8125f4afae68038c499033ed8be60235 Ether
0xda326d6317be9472d3000236c817d09752fdc7b87090ce64ce34db21a8d10da94997864357 days 22 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x39f83ff93dd60e3d3ac130058db1f186eeba06c135 Ether
0x4fab23bae17cc6b9a8b05209942456e24e96a7f161c2eafc8a2bbf24c06e6f4d4991021359 days 2 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0xa7c709cfe2501f5ab621e2e08cd301f3d9e3a89335 Ether
0x4ef30fe3532bd74e58be72c5fe4e23aecad10d34359163bb7fdde0126bbdc6d24985065360 days 2 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x90698a685df6a6d7846a42f429839609cbc3786035 Ether
0x1699480f5aef595abf59f80fabc5f571c634433b4eb1416063666cb9b8ad18a44978825361 days 3 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x2b408295408a3a530699b70c2e5bc7b4c127b2ca35 Ether
0x521cefd240c2564ffa08a0c1596299cc89ac6e7e0948384b1932893da97b5a904965951363 days 7 hrs ago0xcd9910aea989e9b0b6b3e1192a474b5200e88c6b0x055a2d16b84279585939686c6e715a381dcd88f175 Ether
[ Download CSV Export  ] 
Contract Name: MultiSigWalletWithDailyLimit
Compiler Text: v0.4.4+commit.4633f3de
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.4;


/// @title Multisignature wallet - Allows multiple parties to agree on transactions before execution.
/// @author Stefan George - <[email protected]>
contract MultiSigWallet {

    uint constant public MAX_OWNER_COUNT = 50;

    event Confirmation(address indexed sender, uint indexed transactionId);
    event Revocation(address indexed sender, uint indexed transactionId);
    event Submission(uint indexed transactionId);
    event Execution(uint indexed transactionId);
    event ExecutionFailure(uint indexed transactionId);
    event Deposit(address indexed sender, uint value);
    event OwnerAddition(address indexed owner);
    event OwnerRemoval(address indexed owner);
    event RequirementChange(uint required);

    mapping (uint => Transaction) public transactions;
    mapping (uint => mapping (address => bool)) public confirmations;
    mapping (address => bool) public isOwner;
    address[] public owners;
    uint public required;
    uint public transactionCount;

    struct Transaction {
        address destination;
        uint value;
        bytes data;
        bool executed;
    }

    modifier onlyWallet() {
        if (msg.sender != address(this))
            throw;
        _;
    }

    modifier ownerDoesNotExist(address owner) {
        if (isOwner[owner])
            throw;
        _;
    }

    modifier ownerExists(address owner) {
        if (!isOwner[owner])
            throw;
        _;
    }

    modifier transactionExists(uint transactionId) {
        if (transactions[transactionId].destination == 0)
            throw;
        _;
    }

    modifier confirmed(uint transactionId, address owner) {
        if (!confirmations[transactionId][owner])
            throw;
        _;
    }

    modifier notConfirmed(uint transactionId, address owner) {
        if (confirmations[transactionId][owner])
            throw;
        _;
    }

    modifier notExecuted(uint transactionId) {
        if (transactions[transactionId].executed)
            throw;
        _;
    }

    modifier notNull(address _address) {
        if (_address == 0)
            throw;
        _;
    }

    modifier validRequirement(uint ownerCount, uint _required) {
        if (   ownerCount > MAX_OWNER_COUNT
            || _required > ownerCount
            || _required == 0
            || ownerCount == 0)
            throw;
        _;
    }

    /// @dev Fallback function allows to deposit ether.
    function()
        payable
    {
        if (msg.value > 0)
            Deposit(msg.sender, msg.value);
    }

    /*
     * Public functions
     */
    /// @dev Contract constructor sets initial owners and required number of confirmations.
    /// @param _owners List of initial owners.
    /// @param _required Number of required confirmations.
    function MultiSigWallet(address[] _owners, uint _required)
        public
        validRequirement(_owners.length, _required)
    {
        for (uint i=0; i<_owners.length; i++) {
            if (isOwner[_owners[i]] || _owners[i] == 0)
                throw;
            isOwner[_owners[i]] = true;
        }
        owners = _owners;
        required = _required;
    }

    /// @dev Allows to add a new owner. Transaction has to be sent by wallet.
    /// @param owner Address of new owner.
    function addOwner(address owner)
        public
        onlyWallet
        ownerDoesNotExist(owner)
        notNull(owner)
        validRequirement(owners.length + 1, required)
    {
        isOwner[owner] = true;
        owners.push(owner);
        OwnerAddition(owner);
    }

    /// @dev Allows to remove an owner. Transaction has to be sent by wallet.
    /// @param owner Address of owner.
    function removeOwner(address owner)
        public
        onlyWallet
        ownerExists(owner)
    {
        isOwner[owner] = false;
        for (uint i=0; i<owners.length - 1; i++)
            if (owners[i] == owner) {
                owners[i] = owners[owners.length - 1];
                break;
            }
        owners.length -= 1;
        if (required > owners.length)
            changeRequirement(owners.length);
        OwnerRemoval(owner);
    }

    /// @dev Allows to replace an owner with a new owner. Transaction has to be sent by wallet.
    /// @param owner Address of owner to be replaced.
    /// @param owner Address of new owner.
    function replaceOwner(address owner, address newOwner)
        public
        onlyWallet
        ownerExists(owner)
        ownerDoesNotExist(newOwner)
    {
        for (uint i=0; i<owners.length; i++)
            if (owners[i] == owner) {
                owners[i] = newOwner;
                break;
            }
        isOwner[owner] = false;
        isOwner[newOwner] = true;
        OwnerRemoval(owner);
        OwnerAddition(newOwner);
    }

    /// @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet.
    /// @param _required Number of required confirmations.
    function changeRequirement(uint _required)
        public
        onlyWallet
        validRequirement(owners.length, _required)
    {
        required = _required;
        RequirementChange(_required);
    }

    /// @dev Allows an owner to submit and confirm a transaction.
    /// @param destination Transaction target address.
    /// @param value Transaction ether value.
    /// @param data Transaction data payload.
    /// @return Returns transaction ID.
    function submitTransaction(address destination, uint value, bytes data)
        public
        returns (uint transactionId)
    {
        transactionId = addTransaction(destination, value, data);
        confirmTransaction(transactionId);
    }

    /// @dev Allows an owner to confirm a transaction.
    /// @param transactionId Transaction ID.
    function confirmTransaction(uint transactionId)
        public
        ownerExists(msg.sender)
        transactionExists(transactionId)
        notConfirmed(transactionId, msg.sender)
    {
        confirmations[transactionId][msg.sender] = true;
        Confirmation(msg.sender, transactionId);
        executeTransaction(transactionId);
    }

    /// @dev Allows an owner to revoke a confirmation for a transaction.
    /// @param transactionId Transaction ID.
    function revokeConfirmation(uint transactionId)
        public
        ownerExists(msg.sender)
        confirmed(transactionId, msg.sender)
        notExecuted(transactionId)
    {
        confirmations[transactionId][msg.sender] = false;
        Revocation(msg.sender, transactionId);
    }

    /// @dev Allows anyone to execute a confirmed transaction.
    /// @param transactionId Transaction ID.
    function executeTransaction(uint transactionId)
        public
        notExecuted(transactionId)
    {
        if (isConfirmed(transactionId)) {
            Transaction tx = transactions[transactionId];
            tx.executed = true;
            if (tx.destination.call.value(tx.value)(tx.data))
                Execution(transactionId);
            else {
                ExecutionFailure(transactionId);
                tx.executed = false;
            }
        }
    }

    /// @dev Returns the confirmation status of a transaction.
    /// @param transactionId Transaction ID.
    /// @return Confirmation status.
    function isConfirmed(uint transactionId)
        public
        constant
        returns (bool)
    {
        uint count = 0;
        for (uint i=0; i<owners.length; i++) {
            if (confirmations[transactionId][owners[i]])
                count += 1;
            if (count == required)
                return true;
        }
    }

    /*
     * Internal functions
     */
    /// @dev Adds a new transaction to the transaction mapping, if transaction does not exist yet.
    /// @param destination Transaction target address.
    /// @param value Transaction ether value.
    /// @param data Transaction data payload.
    /// @return Returns transaction ID.
    function addTransaction(address destination, uint value, bytes data)
        internal
        notNull(destination)
        returns (uint transactionId)
    {
        transactionId = transactionCount;
        transactions[transactionId] = Transaction({
            destination: destination,
            value: value,
            data: data,
            executed: false
        });
        transactionCount += 1;
        Submission(transactionId);
    }

    /*
     * Web3 call functions
     */
    /// @dev Returns number of confirmations of a transaction.
    /// @param transactionId Transaction ID.
    /// @return Number of confirmations.
    function getConfirmationCount(uint transactionId)
        public
        constant
        returns (uint count)
    {
        for (uint i=0; i<owners.length; i++)
            if (confirmations[transactionId][owners[i]])
                count += 1;
    }

    /// @dev Returns total number of transactions after filers are applied.
    /// @param pending Include pending transactions.
    /// @param executed Include executed transactions.
    /// @return Total number of transactions after filters are applied.
    function getTransactionCount(bool pending, bool executed)
        public
        constant
        returns (uint count)
    {
        for (uint i=0; i<transactionCount; i++)
            if (   pending && !transactions[i].executed
                || executed && transactions[i].executed)
                count += 1;
    }

    /// @dev Returns list of owners.
    /// @return List of owner addresses.
    function getOwners()
        public
        constant
        returns (address[])
    {
        return owners;
    }

    /// @dev Returns array with owner addresses, which confirmed transaction.
    /// @param transactionId Transaction ID.
    /// @return Returns array of owner addresses.
    function getConfirmations(uint transactionId)
        public
        constant
        returns (address[] _confirmations)
    {
        address[] memory confirmationsTemp = new address[](owners.length);
        uint count = 0;
        uint i;
        for (i=0; i<owners.length; i++)
            if (confirmations[transactionId][owners[i]]) {
                confirmationsTemp[count] = owners[i];
                count += 1;
            }
        _confirmations = new address[](count);
        for (i=0; i<count; i++)
            _confirmations[i] = confirmationsTemp[i];
    }

    /// @dev Returns list of transaction IDs in defined range.
    /// @param from Index start position of transaction array.
    /// @param to Index end position of transaction array.
    /// @param pending Include pending transactions.
    /// @param executed Include executed transactions.
    /// @return Returns array of transaction IDs.
    function getTransactionIds(uint from, uint to, bool pending, bool executed)
        public
        constant
        returns (uint[] _transactionIds)
    {
        uint[] memory transactionIdsTemp = new uint[](transactionCount);
        uint count = 0;
        uint i;
        for (i=0; i<transactionCount; i++)
            if (   pending && !transactions[i].executed
                || executed && transactions[i].executed)
            {
                transactionIdsTemp[count] = i;
                count += 1;
            }
        _transactionIds = new uint[](to - from);
        for (i=from; i<to; i++)
            _transactionIds[i - from] = transactionIdsTemp[i];
    }
}


/// @title Multisignature wallet with daily limit - Allows an owner to withdraw a daily limit without multisig.
/// @author Stefan George - <[email protected]>
contract MultiSigWalletWithDailyLimit is MultiSigWallet {

    event DailyLimitChange(uint dailyLimit);

    uint public dailyLimit;
    uint public lastDay;
    uint public spentToday;

    /*
     * Public functions
     */
    /// @dev Contract constructor sets initial owners, required number of confirmations and daily withdraw limit.
    /// @param _owners List of initial owners.
    /// @param _required Number of required confirmations.
    /// @param _dailyLimit Amount in wei, which can be withdrawn without confirmations on a daily basis.
    function MultiSigWalletWithDailyLimit(address[] _owners, uint _required, uint _dailyLimit)
        public
        MultiSigWallet(_owners, _required)
    {
        dailyLimit = _dailyLimit;
    }

    /// @dev Allows to change the daily limit. Transaction has to be sent by wallet.
    /// @param _dailyLimit Amount in wei.
    function changeDailyLimit(uint _dailyLimit)
        public
        onlyWallet
    {
        dailyLimit = _dailyLimit;
        DailyLimitChange(_dailyLimit);
    }

    /// @dev Allows anyone to execute a confirmed transaction or ether withdraws until daily limit is reached.
    /// @param transactionId Transaction ID.
    function executeTransaction(uint transactionId)
        public
        notExecuted(transactionId)
    {
        Transaction tx = transactions[transactionId];
        bool confirmed = isConfirmed(transactionId);
        if (confirmed || tx.data.length == 0 && isUnderLimit(tx.value)) {
            tx.executed = true;
            if (!confirmed)
                spentToday += tx.value;
            if (tx.destination.call.value(tx.value)(tx.data))
                Execution(transactionId);
            else {
                ExecutionFailure(transactionId);
                tx.executed = false;
                if (!confirmed)
                    spentToday -= tx.value;
            }
        }
    }

    /*
     * Internal functions
     */
    /// @dev Returns if amount is within daily limit and resets spentToday after one day.
    /// @param amount Amount to withdraw.
    /// @return Returns if amount is under daily limit.
    function isUnderLimit(uint amount)
        internal
        returns (bool)
    {
        if (now > lastDay + 24 hours) {
            lastDay = now;
            spentToday = 0;
        }
        if (spentToday + amount > dailyLimit || spentToday + amount < spentToday)
            return false;
        return true;
    }

    /*
     * Web3 call functions
     */
    /// @dev Returns maximum withdraw amount.
    /// @return Returns amount.
    function calcMaxWithdraw()
        public
        constant
        returns (uint)
    {
        if (now > lastDay + 24 hours)
            return dailyLimit;
        if (dailyLimit < spentToday)
            return 0;
        return dailyLimit - spentToday;
    }
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"owners","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"revokeConfirmation","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"confirmations","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"calcMaxWithdraw","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"pending","type":"bool"},{"name":"executed","type":"bool"}],"name":"getTransactionCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"dailyLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lastDay","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":"transactionId","type":"uint256"}],"name":"isConfirmed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"getConfirmationCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"transactions","outputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"},{"name":"executed","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getOwners","outputs":[{"name":"","type":"address[]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"},{"name":"pending","type":"bool"},{"name":"executed","type":"bool"}],"name":"getTransactionIds","outputs":[{"name":"_transactionIds","type":"uint256[]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"getConfirmations","outputs":[{"name":"_confirmations","type":"address[]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"transactionCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_required","type":"uint256"}],"name":"changeRequirement","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"confirmTransaction","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"submitTransaction","outputs":[{"name":"transactionId","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_dailyLimit","type":"uint256"}],"name":"changeDailyLimit","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MAX_OWNER_COUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"required","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"owner","type":"address"},{"name":"newOwner","type":"address"}],"name":"replaceOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"transactionId","type":"uint256"}],"name":"executeTransaction","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"spentToday","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_owners","type":"address[]"},{"name":"_required","type":"uint256"},{"name":"_dailyLimit","type":"uint256"}],"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"dailyLimit","type":"uint256"}],"name":"DailyLimitChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Confirmation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Revocation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Submission","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"Execution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"transactionId","type":"uint256"}],"name":"ExecutionFailure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"OwnerRemoval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"required","type":"uint256"}],"name":"RequirementChange","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405260405161164438038061164483398101604052805160805160a05191909201919082826000825182603282118061003a57508181115b80610043575080155b8061004c575081155b1561005657610002565b600092505b84518310156100ce576002600050600086858151811015610002576020908102909101810151600160a060020a031682528101919091526040016000205460ff16806100c45750848381518110156100025790602001906020020151600160a060020a03166000145b1561015357610002565b845160038054828255600082905290917fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b918201916020890182156101cd579160200282015b828111156101cd5782518254600160a060020a0319166c0100000000000000000000000091820291909104178255602090920191600190910190610114565b600160026000506000878681518110156100025790602001906020020151600160a060020a0316815260200190815260200160002060006101000a81548160ff02191690837f010000000000000000000000000000000000000000000000000000000000000090810204021790555060019092019161005b565b506101f39291505b80821115610213578054600160a060020a03191681556001016101d5565b5050506004929092555050506006555061142d9050806102176000396000f35b509056606060405236156101325760e060020a6000350463025e7c278114610180578063173825d9146101b257806320ea8d86146101df5780632f54bf6e146102135780633411c81c146102335780634bc9fdc214610260578063547415251461028357806367eeba0c146102f75780636b0c932d146103055780637065cb4814610313578063784547a71461033e5780638b51d13f1461034e5780639ace38c2146103c2578063a0e67e2b146103fd578063a8abe69a1461046e578063b5dc40c31461054d578063b77bf60014610659578063ba51a6df14610667578063c01a8c8414610693578063c6427474146106a3578063cea0862114610714578063d74f8edd1461073f578063dc8452cd1461074c578063e20056e61461075a578063ee22610b1461078a578063f059cf2b1461079a575b6107a8600034111561017e57604080513481529051600160a060020a033316917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b565b34610002576107aa60043560038054829081101561000257600091825260209091200154600160a060020a0316905081565b34610002576107a8600435600030600160a060020a031633600160a060020a0316141515610a1a57610002565b34610002576107a8600435600160a060020a033390811660009081526002602052604090205460ff161515610c5f57610002565b34610002576107c660043560026020526000908152604090205460ff1681565b34610002576001602090815260043560009081526040808220909252602435815220546107c69060ff1681565b34610002576107da6007546000906201518001421115610d1b5750600654610d18565b34610002576107da6004356024356000805b600554811015610d2f578380156102be575060008181526020819052604090206003015460ff16155b806102e257508280156102e2575060008181526020819052604090206003015460ff165b156102ef57600191909101905b600101610295565b34610002576107da60065481565b34610002576107da60075481565b34610002576107a860043530600160a060020a031633600160a060020a0316141515610d3657610002565b34610002576107c6600435610801565b34610002576107da6004356000805b600354811015610e66576000838152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16156103ba57600191909101905b60010161035d565b34610002576000602081905260043581526040902080546001820154600383015461087993600160a060020a03909316926002019060ff1684565b346100025760408051602080820183526000825260038054845181840281018401909552808552610923949283018282801561046257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610444575b50505050509050610d18565b34610002576109236004356024356044356064356040805160208181018352600080835283519182018452808252600554935192939192909182918059106104b35750595b9080825280602002602001820160405280156104ca575b509250600091508190505b600554811015610e6c578580156104fe575060008181526020819052604090206003015460ff16155b806105225750848015610522575060008181526020819052604090206003015460ff165b156105455780838381518110156100025760209081029091010152600191909101905b6001016104d5565b34610002576109236004356040805160208181018352600080835283519182018452808252600354935192939192909182918059106105895750595b9080825280602002602001820160405280156105a0575b509250600091508190505b600354811015610ee1576000858152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561065157600380548290811015610002576000918252602090912001548351600160a060020a03909116908490849081101561000257600160a060020a03909216602092830290910190910152600191909101905b6001016105ab565b34610002576107da60055481565b34610002576107a86004355b30600160a060020a031633600160a060020a0316141515610f5d57610002565b34610002576107a8600435610974565b3461000257604080516020600460443581810135601f81018490048402850184019095528484526107da948235946024803595606494929391909201918190840183828082843750949650505050505050600061096d848484600083600160a060020a0381161515610b6157610002565b34610002576107a860043530600160a060020a031633600160a060020a031614151561102857610002565b34610002576107da603281565b34610002576107da60045481565b34610002576107a8600435602435600030600160a060020a031633600160a060020a031614151561106357610002565b34610002576107a86004356109f7565b34610002576107da60085481565b005b60408051600160a060020a039092168252519081900360200190f35b604080519115158252519081900360200190f35b60408051918252519081900360200190f35b600084815260208190526040902092506111d6845b600080805b600354811015610872576000848152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561086357600191909101905b600454821415610e5e57600192505b5050919050565b60408051600160a060020a03861681526020810185905282151560608201526080918101828152845460026000196101006001841615020190911604928201839052909160a0830190859080156109115780601f106108e657610100808354040283529160200191610911565b820191906000526020600020905b8154815290600101906020018083116108f457829003601f168201915b50509550505050505060405180910390f35b60405180806020018281038252838181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050019250505060405180910390f35b9050611021815b33600160a060020a03811660009081526002602052604090205460ff161515610fc857610002565b6000858152600160208181526040808420600160a060020a0333168086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a3610ce6855b6000818152602081905260408120600301548190839060ff16156107ec57610002565b600160a060020a038216600090815260026020526040902054829060ff161515610a4357610002565b600160a060020a0383166000908152600260205260408120805460ff1916905591505b60035460001901821015610b085782600160a060020a0316600360005083815481101561000257600091825260209091200154600160a060020a03161415610b3857600380546000198101908110156100025760009182526020909120015460038054600160a060020a039092169184908110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b600380546000198101808355919082908015829011610b4357600083815260209020610b43918101908301610c0e565b600190910190610a66565b505060035460045411159150610c26905057600354610c2690610673565b60055460408051608081018252878152602080820188815282840188815260006060850181905286815280845294852084518154606060020a91820291909104600160a060020a031990911617815591516001808401919091559051805160028085018054818a5298879020999b5096989497601f9481161561010002600019011604830185900484019490939291019083901061139257805160ff19168380011785555b506113c29291505b80821115610c225760008155600101610c0e565b5090565b604051600160a060020a038416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a2505050565b600082815260016020908152604080832033600160a060020a038116855292529091205483919060ff161515610cee57610002565b6000858152600160209081526040808320600160a060020a0333168085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35b505b50505050565b600084815260208190526040902060030154849060ff1615610c9457610002565b50600854600654035b90565b6008546006541015610d0f57506000610d18565b5092915050565b600160a060020a038116600090815260026020526040902054819060ff1615610d5e57610002565b81600160a060020a0381161515610d7457610002565b6003546004546001909101906032821180610d8e57508181115b80610d97575080155b80610da0575081155b15610daa57610002565b600160a060020a0385166000908152600260205260409020805460ff19166001908117909155600380549182018082559091908281838015829011610e0057600083815260209020610e00918101908301610c0e565b50505060009283525060208220018054600160a060020a031916606060020a88810204179055604051600160a060020a038716917ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d91a25050505050565b600101610806565b50919050565b878703604051805910610e7c5750595b908082528060200260200182016040528015610e93575b5093508790505b86811015610ed6578281815181101561000257906020019060200201518489830381518110156100025760209081029091010152600101610e9a565b505050949350505050565b81604051805910610eef5750595b908082528060200260200182016040528015610f06575b509350600090505b81811015610f55578281815181101561000257906020019060200201518482815181101561000257600160a060020a03909216602092830290910190910152600101610f0e565b505050919050565b600354816032821180610f6f57508181115b80610f78575080155b80610f81575081155b15610f8b57610002565b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b6000828152602081905260409020548290600160a060020a03161515610fed57610002565b600083815260016020908152604080832033600160a060020a038116855292529091205484919060ff161561099c57610002565b9392505050565b60068190556040805182815290517fc71bdc6afaf9b1aa90a7078191d4fc1adf3bf680fca3183697df6b0dc226bca29181900360200190a150565b600160a060020a038316600090815260026020526040902054839060ff16151561108c57610002565b600160a060020a038316600090815260026020526040902054839060ff16156110b457610002565b600092505b6003548310156111315784600160a060020a0316600360005084815481101561000257600091825260209091200154600160a060020a031614156111cb578360036000508481548110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b600160a060020a03808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b6001909201916110b9565b91508180611245575060028084015460001961010060018316150201160415801561124557506001830154611245906007546000906201518001421115611221574260075560006008555b600654600854830111806112385750600854828101105b1561142457506000611428565b15610ce85760038301805460ff1916600117905581151561126f5760018301546008805490910190555b825460018085015460405160028088018054600160a060020a039096169593949093839285926000199083161561010002019091160480156112f25780601f106112c7576101008083540402835291602001916112f2565b820191906000526020600020905b8154815290600101906020018083116112d557829003601f168201915b505091505060006040518083038185876185025a03f192505050156113415760405184907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a2610ce8565b60405184907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038301805460ff19169055811515610ce8575050600101546008805491909103905550565b82800160010185558215610c06579182015b82811115610c065782518260005055916020019190600101906113a4565b5050606091909101516003909101805460ff191660f860020a9283029290920491909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b5060015b9190505600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000009f7dfab2222a473284205cddf08a677726d786a00000000000000000000000005210c4dcd7eb899a1274fd6471adec9896ae05aa0000000000000000000000001d805bc00b8fa3c96ae6c8fa97b2fd24b19a9801000000000000000000000000aca7bd07a8c207f7964261c2cf1e0fbfcff37836

 

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.