ETH Price: $1,971.68 (-1.81%)
Gas: 0.44 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve220741322025-03-18 13:42:472 days ago1742305367IN
bZx Vesting Token: vBZRX Token
0 ETH0.000032291.33947069
Approve218115312025-02-09 21:05:5939 days ago1739135159IN
bZx Vesting Token: vBZRX Token
0 ETH0.000028921.2
Approve217191202025-01-27 23:23:2352 days ago1738020203IN
bZx Vesting Token: vBZRX Token
0 ETH0.000295546.37905455
Approve215446642025-01-03 14:50:3576 days ago1735915835IN
bZx Vesting Token: vBZRX Token
0 ETH0.0004642819.25930592
Claim213982562024-12-14 4:06:1197 days ago1734149171IN
bZx Vesting Token: vBZRX Token
0 ETH0.000331979.85990233
Transfer212738732024-11-26 18:59:59114 days ago1732647599IN
bZx Vesting Token: vBZRX Token
0 ETH0.0010454212
Claim210318452024-10-24 0:22:23148 days ago1729729343IN
bZx Vesting Token: vBZRX Token
0 ETH0.001028665.7825359
Claim210316092024-10-23 23:34:59148 days ago1729726499IN
bZx Vesting Token: vBZRX Token
0 ETH0.000828935.15533555
Claim210309402024-10-23 21:20:11148 days ago1729718411IN
bZx Vesting Token: vBZRX Token
0 ETH0.0018091911.25177433
Approve210282612024-10-23 12:23:11148 days ago1729686191IN
bZx Vesting Token: vBZRX Token
0 ETH0.0005234811.28421587
Transfer210272832024-10-23 9:06:35148 days ago1729674395IN
bZx Vesting Token: vBZRX Token
0 ETH0.00274399.69527476
Claim210271482024-10-23 8:39:23148 days ago1729672763IN
bZx Vesting Token: vBZRX Token
0 ETH0.001570258.82661079
Transfer209585412024-10-13 18:48:11158 days ago1728845291IN
bZx Vesting Token: vBZRX Token
0 ETH0.003470622.2457788
Claim207434372024-09-13 18:19:23188 days ago1726251563IN
bZx Vesting Token: vBZRX Token
0 ETH0.000622823.87347172
Claim206871432024-09-05 21:41:47196 days ago1725572507IN
bZx Vesting Token: vBZRX Token
0 ETH0.00011623.45130812
Claim206871172024-09-05 21:36:35196 days ago1725572195IN
bZx Vesting Token: vBZRX Token
0 ETH0.000560793.48768457
Transfer206843232024-09-05 12:15:59196 days ago1725538559IN
bZx Vesting Token: vBZRX Token
0 ETH0.000366914.21285234
Claim206842962024-09-05 12:10:35196 days ago1725538235IN
bZx Vesting Token: vBZRX Token
0 ETH0.000133783.97346492
Approve206275322024-08-28 13:57:47204 days ago1724853467IN
bZx Vesting Token: vBZRX Token
0 ETH0.000093832.0363466
Claim205803672024-08-21 23:47:11211 days ago1724284031IN
bZx Vesting Token: vBZRX Token
0 ETH0.000150070.93332748
Approve205767432024-08-21 11:36:59211 days ago1724240219IN
bZx Vesting Token: vBZRX Token
0 ETH0.000035750.77491536
Claim205693822024-08-20 10:57:47212 days ago1724151467IN
bZx Vesting Token: vBZRX Token
0 ETH0.00024071.49698642
Claim205693462024-08-20 10:50:23212 days ago1724151023IN
bZx Vesting Token: vBZRX Token
0 ETH0.00032611.83306717
Approve205459802024-08-17 4:32:47216 days ago1723869167IN
bZx Vesting Token: vBZRX Token
0 ETH0.000134252.89390886
Approve205459782024-08-17 4:32:23216 days ago1723869143IN
bZx Vesting Token: vBZRX Token
0 ETH0.000069391.49593984
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:
BZRXVestingToken

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-07-11
*/

/**
 * Copyright 2017-2020, bZeroX, LLC <https://bzx.network/>. All Rights Reserved.
 * Licensed under the Apache License, Version 2.0.
 */

pragma solidity 0.5.17;


contract IERC20 {
    string public name;
    uint8 public decimals;
    string public symbol;
    function totalSupply() public view returns (uint256);
    function balanceOf(address _who) public view returns (uint256);
    function allowance(address _owner, address _spender) public view returns (uint256);
    function approve(address _spender, uint256 _value) public returns (bool);
    function transfer(address _to, uint256 _value) public returns (bool);
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "unauthorized");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

/**
 * Copyright (C) 2019 Aragon One <https://aragon.one/>
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
/**
 * @title Checkpointing
 * @notice Checkpointing library for keeping track of historical values based on an arbitrary time
 *         unit (e.g. seconds or block numbers).
 * @dev Adapted from:
 *   - Checkpointing  (https://github.com/aragonone/voting-connectors/blob/master/shared/contract-utils/contracts/Checkpointing.sol)
 */
library Checkpointing {

    struct Checkpoint {
        uint256 time;
        uint256 value;
    }

    struct History {
        Checkpoint[] history;
    }

    function addCheckpoint(
        History storage _self,
        uint256 _time,
        uint256 _value)
        internal
    {
        uint256 length = _self.history.length;
        if (length == 0) {
            _self.history.push(Checkpoint(_time, _value));
        } else {
            Checkpoint storage currentCheckpoint = _self.history[length - 1];
            uint256 currentCheckpointTime = currentCheckpoint.time;

            if (_time > currentCheckpointTime) {
                _self.history.push(Checkpoint(_time, _value));
            } else if (_time == currentCheckpointTime) {
                currentCheckpoint.value = _value;
            } else { // ensure list ordering
                revert("past-checkpoint");
            }
        }
    }

    function getValueAt(
        History storage _self,
        uint256 _time)
        internal
        view
        returns (uint256)
    {
        return _getValueAt(_self, _time);
    }

    function lastUpdated(
        History storage _self)
        internal
        view
        returns (uint256)
    {
        uint256 length = _self.history.length;
        if (length != 0) {
            return _self.history[length - 1].time;
        }
    }

    function latestValue(
        History storage _self)
        internal
        view
        returns (uint256)
    {
        uint256 length = _self.history.length;
        if (length != 0) {
            return _self.history[length - 1].value;
        }
    }

    function _getValueAt(
        History storage _self,
        uint256 _time)
        private
        view
        returns (uint256)
    {
        uint256 length = _self.history.length;

        // Short circuit if there's no checkpoints yet
        // Note that this also lets us avoid using SafeMath later on, as we've established that
        // there must be at least one checkpoint
        if (length == 0) {
            return 0;
        }

        // Check last checkpoint
        uint256 lastIndex = length - 1;
        Checkpoint storage lastCheckpoint = _self.history[lastIndex];
        if (_time >= lastCheckpoint.time) {
            return lastCheckpoint.value;
        }

        // Check first checkpoint (if not already checked with the above check on last)
        if (length == 1 || _time < _self.history[0].time) {
            return 0;
        }

        // Do binary search
        // As we've already checked both ends, we don't need to check the last checkpoint again
        uint256 low = 0;
        uint256 high = lastIndex - 1;

        while (high != low) {
            uint256 mid = (high + low + 1) / 2; // average, ceil round
            Checkpoint storage checkpoint = _self.history[mid];
            uint256 midTime = checkpoint.time;

            if (_time > midTime) {
                low = mid;
            } else if (_time < midTime) {
                // Note that we don't need SafeMath here because mid must always be greater than 0
                // from the while condition
                high = mid - 1;
            } else {
                // _time == midTime
                return checkpoint.value;
            }
        }

        return _self.history[low].value;
    }
}

contract CheckpointingToken is IERC20 {
    using Checkpointing for Checkpointing.History;

    mapping (address => mapping (address => uint256)) internal allowances_;

    mapping (address => Checkpointing.History) internal balancesHistory_;

    struct Checkpoint {
        uint256 time;
        uint256 value;
    }

    struct History {
        Checkpoint[] history;
    }

    // override this function if a totalSupply should be tracked
    function totalSupply()
        public
        view
        returns (uint256)
    {
        return 0;
    }

    function balanceOf(
        address _owner)
        public
        view
        returns (uint256)
    {
        return balanceOfAt(_owner, block.number);
    }

    function balanceOfAt(
        address _owner,
        uint256 _blockNumber)
        public
        view
        returns (uint256)
    {
        return balancesHistory_[_owner].getValueAt(_blockNumber);
    }

    function allowance(
        address _owner,
        address _spender)
        public
        view
        returns (uint256)
    {
        return allowances_[_owner][_spender];
    }

    function approve(
        address _spender,
        uint256 _value)
        public
        returns (bool)
    {
        allowances_[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    function transfer(
        address _to,
        uint256 _value)
        public
        returns (bool)
    {
        return transferFrom(
            msg.sender,
            _to,
            _value
        );
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _value)
        public
        returns (bool)
    {
        uint256 previousBalanceFrom = balanceOfAt(_from, block.number);
        require(previousBalanceFrom >= _value, "insufficient-balance");

        if (_from != msg.sender && allowances_[_from][msg.sender] != uint(-1)) {
            require(allowances_[_from][msg.sender] >= _value, "insufficient-allowance");
            allowances_[_from][msg.sender] = allowances_[_from][msg.sender] - _value; // overflow not possible
        }

        balancesHistory_[_from].addCheckpoint(
            block.number,
            previousBalanceFrom - _value // overflow not possible
        );

        balancesHistory_[_to].addCheckpoint(
            block.number,
            add(
                balanceOfAt(_to, block.number),
                _value
            )
        );

        emit Transfer(_from, _to, _value);
        return true;
    }

    function _getBlockNumber()
        internal
        view
        returns (uint256)
    {
        return block.number;
    }

    function _getTimestamp()
        internal
        view
        returns (uint256)
    {
        return block.timestamp;
    }

    function add(
        uint256 x,
        uint256 y)
        internal
        pure
        returns (uint256 c)
    {
        require((c = x + y) >= x, "addition-overflow");
    }

    function sub(
        uint256 x,
        uint256 y)
        internal
        pure
        returns (uint256 c)
    {
        require((c = x - y) <= x, "subtraction-overflow");
    }

    function mul(
        uint256 a,
        uint256 b)
        internal
        pure
        returns (uint256 c)
    {
        if (a == 0) {
            return 0;
        }
        require((c = a * b) / a == b, "multiplication-overflow");
    }

    function div(
        uint256 a,
        uint256 b)
        internal
        pure
        returns (uint256 c)
    {
        require(b != 0, "division by zero");
        c = a / b;
    }
}

contract BZRXVestingToken is CheckpointingToken, Ownable {

    event Claim(
        address indexed owner,
        uint256 value
    );

    string public constant name = "bZx Vesting Token";
    string public constant symbol = "vBZRX";
    uint8 public constant decimals = 18;

    uint256 public constant cliffDuration =                  15768000; // 86400 * 365 * 0.5
    uint256 public constant vestingDuration =               126144000; // 86400 * 365 * 4
    uint256 internal constant vestingDurationAfterCliff_ =  110376000; // 86400 * 365 * 3.5

    uint256 public constant vestingStartTimestamp =         1594648800; // start_time
    uint256 public constant vestingCliffTimestamp =         vestingStartTimestamp + cliffDuration;
    uint256 public constant vestingEndTimestamp =           vestingStartTimestamp + vestingDuration;
    uint256 public constant vestingLastClaimTimestamp =     vestingEndTimestamp + 86400 * 365;

    uint256 public totalClaimed; // total claimed since start

    IERC20 public constant BZRX = IERC20(0x56d811088235F11C8920698a204A5010a788f4b3);

    uint256 internal constant startingBalance_ = 889389933e18; // 889,389,933 BZRX

    Checkpointing.History internal totalSupplyHistory_;

    mapping (address => uint256) internal lastClaimTime_;
    mapping (address => uint256) internal userTotalClaimed_;

    bool internal isInitialized_;


    // sets up vesting and deposits BZRX
    function initialize()
        external
    {
        require(!isInitialized_, "already initialized");

        balancesHistory_[msg.sender].addCheckpoint(_getBlockNumber(), startingBalance_);
        totalSupplyHistory_.addCheckpoint(_getBlockNumber(), startingBalance_);

        emit Transfer(
            address(0),
            msg.sender,
            startingBalance_
        );

        BZRX.transferFrom(
            msg.sender,
            address(this),
            startingBalance_
        );

        isInitialized_ = true;
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _value)
        public
        returns (bool)
    {
        _claim(_from);
        if (_from != _to) {
            _claim(_to);
        }

        return super.transferFrom(
            _from,
            _to,
            _value
        );
    }

    // user can claim vested BZRX
    function claim()
        public
    {
        _claim(msg.sender);
    }

    // user can burn remaining vBZRX tokens once fully vested; unclaimed BZRX with be withdrawn
    function burn()
        external
    {
        require(_getTimestamp() >= vestingEndTimestamp, "not fully vested");

        _claim(msg.sender);

        uint256 _blockNumber = _getBlockNumber();
        uint256 balanceBefore = balanceOfAt(msg.sender, _blockNumber);
        balancesHistory_[msg.sender].addCheckpoint(_blockNumber, 0);
        totalSupplyHistory_.addCheckpoint(_blockNumber, totalSupplyAt(_blockNumber) - balanceBefore); // overflow not possible

        emit Transfer(
            msg.sender,
            address(0),
            balanceBefore
        );
    }

    // funds unclaimed one year after vesting ends (5 years) can be rescued
    function rescue(
        address _receiver,
        uint256 _amount)
        external
        onlyOwner
    {
        require(_getTimestamp() > vestingLastClaimTimestamp, "unauthorized");

        BZRX.transfer(
            _receiver,
            _amount
        );
    }

    function totalSupply()
        public
        view
        returns (uint256)
    {
        return totalSupplyAt(_getBlockNumber());
    }

    function totalSupplyAt(
        uint256 _blockNumber)
        public
        view
        returns (uint256)
    {
        return totalSupplyHistory_.getValueAt(_blockNumber);
    }

    // total that has vested, but has not yet been claimed by a user
    function vestedBalanceOf(
        address _owner)
        public
        view
        returns (uint256)
    {
        uint256 lastClaim = lastClaimTime_[_owner];
        if (lastClaim < _getTimestamp()) {
            return _totalVested(
                balanceOfAt(_owner, _getBlockNumber()),
                lastClaim
            );
        }
    }

    // total that has not yet vested
    function vestingBalanceOf(
        address _owner)
        public
        view
        returns (uint256 balance)
    {
        balance = balanceOfAt(_owner, _getBlockNumber());
        if (balance != 0) {
            uint256 lastClaim = lastClaimTime_[_owner];
            if (lastClaim < _getTimestamp()) {
                balance = sub(
                    balance,
                    _totalVested(
                        balance,
                        lastClaim
                    )
                );
            }
        }
    }

    // total that has been claimed by a user
    function claimedBalanceOf(
        address _owner)
        public
        view
        returns (uint256)
    {
        return userTotalClaimed_[_owner];
    }

    // total vested since start (claimed + unclaimed)
    function totalVested()
        external
        view
        returns (uint256)
    {
        return _totalVested(startingBalance_, 0);
    }

    // total unclaimed since start
    function totalUnclaimed()
        external
        view
        returns (uint256)
    {
        return sub(
            _totalVested(startingBalance_, 0),
            totalClaimed
        );
    }

    function _claim(
        address _owner)
        internal
    {
        uint256 vested = vestedBalanceOf(_owner);
        if (vested != 0) {
            userTotalClaimed_[_owner] = add(userTotalClaimed_[_owner], vested);
            totalClaimed = add(totalClaimed, vested);

            BZRX.transfer(
                _owner,
                vested
            );

            emit Claim(
                _owner,
                vested
            );
        }

        lastClaimTime_[_owner] = _getTimestamp();
    }

    function _totalVested(
        uint256 _proportionalSupply,
        uint256 _lastClaimTime)
        internal
        view
        returns (uint256)
    {
        uint256 currentTimeForVesting = _getTimestamp();

        if (currentTimeForVesting <= vestingCliffTimestamp ||
            _lastClaimTime >= vestingEndTimestamp ||
            currentTimeForVesting > vestingLastClaimTimestamp) {
            // time cannot be before vesting starts
            // OR all vested token has already been claimed
            // OR time cannot be after last claim date
            return 0;
        }
        if (_lastClaimTime < vestingCliffTimestamp) {
            // vesting starts at the cliff timestamp
            _lastClaimTime = vestingCliffTimestamp;
        }
        if (currentTimeForVesting > vestingEndTimestamp) {
            // vesting ends at the end timestamp
            currentTimeForVesting = vestingEndTimestamp;
        }

        uint256 timeSinceClaim = sub(currentTimeForVesting, _lastClaimTime);
        return mul(_proportionalSupply, timeSinceClaim) / vestingDurationAfterCliff_; // will never divide by 0
    }
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Claim","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"BZRX","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"balanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"claimedBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cliffDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"totalSupplyAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalUnclaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalVested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"vestedBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"vestingBalanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestingCliffTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestingDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestingEndTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestingLastClaimTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestingStartTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405260006100176001600160e01b0361006a16565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6114ad8061007d6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637a4e4ecf1161010f578063c96f14b8116100a2578063d85349f711610071578063d85349f7146104dc578063dd62ed3e146104e4578063f2fde38b14610512578063f30127a514610538576101e5565b8063c96f14b8146104bc578063caced914146104c4578063d54ad2a1146104cc578063d6ddd21b146104d4576101e5565b806395d89b41116100de57806395d89b4114610445578063981b24d01461044d578063a9059cbb1461046a578063c8de1d5614610496576101e5565b80637a4e4ecf146103e55780638129fc1c146104115780638da5cb5b146104195780638f32d59b1461043d576101e5565b80633032bbe8116101875780634e71d92d116101565780634e71d92d146103835780634ee2cd7e1461038b57806351db5688146103b757806370a08231146103bf576101e5565b80633032bbe81461032d578063313ce5671461033557806336ca03651461035357806344df8e7014610379576101e5565b80631514617e116101c35780631514617e146102df57806318160ddd146102e7578063199cbc54146102ef57806323b872dd146102f7576101e5565b806306fdde03146101ea578063095ea7b3146102675780630e2d1a2a146102a7575b600080fd5b6101f2610540565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b03813516906020013561056d565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b03166105d4565b60408051918252519081900360200190f35b6102cd610625565b6102cd61062d565b6102cd610644565b6102936004803603606081101561030d57600080fd5b506001600160a01b0381358116916020810135909116906040013561065d565b6102cd61069d565b61033d6106a5565b6040805160ff9092168252519081900360200190f35b6102cd6004803603602081101561036957600080fd5b50356001600160a01b03166106aa565b610381610702565b005b6103816107f5565b6102cd600480360360408110156103a157600080fd5b506001600160a01b038135169060200135610800565b6102cd610828565b6102cd600480360360208110156103d557600080fd5b50356001600160a01b0316610830565b610381600480360360408110156103fb57600080fd5b506001600160a01b03813516906020013561083c565b610381610965565b610421610af6565b604080516001600160a01b039092168252519081900360200190f35b610293610b05565b6101f2610b2b565b6102cd6004803603602081101561046357600080fd5b5035610b4c565b6102936004803603604081101561048057600080fd5b506001600160a01b038135169060200135610b5f565b6102cd600480360360208110156104ac57600080fd5b50356001600160a01b0316610b6c565b6102cd610b87565b6102cd610bab565b6102cd610bb3565b6102cd610bb9565b6102cd610bc1565b6102cd600480360360408110156104fa57600080fd5b506001600160a01b0381358116916020013516610bc8565b6103816004803603602081101561052857600080fd5b50356001600160a01b0316610bf3565b610421610c47565b60405180604001604052806011815260200170312d3c102b32b9ba34b733902a37b5b2b760791b81525081565b3360008181526003602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6001600160a01b0381166000908152600860205260408120546105f5610c5f565b81101561061e576106166106108461060b610c63565b610800565b82610c67565b915050610620565b505b919050565b630784ce0081565b600061063f61063a610c63565b610b4c565b905090565b600061063f6b02dfafa4e0948fa0719400006000610c67565b600061066884610cfd565b826001600160a01b0316846001600160a01b03161461068a5761068a83610cfd565b610695848484610e53565b949350505050565b63669136e081565b601281565b60006106b88261060b610c63565b90508015610620576001600160a01b0382166000908152600860205260409020546106e1610c5f565b81101561061e576106fb826106f68484610c67565b61104a565b9392505050565b63669136e061070f610c5f565b1015610755576040805162461bcd60e51b815260206004820152601060248201526f1b9bdd08199d5b1b1e481d995cdd195960821b604482015290519081900360640190fd5b61075e33610cfd565b6000610768610c63565b905060006107763383610800565b33600090815260046020526040812091925061079a9190849063ffffffff61109916565b6107b982826107a885610b4c565b60079291900363ffffffff61109916565b60408051828152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6107fe33610cfd565b565b6001600160a01b03821660009081526004602052604081206106fb908363ffffffff6111a616565b635ffd02a081565b60006105ce8243610800565b610844610b05565b610884576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6368726a60610891610c5f565b116108d2576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6040805163a9059cbb60e01b81526001600160a01b03841660048201526024810183905290517356d811088235f11c8920698a204a5010a788f4b39163a9059cbb9160448083019260209291908290030181600087803b15801561093557600080fd5b505af1158015610949573d6000803e3d6000fd5b505050506040513d602081101561095f57600080fd5b50505050565b600a5460ff16156109b3576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b6109e66109be610c63565b336000908152600460205260409020906b02dfafa4e0948fa07194000063ffffffff61109916565b610a0c6109f1610c63565b6007906b02dfafa4e0948fa07194000063ffffffff61109916565b604080516b02dfafa4e0948fa0719400008152905133916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080516323b872dd60e01b81523360048201523060248201526b02dfafa4e0948fa071940000604482015290517356d811088235f11c8920698a204a5010a788f4b3916323b872dd9160648083019260209291908290030181600087803b158015610abb57600080fd5b505af1158015610acf573d6000803e3d6000fd5b505050506040513d6020811015610ae557600080fd5b5050600a805460ff19166001179055565b6005546001600160a01b031690565b6005546000906001600160a01b0316610b1c6111b2565b6001600160a01b031614905090565b604051806040016040528060058152602001640ec84b4a4b60db1b81525081565b60006105ce60078363ffffffff6111a616565b60006106fb33848461065d565b6001600160a01b031660009081526009602052604090205490565b600061063f610ba36b02dfafa4e0948fa0719400006000610c67565b60065461104a565b6368726a6081565b60065481565b635f0c68e081565b62f099c081565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610bfb610b05565b610c3b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610c44816111b6565b50565b7356d811088235f11c8920698a204a5010a788f4b381565b4290565b4390565b600080610c72610c5f565b9050635ffd02a081111580610c8b575063669136e08310155b80610c9957506368726a6081115b15610ca85760009150506105ce565b635ffd02a0831015610cbc57635ffd02a092505b63669136e0811115610ccf575063669136e05b6000610cdb828561104a565b90506306943440610cec8683611257565b81610cf357fe5b0495945050505050565b6000610d08826105d4565b90508015610e2b576001600160a01b038216600090815260096020526040902054610d3390826112c7565b6001600160a01b038316600090815260096020526040902055600654610d5990826112c7565b6006556040805163a9059cbb60e01b81526001600160a01b03841660048201526024810183905290517356d811088235f11c8920698a204a5010a788f4b39163a9059cbb9160448083019260209291908290030181600087803b158015610dbf57600080fd5b505af1158015610dd3573d6000803e3d6000fd5b505050506040513d6020811015610de957600080fd5b50506040805182815290516001600160a01b038416917f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4919081900360200190a25b610e33610c5f565b6001600160a01b0390921660009081526008602052604090209190915550565b600080610e608543610800565b905082811015610eae576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742d62616c616e636560601b604482015290519081900360640190fd5b6001600160a01b0385163314801590610eec57506001600160a01b038516600090815260036020908152604080832033845290915290205460001914155b15610f8d576001600160a01b0385166000908152600360209081526040808320338452909152902054831115610f62576040805162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e742d616c6c6f77616e636560501b604482015290519081900360640190fd5b6001600160a01b03851660009081526003602090815260408083203384529091529020805484900390555b6001600160a01b0385166000908152600460205260409020610fb8904385840363ffffffff61109916565b610ff443610fcf610fc98743610800565b866112c7565b6001600160a01b0387166000908152600460205260409020919063ffffffff61109916565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001949350505050565b808203828111156105ce576040805162461bcd60e51b81526020600482015260146024820152737375627472616374696f6e2d6f766572666c6f7760601b604482015290519081900360640190fd5b8254806110dd57604080518082019091528381526020808201848152865460018181018955600089815293909320935160029091029093019283555191015561095f565b60008460000160018303815481106110f157fe5b6000918252602090912060029091020180549091508085111561114b57604080518082019091528581526020808201868152885460018181018b5560008b815293909320935160029091029093019283555191015561119e565b8085141561115f576001820184905561119e565b6040805162461bcd60e51b815260206004820152600f60248201526e1c185cdd0b58da1958dadc1bda5b9d608a1b604482015290519081900360640190fd5b505050505050565b60006106fb8383611313565b3390565b6001600160a01b0381166111fb5760405162461bcd60e51b81526004018080602001828103825260268152602001806114536026913960400191505060405180910390fd5b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600082611266575060006105ce565b508181028183828161127457fe5b04146105ce576040805162461bcd60e51b815260206004820152601760248201527f6d756c7469706c69636174696f6e2d6f766572666c6f77000000000000000000604482015290519081900360640190fd5b808201828110156105ce576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e2d6f766572666c6f7760781b604482015290519081900360640190fd5b8154600090806113275760009150506105ce565b835460001982019060009086908390811061133e57fe5b9060005260206000209060020201905080600001548510611367576001015492506105ce915050565b826001148061139657508560000160008154811061138157fe5b90600052602060002090600202016000015485105b156113a757600093505050506105ce565b600060001983015b818114611424578754600283830160010104906000908a90839081106113d157fe5b600091825260209091206002909102018054909150808a11156113f65782945061141c565b808a10156114095760018303935061141c565b506001015496506105ce95505050505050565b5050506113af565b87600001828154811061143357fe5b906000526020600020906002020160010154955050505050509291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820ebedd7f9e77f5dc76d72dad591122cc69cabd43678fcab9d111893b83fd48e5f64736f6c63430005110032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80637a4e4ecf1161010f578063c96f14b8116100a2578063d85349f711610071578063d85349f7146104dc578063dd62ed3e146104e4578063f2fde38b14610512578063f30127a514610538576101e5565b8063c96f14b8146104bc578063caced914146104c4578063d54ad2a1146104cc578063d6ddd21b146104d4576101e5565b806395d89b41116100de57806395d89b4114610445578063981b24d01461044d578063a9059cbb1461046a578063c8de1d5614610496576101e5565b80637a4e4ecf146103e55780638129fc1c146104115780638da5cb5b146104195780638f32d59b1461043d576101e5565b80633032bbe8116101875780634e71d92d116101565780634e71d92d146103835780634ee2cd7e1461038b57806351db5688146103b757806370a08231146103bf576101e5565b80633032bbe81461032d578063313ce5671461033557806336ca03651461035357806344df8e7014610379576101e5565b80631514617e116101c35780631514617e146102df57806318160ddd146102e7578063199cbc54146102ef57806323b872dd146102f7576101e5565b806306fdde03146101ea578063095ea7b3146102675780630e2d1a2a146102a7575b600080fd5b6101f2610540565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b03813516906020013561056d565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b03166105d4565b60408051918252519081900360200190f35b6102cd610625565b6102cd61062d565b6102cd610644565b6102936004803603606081101561030d57600080fd5b506001600160a01b0381358116916020810135909116906040013561065d565b6102cd61069d565b61033d6106a5565b6040805160ff9092168252519081900360200190f35b6102cd6004803603602081101561036957600080fd5b50356001600160a01b03166106aa565b610381610702565b005b6103816107f5565b6102cd600480360360408110156103a157600080fd5b506001600160a01b038135169060200135610800565b6102cd610828565b6102cd600480360360208110156103d557600080fd5b50356001600160a01b0316610830565b610381600480360360408110156103fb57600080fd5b506001600160a01b03813516906020013561083c565b610381610965565b610421610af6565b604080516001600160a01b039092168252519081900360200190f35b610293610b05565b6101f2610b2b565b6102cd6004803603602081101561046357600080fd5b5035610b4c565b6102936004803603604081101561048057600080fd5b506001600160a01b038135169060200135610b5f565b6102cd600480360360208110156104ac57600080fd5b50356001600160a01b0316610b6c565b6102cd610b87565b6102cd610bab565b6102cd610bb3565b6102cd610bb9565b6102cd610bc1565b6102cd600480360360408110156104fa57600080fd5b506001600160a01b0381358116916020013516610bc8565b6103816004803603602081101561052857600080fd5b50356001600160a01b0316610bf3565b610421610c47565b60405180604001604052806011815260200170312d3c102b32b9ba34b733902a37b5b2b760791b81525081565b3360008181526003602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6001600160a01b0381166000908152600860205260408120546105f5610c5f565b81101561061e576106166106108461060b610c63565b610800565b82610c67565b915050610620565b505b919050565b630784ce0081565b600061063f61063a610c63565b610b4c565b905090565b600061063f6b02dfafa4e0948fa0719400006000610c67565b600061066884610cfd565b826001600160a01b0316846001600160a01b03161461068a5761068a83610cfd565b610695848484610e53565b949350505050565b63669136e081565b601281565b60006106b88261060b610c63565b90508015610620576001600160a01b0382166000908152600860205260409020546106e1610c5f565b81101561061e576106fb826106f68484610c67565b61104a565b9392505050565b63669136e061070f610c5f565b1015610755576040805162461bcd60e51b815260206004820152601060248201526f1b9bdd08199d5b1b1e481d995cdd195960821b604482015290519081900360640190fd5b61075e33610cfd565b6000610768610c63565b905060006107763383610800565b33600090815260046020526040812091925061079a9190849063ffffffff61109916565b6107b982826107a885610b4c565b60079291900363ffffffff61109916565b60408051828152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6107fe33610cfd565b565b6001600160a01b03821660009081526004602052604081206106fb908363ffffffff6111a616565b635ffd02a081565b60006105ce8243610800565b610844610b05565b610884576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6368726a60610891610c5f565b116108d2576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6040805163a9059cbb60e01b81526001600160a01b03841660048201526024810183905290517356d811088235f11c8920698a204a5010a788f4b39163a9059cbb9160448083019260209291908290030181600087803b15801561093557600080fd5b505af1158015610949573d6000803e3d6000fd5b505050506040513d602081101561095f57600080fd5b50505050565b600a5460ff16156109b3576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b6109e66109be610c63565b336000908152600460205260409020906b02dfafa4e0948fa07194000063ffffffff61109916565b610a0c6109f1610c63565b6007906b02dfafa4e0948fa07194000063ffffffff61109916565b604080516b02dfafa4e0948fa0719400008152905133916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080516323b872dd60e01b81523360048201523060248201526b02dfafa4e0948fa071940000604482015290517356d811088235f11c8920698a204a5010a788f4b3916323b872dd9160648083019260209291908290030181600087803b158015610abb57600080fd5b505af1158015610acf573d6000803e3d6000fd5b505050506040513d6020811015610ae557600080fd5b5050600a805460ff19166001179055565b6005546001600160a01b031690565b6005546000906001600160a01b0316610b1c6111b2565b6001600160a01b031614905090565b604051806040016040528060058152602001640ec84b4a4b60db1b81525081565b60006105ce60078363ffffffff6111a616565b60006106fb33848461065d565b6001600160a01b031660009081526009602052604090205490565b600061063f610ba36b02dfafa4e0948fa0719400006000610c67565b60065461104a565b6368726a6081565b60065481565b635f0c68e081565b62f099c081565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610bfb610b05565b610c3b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610c44816111b6565b50565b7356d811088235f11c8920698a204a5010a788f4b381565b4290565b4390565b600080610c72610c5f565b9050635ffd02a081111580610c8b575063669136e08310155b80610c9957506368726a6081115b15610ca85760009150506105ce565b635ffd02a0831015610cbc57635ffd02a092505b63669136e0811115610ccf575063669136e05b6000610cdb828561104a565b90506306943440610cec8683611257565b81610cf357fe5b0495945050505050565b6000610d08826105d4565b90508015610e2b576001600160a01b038216600090815260096020526040902054610d3390826112c7565b6001600160a01b038316600090815260096020526040902055600654610d5990826112c7565b6006556040805163a9059cbb60e01b81526001600160a01b03841660048201526024810183905290517356d811088235f11c8920698a204a5010a788f4b39163a9059cbb9160448083019260209291908290030181600087803b158015610dbf57600080fd5b505af1158015610dd3573d6000803e3d6000fd5b505050506040513d6020811015610de957600080fd5b50506040805182815290516001600160a01b038416917f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4919081900360200190a25b610e33610c5f565b6001600160a01b0390921660009081526008602052604090209190915550565b600080610e608543610800565b905082811015610eae576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742d62616c616e636560601b604482015290519081900360640190fd5b6001600160a01b0385163314801590610eec57506001600160a01b038516600090815260036020908152604080832033845290915290205460001914155b15610f8d576001600160a01b0385166000908152600360209081526040808320338452909152902054831115610f62576040805162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e742d616c6c6f77616e636560501b604482015290519081900360640190fd5b6001600160a01b03851660009081526003602090815260408083203384529091529020805484900390555b6001600160a01b0385166000908152600460205260409020610fb8904385840363ffffffff61109916565b610ff443610fcf610fc98743610800565b866112c7565b6001600160a01b0387166000908152600460205260409020919063ffffffff61109916565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001949350505050565b808203828111156105ce576040805162461bcd60e51b81526020600482015260146024820152737375627472616374696f6e2d6f766572666c6f7760601b604482015290519081900360640190fd5b8254806110dd57604080518082019091528381526020808201848152865460018181018955600089815293909320935160029091029093019283555191015561095f565b60008460000160018303815481106110f157fe5b6000918252602090912060029091020180549091508085111561114b57604080518082019091528581526020808201868152885460018181018b5560008b815293909320935160029091029093019283555191015561119e565b8085141561115f576001820184905561119e565b6040805162461bcd60e51b815260206004820152600f60248201526e1c185cdd0b58da1958dadc1bda5b9d608a1b604482015290519081900360640190fd5b505050505050565b60006106fb8383611313565b3390565b6001600160a01b0381166111fb5760405162461bcd60e51b81526004018080602001828103825260268152602001806114536026913960400191505060405180910390fd5b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600082611266575060006105ce565b508181028183828161127457fe5b04146105ce576040805162461bcd60e51b815260206004820152601760248201527f6d756c7469706c69636174696f6e2d6f766572666c6f77000000000000000000604482015290519081900360640190fd5b808201828110156105ce576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e2d6f766572666c6f7760781b604482015290519081900360640190fd5b8154600090806113275760009150506105ce565b835460001982019060009086908390811061133e57fe5b9060005260206000209060020201905080600001548510611367576001015492506105ce915050565b826001148061139657508560000160008154811061138157fe5b90600052602060002090600202016000015485105b156113a757600093505050506105ce565b600060001983015b818114611424578754600283830160010104906000908a90839081106113d157fe5b600091825260209091206002909102018054909150808a11156113f65782945061141c565b808a10156114095760018303935061141c565b506001015496506105ce95505050505050565b5050506113af565b87600001828154811061143357fe5b906000526020600020906002020160010154955050505050509291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820ebedd7f9e77f5dc76d72dad591122cc69cabd43678fcab9d111893b83fd48e5f64736f6c63430005110032

Deployed Bytecode Sourcemap

12310:7347:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12310:7347:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12459:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12459:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9678:252;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9678:252:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;16297:363;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16297:363:0;-1:-1:-1;;;;;16297:363:0;;:::i;:::-;;;;;;;;;;;;;;;;12698:65;;;:::i;15881:143::-;;;:::i;17546:146::-;;;:::i;14343:345::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14343:345:0;;;;;;;;;;;;;;;;;:::i;13071:95::-;;;:::i;12561:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16706:558;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16706:558:0;-1:-1:-1;;;;;16706:558:0;;:::i;14911:594::-;;;:::i;:::-;;14731:75;;;:::i;9258:215::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9258:215:0;;;;;;;;:::i;12971:93::-;;;:::i;9084:166::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9084:166:0;-1:-1:-1;;;;;9084:166:0;;:::i;15590:283::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15590:283:0;;;;;;;;:::i;13774:561::-;;;:::i;2894:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;2894:79:0;;;;;;;;;;;;;;3240:94;;;:::i;12515:39::-;;;:::i;16032:187::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16032:187:0;;:::i;9938:224::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9938:224:0;;;;;;;;:::i;17318:165::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17318:165:0;-1:-1:-1;;;;;17318:165:0;;:::i;17736:205::-;;;:::i;13173:89::-;;;:::i;13271:27::-;;;:::i;12884:66::-;;;:::i;12605:65::-;;;:::i;9481:189::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9481:189:0;;;;;;;;;;:::i;3489:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3489:109:0;-1:-1:-1;;;;;3489:109:0;;:::i;13336:80::-;;;:::i;12459:49::-;;;;;;;;;;;;;;-1:-1:-1;;;12459:49:0;;;;:::o;9678:252::-;9816:10;9782:4;9804:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9804:33:0;;;;;;;;;;;:42;;;9862:38;;;;;;;9782:4;;9804:33;;9816:10;;9862:38;;;;;;;;-1:-1:-1;9918:4:0;9678:252;;;;;:::o;16297:363::-;-1:-1:-1;;;;;16441:22:0;;16396:7;16441:22;;;:14;:22;;;;;;16490:15;:13;:15::i;:::-;16478:9;:27;16474:179;;;16529:112;16560:38;16572:6;16580:17;:15;:17::i;:::-;16560:11;:38::i;:::-;16617:9;16529:12;:112::i;:::-;16522:119;;;;;16474:179;16297:363;;;;;:::o;12698:65::-;12754:9;12698:65;:::o;15881:143::-;15952:7;15984:32;15998:17;:15;:17::i;:::-;15984:13;:32::i;:::-;15977:39;;15881:143;:::o;17546:146::-;17619:7;17651:33;13470:12;17682:1;17651:12;:33::i;14343:345::-;14471:4;14493:13;14500:5;14493:6;:13::i;:::-;14530:3;-1:-1:-1;;;;;14521:12:0;:5;-1:-1:-1;;;;;14521:12:0;;14517:56;;14550:11;14557:3;14550:6;:11::i;:::-;14592:88;14625:5;14645:3;14663:6;14592:18;:88::i;:::-;14585:95;14343:345;-1:-1:-1;;;;14343:345:0:o;13071:95::-;13127:39;13071:95;:::o;12561:35::-;12594:2;12561:35;:::o;16706:558::-;16806:15;16849:38;16861:6;16869:17;:15;:17::i;16849:38::-;16839:48;-1:-1:-1;16902:12:0;;16898:359;;-1:-1:-1;;;;;16951:22:0;;16931:17;16951:22;;;:14;:22;;;;;;17004:15;:13;:15::i;:::-;16992:9;:27;16988:258;;;17050:180;17076:7;17106:105;17145:7;17179:9;17106:12;:105::i;:::-;17050:3;:180::i;:::-;17040:190;16706:558;-1:-1:-1;;;16706:558:0:o;14911:594::-;13127:39;14969:15;:13;:15::i;:::-;:38;;14961:67;;;;;-1:-1:-1;;;14961:67:0;;;;;;;;;;;;-1:-1:-1;;;14961:67:0;;;;;;;;;;;;;;;15041:18;15048:10;15041:6;:18::i;:::-;15072:20;15095:17;:15;:17::i;:::-;15072:40;;15123:21;15147:37;15159:10;15171:12;15147:11;:37::i;:::-;15212:10;15252:1;15195:28;;;:16;:28;;;;;15123:61;;-1:-1:-1;15195:59:0;;:28;15238:12;;15195:59;:42;:59;:::i;:::-;15265:92;15299:12;15343:13;15313:27;15327:12;15313:13;:27::i;:::-;15265:19;;:92;15313:43;;15265:92;:33;:92;:::i;:::-;15400:97;;;;;;;;15456:1;;15423:10;;15400:97;;;;;;;;;14911:594;;:::o;14731:75::-;14780:18;14787:10;14780:6;:18::i;:::-;14731:75::o;9258:215::-;-1:-1:-1;;;;;9416:24:0;;9384:7;9416:24;;;:16;:24;;;;;:49;;9452:12;9416:49;:35;:49;:::i;12971:93::-;13027:37;12971:93;:::o;9084:166::-;9177:7;9209:33;9221:6;9229:12;9209:11;:33::i;15590:283::-;3106:9;:7;:9::i;:::-;3098:34;;;;;-1:-1:-1;;;3098:34:0;;;;;;;;;;;;-1:-1:-1;;;3098:34:0;;;;;;;;;;;;;;;13229:33;15722:15;:13;:15::i;:::-;:43;15714:68;;;;;-1:-1:-1;;;15714:68:0;;;;;;;;;;;;-1:-1:-1;;;15714:68:0;;;;;;;;;;;;;;;15795:70;;;-1:-1:-1;;;15795:70:0;;-1:-1:-1;;;;;15795:70:0;;;;;;;;;;;;;;13373:42;;15795:13;;:70;;;;;;;;;;;;;;-1:-1:-1;13373:42:0;15795:70;;;5:2:-1;;;;30:1;27;20:12;5:2;15795:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15795:70:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;15590:283:0:o;13774:561::-;13839:14;;;;13838:15;13830:47;;;;;-1:-1:-1;;;13830:47:0;;;;;;;;;;;;-1:-1:-1;;;13830:47:0;;;;;;;;;;;;;;;13890:79;13933:17;:15;:17::i;:::-;13907:10;13890:28;;;;:16;:28;;;;;;13470:12;13890:79;:42;:79;:::i;:::-;13980:70;14014:17;:15;:17::i;:::-;13980:19;;13470:12;13980:70;:33;:70;:::i;:::-;14068:100;;;13470:12;14068:100;;;;14116:10;;14099:1;;14068:100;;;;;;;;;14181:112;;;-1:-1:-1;;;14181:112:0;;14213:10;14181:112;;;;14246:4;14181:112;;;;13470:12;14181:112;;;;;;13373:42;;14181:17;;:112;;;;;;;;;;;;;;-1:-1:-1;13373:42:0;14181:112;;;5:2:-1;;;;30:1;27;20:12;5:2;14181:112:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14181:112:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;14306:14:0;:21;;-1:-1:-1;;14306:21:0;14323:4;14306:21;;;13774:561::o;2894:79::-;2959:6;;-1:-1:-1;;;;;2959:6:0;2894:79;:::o;3240:94::-;3320:6;;3280:4;;-1:-1:-1;;;;;3320:6:0;3304:12;:10;:12::i;:::-;-1:-1:-1;;;;;3304:22:0;;3297:29;;3240:94;:::o;12515:39::-;;;;;;;;;;;;;;-1:-1:-1;;;12515:39:0;;;;:::o;16032:187::-;16135:7;16167:44;:19;16198:12;16167:44;:30;:44;:::i;9938:224::-;10038:4;10067:87;10094:10;10119:3;10137:6;10067:12;:87::i;17318:165::-;-1:-1:-1;;;;;17450:25:0;17418:7;17450:25;;;:17;:25;;;;;;;17318:165::o;17736:205::-;17812:7;17844:89;17862:33;13470:12;17893:1;17862:12;:33::i;:::-;17910:12;;17844:3;:89::i;13173:::-;13229:33;13173:89;:::o;13271:27::-;;;;:::o;12884:66::-;12940:10;12884:66;:::o;12605:65::-;12662:8;12605:65;:::o;9481:189::-;-1:-1:-1;;;;;9633:19:0;;;9601:7;9633:19;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;9481:189::o;3489:109::-;3106:9;:7;:9::i;:::-;3098:34;;;;;-1:-1:-1;;;3098:34:0;;;;;;;;;;;;-1:-1:-1;;;3098:34:0;;;;;;;;;;;;;;;3562:28;3581:8;3562:18;:28::i;:::-;3489:109;:::o;13336:80::-;13373:42;13336:80;:::o;11322:130::-;11429:15;11322:130;:::o;11185:129::-;11294:12;11185:129;:::o;18496:1158::-;18640:7;18665:29;18697:15;:13;:15::i;:::-;18665:47;-1:-1:-1;13027:37:0;18729:46;;;;:100;;-1:-1:-1;13127:39:0;18792:37;;;18729:100;:166;;;-1:-1:-1;13229:33:0;18846:49;;18729:166;18725:377;;;19089:1;19082:8;;;;;18725:377;13027:37;19116:38;;19112:163;;;13027:37;;-1:-1:-1;19112:163:0;13127:39;19289:43;;19285:169;;;-1:-1:-1;13127:39:0;19285:169;19466:22;19491:42;19495:21;19518:14;19491:3;:42::i;:::-;19466:67;;12845:9;19551:40;19555:19;19576:14;19551:3;:40::i;:::-;:69;;;;;;;18496:1158;-1:-1:-1;;;;;18496:1158:0:o;17949:539::-;18025:14;18042:23;18058:6;18042:15;:23::i;:::-;18025:40;-1:-1:-1;18080:11:0;;18076:352;;-1:-1:-1;;;;;18140:25:0;;;;;;:17;:25;;;;;;18136:38;;18167:6;18136:3;:38::i;:::-;-1:-1:-1;;;;;18108:25:0;;;;;;:17;:25;;;;;:66;18208:12;;18204:25;;18222:6;18204:3;:25::i;:::-;18189:12;:40;18246:78;;;-1:-1:-1;;;18246:78:0;;-1:-1:-1;;;;;18246:78:0;;;;;;;;;;;;;;13373:42;;18246:13;;:78;;;;;;;;;;;;;;-1:-1:-1;13373:42:0;18246:78;;;5:2:-1;;;;30:1;27;20:12;5:2;18246:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18246:78:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;18346:70:0;;;;;;;;-1:-1:-1;;;;;18346:70:0;;;;;;;;;18246:78;18346:70;;;18076:352;18465:15;:13;:15::i;:::-;-1:-1:-1;;;;;18440:22:0;;;;;;;:14;:22;;;;;:40;;;;-1:-1:-1;17949:539:0:o;10170:1007::-;10298:4;10320:27;10350:32;10362:5;10369:12;10350:11;:32::i;:::-;10320:62;;10424:6;10401:19;:29;;10393:62;;;;;-1:-1:-1;;;10393:62:0;;;;;;;;;;;;-1:-1:-1;;;10393:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10472:19:0;;10481:10;10472:19;;;;:65;;-1:-1:-1;;;;;;10495:18:0;;;;;;:11;:18;;;;;;;;10514:10;10495:30;;;;;;;;-1:-1:-1;;10495:42:0;;10472:65;10468:285;;;-1:-1:-1;;;;;10562:18:0;;;;;;:11;:18;;;;;;;;10581:10;10562:30;;;;;;;;:40;-1:-1:-1;10562:40:0;10554:75;;;;;-1:-1:-1;;;10554:75:0;;;;;;;;;;;;-1:-1:-1;;;10554:75:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10677:18:0;;;;;;:11;:18;;;;;;;;10696:10;10677:30;;;;;;;;;:39;;;10644:72;;10468:285;-1:-1:-1;;;;;10765:23:0;;;;;;:16;:23;;;;;:143;;10817:12;10844:28;;;10765:143;:37;:143;:::i;:::-;10921:180;10971:12;10998:92;11020:30;11032:3;11037:12;11020:11;:30::i;:::-;11069:6;10998:3;:92::i;:::-;-1:-1:-1;;;;;10921:21:0;;;;;;:16;:21;;;;;;:180;;:35;:180;:::i;:::-;11135:3;-1:-1:-1;;;;;11119:28:0;11128:5;-1:-1:-1;;;;;11119:28:0;;11140:6;11119:28;;;;;;;;;;;;;;;;;;-1:-1:-1;11165:4:0;;10170:1007;-1:-1:-1;;;;10170:1007:0:o;11653:188::-;11797:5;;;11792:16;;;;11784:49;;;;;-1:-1:-1;;;11784:49:0;;;;;;;;;;;;-1:-1:-1;;;11784:49:0;;;;;;;;;;;;;;5194:779;5350:20;;5385:11;5381:585;;5432:25;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;5413:13:0;:45;;;;;;;;;;;;;;;;;;;;;;;5381:585;;;5491:36;5530:5;:13;;5553:1;5544:6;:10;5530:25;;;;;;;;;;;;;;;;;;;;;5602:22;;5530:25;;-1:-1:-1;5645:29:0;;;5641:314;;;5714:25;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;5695:13:0;:45;;;;;;;;;;;;;;;;;;;;;;;5641:314;;;5775:21;5766:5;:30;5762:193;;;5817:23;;;:32;;;5762:193;;;5914:25;;;-1:-1:-1;;;5914:25:0;;;;;;;;;;;;-1:-1:-1;;;5914:25:0;;;;;;;;;;;;;;5762:193;5381:585;;5194:779;;;;:::o;5981:192::-;6108:7;6140:25;6152:5;6159;6140:11;:25::i;1685:98::-;1765:10;1685:98;:::o;3704:229::-;-1:-1:-1;;;;;3778:22:0;;3770:73;;;;-1:-1:-1;;;3770:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3880:6;;3859:38;;-1:-1:-1;;;;;3859:38:0;;;;3880:6;;3859:38;;3880:6;;3859:38;3908:6;:17;;-1:-1:-1;;;;;;3908:17:0;-1:-1:-1;;;;;3908:17:0;;;;;;;;;;3704:229::o;11849:252::-;11953:9;11984:6;11980:47;;-1:-1:-1;12014:1:0;12007:8;;11980:47;-1:-1:-1;12050:5:0;;;12064:1;12059;12050:5;12059:1;12045:15;;;;;:20;12037:56;;;;;-1:-1:-1;;;12037:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11460:185;11604:5;;;11599:16;;;;11591:46;;;;;-1:-1:-1;;;11591:46:0;;;;;;;;;;;;-1:-1:-1;;;11591:46:0;;;;;;;;;;;;;;6728:1765;6897:20;;6855:7;;7137:11;7133:52;;7172:1;7165:8;;;;;7133:52;7308:24;;-1:-1:-1;;7251:10:0;;;7231:17;;7308:5;;7251:10;;7308:24;;;;;;;;;;;;;;;;7272:60;;7356:14;:19;;;7347:5;:28;7343:88;;7399:20;;;;-1:-1:-1;7392:27:0;;-1:-1:-1;;7392:27:0;7343:88;7536:6;7546:1;7536:11;:44;;;;7559:5;:13;;7573:1;7559:16;;;;;;;;;;;;;;;;;;:21;;;7551:5;:29;7536:44;7532:85;;;7604:1;7597:8;;;;;;;7532:85;7755:11;-1:-1:-1;;7796:13:0;;7822:620;7837:3;7829:4;:11;7822:620;;7961:18;;7890:1;7872:10;;;7885:1;7872:14;7871:20;;7857:11;;7961:5;;7871:20;;7961:18;;;;;;;;;;;;;;;;;;;8012:15;;7961:18;;-1:-1:-1;8048:15:0;;;8044:387;;;8090:3;8084:9;;8044:387;;;8127:7;8119:5;:15;8115:316;;;8313:1;8307:3;:7;8300:14;;8115:316;;;-1:-1:-1;8399:16:0;;;;-1:-1:-1;8392:23:0;;-1:-1:-1;;;;;;8392:23:0;8115:316;7822:620;;;;;;8461:5;:13;;8475:3;8461:18;;;;;;;;;;;;;;;;;;:24;;;8454:31;;;;;;;6728:1765;;;;:::o

Swarm Source

bzzr://ebedd7f9e77f5dc76d72dad591122cc69cabd43678fcab9d111893b83fd48e5f

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

Vested BZRX token.

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.