ETH Price: $2,418.66 (-2.50%)

Contract

0xb3f723783e67471F2469C3fc49E2905d5FabeE1d
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim Tokens209132222024-10-07 10:55:4720 hrs ago1728298547IN
0xb3f72378...d5FabeE1d
0 ETH0.000535668.42500117
Claim Tokens209125662024-10-07 8:44:2322 hrs ago1728290663IN
0xb3f72378...d5FabeE1d
0 ETH0.0008265513
Claim Tokens209071242024-10-06 14:31:3540 hrs ago1728225095IN
0xb3f72378...d5FabeE1d
0 ETH0.0014158622.26861277
Claim Tokens209071202024-10-06 14:30:4740 hrs ago1728225047IN
0xb3f72378...d5FabeE1d
0 ETH0.0015056723.68120855
Claim Tokens208988212024-10-05 10:45:232 days ago1728125123IN
0xb3f72378...d5FabeE1d
0 ETH0.000817312.85457245
Claim Tokens208988132024-10-05 10:43:472 days ago1728125027IN
0xb3f72378...d5FabeE1d
0 ETH0.0007667512.05946591
Claim Tokens208798092024-10-02 19:08:595 days ago1727896139IN
0xb3f72378...d5FabeE1d
0 ETH0.0029572146.51092557
Claim Tokens208711072024-10-01 14:00:596 days ago1727791259IN
0xb3f72378...d5FabeE1d
0 ETH0.0025384131.46240285
Claim Tokens208711012024-10-01 13:59:476 days ago1727791187IN
0xb3f72378...d5FabeE1d
0 ETH0.0024250330.05702049
Claim Tokens208695952024-10-01 8:57:236 days ago1727773043IN
0xb3f72378...d5FabeE1d
0 ETH0.0009001414.15749862
Claim Tokens208695162024-10-01 8:41:356 days ago1727772095IN
0xb3f72378...d5FabeE1d
0 ETH0.0013593616.84858131
Claim Tokens208663152024-09-30 21:59:117 days ago1727733551IN
0xb3f72378...d5FabeE1d
0 ETH0.0008490910.52412012
Claim Tokens208663072024-09-30 21:57:357 days ago1727733455IN
0xb3f72378...d5FabeE1d
0 ETH0.0003169410.06185479
Claim Tokens208663052024-09-30 21:57:117 days ago1727733431IN
0xb3f72378...d5FabeE1d
0 ETH0.000587849.24557494
Claim Tokens208662532024-09-30 21:46:477 days ago1727732807IN
0xb3f72378...d5FabeE1d
0 ETH0.0006887410.83462853
Claim Tokens208649012024-09-30 17:15:237 days ago1727716523IN
0xb3f72378...d5FabeE1d
0 ETH0.001166518.34677714
Claim Tokens208641822024-09-30 14:51:237 days ago1727707883IN
0xb3f72378...d5FabeE1d
0 ETH0.001758117.9800578
Claim Tokens208614772024-09-30 5:48:598 days ago1727675339IN
0xb3f72378...d5FabeE1d
0 ETH0.000475267.47490418
Claim Tokens208483522024-09-28 9:51:359 days ago1727517095IN
0xb3f72378...d5FabeE1d
0 ETH0.000738019.14731876
Claim Tokens208404822024-09-27 7:31:3510 days ago1727422295IN
0xb3f72378...d5FabeE1d
0 ETH0.0003726211.8294769
Claim Tokens208404732024-09-27 7:29:4710 days ago1727422187IN
0xb3f72378...d5FabeE1d
0 ETH0.0007403711.64453116
Claim Tokens208404162024-09-27 7:18:2311 days ago1727421503IN
0xb3f72378...d5FabeE1d
0 ETH0.0008695113.67566884
Claim Tokens208334562024-09-26 8:01:1111 days ago1727337671IN
0xb3f72378...d5FabeE1d
0 ETH0.0010152915.96860053
Claim Tokens208214652024-09-24 15:50:3513 days ago1727193035IN
0xb3f72378...d5FabeE1d
0 ETH0.0014787123.25714324
Claim Tokens208136532024-09-23 13:42:4714 days ago1727098967IN
0xb3f72378...d5FabeE1d
0 ETH0.0018468829.04774695
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenVesting

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 4: TokenVesting.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.7;

// TODO: There is an issue where the sum of all vestingSchedule totalTokens is less than totalVestingsTokens.
// NOTE: Excess of totalVestingsTokens, after paying out all totalTokens, requires awkward immediate vesting schedule to withdraw.

import { IERC20Like } from "./Interfaces.sol";
import { ITokenVesting } from "./ITokenVesting.sol";

contract TokenVesting is ITokenVesting {

    address public override owner;
    address public override pendingOwner;

    address public override token;
    uint256 public override totalVestingsTokens;

    mapping(address => VestingSchedule) public override vestingScheduleOf;

    /**
     * @dev   Constructor.
     * @param token_ The address of an erc20 token.
     */
    constructor(address token_) {
        owner = msg.sender;
        token = token_;
    }

    /**************************/
    /*** Contract Ownership ***/
    /**************************/

    modifier onlyOwner() {
        require(owner == msg.sender, "TV:NOT_OWNER");
        _;
    }

    function renounceOwnership() external override onlyOwner {
        pendingOwner = owner = address(0);

        emit OwnershipTransferred(msg.sender, address(0));
    }

    function transferOwnership(address newOwner_) external override onlyOwner {
        pendingOwner = newOwner_;

        emit OwnershipTransferPending(msg.sender, newOwner_);
    }

    function acceptOwnership() external override {
        require(pendingOwner == msg.sender, "TV:NOT_PENDING_OWNER");

        emit OwnershipTransferred(owner, msg.sender);

        owner = msg.sender;
        pendingOwner = address(0);
    }

    /*********************/
    /*** Token Vesting ***/
    /*********************/

    function setVestingSchedules(address[] calldata receivers_, VestingSchedule[] calldata vestingSchedules_) external override onlyOwner {
        for (uint256 i; i < vestingSchedules_.length; ++i) {
            address receiver = receivers_[i];

            vestingScheduleOf[receiver] = vestingSchedules_[i];

            emit VestingScheduleSet(receiver);
        }
    }

    function fundVesting(uint256 totalTokens_) external override onlyOwner {
        require(totalVestingsTokens == uint256(0), "TV:ALREADY_FUNDED");

        _safeTransferFrom(token, msg.sender, address(this), totalTokens_);

        totalVestingsTokens = totalTokens_;

        emit VestingFunded(totalTokens_);
    }

    function changeReceiver(address oldReceiver_, address newReceiver_) external override onlyOwner {
        // Swap old and new receivers' vesting schedule, using address(0) as a scratch space.
        // This is done to not overwrite an active vesting schedule.
        vestingScheduleOf[address(0)] = vestingScheduleOf[oldReceiver_];
        vestingScheduleOf[oldReceiver_] = vestingScheduleOf[newReceiver_];
        vestingScheduleOf[newReceiver_] = vestingScheduleOf[address(0)];

        delete vestingScheduleOf[address(0)];

        emit ReceiverChanged(oldReceiver_, newReceiver_);
    }

    function claimableTokens(address receiver_) public view override returns (uint256 claimableTokens_) {
        VestingSchedule storage vestingSchedule = vestingScheduleOf[receiver_];

        uint256 totalPeriods = vestingSchedule.totalPeriods;

        if (totalPeriods == uint256(0)) return uint256(0);

        uint256 timePassed = block.timestamp - vestingSchedule.startTime;
        uint256 cliff = vestingSchedule.cliff;

        if (timePassed <= cliff) return uint256(0);

        uint256 multiplier = (timePassed - cliff) / vestingSchedule.timePerPeriod;

        return
            (
                (
                    (
                        multiplier > totalPeriods ? totalPeriods : multiplier
                    )
                    * vestingSchedule.totalTokens
                )
                / totalPeriods
            )
            - vestingSchedule.tokensClaimed;
    }

    function claimTokens(address destination_) external override {
        require(totalVestingsTokens > uint256(0), "TV:NOT_FUNDED");

        VestingSchedule storage vestingSchedule = vestingScheduleOf[msg.sender];

        uint256 tokensToClaim = claimableTokens(msg.sender);

        require(tokensToClaim > uint256(0), "TV:NO_CLAIMABLE");

        // NOTE: Setting tokensClaimed before transfer will result in no additional transfer on a reentrance.
        vestingSchedule.tokensClaimed += tokensToClaim;

        _safeTransfer(token, destination_, tokensToClaim);

        emit TokensClaimed(msg.sender, tokensToClaim, destination_);
    }

    function killVesting(address receiver_, address destination_) external override onlyOwner {
        VestingSchedule storage vestingSchedule = vestingScheduleOf[receiver_];

        uint256 totalTokens = vestingSchedule.totalTokens;
        uint256 tokensToClaim = totalTokens - vestingSchedule.tokensClaimed;

        // NOTE: Setting tokensClaimed before transfer will result in no additional transfer on a reentrance.
        vestingScheduleOf[receiver_].tokensClaimed = totalTokens;

        _safeTransfer(token, destination_, tokensToClaim);

        emit VestingKilled(receiver_, tokensToClaim, destination_);
    }

    /*********************/
    /*** Miscellaneous ***/
    /*********************/

    function recoverToken(address token_, address destination_) external override onlyOwner {
        require(token_ != token, "TV:CANNOT_RECOVER_VESTING_TOKEN");

        uint256 amount = IERC20Like(token_).balanceOf(address(this));

        require(amount > uint256(0), "TV:NO_TOKEN");

        _safeTransfer(token_, destination_, amount);

        emit RecoveredToken(token_, amount, destination_);
    }

    /******************/
    /*** Safe ERC20 ***/
    /******************/

    function _safeTransfer(address token_, address to_, uint256 amount_) internal {
        ( bool success, bytes memory data ) = token_.call(abi.encodeWithSelector(IERC20Like.transfer.selector, to_, amount_));

        require(success && (data.length == uint256(0) || abi.decode(data, (bool))), 'TV:SAFE_TRANSFER_FAILED');
    }

    function _safeTransferFrom(address token_, address from_, address to_, uint256 amount_) internal {
        ( bool success, bytes memory data ) = token_.call(abi.encodeWithSelector(IERC20Like.transferFrom.selector, from_, to_, amount_));

        require(success && (data.length == uint256(0) || abi.decode(data, (bool))), 'TV:SAFE_TRANSFER_FROM_FAILED');
    }

}

File 2 of 4: Interfaces.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.7;

interface IERC20Like {

    function balanceOf(address account_) external view returns (uint256 balance_);

    function transfer(address recipient_, uint256 amount_) external returns (bool success_);

    function allowance(address owner_, address spender_) external view returns (uint256 allowance_);

    function approve(address spender_, uint256 amount_) external returns (bool success_);

    function transferFrom(address sender_, address recipient_, uint256 amount_) external returns (bool success_);

}

File 3 of 4: ITokenVesting.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.7;

interface ITokenVesting {

    /**************************/
    /*** Contract Ownership ***/
    /**************************/

    event OwnershipTransferPending(address indexed owner, address indexed pendingOwner);

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /// @dev Returns the owner of the contract.
    function owner() external view returns (address owner_);

    /// @dev Returns the pending owner of the contract.
    function pendingOwner() external view returns (address pendingOwner_);

    /// @dev Leaves the contract without owner, and clears the pendingOwner, if any.
    function renounceOwnership() external;

    /// @dev Allows a new account to take ownership of the contract.
    function transferOwnership(address newOwner_) external;

    /// @dev Takes ownership of the contract.
    function acceptOwnership() external;

    /*********************/
    /*** Token Vesting ***/
    /*********************/

    /**
     * @dev   Is emitted when a token vesting schedule is set for a receiver.
     * @param receiver_ The receiver of a token vesting schedule.
     */
    event VestingScheduleSet(address indexed receiver_);

    /**
     * @dev   Is emitted when the contract is funded for vesting.
     * @param totalTokens_ The total amount of tokens to be vested.
     */
    event VestingFunded(uint256 totalTokens_);

    /**
     * @dev   Is emitted when the receiver of a token vesting schedule is changed.
     * @param oldReceiver The old receiver of the token vesting schedule.
     * @param newReceiver The new receiver of the token vesting schedule.
     */
    event ReceiverChanged(address indexed oldReceiver, address indexed newReceiver);

    /**
     * @dev   Is emitted when the token vesting schedule for a receiver is killed.
     * @param receiver_      The receiver that had its token vesting schedule killed.
     * @param tokensClaimed_ The amount of tokens claimed.
     * @param destination_   The destination the token have been sent to.
     */
    event VestingKilled(address indexed receiver_, uint256 tokensClaimed_, address indexed destination_);

    /**
     * @dev   Is emitted when a receiver claims tokens from its vesting schedule.
     * @param receiver_      The receiver of a token vesting schedule.
     * @param tokensClaimed_ The amount of tokens claimed.
     * @param destination_   The destination the claimed tokens have been sent to.
     */
    event TokensClaimed(address indexed receiver_, uint256 tokensClaimed_, address indexed destination_);

    struct VestingSchedule {
        uint256 startTime;
        uint256 cliff;
        uint256 totalPeriods;
        uint256 timePerPeriod;
        uint256 totalTokens;
        uint256 tokensClaimed;
    }

    /// @dev The vesting token.
    function token() external returns (address token_);

    /// @dev The total amount of tokens being vested.
    function totalVestingsTokens() external returns (uint256 totalVestingsTokens_);

    /**
     * @dev   Returns the vesting schedule of a receiver.
     * @param receiver_      The receiver of a vesting schedule.
     */
    function vestingScheduleOf(address receiver_) external returns (
        uint256 startTime_,
        uint256 cliff_,
        uint256 totalPeriods_,
        uint256 timePerPeriod_,
        uint256 totalTokens_,
        uint256 tokensClaimed_
    );

    /**
     * @dev   Set the vesting schedules for some receivers, respectively.
     * @param receivers_ An array of receivers of vesting schedules.
     * @param vestings_  An array of vesting schedules.
     */
    function setVestingSchedules(address[] calldata receivers_, VestingSchedule[] calldata vestings_) external;

    /**
     * @dev   Fund the contact with tokens that will be vested.
     * @param totalTokens_ The amount of tokens that will be supplied to this contract.
     */
    function fundVesting(uint256 totalTokens_) external;

    /**
     * @dev   Change the receiver of an existing vesting schedule.
     * @param oldReceiver_ The old receiver address.
     * @param newReceiver_ The new receiver address.
     */
    function changeReceiver(address oldReceiver_, address newReceiver_) external;

    /**
     * @dev    Returns the amount of claimable tokens for a receiver of a vesting schedule.
     * @param  receiver_        The receiver address.
     * @return claimableTokens_ The amount of claimable tokens.
     */
    function claimableTokens(address receiver_) external view returns (uint256 claimableTokens_);

    /**
     * @dev   Claim the callers tokens of a vesting schedule.
     * @param destination_ The destination to send the tokens.
     */
    function claimTokens(address destination_) external;

    /**
     * @dev   Kill the vesting schedule for a receiver.
     * @param receiver_    The receiver address.
     * @param destination_ The destination to send the tokens.
     */
    function killVesting(address receiver_, address destination_) external;

    /*********************/
    /*** Miscellaneous ***/
    /*********************/

    /**
     * @dev   Is emitted when some ERC20 token is recovered from the contract.
     * @param token       The address of the token.
     * @param amount      The amount of token recovered.
     * @param destination The destination the token was sent to.
     */
    event RecoveredToken(address indexed token, uint256 amount, address indexed destination);

    /**
     * @dev   Recover tokens owned by the contract.
     * @param token_       The token address.
     * @param destination_ The destination to send the ETH.
     */
    function recoverToken(address token_, address destination_) external;

}

File 4 of 4: MockERC20.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity ^0.8.7;

contract MockERC20 {

    string public name;
    string public symbol;

    uint8 public immutable decimals;

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    constructor(string memory name_, string memory symbol_, uint8 decimals_) {
        name     = name_;
        symbol   = symbol_;
        decimals = decimals_;
    }

    function approve(address spender_, uint256 amount_) external returns (bool success_) {
        _approve(msg.sender, spender_, amount_);
        return true;
    }

    function transfer(address to_, uint256 amount_) external returns (bool success_) {
        _transfer(msg.sender, to_, amount_);
        return true;
    }

    function transferFrom(address owner_, address recipient_, uint256 amount_) external returns (bool success_) {
        _approve(owner_, msg.sender, allowance[owner_][msg.sender] - amount_);
        _transfer(owner_, recipient_, amount_);
        return true;
    }

    function mint(address recipient_, uint256 amount_) external returns (bool success_) {
        _mint(recipient_, amount_);
        return true;
    }

    function burn(address owner_, uint256 amount_) internal returns (bool success_) {
        _burn(owner_, amount_);
        return true;
    }

    function _approve(address owner_, address spender_, uint256 amount_) internal {
        allowance[owner_][spender_] = amount_;
    }

    function _transfer(address owner_, address recipient_, uint256 amount_) internal {
        balanceOf[owner_] -= amount_;
        balanceOf[recipient_] += amount_;
    }

    function _mint(address recipient_, uint256 amount_) internal {
        totalSupply += amount_;
        balanceOf[recipient_] += amount_;
    }

    function _burn(address owner_, uint256 amount_) internal {
        balanceOf[owner_] -= amount_;
        totalSupply -= amount_;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipTransferPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"newReceiver","type":"address"}],"name":"ReceiverChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"destination","type":"address"}],"name":"RecoveredToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver_","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensClaimed_","type":"uint256"},{"indexed":true,"internalType":"address","name":"destination_","type":"address"}],"name":"TokensClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalTokens_","type":"uint256"}],"name":"VestingFunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver_","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokensClaimed_","type":"uint256"},{"indexed":true,"internalType":"address","name":"destination_","type":"address"}],"name":"VestingKilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver_","type":"address"}],"name":"VestingScheduleSet","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"oldReceiver_","type":"address"},{"internalType":"address","name":"newReceiver_","type":"address"}],"name":"changeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"destination_","type":"address"}],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver_","type":"address"}],"name":"claimableTokens","outputs":[{"internalType":"uint256","name":"claimableTokens_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"totalTokens_","type":"uint256"}],"name":"fundVesting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver_","type":"address"},{"internalType":"address","name":"destination_","type":"address"}],"name":"killVesting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"address","name":"destination_","type":"address"}],"name":"recoverToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"receivers_","type":"address[]"},{"components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"cliff","type":"uint256"},{"internalType":"uint256","name":"totalPeriods","type":"uint256"},{"internalType":"uint256","name":"timePerPeriod","type":"uint256"},{"internalType":"uint256","name":"totalTokens","type":"uint256"},{"internalType":"uint256","name":"tokensClaimed","type":"uint256"}],"internalType":"struct ITokenVesting.VestingSchedule[]","name":"vestingSchedules_","type":"tuple[]"}],"name":"setVestingSchedules","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalVestingsTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vestingScheduleOf","outputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"cliff","type":"uint256"},{"internalType":"uint256","name":"totalPeriods","type":"uint256"},{"internalType":"uint256","name":"timePerPeriod","type":"uint256"},{"internalType":"uint256","name":"totalTokens","type":"uint256"},{"internalType":"uint256","name":"tokensClaimed","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5060405161125138038061125183398101604081905261002f91610062565b60008054336001600160a01b031991821617909155600280549091166001600160a01b0392909216919091179055610092565b60006020828403121561007457600080fd5b81516001600160a01b038116811461008b57600080fd5b9392505050565b6111b0806100a16000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806384d2422611610097578063e30c397811610066578063e30c397814610235578063f2fde38b14610248578063fc0c546a1461025b578063feaea5861461026e57600080fd5b806384d24226146101d15780638da5cb5b146101e4578063a52b2e821461020f578063df8de3e71461022257600080fd5b8063715018a6116100d3578063715018a61461013e57806373913545146101465780637828f8a71461015957806379ba5097146101c957600080fd5b80634c69ec93146100fa578063537658581461010f57806362ecef4214610122575b600080fd5b61010d610108366004610f13565b610281565b005b61010d61011d366004610f13565b6104eb565b61012b60035481565b6040519081526020015b60405180910390f35b61010d6105cb565b61010d610154366004611030565b61063c565b61019c610167366004610ef1565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015492949193909286565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610135565b61010d6106fd565b61012b6101df366004610ef1565b6107a6565b6000546101f7906001600160a01b031681565b6040516001600160a01b039091168152602001610135565b61010d61021d366004610f46565b61085d565b61010d610230366004610ef1565b610980565b6001546101f7906001600160a01b031681565b61010d610256366004610ef1565b610a95565b6002546101f7906001600160a01b031681565b61010d61027c366004610f13565b610b0b565b6000546001600160a01b031633146102b45760405162461bcd60e51b81526004016102ab9061109d565b60405180910390fd5b60046000836001600160a01b03166001600160a01b0316815260200190815260200160002060046000806001600160a01b03166001600160a01b0316815260200190815260200160002060008201548160000155600182015481600101556002820154816002015560038201548160030155600482015481600401556005820154816005015590505060046000826001600160a01b03166001600160a01b0316815260200190815260200160002060046000846001600160a01b03166001600160a01b0316815260200190815260200160002060008201548160000155600182015481600101556002820154816002015560038201548160030155600482015481600401556005820154816005015590505060046000806001600160a01b03166001600160a01b0316815260200190815260200160002060046000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201548160000155600182015481600101556002820154816002015560038201548160030155600482015481600401556005820154816005015590505060046000806001600160a01b03166001600160a01b03168152602001908152602001600020600080820160009055600182016000905560028201600090556003820160009055600482016000905560058201600090555050806001600160a01b0316826001600160a01b03167fd36aafedb017e43b79d3cf6aa1987d3fbb9fff33e1738c71dbf6b2abaadbded060405160405180910390a35050565b6000546001600160a01b031633146105155760405162461bcd60e51b81526004016102ab9061109d565b6001600160a01b0382166000908152600460208190526040822090810154600582015491929091610546908361111c565b6001600160a01b03808716600090815260046020526040902060050184905560025491925061057791168583610c9d565b836001600160a01b0316856001600160a01b03167f1c74d9d52cde9d0f15138d3131a914ca474348a0e89fd7d8a1599039c1e18e40836040516105bc91815260200190565b60405180910390a35050505050565b6000546001600160a01b031633146105f55760405162461bcd60e51b81526004016102ab9061109d565b600080546001600160a01b0319908116825560018054909116905560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3565b6000546001600160a01b031633146106665760405162461bcd60e51b81526004016102ab9061109d565b600354156106aa5760405162461bcd60e51b815260206004820152601160248201527015158e9053149150511657d19553911151607a1b60448201526064016102ab565b6002546106c2906001600160a01b0316333084610db1565b60038190556040518181527f3677c9434f5ab443cebe570bd0549adb7149a47c57a250985034f42dbea50e469060200160405180910390a150565b6001546001600160a01b0316331461074e5760405162461bcd60e51b81526020600482015260146024820152732a2b1d2727aa2fa822a72224a723afa7aba722a960611b60448201526064016102ab565b6000805460405133926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03199081163317909155600180549091169055565b6001600160a01b03811660009081526004602052604081206002810154806107d2575060009392505050565b81546000906107e1904261111c565b60018401549091508082116107fc5750600095945050505050565b600384015460009061080e838561111c565b61081891906110db565b905084600501548486600401548684116108325783610834565b865b61083e91906110fd565b61084891906110db565b610852919061111c565b979650505050505050565b6000546001600160a01b031633146108875760405162461bcd60e51b81526004016102ab9061109d565b60005b818110156109795760008585838181106108a6576108a6611164565b90506020020160208101906108bb9190610ef1565b90508383838181106108cf576108cf611164565b6001600160a01b038416600090815260046020526040902060c0909102929092019190506109328282813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a082013560058201555050565b50506040516001600160a01b038216907fad6c90e26411f59c32b869505ebb4f0298425b4e9dd8aa92c7a9b13442f1fc9590600090a25061097281611133565b905061088a565b5050505050565b6000600354116109c25760405162461bcd60e51b815260206004820152600d60248201526c15158e9393d517d19553911151609a1b60448201526064016102ab565b336000818152600460205260408120916109db906107a6565b905060008111610a1f5760405162461bcd60e51b815260206004820152600f60248201526e54563a4e4f5f434c41494d41424c4560881b60448201526064016102ab565b80826005016000828254610a3391906110c3565b9091555050600254610a4f906001600160a01b03168483610c9d565b6040518181526001600160a01b0384169033907fa96ccbd516e1bb3e6dad792a13a75e8afcf013d3ff446f07416945f5efd46062906020015b60405180910390a3505050565b6000546001600160a01b03163314610abf5760405162461bcd60e51b81526004016102ab9061109d565b600180546001600160a01b0319166001600160a01b03831690811790915560405133907f8573d4aae9f7fb051c6b88d7440011a1c12376acda6603a45f45bad36a8db4ce90600090a350565b6000546001600160a01b03163314610b355760405162461bcd60e51b81526004016102ab9061109d565b6002546001600160a01b0383811691161415610b935760405162461bcd60e51b815260206004820152601f60248201527f54563a43414e4e4f545f5245434f5645525f56455354494e475f544f4b454e0060448201526064016102ab565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015610bd557600080fd5b505afa158015610be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0d9190611049565b905060008111610c4d5760405162461bcd60e51b815260206004820152600b60248201526a2a2b1d2727afaa27a5a2a760a91b60448201526064016102ab565b610c58838383610c9d565b816001600160a01b0316836001600160a01b03167f06fbbb545a0f80e8f0fe29d731148729a130754066a48802b5999c11acdf52ce83604051610a8891815260200190565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610cf99190611062565b6000604051808303816000865af19150503d8060008114610d36576040519150601f19603f3d011682016040523d82523d6000602084013e610d3b565b606091505b5091509150818015610d65575080511580610d65575080806020019051810190610d65919061100e565b6109795760405162461bcd60e51b815260206004820152601760248201527f54563a534146455f5452414e534645525f4641494c454400000000000000000060448201526064016102ab565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610e159190611062565b6000604051808303816000865af19150503d8060008114610e52576040519150601f19603f3d011682016040523d82523d6000602084013e610e57565b606091505b5091509150818015610e81575080511580610e81575080806020019051810190610e81919061100e565b610ecd5760405162461bcd60e51b815260206004820152601c60248201527f54563a534146455f5452414e534645525f46524f4d5f4641494c45440000000060448201526064016102ab565b505050505050565b80356001600160a01b0381168114610eec57600080fd5b919050565b600060208284031215610f0357600080fd5b610f0c82610ed5565b9392505050565b60008060408385031215610f2657600080fd5b610f2f83610ed5565b9150610f3d60208401610ed5565b90509250929050565b60008060008060408587031215610f5c57600080fd5b843567ffffffffffffffff80821115610f7457600080fd5b818701915087601f830112610f8857600080fd5b813581811115610f9757600080fd5b8860208260051b8501011115610fac57600080fd5b602092830196509450908601359080821115610fc757600080fd5b818701915087601f830112610fdb57600080fd5b813581811115610fea57600080fd5b88602060c083028501011115610fff57600080fd5b95989497505060200194505050565b60006020828403121561102057600080fd5b81518015158114610f0c57600080fd5b60006020828403121561104257600080fd5b5035919050565b60006020828403121561105b57600080fd5b5051919050565b6000825160005b818110156110835760208186018101518583015201611069565b81811115611092576000828501525b509190910192915050565b6020808252600c908201526b2a2b1d2727aa2fa7aba722a960a11b604082015260600190565b600082198211156110d6576110d661114e565b500190565b6000826110f857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156111175761111761114e565b500290565b60008282101561112e5761112e61114e565b500390565b60006000198214156111475761114761114e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212200a7e41f1fad3425402689cc124e4aa986f30dace2948c3a804f2a0491906c01764736f6c6343000807003300000000000000000000000072b886d09c117654ab7da13a14d603001de0b777

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806384d2422611610097578063e30c397811610066578063e30c397814610235578063f2fde38b14610248578063fc0c546a1461025b578063feaea5861461026e57600080fd5b806384d24226146101d15780638da5cb5b146101e4578063a52b2e821461020f578063df8de3e71461022257600080fd5b8063715018a6116100d3578063715018a61461013e57806373913545146101465780637828f8a71461015957806379ba5097146101c957600080fd5b80634c69ec93146100fa578063537658581461010f57806362ecef4214610122575b600080fd5b61010d610108366004610f13565b610281565b005b61010d61011d366004610f13565b6104eb565b61012b60035481565b6040519081526020015b60405180910390f35b61010d6105cb565b61010d610154366004611030565b61063c565b61019c610167366004610ef1565b600460208190526000918252604090912080546001820154600283015460038401549484015460059094015492949193909286565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610135565b61010d6106fd565b61012b6101df366004610ef1565b6107a6565b6000546101f7906001600160a01b031681565b6040516001600160a01b039091168152602001610135565b61010d61021d366004610f46565b61085d565b61010d610230366004610ef1565b610980565b6001546101f7906001600160a01b031681565b61010d610256366004610ef1565b610a95565b6002546101f7906001600160a01b031681565b61010d61027c366004610f13565b610b0b565b6000546001600160a01b031633146102b45760405162461bcd60e51b81526004016102ab9061109d565b60405180910390fd5b60046000836001600160a01b03166001600160a01b0316815260200190815260200160002060046000806001600160a01b03166001600160a01b0316815260200190815260200160002060008201548160000155600182015481600101556002820154816002015560038201548160030155600482015481600401556005820154816005015590505060046000826001600160a01b03166001600160a01b0316815260200190815260200160002060046000846001600160a01b03166001600160a01b0316815260200190815260200160002060008201548160000155600182015481600101556002820154816002015560038201548160030155600482015481600401556005820154816005015590505060046000806001600160a01b03166001600160a01b0316815260200190815260200160002060046000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201548160000155600182015481600101556002820154816002015560038201548160030155600482015481600401556005820154816005015590505060046000806001600160a01b03166001600160a01b03168152602001908152602001600020600080820160009055600182016000905560028201600090556003820160009055600482016000905560058201600090555050806001600160a01b0316826001600160a01b03167fd36aafedb017e43b79d3cf6aa1987d3fbb9fff33e1738c71dbf6b2abaadbded060405160405180910390a35050565b6000546001600160a01b031633146105155760405162461bcd60e51b81526004016102ab9061109d565b6001600160a01b0382166000908152600460208190526040822090810154600582015491929091610546908361111c565b6001600160a01b03808716600090815260046020526040902060050184905560025491925061057791168583610c9d565b836001600160a01b0316856001600160a01b03167f1c74d9d52cde9d0f15138d3131a914ca474348a0e89fd7d8a1599039c1e18e40836040516105bc91815260200190565b60405180910390a35050505050565b6000546001600160a01b031633146105f55760405162461bcd60e51b81526004016102ab9061109d565b600080546001600160a01b0319908116825560018054909116905560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3565b6000546001600160a01b031633146106665760405162461bcd60e51b81526004016102ab9061109d565b600354156106aa5760405162461bcd60e51b815260206004820152601160248201527015158e9053149150511657d19553911151607a1b60448201526064016102ab565b6002546106c2906001600160a01b0316333084610db1565b60038190556040518181527f3677c9434f5ab443cebe570bd0549adb7149a47c57a250985034f42dbea50e469060200160405180910390a150565b6001546001600160a01b0316331461074e5760405162461bcd60e51b81526020600482015260146024820152732a2b1d2727aa2fa822a72224a723afa7aba722a960611b60448201526064016102ab565b6000805460405133926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03199081163317909155600180549091169055565b6001600160a01b03811660009081526004602052604081206002810154806107d2575060009392505050565b81546000906107e1904261111c565b60018401549091508082116107fc5750600095945050505050565b600384015460009061080e838561111c565b61081891906110db565b905084600501548486600401548684116108325783610834565b865b61083e91906110fd565b61084891906110db565b610852919061111c565b979650505050505050565b6000546001600160a01b031633146108875760405162461bcd60e51b81526004016102ab9061109d565b60005b818110156109795760008585838181106108a6576108a6611164565b90506020020160208101906108bb9190610ef1565b90508383838181106108cf576108cf611164565b6001600160a01b038416600090815260046020526040902060c0909102929092019190506109328282813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a082013560058201555050565b50506040516001600160a01b038216907fad6c90e26411f59c32b869505ebb4f0298425b4e9dd8aa92c7a9b13442f1fc9590600090a25061097281611133565b905061088a565b5050505050565b6000600354116109c25760405162461bcd60e51b815260206004820152600d60248201526c15158e9393d517d19553911151609a1b60448201526064016102ab565b336000818152600460205260408120916109db906107a6565b905060008111610a1f5760405162461bcd60e51b815260206004820152600f60248201526e54563a4e4f5f434c41494d41424c4560881b60448201526064016102ab565b80826005016000828254610a3391906110c3565b9091555050600254610a4f906001600160a01b03168483610c9d565b6040518181526001600160a01b0384169033907fa96ccbd516e1bb3e6dad792a13a75e8afcf013d3ff446f07416945f5efd46062906020015b60405180910390a3505050565b6000546001600160a01b03163314610abf5760405162461bcd60e51b81526004016102ab9061109d565b600180546001600160a01b0319166001600160a01b03831690811790915560405133907f8573d4aae9f7fb051c6b88d7440011a1c12376acda6603a45f45bad36a8db4ce90600090a350565b6000546001600160a01b03163314610b355760405162461bcd60e51b81526004016102ab9061109d565b6002546001600160a01b0383811691161415610b935760405162461bcd60e51b815260206004820152601f60248201527f54563a43414e4e4f545f5245434f5645525f56455354494e475f544f4b454e0060448201526064016102ab565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015610bd557600080fd5b505afa158015610be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0d9190611049565b905060008111610c4d5760405162461bcd60e51b815260206004820152600b60248201526a2a2b1d2727afaa27a5a2a760a91b60448201526064016102ab565b610c58838383610c9d565b816001600160a01b0316836001600160a01b03167f06fbbb545a0f80e8f0fe29d731148729a130754066a48802b5999c11acdf52ce83604051610a8891815260200190565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610cf99190611062565b6000604051808303816000865af19150503d8060008114610d36576040519150601f19603f3d011682016040523d82523d6000602084013e610d3b565b606091505b5091509150818015610d65575080511580610d65575080806020019051810190610d65919061100e565b6109795760405162461bcd60e51b815260206004820152601760248201527f54563a534146455f5452414e534645525f4641494c454400000000000000000060448201526064016102ab565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691610e159190611062565b6000604051808303816000865af19150503d8060008114610e52576040519150601f19603f3d011682016040523d82523d6000602084013e610e57565b606091505b5091509150818015610e81575080511580610e81575080806020019051810190610e81919061100e565b610ecd5760405162461bcd60e51b815260206004820152601c60248201527f54563a534146455f5452414e534645525f46524f4d5f4641494c45440000000060448201526064016102ab565b505050505050565b80356001600160a01b0381168114610eec57600080fd5b919050565b600060208284031215610f0357600080fd5b610f0c82610ed5565b9392505050565b60008060408385031215610f2657600080fd5b610f2f83610ed5565b9150610f3d60208401610ed5565b90509250929050565b60008060008060408587031215610f5c57600080fd5b843567ffffffffffffffff80821115610f7457600080fd5b818701915087601f830112610f8857600080fd5b813581811115610f9757600080fd5b8860208260051b8501011115610fac57600080fd5b602092830196509450908601359080821115610fc757600080fd5b818701915087601f830112610fdb57600080fd5b813581811115610fea57600080fd5b88602060c083028501011115610fff57600080fd5b95989497505060200194505050565b60006020828403121561102057600080fd5b81518015158114610f0c57600080fd5b60006020828403121561104257600080fd5b5035919050565b60006020828403121561105b57600080fd5b5051919050565b6000825160005b818110156110835760208186018101518583015201611069565b81811115611092576000828501525b509190910192915050565b6020808252600c908201526b2a2b1d2727aa2fa7aba722a960a11b604082015260600190565b600082198211156110d6576110d661114e565b500190565b6000826110f857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156111175761111761114e565b500290565b60008282101561112e5761112e61114e565b500390565b60006000198214156111475761114761114e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212200a7e41f1fad3425402689cc124e4aa986f30dace2948c3a804f2a0491906c01764736f6c63430008070033

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

00000000000000000000000072b886d09c117654ab7da13a14d603001de0b777

-----Decoded View---------------
Arg [0] : token_ (address): 0x72B886d09C117654aB7dA13A14d603001dE0B777

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000072b886d09c117654ab7da13a14d603001de0b777


Deployed Bytecode Sourcemap

407:6097:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2465:593;;;;;;:::i;:::-;;:::i;:::-;;4614:620;;;;;;:::i;:::-;;:::i;566:43::-;;;;;;;;;7025:25:4;;;7013:2;6998:18;566:43:3;;;;;;;;1079:167;;;:::i;2144:315::-;;;;;;:::i;:::-;;:::i;616:69::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7348:25:4;;;7404:2;7389:18;;7382:34;;;;7432:18;;;7425:34;;;;7490:2;7475:18;;7468:34;7533:3;7518:19;;7511:35;7577:3;7562:19;;7555:35;7335:3;7320:19;616:69:3;7061:535:4;1436:240:3;;;:::i;3064:896::-;;;;;;:::i;:::-;;:::i;453:29::-;;;;;-1:-1:-1;;;;;453:29:3;;;;;;-1:-1:-1;;;;;3045:32:4;;;3027:51;;3015:2;3000:18;453:29:3;2881:203:4;1767:371:3;;;;;;:::i;:::-;;:::i;3966:642::-;;;;;;:::i;:::-;;:::i;488:36::-;;;;;-1:-1:-1;;;;;488:36:3;;;1252:178;;;;;;:::i;:::-;;:::i;531:29::-;;;;;-1:-1:-1;;;;;531:29:3;;;5325:403;;;;;;:::i;:::-;;:::i;2465:593::-;1019:5;;-1:-1:-1;;;;;1019:5:3;1028:10;1019:19;1011:44;;;;-1:-1:-1;;;1011:44:3;;;;;;;:::i;:::-;;;;;;;;;2766:17:::1;:31;2784:12;-1:-1:-1::0;;;;;2766:31:3::1;-1:-1:-1::0;;;;;2766:31:3::1;;;;;;;;;;;;2734:17;:29;2760:1:::0;-1:-1:-1;;;;;2734:29:3::1;-1:-1:-1::0;;;;;2734:29:3::1;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2841:17;:31;2859:12;-1:-1:-1::0;;;;;2841:31:3::1;-1:-1:-1::0;;;;;2841:31:3::1;;;;;;;;;;;;2807:17;:31;2825:12;-1:-1:-1::0;;;;;2807:31:3::1;-1:-1:-1::0;;;;;2807:31:3::1;;;;;;;;;;;;:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2916:17;:29;2942:1:::0;-1:-1:-1;;;;;2916:29:3::1;-1:-1:-1::0;;;;;2916:29:3::1;;;;;;;;;;;;2882:17;:31;2900:12;-1:-1:-1::0;;;;;2882:31:3::1;-1:-1:-1::0;;;;;2882:31:3::1;;;;;;;;;;;;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2963:17;:29;2989:1:::0;-1:-1:-1;;;;;2963:29:3::1;-1:-1:-1::0;;;;;2963:29:3::1;;;;;;;;;;;;;2956:36:::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3038:12;-1:-1:-1::0;;;;;3008:43:3::1;3024:12;-1:-1:-1::0;;;;;3008:43:3::1;;;;;;;;;;;2465:593:::0;;:::o;4614:620::-;1019:5;;-1:-1:-1;;;;;1019:5:3;1028:10;1019:19;1011:44;;;;-1:-1:-1;;;1011:44:3;;;;;;;:::i;:::-;-1:-1:-1;;;;;4756:28:3;::::1;4714:39;4756:28:::0;;;:17:::1;:28;::::0;;;;;;4817:27;;::::1;::::0;4892:29:::1;::::0;::::1;::::0;4756:28;;4817:27;;4878:43:::1;::::0;4817:27;4878:43:::1;:::i;:::-;-1:-1:-1::0;;;;;5042:28:3;;::::1;;::::0;;;:17:::1;:28;::::0;;;;:42:::1;;:56:::0;;;5123:5:::1;::::0;4854:67;;-1:-1:-1;5109:49:3::1;::::0;5123:5:::1;5130:12:::0;4854:67;5109:13:::1;:49::i;:::-;5214:12;-1:-1:-1::0;;;;;5174:53:3::1;5188:9;-1:-1:-1::0;;;;;5174:53:3::1;;5199:13;5174:53;;;;7025:25:4::0;;7013:2;6998:18;;6879:177;5174:53:3::1;;;;;;;;4704:530;;;4614:620:::0;;:::o;1079:167::-;1019:5;;-1:-1:-1;;;;;1019:5:3;1028:10;1019:19;1011:44;;;;-1:-1:-1;;;1011:44:3;;;;;;;:::i;:::-;1177:1:::1;1161:18:::0;;-1:-1:-1;;;;;;1161:18:3;;::::1;::::0;;;1146:33;;;;::::1;::::0;;1195:44:::1;::::0;1216:10:::1;::::0;1195:44:::1;::::0;1177:1;;1195:44:::1;1079:167::o:0;2144:315::-;1019:5;;-1:-1:-1;;;;;1019:5:3;1028:10;1019:19;1011:44;;;;-1:-1:-1;;;1011:44:3;;;;;;;:::i;:::-;2233:19:::1;::::0;:33;2225:63:::1;;;::::0;-1:-1:-1;;;2225:63:3;;5679:2:4;2225:63:3::1;::::0;::::1;5661:21:4::0;5718:2;5698:18;;;5691:30;-1:-1:-1;;;5737:18:4;;;5730:47;5794:18;;2225:63:3::1;5477:341:4::0;2225:63:3::1;2317:5;::::0;2299:65:::1;::::0;-1:-1:-1;;;;;2317:5:3::1;2324:10;2344:4;2351:12:::0;2299:17:::1;:65::i;:::-;2375:19;:34:::0;;;2425:27:::1;::::0;7025:25:4;;;2425:27:3::1;::::0;7013:2:4;6998:18;2425:27:3::1;;;;;;;2144:315:::0;:::o;1436:240::-;1499:12;;-1:-1:-1;;;;;1499:12:3;1515:10;1499:26;1491:59;;;;-1:-1:-1;;;1491:59:3;;5330:2:4;1491:59:3;;;5312:21:4;5369:2;5349:18;;;5342:30;-1:-1:-1;;;5388:18:4;;;5381:50;5448:18;;1491:59:3;5128:344:4;1491:59:3;1587:5;;;1566:39;;1594:10;;-1:-1:-1;;;;;1587:5:3;;;;1566:39;;;1616:5;:18;;-1:-1:-1;;;;;;1616:18:3;;;1624:10;1616:18;;;;;1644:25;;;;;;;1436:240::o;3064:896::-;-1:-1:-1;;;;;3216:28:3;;3138:24;3216:28;;;:17;:28;;;;;3278;;;;3321:26;3317:49;;-1:-1:-1;3364:1:3;;3064:896;-1:-1:-1;;;3064:896:3:o;3317:49::-;3416:25;;3377:18;;3398:43;;:15;:43;:::i;:::-;3467:21;;;;3377:64;;-1:-1:-1;3503:19:3;;;3499:42;;-1:-1:-1;3539:1:3;;3064:896;-1:-1:-1;;;;;3064:896:3:o;3499:42::-;3596:29;;;;3552:18;;3574;3587:5;3574:10;:18;:::i;:::-;3573:52;;;;:::i;:::-;3552:73;;3924:15;:29;;;3883:12;3819:15;:27;;;3734:12;3721:10;:25;:53;;3764:10;3721:53;;;3749:12;3721:53;3695:151;;;;:::i;:::-;3673:222;;;;:::i;:::-;3655:298;;;;:::i;:::-;3636:317;3064:896;-1:-1:-1;;;;;;;3064:896:3:o;1767:371::-;1019:5;;-1:-1:-1;;;;;1019:5:3;1028:10;1019:19;1011:44;;;;-1:-1:-1;;;1011:44:3;;;;;;;:::i;:::-;1916:9:::1;1911:221;1927:28:::0;;::::1;1911:221;;;1976:16;1995:10;;2006:1;1995:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;1976:32;;2053:17;;2071:1;2053:20;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2023:27:3;::::1;;::::0;;;:17:::1;:27;::::0;;;;2053:20:::1;::::0;;::::1;::::0;;;::::1;::::0;2023:27;-1:-1:-1;2023:50:3::1;2053:20:::0;2023:27;8838:5:4;8825:19;8819:4;8812:33;8899:2;8892:5;8888:14;8875:28;8871:1;8865:4;8861:12;8854:50;8958:2;8951:5;8947:14;8934:28;8930:1;8924:4;8920:12;8913:50;9017:2;9010:5;9006:14;8993:28;8989:1;8983:4;8979:12;8972:50;9076:3;9069:5;9065:15;9052:29;9048:1;9042:4;9038:12;9031:51;9136:3;9129:5;9125:15;9112:29;9108:1;9102:4;9098:12;9091:51;;;8663:485;2023:50:3::1;-1:-1:-1::0;;2093:28:3::1;::::0;-1:-1:-1;;;;;2093:28:3;::::1;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;1957:3:3::1;::::0;::::1;:::i;:::-;;;1911:221;;;;1767:371:::0;;;;:::o;3966:642::-;4075:1;4045:19;;:32;4037:58;;;;-1:-1:-1;;;4037:58:3;;4290:2:4;4037:58:3;;;4272:21:4;4329:2;4309:18;;;4302:30;-1:-1:-1;;;4348:18:4;;;4341:43;4401:18;;4037:58:3;4088:337:4;4037:58:3;4166:10;4106:39;4148:29;;;:17;:29;;;;;;4212:27;;:15;:27::i;:::-;4188:51;;4282:1;4258:13;:26;4250:54;;;;-1:-1:-1;;;4250:54:3;;6737:2:4;4250:54:3;;;6719:21:4;6776:2;6756:18;;;6749:30;-1:-1:-1;;;6795:18:4;;;6788:45;6850:18;;4250:54:3;6535:339:4;4250:54:3;4458:13;4425:15;:29;;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;4496:5:3;;4482:49;;-1:-1:-1;;;;;4496:5:3;4503:12;4517:13;4482;:49::i;:::-;4547:54;;7025:25:4;;;-1:-1:-1;;;;;4547:54:3;;;4561:10;;4547:54;;7013:2:4;6998:18;4547:54:3;;;;;;;;4027:581;;3966:642;:::o;1252:178::-;1019:5;;-1:-1:-1;;;;;1019:5:3;1028:10;1019:19;1011:44;;;;-1:-1:-1;;;1011:44:3;;;;;;;:::i;:::-;1336:12:::1;:24:::0;;-1:-1:-1;;;;;;1336:24:3::1;-1:-1:-1::0;;;;;1336:24:3;::::1;::::0;;::::1;::::0;;;1376:47:::1;::::0;1401:10:::1;::::0;1376:47:::1;::::0;-1:-1:-1;;1376:47:3::1;1252:178:::0;:::o;5325:403::-;1019:5;;-1:-1:-1;;;;;1019:5:3;1028:10;1019:19;1011:44;;;;-1:-1:-1;;;1011:44:3;;;;;;;:::i;:::-;5441:5:::1;::::0;-1:-1:-1;;;;;5431:15:3;;::::1;5441:5:::0;::::1;5431:15;;5423:59;;;::::0;-1:-1:-1;;;5423:59:3;;6377:2:4;5423:59:3::1;::::0;::::1;6359:21:4::0;6416:2;6396:18;;;6389:30;6455:33;6435:18;;;6428:61;6506:18;;5423:59:3::1;6175:355:4::0;5423:59:3::1;5510:43;::::0;-1:-1:-1;;;5510:43:3;;5547:4:::1;5510:43;::::0;::::1;3027:51:4::0;5493:14:3::1;::::0;-1:-1:-1;;;;;5510:28:3;::::1;::::0;::::1;::::0;3000:18:4;;5510:43:3::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5493:60;;5589:1;5572:6;:19;5564:43;;;::::0;-1:-1:-1;;;5564:43:3;;3950:2:4;5564:43:3::1;::::0;::::1;3932:21:4::0;3989:2;3969:18;;;3962:30;-1:-1:-1;;;4008:18:4;;;4001:41;4059:18;;5564:43:3::1;3748:335:4::0;5564:43:3::1;5618;5632:6;5640:12;5654:6;5618:13;:43::i;:::-;5708:12;-1:-1:-1::0;;;;;5677:44:3::1;5692:6;-1:-1:-1::0;;;;;5677:44:3::1;;5700:6;5677:44;;;;7025:25:4::0;;7013:2;6998:18;;6879:177;5810:325:3;5948:66;;;-1:-1:-1;;;;;3661:32:4;;;5948:66:3;;;3643:51:4;3710:18;;;;3703:34;;;5948:66:3;;;;;;;;;;3616:18:4;;;;5948:66:3;;;;;;;-1:-1:-1;;;;;5948:66:3;-1:-1:-1;;;5948:66:3;;;5936:79;;-1:-1:-1;;;;5936:11:3;;;;:79;;5948:66;5936:79;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5898:117;;;;6034:7;:66;;;;-1:-1:-1;6046:11:3;;:25;;:53;;;6086:4;6075:24;;;;;;;;;;;;:::i;:::-;6026:102;;;;-1:-1:-1;;;6026:102:3;;6025:2:4;6026:102:3;;;6007:21:4;6064:2;6044:18;;;6037:30;6103:25;6083:18;;;6076:53;6146:18;;6026:102:3;5823:347:4;6141:360:3;6298:77;;;-1:-1:-1;;;;;3347:15:4;;;6298:77:3;;;3329:34:4;3399:15;;;3379:18;;;3372:43;3431:18;;;;3424:34;;;6298:77:3;;;;;;;;;;3264:18:4;;;;6298:77:3;;;;;;;-1:-1:-1;;;;;6298:77:3;-1:-1:-1;;;6298:77:3;;;6286:90;;-1:-1:-1;;;;6286:11:3;;;;:90;;6298:77;6286:90;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6248:128;;;;6395:7;:66;;;;-1:-1:-1;6407:11:3;;:25;;:53;;;6447:4;6436:24;;;;;;;;;;;;:::i;:::-;6387:107;;;;-1:-1:-1;;;6387:107:3;;4632:2:4;6387:107:3;;;4614:21:4;4671:2;4651:18;;;4644:30;4710;4690:18;;;4683:58;4758:18;;6387:107:3;4430:352:4;6387:107:3;6238:263;;6141:360;;;;:::o;14:173:4:-;82:20;;-1:-1:-1;;;;;131:31:4;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:4:o;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;383:260;;;;;:::o;648:1141::-;803:6;811;819;827;880:2;868:9;859:7;855:23;851:32;848:52;;;896:1;893;886:12;848:52;936:9;923:23;965:18;1006:2;998:6;995:14;992:34;;;1022:1;1019;1012:12;992:34;1060:6;1049:9;1045:22;1035:32;;1105:7;1098:4;1094:2;1090:13;1086:27;1076:55;;1127:1;1124;1117:12;1076:55;1167:2;1154:16;1193:2;1185:6;1182:14;1179:34;;;1209:1;1206;1199:12;1179:34;1264:7;1257:4;1247:6;1244:1;1240:14;1236:2;1232:23;1228:34;1225:47;1222:67;;;1285:1;1282;1275:12;1222:67;1316:4;1308:13;;;;-1:-1:-1;1340:6:4;-1:-1:-1;1384:20:4;;;1371:34;;1417:16;;;1414:36;;;1446:1;1443;1436:12;1414:36;1484:8;1473:9;1469:24;1459:34;;1531:7;1524:4;1520:2;1516:13;1512:27;1502:55;;1553:1;1550;1543:12;1502:55;1595:2;1582:16;1623:2;1613:8;1610:16;1607:36;;;1639:1;1636;1629:12;1607:36;1699:7;1692:4;1684;1674:8;1670:19;1666:2;1662:28;1658:39;1655:52;1652:72;;;1720:1;1717;1710:12;1652:72;648:1141;;;;-1:-1:-1;;1751:4:4;1743:13;;-1:-1:-1;;;648:1141:4:o;1794:277::-;1861:6;1914:2;1902:9;1893:7;1889:23;1885:32;1882:52;;;1930:1;1927;1920:12;1882:52;1962:9;1956:16;2015:5;2008:13;2001:21;1994:5;1991:32;1981:60;;2037:1;2034;2027:12;2076:180;2135:6;2188:2;2176:9;2167:7;2163:23;2159:32;2156:52;;;2204:1;2201;2194:12;2156:52;-1:-1:-1;2227:23:4;;2076:180;-1:-1:-1;2076:180:4:o;2261:184::-;2331:6;2384:2;2372:9;2363:7;2359:23;2355:32;2352:52;;;2400:1;2397;2390:12;2352:52;-1:-1:-1;2423:16:4;;2261:184;-1:-1:-1;2261:184:4:o;2450:426::-;2579:3;2617:6;2611:13;2642:1;2652:129;2666:6;2663:1;2660:13;2652:129;;;2764:4;2748:14;;;2744:25;;2738:32;2725:11;;;2718:53;2681:12;2652:129;;;2799:6;2796:1;2793:13;2790:48;;;2834:1;2825:6;2820:3;2816:16;2809:27;2790:48;-1:-1:-1;2854:16:4;;;;;2450:426;-1:-1:-1;;2450:426:4:o;4787:336::-;4989:2;4971:21;;;5028:2;5008:18;;;5001:30;-1:-1:-1;;;5062:2:4;5047:18;;5040:42;5114:2;5099:18;;4787:336::o;7601:128::-;7641:3;7672:1;7668:6;7665:1;7662:13;7659:39;;;7678:18;;:::i;:::-;-1:-1:-1;7714:9:4;;7601:128::o;7734:217::-;7774:1;7800;7790:132;;7844:10;7839:3;7835:20;7832:1;7825:31;7879:4;7876:1;7869:15;7907:4;7904:1;7897:15;7790:132;-1:-1:-1;7936:9:4;;7734:217::o;7956:168::-;7996:7;8062:1;8058;8054:6;8050:14;8047:1;8044:21;8039:1;8032:9;8025:17;8021:45;8018:71;;;8069:18;;:::i;:::-;-1:-1:-1;8109:9:4;;7956:168::o;8129:125::-;8169:4;8197:1;8194;8191:8;8188:34;;;8202:18;;:::i;:::-;-1:-1:-1;8239:9:4;;8129:125::o;8259:135::-;8298:3;-1:-1:-1;;8319:17:4;;8316:43;;;8339:18;;:::i;:::-;-1:-1:-1;8386:1:4;8375:13;;8259:135::o;8399:127::-;8460:10;8455:3;8451:20;8448:1;8441:31;8491:4;8488:1;8481:15;8515:4;8512:1;8505:15;8531:127;8592:10;8587:3;8583:20;8580:1;8573:31;8623:4;8620:1;8613:15;8647:4;8644:1;8637:15

Swarm Source

ipfs://0a7e41f1fad3425402689cc124e4aa986f30dace2948c3a804f2a0491906c017

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.