ETH Price: $2,619.84 (-0.42%)
Gas: 6 Gwei

Contract

0x97465A514B53127F6980B925587e508F07691da7
 

Overview

ETH Balance

0.367223015431874812 ETH

Eth Value

$962.06 (@ $2,619.84/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdrawn Tokens52470012018-03-13 8:43:262343 days ago1520930606IN
0x97465A51...F07691da7
0 ETH0.0002888210
Collect Authoriz...44319822017-10-26 8:20:532481 days ago1509006053IN
0x97465A51...F07691da7
0 ETH0.000079442
Collect Authoriz...44266342017-10-25 11:44:302482 days ago1508931870IN
0x97465A51...F07691da7
0 ETH0.000317798
Collect Authoriz...44261872017-10-25 9:56:162482 days ago1508925376IN
0x97465A51...F07691da7
0 ETH0.000158894
Collect Authoriz...44261422017-10-25 9:47:072482 days ago1508924827IN
0x97465A51...F07691da7
0 ETH0.000317798
Collect Authoriz...44250532017-10-25 5:33:472482 days ago1508909627IN
0x97465A51...F07691da7
0 ETH0.00009424
Collect Authoriz...44243122017-10-25 2:28:142482 days ago1508898494IN
0x97465A51...F07691da7
0 ETH0.0007944820
Collect Authoriz...44238412017-10-25 0:38:592482 days ago1508891939IN
0x97465A51...F07691da7
0 ETH0.000005950.15
Collect Authoriz...44225852017-10-24 19:52:582482 days ago1508874778IN
0x97465A51...F07691da7
0 ETH0.0003972410
Collect Authoriz...44225802017-10-24 19:52:032482 days ago1508874723IN
0x97465A51...F07691da7
0 ETH0.0003972410
Collect Authoriz...44224582017-10-24 19:23:062482 days ago1508872986IN
0x97465A51...F07691da7
0 ETH0.000317798
Collect Authoriz...44224192017-10-24 19:15:002482 days ago1508872500IN
0x97465A51...F07691da7
0 ETH0.000198625
Collect Authoriz...44222252017-10-24 18:33:192482 days ago1508869999IN
0x97465A51...F07691da7
0 ETH0.000317798
Collect Authoriz...44222252017-10-24 18:33:192482 days ago1508869999IN
0x97465A51...F07691da7
0 ETH0.000317798
Collect Authoriz...44221032017-10-24 18:08:522482 days ago1508868532IN
0x97465A51...F07691da7
0 ETH0.000005950.15
Collect Authoriz...44220052017-10-24 17:45:392482 days ago1508867139IN
0x97465A51...F07691da7
0 ETH0.000198625
Collect Authoriz...44219702017-10-24 17:38:562482 days ago1508866736IN
0x97465A51...F07691da7
0 ETH0.000317798
Collect Authoriz...44219372017-10-24 17:29:242482 days ago1508866164IN
0x97465A51...F07691da7
0 ETH0.000158894
Collect Authoriz...44219302017-10-24 17:27:442482 days ago1508866064IN
0x97465A51...F07691da7
0 ETH0.000005950.15
Collect Authoriz...44219132017-10-24 17:24:482482 days ago1508865888IN
0x97465A51...F07691da7
0 ETH0.000158894
Collect Authoriz...44218912017-10-24 17:20:362482 days ago1508865636IN
0x97465A51...F07691da7
0 ETH0.000005950.15
Collect Authoriz...44218402017-10-24 17:08:092482 days ago1508864889IN
0x97465A51...F07691da7
0 ETH0.000218485.5
Collect Authoriz...44217792017-10-24 16:54:322482 days ago1508864072IN
0x97465A51...F07691da7
0 ETH0.0007944820
Collect Authoriz...44216782017-10-24 16:30:002482 days ago1508862600IN
0x97465A51...F07691da7
0 ETH0.0007944820
Collect Authoriz...44216592017-10-24 16:23:592482 days ago1508862239IN
0x97465A51...F07691da7
0 ETH0.0007944820
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
44319822017-10-26 8:20:532481 days ago1509006053
0x97465A51...F07691da7
1.20046609 ETH
44266342017-10-25 11:44:302482 days ago1508931870
0x97465A51...F07691da7
8.92826167 ETH
44261872017-10-25 9:56:162482 days ago1508925376
0x97465A51...F07691da7
4.93224648 ETH
44261422017-10-25 9:47:072482 days ago1508924827
0x97465A51...F07691da7
4.77853769 ETH
44243122017-10-25 2:28:142482 days ago1508898494
0x97465A51...F07691da7
2.71719571 ETH
44241942017-10-25 1:58:312482 days ago1508896711
0x97465A51...F07691da7
0.00063517 ETH
44238412017-10-25 0:38:592482 days ago1508891939
0x97465A51...F07691da7
0.82108253 ETH
44225852017-10-24 19:52:582482 days ago1508874778
0x97465A51...F07691da7
1.60476968 ETH
44225802017-10-24 19:52:032482 days ago1508874723
0x97465A51...F07691da7
2.6190266 ETH
44224582017-10-24 19:23:062482 days ago1508872986
0x97465A51...F07691da7
5.6747125 ETH
44224222017-10-24 19:15:292482 days ago1508872529
0x97465A51...F07691da7
8.92826167 ETH
44224192017-10-24 19:15:002482 days ago1508872500
0x97465A51...F07691da7
28.89018803 ETH
44222932017-10-24 18:50:372482 days ago1508871037
0x97465A51...F07691da7
2.6190266 ETH
44222252017-10-24 18:33:192482 days ago1508869999
0x97465A51...F07691da7
25.699426 ETH
44222252017-10-24 18:33:192482 days ago1508869999
0x97465A51...F07691da7
25.69685605 ETH
44221582017-10-24 18:19:512482 days ago1508869191
0x97465A51...F07691da7
1.60476968 ETH
44221502017-10-24 18:18:202482 days ago1508869100
0x97465A51...F07691da7
2.71719571 ETH
44221482017-10-24 18:17:562482 days ago1508869076
0x97465A51...F07691da7
5.6747125 ETH
44221252017-10-24 18:12:312482 days ago1508868751
0x97465A51...F07691da7
28.89018803 ETH
44221032017-10-24 18:08:522482 days ago1508868532
0x97465A51...F07691da7
40.44750321 ETH
44220052017-10-24 17:45:392482 days ago1508867139
0x97465A51...F07691da7
1.30500487 ETH
44219702017-10-24 17:38:562482 days ago1508866736
0x97465A51...F07691da7
112.30328696 ETH
44219372017-10-24 17:29:242482 days ago1508866164
0x97465A51...F07691da7
1.03405264 ETH
44219302017-10-24 17:27:442482 days ago1508866064
0x97465A51...F07691da7
2.41495238 ETH
44219132017-10-24 17:24:482482 days ago1508865888
0x97465A51...F07691da7
5.61815124 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DelayedPayments

Compiler Version
v0.4.15+commit.bbb8e64f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-09-19
*/

pragma solidity ^0.4.11;

/**
 * @title Owned contract with safe ownership pass.
 *
 * Note: all the non constant functions return false instead of throwing in case if state change
 * didn't happen yet.
 */
contract Owned {
    /**
     * Contract owner address
     */
    address public contractOwner;

    /**
     * Contract owner address
     */
    address public pendingContractOwner;

    function Owned() {
        contractOwner = msg.sender;
    }

    /**
    * @dev Owner check modifier
    */
    modifier onlyContractOwner() {
        if (contractOwner == msg.sender) {
            _;
        }
    }

    /**
     * @dev Destroy contract and scrub a data
     * @notice Only owner can call it
     */
    function destroy() onlyContractOwner {
        suicide(msg.sender);
    }

    /**
     * Prepares ownership pass.
     *
     * Can only be called by current owner.
     *
     * @param _to address of the next owner. 0x0 is not allowed.
     *
     * @return success.
     */
    function changeContractOwnership(address _to) onlyContractOwner() returns(bool) {
        if (_to  == 0x0) {
            return false;
        }

        pendingContractOwner = _to;
        return true;
    }

    /**
     * Finalize ownership pass.
     *
     * Can only be called by pending owner.
     *
     * @return success.
     */
    function claimContractOwnership() returns(bool) {
        if (pendingContractOwner != msg.sender) {
            return false;
        }

        contractOwner = pendingContractOwner;
        delete pendingContractOwner;

        return true;
    }
}


contract ERC20Interface {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed from, address indexed spender, uint256 value);
    string public symbol;

    function totalSupply() constant returns (uint256 supply);
    function balanceOf(address _owner) constant returns (uint256 balance);
    function transfer(address _to, uint256 _value) returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
    function approve(address _spender, uint256 _value) returns (bool success);
    function allowance(address _owner, address _spender) constant returns (uint256 remaining);
}

/**
 * @title Generic owned destroyable contract
 */
contract Object is Owned {
    /**
    *  Common result code. Means everything is fine.
    */
    uint constant OK = 1;
    uint constant OWNED_ACCESS_DENIED_ONLY_CONTRACT_OWNER = 8;

    function withdrawnTokens(address[] tokens, address _to) onlyContractOwner returns(uint) {
        for(uint i=0;i<tokens.length;i++) {
            address token = tokens[i];
            uint balance = ERC20Interface(token).balanceOf(this);
            if(balance != 0)
                ERC20Interface(token).transfer(_to,balance);
        }
        return OK;
    }

    function checkOnlyContractOwner() internal constant returns(uint) {
        if (contractOwner == msg.sender) {
            return OK;
        }

        return OWNED_ACCESS_DENIED_ONLY_CONTRACT_OWNER;
    }
}


/**
 * @title General MultiEventsHistory user.
 *
 */
contract MultiEventsHistoryAdapter {

    /**
    *   @dev It is address of MultiEventsHistory caller assuming we are inside of delegate call.
    */
    function _self() constant internal returns (address) {
        return msg.sender;
    }
}

contract DelayedPaymentsEmitter is MultiEventsHistoryAdapter {
    event Error(bytes32 message);

    function emitError(bytes32 _message) {
        Error(_message);
    }
}

contract DelayedPayments is Object {
   
    uint constant DELAYED_PAYMENTS_SCOPE = 52000;
    uint constant DELAYED_PAYMENTS_INVALID_INVOCATION = DELAYED_PAYMENTS_SCOPE + 17;

    /// @dev `Payment` is a public structure that describes the details of
    ///  each payment making it easy to track the movement of funds
    ///  transparently
    struct Payment {
        address spender;        // Who is sending the funds
        uint earliestPayTime;   // The earliest a payment can be made (Unix Time)
        bool canceled;         // If True then the payment has been canceled
        bool paid;              // If True then the payment has been paid
        address recipient;      // Who is receiving the funds
        uint amount;            // The amount of wei sent in the payment
        uint securityGuardDelay;// The seconds `securityGuard` can delay payment
    }

    Payment[] public authorizedPayments;

    address public securityGuard;
    uint public absoluteMinTimeLock;
    uint public timeLock;
    uint public maxSecurityGuardDelay;

    // Should use interface of the emitter, but address of events history.
    address public eventsHistory;

    /// @dev The white list of approved addresses allowed to set up && receive
    ///  payments from this vault
    mapping (address => bool) public allowedSpenders;

    /// @dev The address assigned the role of `securityGuard` is the only
    ///  addresses that can call a function with this modifier
    modifier onlySecurityGuard { if (msg.sender != securityGuard) throw; _; }

    // @dev Events to make the payment movements easy to find on the blockchain
    event PaymentAuthorized(uint indexed idPayment, address indexed recipient, uint amount);
    event PaymentExecuted(uint indexed idPayment, address indexed recipient, uint amount);
    event PaymentCanceled(uint indexed idPayment);
    event EtherReceived(address indexed from, uint amount);
    event SpenderAuthorization(address indexed spender, bool authorized);

/////////
// Constructor
/////////

    /// @notice The Constructor creates the Vault on the blockchain
    /// @param _absoluteMinTimeLock The minimum number of seconds `timelock` can
    ///  be set to, if set to 0 the `owner` can remove the `timeLock` completely
    /// @param _timeLock Initial number of seconds that payments are delayed
    ///  after they are authorized (a security precaution)
    /// @param _maxSecurityGuardDelay The maximum number of seconds in total
    ///   that `securityGuard` can delay a payment so that the owner can cancel
    ///   the payment if needed
    function DelayedPayments(
        uint _absoluteMinTimeLock,
        uint _timeLock,
        uint _maxSecurityGuardDelay) 
    {
        absoluteMinTimeLock = _absoluteMinTimeLock;
        timeLock = _timeLock;
        securityGuard = msg.sender;
        maxSecurityGuardDelay = _maxSecurityGuardDelay;
    }

    /**
     * Emits Error event with specified error message.
     *
     * Should only be used if no state changes happened.
     *
     * @param _errorCode code of an error
     * @param _message error message.
     */
    function _error(uint _errorCode, bytes32 _message) internal returns(uint) {
        DelayedPaymentsEmitter(eventsHistory).emitError(_message);
        return _errorCode;
    }

    /**
     * Sets EventsHstory contract address.
     *
     * Can be set only once, and only by contract owner.
     *
     * @param _eventsHistory MultiEventsHistory contract address.
     *
     * @return success.
     */
    function setupEventsHistory(address _eventsHistory) returns(uint errorCode) {
        errorCode = checkOnlyContractOwner();
        if (errorCode != OK) {
            return errorCode;
        }
        if (eventsHistory != 0x0 && eventsHistory != _eventsHistory) {
            return DELAYED_PAYMENTS_INVALID_INVOCATION;
        }
        eventsHistory = _eventsHistory;
        return OK;
    }

/////////
// Helper functions
/////////

    /// @notice States the total number of authorized payments in this contract
    /// @return The number of payments ever authorized even if they were canceled
    function numberOfAuthorizedPayments() constant returns (uint) {
        return authorizedPayments.length;
    }

//////
// Receive Ether
//////

    /// @notice Called anytime ether is sent to the contract && creates an event
    /// to more easily track the incoming transactions
    function receiveEther() payable {
        EtherReceived(msg.sender, msg.value);
    }

    /// @notice The fall back function is called whenever ether is sent to this
    ///  contract
    function () payable {
        receiveEther();
    }

////////
// Spender Interface
////////

    /// @notice only `allowedSpenders[]` Creates a new `Payment`
    /// @param _recipient Destination of the payment
    /// @param _amount Amount to be paid in wei
    /// @param _paymentDelay Number of seconds the payment is to be delayed, if
    ///  this value is below `timeLock` then the `timeLock` determines the delay
    /// @return The Payment ID number for the new authorized payment
    function authorizePayment(
        address _recipient,
        uint _amount,
        uint _paymentDelay
    ) returns(uint) {

        // Fail if you arent on the `allowedSpenders` white list
        if (!allowedSpenders[msg.sender]) throw;
        uint idPayment = authorizedPayments.length;       // Unique Payment ID
        authorizedPayments.length++;

        // The following lines fill out the payment struct
        Payment p = authorizedPayments[idPayment];
        p.spender = msg.sender;

        // Overflow protection
        if (_paymentDelay > 10**18) throw;

        // Determines the earliest the recipient can receive payment (Unix time)
        p.earliestPayTime = _paymentDelay >= timeLock ?
                                now + _paymentDelay :
                                now + timeLock;
        p.recipient = _recipient;
        p.amount = _amount;
        PaymentAuthorized(idPayment, p.recipient, p.amount);
        return idPayment;
    }

    /// @notice only `allowedSpenders[]` The recipient of a payment calls this
    ///  function to send themselves the ether after the `earliestPayTime` has
    ///  expired
    /// @param _idPayment The payment ID to be executed
    function collectAuthorizedPayment(uint _idPayment) {

        // Check that the `_idPayment` has been added to the payments struct
        if (_idPayment >= authorizedPayments.length) return;

        Payment p = authorizedPayments[_idPayment];

        // Checking for reasons not to execute the payment
        if (msg.sender != p.recipient) return;
        if (now < p.earliestPayTime) return;
        if (p.canceled) return;
        if (p.paid) return;
        if (this.balance < p.amount) return;

        p.paid = true; // Set the payment to being paid
        if (!p.recipient.send(p.amount)) {  // Make the payment
            return;
        }
        PaymentExecuted(_idPayment, p.recipient, p.amount);
     }

/////////
// SecurityGuard Interface
/////////

    /// @notice `onlySecurityGuard` Delays a payment for a set number of seconds
    /// @param _idPayment ID of the payment to be delayed
    /// @param _delay The number of seconds to delay the payment
    function delayPayment(uint _idPayment, uint _delay) onlySecurityGuard {
        if (_idPayment >= authorizedPayments.length) throw;

        // Overflow test
        if (_delay > 10**18) throw;

        Payment p = authorizedPayments[_idPayment];

        if ((p.securityGuardDelay + _delay > maxSecurityGuardDelay) ||
            (p.paid) ||
            (p.canceled))
            throw;

        p.securityGuardDelay += _delay;
        p.earliestPayTime += _delay;
    }

////////
// Owner Interface
///////

    /// @notice `onlyOwner` Cancel a payment all together
    /// @param _idPayment ID of the payment to be canceled.
    function cancelPayment(uint _idPayment) onlyContractOwner {
        if (_idPayment >= authorizedPayments.length) throw;

        Payment p = authorizedPayments[_idPayment];


        if (p.canceled) throw;
        if (p.paid) throw;

        p.canceled = true;
        PaymentCanceled(_idPayment);
    }

    /// @notice `onlyOwner` Adds a spender to the `allowedSpenders[]` white list
    /// @param _spender The address of the contract being authorized/unauthorized
    /// @param _authorize `true` if authorizing and `false` if unauthorizing
    function authorizeSpender(address _spender, bool _authorize) onlyContractOwner {
        allowedSpenders[_spender] = _authorize;
        SpenderAuthorization(_spender, _authorize);
    }

    /// @notice `onlyOwner` Sets the address of `securityGuard`
    /// @param _newSecurityGuard Address of the new security guard
    function setSecurityGuard(address _newSecurityGuard) onlyContractOwner {
        securityGuard = _newSecurityGuard;
    }

    /// @notice `onlyOwner` Changes `timeLock`; the new `timeLock` cannot be
    ///  lower than `absoluteMinTimeLock`
    /// @param _newTimeLock Sets the new minimum default `timeLock` in seconds;
    ///  pending payments maintain their `earliestPayTime`
    function setTimelock(uint _newTimeLock) onlyContractOwner {
        if (_newTimeLock < absoluteMinTimeLock) throw;
        timeLock = _newTimeLock;
    }

    /// @notice `onlyOwner` Changes the maximum number of seconds
    /// `securityGuard` can delay a payment
    /// @param _maxSecurityGuardDelay The new maximum delay in seconds that
    ///  `securityGuard` can delay the payment's execution in total
    function setMaxSecurityGuardDelay(uint _maxSecurityGuardDelay) onlyContractOwner {
        maxSecurityGuardDelay = _maxSecurityGuardDelay;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_eventsHistory","type":"address"}],"name":"setupEventsHistory","outputs":[{"name":"errorCode","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxSecurityGuardDelay","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newTimeLock","type":"uint256"}],"name":"setTimelock","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"claimContractOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"changeContractOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"pendingContractOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"numberOfAuthorizedPayments","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_authorize","type":"bool"}],"name":"authorizeSpender","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"destroy","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"}],"name":"cancelPayment","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"},{"name":"_delay","type":"uint256"}],"name":"delayPayment","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_idPayment","type":"uint256"}],"name":"collectAuthorizedPayment","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"authorizedPayments","outputs":[{"name":"spender","type":"address"},{"name":"earliestPayTime","type":"uint256"},{"name":"canceled","type":"bool"},{"name":"paid","type":"bool"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"},{"name":"securityGuardDelay","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"receiveEther","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"securityGuard","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newSecurityGuard","type":"address"}],"name":"setSecurityGuard","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_paymentDelay","type":"uint256"}],"name":"authorizePayment","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"contractOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"timeLock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"allowedSpenders","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"tokens","type":"address[]"},{"name":"_to","type":"address"}],"name":"withdrawnTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_maxSecurityGuardDelay","type":"uint256"}],"name":"setMaxSecurityGuardDelay","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"absoluteMinTimeLock","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"eventsHistory","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_absoluteMinTimeLock","type":"uint256"},{"name":"_timeLock","type":"uint256"},{"name":"_maxSecurityGuardDelay","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"},{"indexed":true,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"PaymentAuthorized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"},{"indexed":true,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"PaymentExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"idPayment","type":"uint256"}],"name":"PaymentCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EtherReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"authorized","type":"bool"}],"name":"SpenderAuthorization","type":"event"}]

6060604052341561000f57600080fd5b604051606080610f298339810160405280805191906020018051919060200180519150505b5b60008054600160a060020a03191633600160a060020a03161790555b6004839055600582905560038054600160a060020a03191633600160a060020a031617905560068190555b5050505b610e9a8061008f6000396000f300606060405236156101225763ffffffff60e060020a60003504166302927d20811461012e5780630b2e74231461015f5780631e891c0a146101845780634592cd1d1461019c578063557f4bc9146101c35780635aa77d3c146101f657806368b8c5a114610225578063793c0fd41461024a57806383197ef0146102705780638422927d14610285578063846a5dde1461029d57806392e4b8a4146102b8578063a0927a6a146102d0578063a3912ec814610122578063b2ca3ec41461033b578063bb2a51d11461036a578063c17337121461038b578063ce606ee0146103c2578063d085835a146103f1578063d8528af014610416578063d8f9659b14610449578063da4793ac146104b5578063ea8a66c7146104cd578063f07629f8146104f2575b5b61012b610521565b5b005b341561013957600080fd5b61014d600160a060020a0360043516610561565b60405190815260200160405180910390f35b341561016a57600080fd5b61014d6105d4565b60405190815260200160405180910390f35b341561018f57600080fd5b61012b6004356105da565b005b34156101a757600080fd5b6101af61060b565b604051901515815260200160405180910390f35b34156101ce57600080fd5b6101af600160a060020a0360043516610656565b604051901515815260200160405180910390f35b341561020157600080fd5b6102096106aa565b604051600160a060020a03909116815260200160405180910390f35b341561023057600080fd5b61014d6106b9565b60405190815260200160405180910390f35b341561025557600080fd5b61012b600160a060020a036004351660243515156106c0565b005b341561027b57600080fd5b61012b610739565b005b341561029057600080fd5b61012b600435610760565b005b34156102a857600080fd5b61012b600435602435610815565b005b34156102c357600080fd5b61012b6004356108cb565b005b34156102db57600080fd5b6102e6600435610a27565b604051600160a060020a039788168152602081019690965293151560408087019190915292151560608601529416608084015260a083019390935260c082015260e001905180910390f35b61012b610521565b005b341561034657600080fd5b610209610a88565b604051600160a060020a03909116815260200160405180910390f35b341561037557600080fd5b61012b600160a060020a0360043516610a97565b005b341561039657600080fd5b61014d600160a060020a0360043516602435604435610acf565b60405190815260200160405180910390f35b34156103cd57600080fd5b610209610c01565b604051600160a060020a03909116815260200160405180910390f35b34156103fc57600080fd5b61014d610c10565b60405190815260200160405180910390f35b341561042157600080fd5b6101af600160a060020a0360043516610c16565b604051901515815260200160405180910390f35b341561045457600080fd5b61014d600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965050509235600160a060020a03169250610c2b915050565b60405190815260200160405180910390f35b34156104c057600080fd5b61012b600435610d7d565b005b34156104d857600080fd5b61014d610d9f565b60405190815260200160405180910390f35b34156104fd57600080fd5b610209610da5565b604051600160a060020a03909116815260200160405180910390f35b33600160a060020a03167f1e57e3bb474320be3d2c77138f75b7c3941292d647f5f9634e33a8e94e0e069b3460405190815260200160405180910390a25b565b600061056b610db4565b90506001811461057a576105cf565b600754600160a060020a0316158015906105a25750600754600160a060020a03838116911614155b156105b0575061cb316105cf565b5060078054600160a060020a031916600160a060020a03831617905560015b919050565b60065481565b60005433600160a060020a03908116911614156106065760045481101561060057600080fd5b60058190555b5b5b50565b60015460009033600160a060020a0390811691161461062c57506000610653565b506001805460008054600160a060020a0319908116600160a060020a038416179091551681555b90565b6000805433600160a060020a03908116911614156105cf57600160a060020a0382161515610686575060006105cf565b5060018054600160a060020a031916600160a060020a0383161781555b5b5b919050565b600154600160a060020a031681565b6002545b90565b60005433600160a060020a039081169116141561073357600160a060020a03821660008181526008602052604090819020805460ff19168415151790557f801f568efbc3346a6ae3d0c3eb335a30d64e0d3cf08f1c39626d62cd5c82728190839051901515815260200160405180910390a25b5b5b5050565b60005433600160a060020a039081169116141561055f5733600160a060020a0316ff5b5b5b565b6000805433600160a060020a039081169116141561073357600254821061078657600080fd5b600280548390811061079457fe5b906000526020600020906005020160005b50600281015490915060ff16156107bb57600080fd5b6002810154610100900460ff16156107d257600080fd5b60028101805460ff19166001179055817ffdf197ed54809861dafe0b4d391843652730ac67274c1e9e46db7687dccaa30160405160405180910390a25b5b5b5050565b60035460009033600160a060020a0390811691161461083357600080fd5b600254831061084157600080fd5b670de0b6b3a764000082111561085657600080fd5b600280548490811061086457fe5b906000526020600020906005020160005b50905060065482826004015401118061089757506002810154610100900460ff165b806108a65750600281015460ff165b156108b057600080fd5b60048101805483019055600181018054830190555b5b505050565b60025460009082106108dc57610733565b60028054839081106108ea57fe5b906000526020600020906005020160005b50600281015490915033600160a060020a0390811662010000909204161461092257610733565b806001015442101561093357610733565b600281015460ff161561094557610733565b6002810154610100900460ff161561095c57610733565b806003015430600160a060020a031631101561097757610733565b60028101805461010061ff00199091161790819055600382015462010000909104600160a060020a0316906108fc81150290604051600060405180830381858888f1935050505015156109c957610733565b8060020160029054906101000a9004600160a060020a0316600160a060020a0316827f7f5bfe3018715b26a7067888a5c42912fbb3485170b8154ea9a448661f2f0de2836003015460405190815260200160405180910390a35b5050565b6002805482908110610a3557fe5b906000526020600020906005020160005b508054600182015460028301546003840154600490940154600160a060020a039384169550919360ff8083169461010084049091169362010000909304169187565b600354600160a060020a031681565b60005433600160a060020a03908116911614156106065760038054600160a060020a031916600160a060020a0383161790555b5b5b50565b600160a060020a0333166000908152600860205260408120548190819060ff161515610afa57600080fd5b6002805492508290610b0f9060018301610ddb565b506002805483908110610b1e57fe5b906000526020600020906005020160005b508054600160a060020a03191633600160a060020a03161781559050670de0b6b3a7640000841115610b6057600080fd5b600554841015610b74576005544201610b78565b8342015b600182015560028101805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a03898116820292909217928390556003840188905590910416827f47e9633c99dd05fabd1b937e7c85f9e00d6866bfd2e5885e0091f40a173be3d38760405190815260200160405180910390a38192505b50509392505050565b600054600160a060020a031681565b60055481565b60086020526000908152604090205460ff1681565b6000805481908190819033600160a060020a0390811691161415610d7257600092505b8551831015610d6d57858381518110610c6357fe5b90602001906020020151915081600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610cc657600080fd5b6102c65a03f11515610cd757600080fd5b50505060405180519150508015610d615781600160a060020a031663a9059cbb868360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610d4557600080fd5b6102c65a03f11515610d5657600080fd5b505050604051805150505b5b600190920191610c4e565b600193505b5b5b50505092915050565b60005433600160a060020a03908116911614156106065760068190555b5b5b50565b60045481565b600754600160a060020a031681565b6000805433600160a060020a0390811691161415610dd457506001610653565b5060085b90565b8154818355818115116108c5576005028160050283600052602060002091820191016108c59190610e0d565b5b505050565b61065391905b80821115610e67578054600160a060020a031916815560006001820181905560028201805475ffffffffffffffffffffffffffffffffffffffffffff19169055600382018190556004820155600501610e13565b5090565b905600a165627a7a72305820f0e4f0a656ad9b7514b6590be5896e31a5b27aa9346560717b66141b46c07e5800290000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a

Deployed Bytecode

0x606060405236156101225763ffffffff60e060020a60003504166302927d20811461012e5780630b2e74231461015f5780631e891c0a146101845780634592cd1d1461019c578063557f4bc9146101c35780635aa77d3c146101f657806368b8c5a114610225578063793c0fd41461024a57806383197ef0146102705780638422927d14610285578063846a5dde1461029d57806392e4b8a4146102b8578063a0927a6a146102d0578063a3912ec814610122578063b2ca3ec41461033b578063bb2a51d11461036a578063c17337121461038b578063ce606ee0146103c2578063d085835a146103f1578063d8528af014610416578063d8f9659b14610449578063da4793ac146104b5578063ea8a66c7146104cd578063f07629f8146104f2575b5b61012b610521565b5b005b341561013957600080fd5b61014d600160a060020a0360043516610561565b60405190815260200160405180910390f35b341561016a57600080fd5b61014d6105d4565b60405190815260200160405180910390f35b341561018f57600080fd5b61012b6004356105da565b005b34156101a757600080fd5b6101af61060b565b604051901515815260200160405180910390f35b34156101ce57600080fd5b6101af600160a060020a0360043516610656565b604051901515815260200160405180910390f35b341561020157600080fd5b6102096106aa565b604051600160a060020a03909116815260200160405180910390f35b341561023057600080fd5b61014d6106b9565b60405190815260200160405180910390f35b341561025557600080fd5b61012b600160a060020a036004351660243515156106c0565b005b341561027b57600080fd5b61012b610739565b005b341561029057600080fd5b61012b600435610760565b005b34156102a857600080fd5b61012b600435602435610815565b005b34156102c357600080fd5b61012b6004356108cb565b005b34156102db57600080fd5b6102e6600435610a27565b604051600160a060020a039788168152602081019690965293151560408087019190915292151560608601529416608084015260a083019390935260c082015260e001905180910390f35b61012b610521565b005b341561034657600080fd5b610209610a88565b604051600160a060020a03909116815260200160405180910390f35b341561037557600080fd5b61012b600160a060020a0360043516610a97565b005b341561039657600080fd5b61014d600160a060020a0360043516602435604435610acf565b60405190815260200160405180910390f35b34156103cd57600080fd5b610209610c01565b604051600160a060020a03909116815260200160405180910390f35b34156103fc57600080fd5b61014d610c10565b60405190815260200160405180910390f35b341561042157600080fd5b6101af600160a060020a0360043516610c16565b604051901515815260200160405180910390f35b341561045457600080fd5b61014d600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965050509235600160a060020a03169250610c2b915050565b60405190815260200160405180910390f35b34156104c057600080fd5b61012b600435610d7d565b005b34156104d857600080fd5b61014d610d9f565b60405190815260200160405180910390f35b34156104fd57600080fd5b610209610da5565b604051600160a060020a03909116815260200160405180910390f35b33600160a060020a03167f1e57e3bb474320be3d2c77138f75b7c3941292d647f5f9634e33a8e94e0e069b3460405190815260200160405180910390a25b565b600061056b610db4565b90506001811461057a576105cf565b600754600160a060020a0316158015906105a25750600754600160a060020a03838116911614155b156105b0575061cb316105cf565b5060078054600160a060020a031916600160a060020a03831617905560015b919050565b60065481565b60005433600160a060020a03908116911614156106065760045481101561060057600080fd5b60058190555b5b5b50565b60015460009033600160a060020a0390811691161461062c57506000610653565b506001805460008054600160a060020a0319908116600160a060020a038416179091551681555b90565b6000805433600160a060020a03908116911614156105cf57600160a060020a0382161515610686575060006105cf565b5060018054600160a060020a031916600160a060020a0383161781555b5b5b919050565b600154600160a060020a031681565b6002545b90565b60005433600160a060020a039081169116141561073357600160a060020a03821660008181526008602052604090819020805460ff19168415151790557f801f568efbc3346a6ae3d0c3eb335a30d64e0d3cf08f1c39626d62cd5c82728190839051901515815260200160405180910390a25b5b5b5050565b60005433600160a060020a039081169116141561055f5733600160a060020a0316ff5b5b5b565b6000805433600160a060020a039081169116141561073357600254821061078657600080fd5b600280548390811061079457fe5b906000526020600020906005020160005b50600281015490915060ff16156107bb57600080fd5b6002810154610100900460ff16156107d257600080fd5b60028101805460ff19166001179055817ffdf197ed54809861dafe0b4d391843652730ac67274c1e9e46db7687dccaa30160405160405180910390a25b5b5b5050565b60035460009033600160a060020a0390811691161461083357600080fd5b600254831061084157600080fd5b670de0b6b3a764000082111561085657600080fd5b600280548490811061086457fe5b906000526020600020906005020160005b50905060065482826004015401118061089757506002810154610100900460ff165b806108a65750600281015460ff165b156108b057600080fd5b60048101805483019055600181018054830190555b5b505050565b60025460009082106108dc57610733565b60028054839081106108ea57fe5b906000526020600020906005020160005b50600281015490915033600160a060020a0390811662010000909204161461092257610733565b806001015442101561093357610733565b600281015460ff161561094557610733565b6002810154610100900460ff161561095c57610733565b806003015430600160a060020a031631101561097757610733565b60028101805461010061ff00199091161790819055600382015462010000909104600160a060020a0316906108fc81150290604051600060405180830381858888f1935050505015156109c957610733565b8060020160029054906101000a9004600160a060020a0316600160a060020a0316827f7f5bfe3018715b26a7067888a5c42912fbb3485170b8154ea9a448661f2f0de2836003015460405190815260200160405180910390a35b5050565b6002805482908110610a3557fe5b906000526020600020906005020160005b508054600182015460028301546003840154600490940154600160a060020a039384169550919360ff8083169461010084049091169362010000909304169187565b600354600160a060020a031681565b60005433600160a060020a03908116911614156106065760038054600160a060020a031916600160a060020a0383161790555b5b5b50565b600160a060020a0333166000908152600860205260408120548190819060ff161515610afa57600080fd5b6002805492508290610b0f9060018301610ddb565b506002805483908110610b1e57fe5b906000526020600020906005020160005b508054600160a060020a03191633600160a060020a03161781559050670de0b6b3a7640000841115610b6057600080fd5b600554841015610b74576005544201610b78565b8342015b600182015560028101805475ffffffffffffffffffffffffffffffffffffffff0000191662010000600160a060020a03898116820292909217928390556003840188905590910416827f47e9633c99dd05fabd1b937e7c85f9e00d6866bfd2e5885e0091f40a173be3d38760405190815260200160405180910390a38192505b50509392505050565b600054600160a060020a031681565b60055481565b60086020526000908152604090205460ff1681565b6000805481908190819033600160a060020a0390811691161415610d7257600092505b8551831015610d6d57858381518110610c6357fe5b90602001906020020151915081600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610cc657600080fd5b6102c65a03f11515610cd757600080fd5b50505060405180519150508015610d615781600160a060020a031663a9059cbb868360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610d4557600080fd5b6102c65a03f11515610d5657600080fd5b505050604051805150505b5b600190920191610c4e565b600193505b5b5b50505092915050565b60005433600160a060020a03908116911614156106065760068190555b5b5b50565b60045481565b600754600160a060020a031681565b6000805433600160a060020a0390811691161415610dd457506001610653565b5060085b90565b8154818355818115116108c5576005028160050283600052602060002091820191016108c59190610e0d565b5b505050565b61065391905b80821115610e67578054600160a060020a031916815560006001820181905560028201805475ffffffffffffffffffffffffffffffffffffffffffff19169055600382018190556004820155600501610e13565b5090565b905600a165627a7a72305820f0e4f0a656ad9b7514b6590be5896e31a5b27aa9346560717b66141b46c07e580029

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

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A000000000000000000000000000000000000000000000000000000000000000A

-----Decoded View---------------
Arg [0] : _absoluteMinTimeLock (uint256): 0
Arg [1] : _timeLock (uint256): 10
Arg [2] : _maxSecurityGuardDelay (uint256): 10

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 000000000000000000000000000000000000000000000000000000000000000A
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000A


Swarm Source

bzzr://f0e4f0a656ad9b7514b6590be5896e31a5b27aa9346560717b66141b46c07e58

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.