ETH Price: $3,358.09 (-8.70%)

Contract

0x3c68dfc45dc92C9c605d92B49858073e10b857A6
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Complete Authori...180170682023-08-29 1:39:47479 days ago1693273187IN
Tokenlon: Spender
0 ETH0.0010601522.43995842
Activate Timeloc...116908932021-01-20 7:24:321429 days ago1611127472IN
Tokenlon: Spender
0 ETH0.0025058357
Transfer Ownersh...114630562020-12-16 8:33:531464 days ago1608107633IN
Tokenlon: Spender
0 ETH0.0014217550
Authorize114630552020-12-16 8:33:301464 days ago1608107610IN
Tokenlon: Spender
0 ETH0.0034088550
Set Allowance Ta...114630032020-12-16 8:20:341464 days ago1608106834IN
Tokenlon: Spender
0 ETH0.0015917736.00000145

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Spender

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-12-18
*/

// SPDX-License-Identifier: MIT
// File: @openzeppelin/contracts/math/SafeMath.sol


pragma solidity ^0.6.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


pragma solidity ^0.6.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: contracts/interface/IAllowanceTarget.sol

pragma solidity ^0.6.0;

interface IAllowanceTarget {
    function setSpenderWithTimelock(address _newSpender) external;
    function completeSetSpender() external;
    function executeCall(address payable _target, bytes calldata _callData) external returns (bytes memory resultData);
    function teardown() external;
}

// File: contracts/Spender.sol


pragma solidity ^0.6.5;




/**
 * @dev Spender contract
 */
contract Spender {
    using SafeMath for uint256;

    // Constants do not have storage slot.
    address private constant ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
    address private constant ZERO_ADDRESS = address(0);
    uint256 constant private TIME_LOCK_DURATION = 1 days;

    // Below are the variables which consume storage slots.
    address public operator;
    address public allowanceTarget;
    mapping(address => bool) private authorized;
    mapping(address => bool) private tokenBlacklist;
    uint256 public numPendingAuthorized;
    mapping(uint256 => address) public pendingAuthorized;
    uint256 public timelockExpirationTime;
    uint256 public contractDeployedTime;
    bool public timelockActivated;



    /************************************************************
    *          Access control and ownership management          *
    *************************************************************/
    modifier onlyOperator() {
        require(operator == msg.sender, "Spender: not the operator");
        _;
    }

    modifier onlyAuthorized() {
        require(authorized[msg.sender], "Spender: not authorized");
        _;
    }

    function transferOwnership(address _newOperator) external onlyOperator {
        require(_newOperator != address(0), "Spender: operator can not be zero address");
        operator = _newOperator;
    }


    /************************************************************
    *                    Timelock management                    *
    *************************************************************/
    /// @dev Everyone can activate timelock after the contract has been deployed for more than 1 day.
    function activateTimelock() external {
        bool canActivate = block.timestamp.sub(contractDeployedTime) > 1 days;
        require(canActivate && ! timelockActivated, "Spender: can not activate timelock yet or has been activated");
        timelockActivated = true;
    }


    /************************************************************
    *              Constructor and init functions               *
    *************************************************************/
    constructor(address _operator) public {
        require(_operator != address(0), "Spender: _operator should not be 0");

        // Set operator
        operator = _operator;
        timelockActivated = false;
        contractDeployedTime = block.timestamp;
    }

    function setAllowanceTarget(address _allowanceTarget) external onlyOperator {
        require(allowanceTarget == address(0), "Spender: can not reset allowance target");

        // Set allowanceTarget
        allowanceTarget = _allowanceTarget;
    }



    /************************************************************
    *          AllowanceTarget interaction functions            *
    *************************************************************/
    function setNewSpender(address _newSpender) external onlyOperator {
        IAllowanceTarget(allowanceTarget).setSpenderWithTimelock(_newSpender);
    }

    function teardownAllowanceTarget() external onlyOperator {
        IAllowanceTarget(allowanceTarget).teardown();
    }



    /************************************************************
    *           Whitelist and blacklist functions               *
    *************************************************************/
    function isBlacklisted(address _tokenAddr) external view returns (bool) {
        return tokenBlacklist[_tokenAddr];
    }

    function blacklist(address[] calldata _tokenAddrs, bool[] calldata _isBlacklisted) external onlyOperator {
        require(_tokenAddrs.length == _isBlacklisted.length, "Spender: length mismatch");
        for (uint256 i = 0; i < _tokenAddrs.length; i++) {
            tokenBlacklist[_tokenAddrs[i]] = _isBlacklisted[i];
        }
    }
    
    function isAuthorized(address _caller) external view returns (bool) {
        return authorized[_caller];
    }

    function authorize(address[] calldata _pendingAuthorized) external onlyOperator {
        require(_pendingAuthorized.length > 0, "Spender: authorize list is empty");
        require(numPendingAuthorized == 0 && timelockExpirationTime == 0, "Spender: an authorize current in progress");

        if (timelockActivated) {
            numPendingAuthorized = _pendingAuthorized.length;
            for (uint256 i = 0; i < _pendingAuthorized.length; i++) {
                require(_pendingAuthorized[i] != address(0), "Spender: can not authorize zero address");
                pendingAuthorized[i] = _pendingAuthorized[i];
            }
            timelockExpirationTime = now + TIME_LOCK_DURATION;
        } else {
            for (uint256 i = 0; i < _pendingAuthorized.length; i++) {
                require(_pendingAuthorized[i] != address(0), "Spender: can not authorize zero address");
                authorized[_pendingAuthorized[i]] = true;
            }
        }
    }

    function completeAuthorize() external {
        require(timelockExpirationTime != 0, "Spender: no pending authorize");
        require(now >= timelockExpirationTime, "Spender: time lock not expired yet");

        for (uint256 i = 0; i < numPendingAuthorized; i++) {
            authorized[pendingAuthorized[i]] = true;
            delete pendingAuthorized[i];
        }
        timelockExpirationTime = 0;
        numPendingAuthorized = 0;
    }

    function deauthorize(address[] calldata _deauthorized) external onlyOperator {
        for (uint256 i = 0; i < _deauthorized.length; i++) {
            authorized[_deauthorized[i]] = false;
        }
    }


    /************************************************************
    *                   External functions                      *
    *************************************************************/
    /// @dev Spend tokens on user's behalf. Only an authority can call this.
    /// @param _user The user to spend token from.
    /// @param _tokenAddr The address of the token.
    /// @param _amount Amount to spend.
    function spendFromUser(address _user, address _tokenAddr, uint256 _amount) external onlyAuthorized {
        require(! tokenBlacklist[_tokenAddr], "Spender: token is blacklisted");

        if (_tokenAddr != ETH_ADDRESS && _tokenAddr != ZERO_ADDRESS) {

            uint256 balanceBefore = IERC20(_tokenAddr).balanceOf(msg.sender);
            (bool callSucceed, ) = address(allowanceTarget).call(
                abi.encodeWithSelector(
                    IAllowanceTarget.executeCall.selector,
                    _tokenAddr,
                    abi.encodeWithSelector(
                        IERC20.transferFrom.selector,
                        _user,
                        msg.sender,
                        _amount
                    )
                )
            );
            require(callSucceed, "Spender: ERC20 transferFrom failed");
            // Check balance
            uint256 balanceAfter = IERC20(_tokenAddr).balanceOf(msg.sender);
            require(balanceAfter.sub(balanceBefore) == _amount, "Spender: ERC20 transferFrom result mismatch");

        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"activateTimelock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allowanceTarget","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_pendingAuthorized","type":"address[]"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokenAddrs","type":"address[]"},{"internalType":"bool[]","name":"_isBlacklisted","type":"bool[]"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"completeAuthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractDeployedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_deauthorized","type":"address[]"}],"name":"deauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numPendingAuthorized","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pendingAuthorized","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_allowanceTarget","type":"address"}],"name":"setAllowanceTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newSpender","type":"address"}],"name":"setNewSpender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"spendFromUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"teardownAllowanceTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"timelockActivated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelockExpirationTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOperator","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506040516116573803806116578339818101604052602081101561003357600080fd5b50516001600160a01b03811661007a5760405162461bcd60e51b81526004018080602001828103825260228152602001806116356022913960400191505060405180910390fd5b600080546001600160a01b039092166001600160a01b03199092169190911790556008805460ff191690554260075561157d806100b86000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80637d131c2a116100cd578063e1727fc611610081578063f9c7a0d111610066578063f9c7a0d114610441578063fe575a8714610449578063fe9fbb801461046f57610151565b8063e1727fc614610413578063f2fde38b1461041b57610151565b80638a14c759116100b25780638a14c75914610323578063910cab1114610349578063afd381841461035157610151565b80637d131c2a1461028d57806384e45689146102b357610151565b8063570ca735116101245780636e3a1b16116101095780636e3a1b161461024f57806371f1531c14610269578063727c56c01461028557610151565b8063570ca7351461023f57806363a5d2981461024757610151565b80631f074f9b1461015657806323ce8e03146101605780632fcca3ac146101995780633474ad1a14610209575b600080fd5b61015e610495565b005b61017d6004803603602081101561017657600080fd5b503561055e565b604080516001600160a01b039092168252519081900360200190f35b61015e600480360360208110156101af57600080fd5b8101906020810181356401000000008111156101ca57600080fd5b8201836020820111156101dc57600080fd5b803590602001918460208302840111640100000000831117156101fe57600080fd5b509092509050610579565b61015e6004803603606081101561021f57600080fd5b506001600160a01b03813581169160208101359091169060400135610633565b61017d610ae1565b61015e610af0565b610257610b69565b60408051918252519081900360200190f35b610271610b6f565b604080519115158252519081900360200190f35b61015e610b78565b61015e600480360360208110156102a357600080fd5b50356001600160a01b0316610c82565b61015e600480360360208110156102c957600080fd5b8101906020810181356401000000008111156102e457600080fd5b8201836020820111156102f657600080fd5b8035906020019184602083028401116401000000008311171561031857600080fd5b509092509050610d63565b61015e6004803603602081101561033957600080fd5b50356001600160a01b0316611000565b61017d6110d6565b61015e6004803603604081101561036757600080fd5b81019060208101813564010000000081111561038257600080fd5b82018360208201111561039457600080fd5b803590602001918460208302840111640100000000831117156103b657600080fd5b9193909290916020810190356401000000008111156103d457600080fd5b8201836020820111156103e657600080fd5b8035906020019184602083028401116401000000008311171561040857600080fd5b5090925090506110e5565b610257611201565b61015e6004803603602081101561043157600080fd5b50356001600160a01b0316611207565b6102576112da565b6102716004803603602081101561045f57600080fd5b50356001600160a01b03166112e0565b6102716004803603602081101561048557600080fd5b50356001600160a01b03166112fe565b6000546001600160a01b031633146104f4576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663be6502e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561054457600080fd5b505af1158015610558573d6000803e3d6000fd5b50505050565b6005602052600090815260409020546001600160a01b031681565b6000546001600160a01b031633146105d8576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b60005b8181101561062e576000600260008585858181106105f557fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016105db565b505050565b3360009081526002602052604090205460ff16610697576040805162461bcd60e51b815260206004820152601760248201527f5370656e6465723a206e6f7420617574686f72697a6564000000000000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526003602052604090205460ff1615610705576040805162461bcd60e51b815260206004820152601d60248201527f5370656e6465723a20746f6b656e20697320626c61636b6c6973746564000000604482015290519081900360640190fd5b6001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480159061073a57506001600160a01b03821615155b1561062e576000826001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561078e57600080fd5b505afa1580156107a2573d6000803e3d6000fd5b505050506040513d60208110156107b857600080fd5b5051600154604080516001600160a01b038881166024808401919091523360448085019190915260648085018a9052855180860382018152608495860187526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815287518d8716958101958652938401978852815192840192909252805198995060009894909716967fbca8c7b500000000000000000000000000000000000000000000000000000000968c969195909390910191908083838c5b838110156108b0578181015183820152602001610898565b50505050905090810190601f1680156108dd5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009098169790971787525181519196909550859450925090508083835b6020831061096e5780518252601f19909201916020918201910161094f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146109d0576040519150601f19603f3d011682016040523d82523d6000602084013e6109d5565b606091505b5050905080610a155760405162461bcd60e51b81526004018080602001828103825260228152602001806115266022913960400191505060405180910390fd5b6000846001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610a6457600080fd5b505afa158015610a78573d6000803e3d6000fd5b505050506040513d6020811015610a8e57600080fd5b5051905083610a9d828561131c565b14610ad95760405162461bcd60e51b815260040180806020018281038252602b8152602001806113fd602b913960400191505060405180910390fd5b505050505050565b6000546001600160a01b031681565b600062015180610b0b6007544261131c90919063ffffffff16565b119050808015610b1e575060085460ff16155b610b595760405162461bcd60e51b815260040180806020018281038252603c815260200180611478603c913960400191505060405180910390fd5b506008805460ff19166001179055565b60045481565b60085460ff1681565b600654610bcc576040805162461bcd60e51b815260206004820152601d60248201527f5370656e6465723a206e6f2070656e64696e6720617574686f72697a65000000604482015290519081900360640190fd5b600654421015610c0d5760405162461bcd60e51b81526004018080602001828103825260228152602001806114b46022913960400191505060405180910390fd5b60005b600454811015610c7557600081815260056020818152604080842080546001600160a01b0316855260028352908420805460ff1916600190811790915593859052919052805473ffffffffffffffffffffffffffffffffffffffff1916905501610c10565b5060006006819055600455565b6000546001600160a01b03163314610ce1576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b600154604080517f8c064e190000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015291519190921691638c064e1991602480830192600092919082900301818387803b158015610d4857600080fd5b505af1158015610d5c573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610dc2576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b80610e14576040805162461bcd60e51b815260206004820181905260248201527f5370656e6465723a20617574686f72697a65206c69737420697320656d707479604482015290519081900360640190fd5b600454158015610e245750600654155b610e5f5760405162461bcd60e51b81526004018080602001828103825260298152602001806114d66029913960400191505060405180910390fd5b60085460ff1615610f4257600481905560005b81811015610f33576000838383818110610e8857fe5b905060200201356001600160a01b03166001600160a01b03161415610ede5760405162461bcd60e51b81526004018080602001828103825260278152602001806114516027913960400191505060405180910390fd5b828282818110610eea57fe5b6000848152600560209081526040909120805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929093029490940135161790915550600101610e72565b50426201518001600655610ffc565b60005b8181101561062e576000838383818110610f5b57fe5b905060200201356001600160a01b03166001600160a01b03161415610fb15760405162461bcd60e51b81526004018080602001828103825260278152602001806114516027913960400191505060405180910390fd5b600160026000858585818110610fc357fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101610f45565b5050565b6000546001600160a01b0316331461105f576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b6001546001600160a01b0316156110a75760405162461bcd60e51b81526004018080602001828103825260278152602001806114ff6027913960400191505060405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b6000546001600160a01b03163314611144576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b828114611198576040805162461bcd60e51b815260206004820152601860248201527f5370656e6465723a206c656e677468206d69736d617463680000000000000000604482015290519081900360640190fd5b60005b83811015610d5c578282828181106111af57fe5b905060200201351515600360008787858181106111c857fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff191691151591909117905560010161119b565b60075481565b6000546001600160a01b03163314611266576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b6001600160a01b0381166112ab5760405162461bcd60e51b81526004018080602001828103825260298152602001806114286029913960400191505060405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60065481565b6001600160a01b031660009081526003602052604090205460ff1690565b6001600160a01b031660009081526002602052604090205460ff1690565b600061135e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611365565b9392505050565b600081848411156113f45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113b95781810151838201526020016113a1565b50505050905090810190601f1680156113e65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe5370656e6465723a204552433230207472616e7366657246726f6d20726573756c74206d69736d617463685370656e6465723a206f70657261746f722063616e206e6f74206265207a65726f20616464726573735370656e6465723a2063616e206e6f7420617574686f72697a65207a65726f20616464726573735370656e6465723a2063616e206e6f742061637469766174652074696d656c6f636b20796574206f7220686173206265656e206163746976617465645370656e6465723a2074696d65206c6f636b206e6f742065787069726564207965745370656e6465723a20616e20617574686f72697a652063757272656e7420696e2070726f67726573735370656e6465723a2063616e206e6f7420726573657420616c6c6f77616e6365207461726765745370656e6465723a204552433230207472616e7366657246726f6d206661696c6564a264697066735822122024bc4dd9a70149c3455e32b70c81dce6e13cfb6bd9be6bef634042a7deb2b78464736f6c634300060c00335370656e6465723a205f6f70657261746f722073686f756c64206e6f7420626520300000000000000000000000000112b7ced0de10a4a44831e978b810b35f82aaa2

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101515760003560e01c80637d131c2a116100cd578063e1727fc611610081578063f9c7a0d111610066578063f9c7a0d114610441578063fe575a8714610449578063fe9fbb801461046f57610151565b8063e1727fc614610413578063f2fde38b1461041b57610151565b80638a14c759116100b25780638a14c75914610323578063910cab1114610349578063afd381841461035157610151565b80637d131c2a1461028d57806384e45689146102b357610151565b8063570ca735116101245780636e3a1b16116101095780636e3a1b161461024f57806371f1531c14610269578063727c56c01461028557610151565b8063570ca7351461023f57806363a5d2981461024757610151565b80631f074f9b1461015657806323ce8e03146101605780632fcca3ac146101995780633474ad1a14610209575b600080fd5b61015e610495565b005b61017d6004803603602081101561017657600080fd5b503561055e565b604080516001600160a01b039092168252519081900360200190f35b61015e600480360360208110156101af57600080fd5b8101906020810181356401000000008111156101ca57600080fd5b8201836020820111156101dc57600080fd5b803590602001918460208302840111640100000000831117156101fe57600080fd5b509092509050610579565b61015e6004803603606081101561021f57600080fd5b506001600160a01b03813581169160208101359091169060400135610633565b61017d610ae1565b61015e610af0565b610257610b69565b60408051918252519081900360200190f35b610271610b6f565b604080519115158252519081900360200190f35b61015e610b78565b61015e600480360360208110156102a357600080fd5b50356001600160a01b0316610c82565b61015e600480360360208110156102c957600080fd5b8101906020810181356401000000008111156102e457600080fd5b8201836020820111156102f657600080fd5b8035906020019184602083028401116401000000008311171561031857600080fd5b509092509050610d63565b61015e6004803603602081101561033957600080fd5b50356001600160a01b0316611000565b61017d6110d6565b61015e6004803603604081101561036757600080fd5b81019060208101813564010000000081111561038257600080fd5b82018360208201111561039457600080fd5b803590602001918460208302840111640100000000831117156103b657600080fd5b9193909290916020810190356401000000008111156103d457600080fd5b8201836020820111156103e657600080fd5b8035906020019184602083028401116401000000008311171561040857600080fd5b5090925090506110e5565b610257611201565b61015e6004803603602081101561043157600080fd5b50356001600160a01b0316611207565b6102576112da565b6102716004803603602081101561045f57600080fd5b50356001600160a01b03166112e0565b6102716004803603602081101561048557600080fd5b50356001600160a01b03166112fe565b6000546001600160a01b031633146104f4576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b600160009054906101000a90046001600160a01b03166001600160a01b031663be6502e96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561054457600080fd5b505af1158015610558573d6000803e3d6000fd5b50505050565b6005602052600090815260409020546001600160a01b031681565b6000546001600160a01b031633146105d8576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b60005b8181101561062e576000600260008585858181106105f557fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016105db565b505050565b3360009081526002602052604090205460ff16610697576040805162461bcd60e51b815260206004820152601760248201527f5370656e6465723a206e6f7420617574686f72697a6564000000000000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526003602052604090205460ff1615610705576040805162461bcd60e51b815260206004820152601d60248201527f5370656e6465723a20746f6b656e20697320626c61636b6c6973746564000000604482015290519081900360640190fd5b6001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480159061073a57506001600160a01b03821615155b1561062e576000826001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561078e57600080fd5b505afa1580156107a2573d6000803e3d6000fd5b505050506040513d60208110156107b857600080fd5b5051600154604080516001600160a01b038881166024808401919091523360448085019190915260648085018a9052855180860382018152608495860187526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815287518d8716958101958652938401978852815192840192909252805198995060009894909716967fbca8c7b500000000000000000000000000000000000000000000000000000000968c969195909390910191908083838c5b838110156108b0578181015183820152602001610898565b50505050905090810190601f1680156108dd5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009098169790971787525181519196909550859450925090508083835b6020831061096e5780518252601f19909201916020918201910161094f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146109d0576040519150601f19603f3d011682016040523d82523d6000602084013e6109d5565b606091505b5050905080610a155760405162461bcd60e51b81526004018080602001828103825260228152602001806115266022913960400191505060405180910390fd5b6000846001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610a6457600080fd5b505afa158015610a78573d6000803e3d6000fd5b505050506040513d6020811015610a8e57600080fd5b5051905083610a9d828561131c565b14610ad95760405162461bcd60e51b815260040180806020018281038252602b8152602001806113fd602b913960400191505060405180910390fd5b505050505050565b6000546001600160a01b031681565b600062015180610b0b6007544261131c90919063ffffffff16565b119050808015610b1e575060085460ff16155b610b595760405162461bcd60e51b815260040180806020018281038252603c815260200180611478603c913960400191505060405180910390fd5b506008805460ff19166001179055565b60045481565b60085460ff1681565b600654610bcc576040805162461bcd60e51b815260206004820152601d60248201527f5370656e6465723a206e6f2070656e64696e6720617574686f72697a65000000604482015290519081900360640190fd5b600654421015610c0d5760405162461bcd60e51b81526004018080602001828103825260228152602001806114b46022913960400191505060405180910390fd5b60005b600454811015610c7557600081815260056020818152604080842080546001600160a01b0316855260028352908420805460ff1916600190811790915593859052919052805473ffffffffffffffffffffffffffffffffffffffff1916905501610c10565b5060006006819055600455565b6000546001600160a01b03163314610ce1576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b600154604080517f8c064e190000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015291519190921691638c064e1991602480830192600092919082900301818387803b158015610d4857600080fd5b505af1158015610d5c573d6000803e3d6000fd5b5050505050565b6000546001600160a01b03163314610dc2576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b80610e14576040805162461bcd60e51b815260206004820181905260248201527f5370656e6465723a20617574686f72697a65206c69737420697320656d707479604482015290519081900360640190fd5b600454158015610e245750600654155b610e5f5760405162461bcd60e51b81526004018080602001828103825260298152602001806114d66029913960400191505060405180910390fd5b60085460ff1615610f4257600481905560005b81811015610f33576000838383818110610e8857fe5b905060200201356001600160a01b03166001600160a01b03161415610ede5760405162461bcd60e51b81526004018080602001828103825260278152602001806114516027913960400191505060405180910390fd5b828282818110610eea57fe5b6000848152600560209081526040909120805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929093029490940135161790915550600101610e72565b50426201518001600655610ffc565b60005b8181101561062e576000838383818110610f5b57fe5b905060200201356001600160a01b03166001600160a01b03161415610fb15760405162461bcd60e51b81526004018080602001828103825260278152602001806114516027913960400191505060405180910390fd5b600160026000858585818110610fc357fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101610f45565b5050565b6000546001600160a01b0316331461105f576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b6001546001600160a01b0316156110a75760405162461bcd60e51b81526004018080602001828103825260278152602001806114ff6027913960400191505060405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001546001600160a01b031681565b6000546001600160a01b03163314611144576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b828114611198576040805162461bcd60e51b815260206004820152601860248201527f5370656e6465723a206c656e677468206d69736d617463680000000000000000604482015290519081900360640190fd5b60005b83811015610d5c578282828181106111af57fe5b905060200201351515600360008787858181106111c857fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff191691151591909117905560010161119b565b60075481565b6000546001600160a01b03163314611266576040805162461bcd60e51b815260206004820152601960248201527f5370656e6465723a206e6f7420746865206f70657261746f7200000000000000604482015290519081900360640190fd5b6001600160a01b0381166112ab5760405162461bcd60e51b81526004018080602001828103825260298152602001806114286029913960400191505060405180910390fd5b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60065481565b6001600160a01b031660009081526003602052604090205460ff1690565b6001600160a01b031660009081526002602052604090205460ff1690565b600061135e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611365565b9392505050565b600081848411156113f45760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113b95781810151838201526020016113a1565b50505050905090810190601f1680156113e65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505090039056fe5370656e6465723a204552433230207472616e7366657246726f6d20726573756c74206d69736d617463685370656e6465723a206f70657261746f722063616e206e6f74206265207a65726f20616464726573735370656e6465723a2063616e206e6f7420617574686f72697a65207a65726f20616464726573735370656e6465723a2063616e206e6f742061637469766174652074696d656c6f636b20796574206f7220686173206265656e206163746976617465645370656e6465723a2074696d65206c6f636b206e6f742065787069726564207965745370656e6465723a20616e20617574686f72697a652063757272656e7420696e2070726f67726573735370656e6465723a2063616e206e6f7420726573657420616c6c6f77616e6365207461726765745370656e6465723a204552433230207472616e7366657246726f6d206661696c6564a264697066735822122024bc4dd9a70149c3455e32b70c81dce6e13cfb6bd9be6bef634042a7deb2b78464736f6c634300060c0033

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

0000000000000000000000000112b7ced0de10a4a44831e978b810b35f82aaa2

-----Decoded View---------------
Arg [0] : _operator (address): 0x0112b7ceD0DE10A4A44831E978b810B35f82aAA2

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000112b7ced0de10a4a44831e978b810b35f82aaa2


Deployed Bytecode Sourcemap

8706:7298:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11842:120;;;:::i;:::-;;9289:52;;;;;;;;;;;;;;;;-1:-1:-1;9289:52:0;;:::i;:::-;;;;-1:-1:-1;;;;;9289:52:0;;;;;;;;;;;;;;14245:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14245:209:0;;-1:-1:-1;14245:209:0;-1:-1:-1;14245:209:0;:::i;14890:1111::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14890:1111:0;;;;;;;;;;;;;;;;;:::i;9076:23::-;;;:::i;10443:278::-;;;:::i;9247:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;9434:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;13781:456;;;:::i;11680:154::-;;;;;;;;;;;;;;;;-1:-1:-1;11680:154:0;-1:-1:-1;;;;;11680:154:0;;:::i;12781:992::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12781:992:0;;-1:-1:-1;12781:992:0;-1:-1:-1;12781:992:0;:::i;11211:255::-;;;;;;;;;;;;;;;;-1:-1:-1;11211:255:0;-1:-1:-1;;;;;11211:255:0;;:::i;9106:30::-;;;:::i;12308:340::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12308:340:0;;-1:-1:-1;12308:340:0;-1:-1:-1;12308:340:0;:::i;9392:35::-;;;:::i;9924:204::-;;;;;;;;;;;;;;;;-1:-1:-1;9924:204:0;-1:-1:-1;;;;;9924:204:0;;:::i;9348:37::-;;;:::i;12176:124::-;;;;;;;;;;;;;;;;-1:-1:-1;12176:124:0;-1:-1:-1;;;;;12176:124:0;;:::i;12660:113::-;;;;;;;;;;;;;;;;-1:-1:-1;12660:113:0;-1:-1:-1;;;;;12660:113:0;;:::i;11842:120::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11927:15:::1;;;;;;;;;-1:-1:-1::0;;;;;11927:15:0::1;-1:-1:-1::0;;;;;11910:42:0::1;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11842:120::o:0;9289:52::-;;;;;;;;;;;;-1:-1:-1;;;;;9289:52:0;;:::o;14245:209::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14338:9:::1;14333:114;14353:24:::0;;::::1;14333:114;;;14430:5;14399:10;:28;14410:13;;14424:1;14410:16;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;14410:16:0::1;14399:28:::0;;-1:-1:-1;14399:28:0;::::1;::::0;;;;;;-1:-1:-1;14399:28:0;:36;;-1:-1:-1;;14399:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;14379:3:0::1;14333:114;;;;14245:209:::0;;:::o;14890:1111::-;9857:10;9846:22;;;;:10;:22;;;;;;;;9838:58;;;;;-1:-1:-1;;;9838:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15010:26:0;::::1;;::::0;;;:14:::1;:26;::::0;;;;;::::1;;15008:28;15000:70;;;::::0;;-1:-1:-1;;;15000:70:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;15087:25:0;::::1;8848:42;15087:25;::::0;::::1;::::0;:55:::1;;-1:-1:-1::0;;;;;;15116:26:0;::::1;::::0;::::1;15087:55;15083:911;;;15161:21;15192:10;-1:-1:-1::0;;;;;15185:28:0::1;;15214:10;15185:40;;;;;;;;;;;;;-1:-1:-1::0;;;;;15185:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15185:40:0;15271:15:::1;::::0;15449:203:::1;::::0;;-1:-1:-1;;;;;15449:203:0;;::::1;;::::0;;::::1;::::0;;;;15585:10:::1;15449:203:::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15185:40:::1;15449:203:::0;::::1;::::0;;::::1;;15498:28:::0;15449:203:::1;::::0;;15311:360;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;15185:40;;-1:-1:-1;15241:16:0::1;::::0;15271:15;;;::::1;::::0;15356:37;;15416:10;;15449:203;;15311:360;;;;;;15449:203;15311:360;;15449:203;15241:16;15311:360:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15311:360:0::1;::::0;;-1:-1:-1;;15311:360:0;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;15263:423;;;15311:360;;15263:423;;-1:-1:-1;15263:423:0;;-1:-1:-1;15311:360:0;-1:-1:-1;15263:423:0;-1:-1:-1;15263:423:0;;15311:360;15263:423:::1;;;;;;::::0;;;;-1:-1:-1;;15263:423:0;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15240:446;;;15709:11;15701:58;;;;-1:-1:-1::0;;;15701:58:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15804:20;15834:10;-1:-1:-1::0;;;;;15827:28:0::1;;15856:10;15827:40;;;;;;;;;;;;;-1:-1:-1::0;;;;;15827:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15827:40:0;;-1:-1:-1;15925:7:0;15890:31:::1;15827:40:::0;15907:13;15890:16:::1;:31::i;:::-;:42;15882:98;;;;-1:-1:-1::0;;;15882:98:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15083:911;;;14890:1111:::0;;;:::o;9076:23::-;;;-1:-1:-1;;;;;9076:23:0;;:::o;10443:278::-;10491:16;10554:6;10510:41;10530:20;;10510:15;:19;;:41;;;;:::i;:::-;:50;10491:69;;10579:11;:34;;;;-1:-1:-1;10596:17:0;;;;10594:19;10579:34;10571:107;;;;-1:-1:-1;;;10571:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10689:17:0;:24;;-1:-1:-1;;10689:24:0;10709:4;10689:24;;;10443:278::o;9247:35::-;;;;:::o;9434:29::-;;;;;;:::o;13781:456::-;13838:22;;13830:69;;;;;-1:-1:-1;;;13830:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13925:22;;13918:3;:29;;13910:76;;;;-1:-1:-1;;;13910:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14004:9;13999:159;14023:20;;14019:1;:24;13999:159;;;14065:32;14076:20;;;:17;:20;;;;;;;;;;-1:-1:-1;;;;;14076:20:0;14065:32;;:10;:32;;;;;:39;;-1:-1:-1;;14065:39:0;14100:4;14065:39;;;;;;14126:20;;;;;;;14119:27;;-1:-1:-1;;14119:27:0;;;14045:3;13999:159;;;-1:-1:-1;14193:1:0;14168:22;:26;;;14205:20;:24;13781:456::o;11680:154::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11774:15:::1;::::0;11757:69:::1;::::0;;;;;-1:-1:-1;;;;;11757:69:0;;::::1;;::::0;::::1;::::0;;;11774:15;;;::::1;::::0;11757:56:::1;::::0;:69;;;;;11774:15:::1;::::0;11757:69;;;;;;;11774:15;;11757:69;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11680:154:::0;:::o;12781:992::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12880:29;12872:74:::1;;;::::0;;-1:-1:-1;;;12872:74:0;;::::1;;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12965:20;::::0;:25;:56;::::1;;;-1:-1:-1::0;12994:22:0::1;::::0;:27;12965:56:::1;12957:110;;;;-1:-1:-1::0;;;12957:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13084:17;::::0;::::1;;13080:686;;;13118:20;:48:::0;;;13186:9:::1;13181:241;13201:29:::0;;::::1;13181:241;;;13297:1;13264:18:::0;;13283:1;13264:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;13264:21:0::1;-1:-1:-1::0;;;;;13264:35:0::1;;;13256:87;;;;-1:-1:-1::0;;;13256:87:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13385:18;;13404:1;13385:21;;;;;;;13362:20;::::0;;;:17:::1;13385:21;13362:20:::0;;;;;;;:44;;-1:-1:-1;;13362:44:0::1;-1:-1:-1::0;;;;;13385:21:0;;;::::1;::::0;;;::::1;;;13362:44;::::0;;;-1:-1:-1;13362:44:0;13232:3:::1;13181:241;;;-1:-1:-1::0;13461:3:0::1;9000:6;13461:24;13436:22;:49:::0;13080:686:::1;;;13523:9;13518:237;13538:29:::0;;::::1;13518:237;;;13634:1;13601:18:::0;;13620:1;13601:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;13601:21:0::1;-1:-1:-1::0;;;;;13601:35:0::1;;;13593:87;;;;-1:-1:-1::0;;;13593:87:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13735:4;13699:10;:33;13710:18;;13729:1;13710:21;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;13710:21:0::1;13699:33:::0;;-1:-1:-1;13699:33:0;::::1;::::0;;;;;;-1:-1:-1;13699:33:0;:40;;-1:-1:-1;;13699:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;13569:3:0::1;13518:237;;13080:686;12781:992:::0;;:::o;11211:255::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11306:15:::1;::::0;-1:-1:-1;;;;;11306:15:0::1;:29:::0;11298:81:::1;;;;-1:-1:-1::0;;;11298:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11424:15;:34:::0;;-1:-1:-1;;11424:34:0::1;-1:-1:-1::0;;;;;11424:34:0;;;::::1;::::0;;;::::1;::::0;;11211:255::o;9106:30::-;;;-1:-1:-1;;;;;9106:30:0;;:::o;12308:340::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12432:43;;::::1;12424:80;;;::::0;;-1:-1:-1;;;12424:80:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12520:9;12515:126;12535:22:::0;;::::1;12515:126;;;12612:14;;12627:1;12612:17;;;;;;;;;;;;;;;12579:14;:30;12594:11;;12606:1;12594:14;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;12594:14:0::1;12579:30:::0;;-1:-1:-1;12579:30:0;::::1;::::0;;;;;;-1:-1:-1;12579:30:0;:50;;-1:-1:-1;;12579:50:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;12559:3:0::1;12515:126;;9392:35:::0;;;;:::o;9924:204::-;9721:8;;-1:-1:-1;;;;;9721:8:0;9733:10;9721:22;9713:60;;;;;-1:-1:-1;;;9713:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10014:26:0;::::1;10006:80;;;;-1:-1:-1::0;;;10006:80:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10097:8;:23:::0;;-1:-1:-1;;10097:23:0::1;-1:-1:-1::0;;;;;10097:23:0;;;::::1;::::0;;;::::1;::::0;;9924:204::o;9348:37::-;;;;:::o;12176:124::-;-1:-1:-1;;;;;12266:26:0;12242:4;12266:26;;;:14;:26;;;;;;;;;12176:124::o;12660:113::-;-1:-1:-1;;;;;12746:19:0;12722:4;12746:19;;;:10;:19;;;;;;;;;12660:113::o;1420:136::-;1478:7;1505:43;1509:1;1512;1505:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1498:50;1420:136;-1:-1:-1;;;1420:136:0:o;1859:192::-;1945:7;1981:12;1973:6;;;;1965:29;;;;-1:-1:-1;;;1965:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2017:5:0;;;1859:192::o

Swarm Source

ipfs://24bc4dd9a70149c3455e32b70c81dce6e13cfb6bd9be6bef634042a7deb2b784

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  ]

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.