Contract 0x2fab4598bf2e09b0d2e48474984315fb36df61b8

 

TxHash Block Age From To Value [TxFee]
0xbe7c31c23f16a619af92f143075a22c1a60c8bc7ef09a3d992afeb4f12ab5a8f4957457388 days 19 hrs ago0x4ab493e08a5da291959e3ada1cb0020f79e12764  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.00414124
0xb168dd81797811ee15d8c5db975b395e33d881de74597d57092ac9237cd25fd24933618392 days 21 hrs ago0x0581e7af436e9380a8b772885a66bd84f790939d  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.001504305
0x931d7b731b404e49fbb8885f73d6f1b9e089a04b5aba6be6bc622fa9e2ac5c454932855393 days 49 mins ago0x57a491d445d51c351e9435289dec6d2d850aa952  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.001169637
0x4c18e67941f6ef36fb8e67e57ac4fa546eb58af90942886833aa201b884921704932837393 days 54 mins ago0x912eecc593b9d53d566e741744cc8dfcf5370844  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.002760807
0x4bcf98d966914dbe222ad687c9483d0589b9a105ee31cb42b325412f4d9c05064932810393 days 1 hr ago0x912eecc593b9d53d566e741744cc8dfcf5370844  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.00297507
0x93433fbe3e77b8f574f7900ea18c73ef70ca281e699388e29efcff49e44f04734852919407 days 16 hrs ago0x569d9d9dcec48861b7b64f914dd26ee857de9ab6  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.00250654
0x3357aa085b7683f1f77a5bd4e57bf2581786a13236e1bc62faf15035b8ca47af4841257409 days 18 hrs ago0x0581e7af436e9380a8b772885a66bd84f790939d  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.001170015
0x6f767520ec78def66bed4b91ed7b0d47f4e2b517298da8785630fa16347fb16f4841222409 days 18 hrs ago0x912eecc593b9d53d566e741744cc8dfcf5370844  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.001169637
0xbdd80e9946b5f70e8b99ecc183c72d5c2c83c2015147d5efb4e80eb87411b65a4841183409 days 18 hrs ago0x57a491d445d51c351e9435289dec6d2d850aa952  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.002969694
0x442f1fff76c3ee5360f8e73a0b55c57014c77f2293ccff76156fb9e9d26a5d764470217471 days 16 hrs ago0x569d9d9dcec48861b7b64f914dd26ee857de9ab6  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.0029393
0x07fb1dd3724d90c31dd5e500ff55b94a7bcf8add7574c17adc2fe159359d29ed4470211471 days 16 hrs ago0x9bb0fac02d1e04ab558b813027256d8c9220d257  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.0033429
0x0353fdc0147b67d0b9f8312d3ec2064ab5b1a1303745a2171d76fead48ecb5354468730471 days 22 hrs ago0x57a491d445d51c351e9435289dec6d2d850aa952  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.001169637
0xfff95e1499e458087c36f40326f6869c7571bcd2d8783e45d7bf2885335855c54468702471 days 22 hrs ago0x912eecc593b9d53d566e741744cc8dfcf5370844  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.002969694
0x33ab2483100a562d5b9752ea4540dd0f5c5feb39f486a47e875332d317a895bb4353146493 days 19 hrs ago0x569d9d9dcec48861b7b64f914dd26ee857de9ab6  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.00176358
0xc9aff4cb85a56e8e552976583b9c36ce1693d3201e68697821962871961875194352783493 days 21 hrs ago0x912eecc593b9d53d566e741744cc8dfcf5370844  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.001170015
0x0772838a302972d2960c977f6c85528e5e047b56f9b883a7a75a9708f6cdbbd64352760493 days 22 hrs ago0x57a491d445d51c351e9435289dec6d2d850aa952  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.001169637
0xc06d2f566a06da9405460c21c97066eb6d6c5c99b5d6806f8b5bc261ab9532b74352747493 days 22 hrs ago0x0581e7af436e9380a8b772885a66bd84f790939d  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.00296835
0xb40ce5fba969d74a83825cfec083f937e6b9e84aa35deadc9572bd0ae05e79304247990526 days 17 hrs ago0x9bb0fac02d1e04ab558b813027256d8c9220d257  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.00159562
0x092bf0da1d5d7d7802206930f436b840323db141a39766a9e1746d0c6741a3734247384526 days 21 hrs ago0x0581e7af436e9380a8b772885a66bd84f790939d  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.001170015
0xf3823978eb6dd3988ae11383efb30b313ca0823ceb43e9e8dcf79ef28a670a9b4247362526 days 21 hrs ago0x912eecc593b9d53d566e741744cc8dfcf5370844  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.001169637
0x7ff4c2ddcc3ef1c5ee63ce8012f654d4573bc5f005629c73ada7347ff5e827a04247349526 days 21 hrs ago0x57a491d445d51c351e9435289dec6d2d850aa952  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.00296835
0x97b53909b8a5ad06cfab8123166ce7d57c22ff8733a6e5766426bb663988470a4230180531 days 18 hrs ago0xf0d89bb81b7a90a9323b997cf2eb38a06781f0d4  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b812 Ether0.0011294
0xa029b745da94eda149985b61487813de1b400023cdddd863e676da1f6f349f6c4228515532 days 5 hrs ago0xd4a55bbac3c9b12758119e99977de8713a525b08  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80.11 Ether0.000525
0x4e4d0214cab6b9f3dbba73a17aec4070ff7cbb61e8282535dad52a1d9f71ff6b4226117532 days 22 hrs ago0x0aee6f207cb8314564e87e3a25994393a01497ce  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b86 Ether0.000474348
0x0b673068cfb8125a99e09518954f3e31df9af6021cf56010e82f34bf64f719e74225467533 days 2 hrs ago0x40d3384e42c84d166abb04692c9806c68bfe0954  IN   0x2fab4598bf2e09b0d2e48474984315fb36df61b80 Ether0.000119575
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0xbe7c31c23f16a619af92f143075a22c1a60c8bc7ef09a3d992afeb4f12ab5a8f4957457388 days 19 hrs ago0x2fab4598bf2e09b0d2e48474984315fb36df61b80xc965cac53c36aea94ebcb0645e465d1f6d187e7612,948.3791624944 Ether
0x93433fbe3e77b8f574f7900ea18c73ef70ca281e699388e29efcff49e44f04734852919407 days 16 hrs ago0x2fab4598bf2e09b0d2e48474984315fb36df61b80xd5848193daa6b9acab380af5df99da3abc10b65113,000 Ether
0x442f1fff76c3ee5360f8e73a0b55c57014c77f2293ccff76156fb9e9d26a5d764470217471 days 16 hrs ago0x2fab4598bf2e09b0d2e48474984315fb36df61b80x34ddb747ad0dba2fc89714e21d2d1701eebad9f09,120.7 Ether
0x33ab2483100a562d5b9752ea4540dd0f5c5feb39f486a47e875332d317a895bb4353146493 days 19 hrs ago0x2fab4598bf2e09b0d2e48474984315fb36df61b80x57a491d445d51c351e9435289dec6d2d850aa9521,000 Ether
0xc0d805e6ae0c5064e9841aa1007bc6d33eb891ac0a05c3beca330d9c040048cb4327465502 days 17 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b85 Ether
0x9570856cb768ff9288ff158adc368312bd3fef152a8a0f8b0b82551e241003804326873502 days 22 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b81 Ether
0xf863358ee958e43c0bd2767c6c58eb1aa837516ab995c1b9c5354485bf500f9e4326830502 days 22 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b812.138720677 Ether
0x26bbbebda48acb8c085187ac1493d123ca550c0ec5c50391f5d5d4f78413c09a4326813502 days 22 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b82.05 Ether
0xd81d029f9f59ba25d4109e511571da8e50160a9051ae446805ae27b23144160d4326744502 days 23 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b80.3 Ether
0xa11a7ea8927355353303826f35071451a28525b2ef86d196b6b7e09d31ae998b4326723502 days 23 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b82.05 Ether
0x12c937a31564da66bc2ac94ac8fbc636cef24533f90bcfd1be3395ee89839a414326633503 days 28 mins ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b820.14 Ether
0xb615a7035df5a026ca83287818a19df3ef68e9ed4e8be71c5571a6c84f271ead4326284503 days 3 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b81.1 Ether
0x36b8c99896e24fd0ec0d2c3491e9d77587b173389e3e45ef9d134d901fb5b83e4326088503 days 4 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b80.081 Ether
0xa519601435b0a2eb04704412192173ed78bad53ccde4c510a14e69315181e6274325910503 days 6 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b80.5 Ether
0x291ad6a1368ec142351b878defd8b1d44e0f494b0362d7519e82063d3d07c5674325814503 days 7 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b80.55 Ether
0x9cdbbc5e56b5391f5ed5d8db7991f0544a3f278d3a0c702fca684be8c918c2834325761503 days 7 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b80.05 Ether
0xfbd8b6e76d35fe124139f61d2e61adb4e6e2e04c2c4aff4ebaa5c82a18dfdeac4325705503 days 8 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b81 Ether
0xd40e4c98d29f652e815e5ff8650a544cc3b7f6b7487dc91c3752977dc697162d4325583503 days 9 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b80.65 Ether
0x69bd64798298e130470214a4878b26fa8ecfe326cadfda3ce55abe1e99aaf7cd4325575503 days 9 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b80.3 Ether
0x8f7a1218d5599f8386a072355f664706d6138ab0b8e3a1d9e3246ed673d6716d4325533503 days 9 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b80.5 Ether
0xd8abf3790cdc71af9c06ca157ed3c7b909efa3091eceb008f3c746505b7c58214325440503 days 10 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b80.1 Ether
0xd8af9d1eabaaf1af593cce9787d5299d950bde12affa976d72e9e22601cba81a4325415503 days 10 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b81.0005 Ether
0xc3427c7b35c8d93c9be9250321c135bf696e66f3234717f292ee2162940f51694325342503 days 11 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b85 Ether
0x49506673b28a39d4d88ef5fd0627dece4c662502a07254eea5195ba1bbd3bb034325217503 days 12 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b80.98 Ether
0xf0d77490bf0c24089516a72935430d54e8e9f101f63a4b2abf86812f3ac6dd5c4325180503 days 12 hrs ago0xa17fe9a510d098ec9ebc742b217d86ee5b9ed49d0x2fab4598bf2e09b0d2e48474984315fb36df61b81.5 Ether
[ Download CSV Export 
Contract Name: MultiSigWalletWithDailyLimit
Compiler Version: v0.4.4+commit.4633f3de
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
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;
        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
606060405260405161163038038061163083398101604052805160805160a05191909201919082826000825182603282118061003a57508181115b80610043575080155b8061004c575081155b1561005657610002565b600092505b84518310156100ce576002600050600086858151811015610002576020908102909101810151600160a060020a031682528101919091526040016000205460ff16806100c45750848381518110156100025790602001906020020151600160a060020a03166000145b1561015357610002565b845160038054828255600082905290917fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b918201916020890182156101cd579160200282015b828111156101cd5782518254600160a060020a0319166c0100000000000000000000000091820291909104178255602090920191600190910190610114565b600160026000506000878681518110156100025790602001906020020151600160a060020a0316815260200190815260200160002060006101000a81548160ff02191690837f010000000000000000000000000000000000000000000000000000000000000090810204021790555060019092019161005b565b506101f39291505b80821115610213578054600160a060020a03191681556001016101d5565b505050600492909255505050600655506114199050806102176000396000f35b509056606060405236156101325760e060020a6000350463025e7c278114610180578063173825d9146101b257806320ea8d86146101df5780632f54bf6e146102135780633411c81c146102335780634bc9fdc214610260578063547415251461028357806367eeba0c146102f75780636b0c932d146103055780637065cb4814610313578063784547a71461033e5780638b51d13f1461034e5780639ace38c2146103c2578063a0e67e2b146103fd578063a8abe69a1461046e578063b5dc40c31461054d578063b77bf60014610659578063ba51a6df14610667578063c01a8c8414610693578063c6427474146106a3578063cea0862114610714578063d74f8edd1461073f578063dc8452cd1461074c578063e20056e61461075a578063ee22610b1461078a578063f059cf2b1461079a575b6107a8600034111561017e57604080513481529051600160a060020a033316917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25b565b34610002576107aa60043560038054829081101561000257600091825260209091200154600160a060020a0316905081565b34610002576107a8600435600030600160a060020a031633600160a060020a0316141515610a1a57610002565b34610002576107a8600435600160a060020a033390811660009081526002602052604090205460ff161515610c5f57610002565b34610002576107c660043560026020526000908152604090205460ff1681565b34610002576001602090815260043560009081526040808220909252602435815220546107c69060ff1681565b34610002576107da6007546000906201518001421115610d0f5750600654610d18565b34610002576107da6004356024356000805b600554811015610d1b578380156102be575060008181526020819052604090206003015460ff16155b806102e257508280156102e2575060008181526020819052604090206003015460ff165b156102ef57600191909101905b600101610295565b34610002576107da60065481565b34610002576107da60075481565b34610002576107a860043530600160a060020a031633600160a060020a0316141515610d2257610002565b34610002576107c6600435610801565b34610002576107da6004356000805b600354811015610e52576000838152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff16156103ba57600191909101905b60010161035d565b34610002576000602081905260043581526040902080546001820154600383015461087993600160a060020a03909316926002019060ff1684565b346100025760408051602080820183526000825260038054845181840281018401909552808552610923949283018282801561046257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610444575b50505050509050610d18565b34610002576109236004356024356044356064356040805160208181018352600080835283519182018452808252600554935192939192909182918059106104b35750595b9080825280602002602001820160405280156104ca575b509250600091508190505b600554811015610e58578580156104fe575060008181526020819052604090206003015460ff16155b806105225750848015610522575060008181526020819052604090206003015460ff165b156105455780838381518110156100025760209081029091010152600191909101905b6001016104d5565b34610002576109236004356040805160208181018352600080835283519182018452808252600354935192939192909182918059106105895750595b9080825280602002602001820160405280156105a0575b509250600091508190505b600354811015610ecd576000858152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561065157600380548290811015610002576000918252602090912001548351600160a060020a03909116908490849081101561000257600160a060020a03909216602092830290910190910152600191909101905b6001016105ab565b34610002576107da60055481565b34610002576107a86004355b30600160a060020a031633600160a060020a0316141515610f4957610002565b34610002576107a8600435610974565b3461000257604080516020600460443581810135601f81018490048402850184019095528484526107da948235946024803595606494929391909201918190840183828082843750949650505050505050600061096d848484600083600160a060020a0381161515610b6157610002565b34610002576107a860043530600160a060020a031633600160a060020a031614151561101457610002565b34610002576107da603281565b34610002576107da60045481565b34610002576107a8600435602435600030600160a060020a031633600160a060020a031614151561104f57610002565b34610002576107a86004356109f7565b34610002576107da60085481565b005b60408051600160a060020a039092168252519081900360200190f35b604080519115158252519081900360200190f35b60408051918252519081900360200190f35b600084815260208190526040902092506111c2845b600080805b600354811015610872576000848152600160205260408120600380549192918490811015610002576000918252602080832090910154600160a060020a0316835282019290925260400190205460ff161561086357600191909101905b600454821415610e4a57600192505b5050919050565b60408051600160a060020a03861681526020810185905282151560608201526080918101828152845460026000196101006001841615020190911604928201839052909160a0830190859080156109115780601f106108e657610100808354040283529160200191610911565b820191906000526020600020905b8154815290600101906020018083116108f457829003601f168201915b50509550505050505060405180910390f35b60405180806020018281038252838181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050019250505060405180910390f35b905061100d815b33600160a060020a03811660009081526002602052604090205460ff161515610fb457610002565b6000858152600160208181526040808420600160a060020a0333168086529252808420805460ff1916909317909255905187927f4a504a94899432a9846e1aa406dceb1bcfd538bb839071d49d1e5e23f5be30ef91a3610ce6855b6000818152602081905260408120600301548190839060ff16156107ec57610002565b600160a060020a038216600090815260026020526040902054829060ff161515610a4357610002565b600160a060020a0383166000908152600260205260408120805460ff1916905591505b60035460001901821015610b085782600160a060020a0316600360005083815481101561000257600091825260209091200154600160a060020a03161415610b3857600380546000198101908110156100025760009182526020909120015460038054600160a060020a039092169184908110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b600380546000198101808355919082908015829011610b4357600083815260209020610b43918101908301610c0e565b600190910190610a66565b505060035460045411159150610c26905057600354610c2690610673565b60055460408051608081018252878152602080820188815282840188815260006060850181905286815280845294852084518154606060020a91820291909104600160a060020a031990911617815591516001808401919091559051805160028085018054818a5298879020999b5096989497601f9481161561010002600019011604830185900484019490939291019083901061137e57805160ff19168380011785555b506113ae9291505b80821115610c225760008155600101610c0e565b5090565b604051600160a060020a038416907f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9090600090a2505050565b600082815260016020908152604080832033600160a060020a038116855292529091205483919060ff161515610cee57610002565b6000858152600160209081526040808320600160a060020a0333168085529252808320805460ff191690555187927ff6a317157440607f36269043eb55f1287a5a19ba2216afeab88cd46cbcfb88e991a35b505b50505050565b600084815260208190526040902060030154849060ff1615610c9457610002565b50600854600654035b90565b5092915050565b600160a060020a038116600090815260026020526040902054819060ff1615610d4a57610002565b81600160a060020a0381161515610d6057610002565b6003546004546001909101906032821180610d7a57508181115b80610d83575080155b80610d8c575081155b15610d9657610002565b600160a060020a0385166000908152600260205260409020805460ff19166001908117909155600380549182018082559091908281838015829011610dec57600083815260209020610dec918101908301610c0e565b50505060009283525060208220018054600160a060020a031916606060020a88810204179055604051600160a060020a038716917ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d91a25050505050565b600101610806565b50919050565b878703604051805910610e685750595b908082528060200260200182016040528015610e7f575b5093508790505b86811015610ec2578281815181101561000257906020019060200201518489830381518110156100025760209081029091010152600101610e86565b505050949350505050565b81604051805910610edb5750595b908082528060200260200182016040528015610ef2575b509350600090505b81811015610f41578281815181101561000257906020019060200201518482815181101561000257600160a060020a03909216602092830290910190910152600101610efa565b505050919050565b600354816032821180610f5b57508181115b80610f64575080155b80610f6d575081155b15610f7757610002565b60048390556040805184815290517fa3f1ee9126a074d9326c682f561767f710e927faa811f7a99829d49dc421797a9181900360200190a1505050565b6000828152602081905260409020548290600160a060020a03161515610fd957610002565b600083815260016020908152604080832033600160a060020a038116855292529091205484919060ff161561099c57610002565b9392505050565b60068190556040805182815290517fc71bdc6afaf9b1aa90a7078191d4fc1adf3bf680fca3183697df6b0dc226bca29181900360200190a150565b600160a060020a038316600090815260026020526040902054839060ff16151561107857610002565b600160a060020a038316600090815260026020526040902054839060ff16156110a057610002565b600092505b60035483101561111d5784600160a060020a0316600360005084815481101561000257600091825260209091200154600160a060020a031614156111b7578360036000508481548110156100025760009182526020909120018054600160a060020a031916606060020a928302929092049190911790555b600160a060020a03808616600081815260026020526040808220805460ff1990811690915593881682528082208054909416600117909355915190917f8001553a916ef2f495d26a907cc54d96ed840d7bda71e73194bf5a9df7a76b9091a2604051600160a060020a038516907ff39e6e1eb0edcf53c221607b54b00cd28f3196fed0a24994dc308b8f611b682d90600090a25050505050565b6001909201916110a5565b9150818061123157506002808401546000196101006001831615020116041580156112315750600183015461123190600754600090620151800142111561120d574260075560006008555b600654600854830111806112245750600854828101105b1561141057506000611414565b15610ce85760038301805460ff1916600117905581151561125b5760018301546008805490910190555b825460018085015460405160028088018054600160a060020a039096169593949093839285926000199083161561010002019091160480156112de5780601f106112b3576101008083540402835291602001916112de565b820191906000526020600020905b8154815290600101906020018083116112c157829003601f168201915b505091505060006040518083038185876185025a03f1925050501561132d5760405184907f33e13ecb54c3076d8e8bb8c2881800a4d972b792045ffae98fdf46df365fed7590600090a2610ce8565b60405184907f526441bb6c1aba3c9a4a6ca1d6545da9c2333c8c48343ef398eb858d72b7923690600090a260038301805460ff19169055811515610ce8575050600101546008805491909103905550565b82800160010185558215610c06579182015b82811115610c06578251826000505591602001919060010190611390565b5050606091909101516003909101805460ff191660f860020a9283029290920491909117905560058054600101905560405182907fc0ba8fe4b176c1714197d43b9cc6bcf797a4a7461c5fe8d0ef6e184ae7601e5190600090a2509392505050565b5060015b91905056000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000085e6ecb2b3511bffe4edf4cd3b00caf3802702e100000000000000000000000000a245706741d7949c82356ef9955dd3f7bfc21700000000000000000000000028bbf0ef519f72cafea000eaf64ed679dbdda738

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