ETH Price: $2,410.43 (-0.54%)

Contract

0xB72B31907C1C95F3650b64b2469e08EdACeE5e8F
 
Transaction Hash
Method
Block
From
To
Claim207434372024-09-13 18:19:2325 hrs ago1726251563IN
bZx Vesting Token: vBZRX Token
0 ETH0.000622823.87347172
Claim206871432024-09-05 21:41:478 days ago1725572507IN
bZx Vesting Token: vBZRX Token
0 ETH0.00011623.45130812
Claim206871172024-09-05 21:36:358 days ago1725572195IN
bZx Vesting Token: vBZRX Token
0 ETH0.000560793.48768457
Transfer206843232024-09-05 12:15:599 days ago1725538559IN
bZx Vesting Token: vBZRX Token
0 ETH0.000366914.21285234
Claim206842962024-09-05 12:10:359 days ago1725538235IN
bZx Vesting Token: vBZRX Token
0 ETH0.000133783.97346492
Approve206275322024-08-28 13:57:4717 days ago1724853467IN
bZx Vesting Token: vBZRX Token
0 ETH0.000093832.0363466
Claim205803672024-08-21 23:47:1123 days ago1724284031IN
bZx Vesting Token: vBZRX Token
0 ETH0.000150070.93332748
Approve205767432024-08-21 11:36:5924 days ago1724240219IN
bZx Vesting Token: vBZRX Token
0 ETH0.000035750.77491536
Claim205693822024-08-20 10:57:4725 days ago1724151467IN
bZx Vesting Token: vBZRX Token
0 ETH0.00024071.49698642
Claim205693462024-08-20 10:50:2325 days ago1724151023IN
bZx Vesting Token: vBZRX Token
0 ETH0.00032611.83306717
Approve205459802024-08-17 4:32:4728 days ago1723869167IN
bZx Vesting Token: vBZRX Token
0 ETH0.000134252.89390886
Approve205459782024-08-17 4:32:2328 days ago1723869143IN
bZx Vesting Token: vBZRX Token
0 ETH0.000069391.49593984
Approve204984342024-08-10 13:13:5935 days ago1723295639IN
bZx Vesting Token: vBZRX Token
0 ETH0.000051731.11516578
Claim204862512024-08-08 20:26:3536 days ago1723148795IN
bZx Vesting Token: vBZRX Token
0 ETH0.000169485.03400222
Approve204862432024-08-08 20:24:5936 days ago1723148699IN
bZx Vesting Token: vBZRX Token
0 ETH0.000252195.43638104
Claim204682582024-08-06 8:12:3539 days ago1722931955IN
bZx Vesting Token: vBZRX Token
0 ETH0.000770734.79337391
Claim204554312024-08-04 13:16:1141 days ago1722777371IN
bZx Vesting Token: vBZRX Token
0 ETH0.000216161.34436362
Claim204536422024-08-04 7:17:4741 days ago1722755867IN
bZx Vesting Token: vBZRX Token
0 ETH0.000172761.07444903
Approve204463702024-08-03 6:58:1142 days ago1722668291IN
bZx Vesting Token: vBZRX Token
0 ETH0.000056622.34900661
Claim204281252024-07-31 17:48:4745 days ago1722448127IN
bZx Vesting Token: vBZRX Token
0 ETH0.0023430514.57198204
Claim204275832024-07-31 15:59:2345 days ago1722441563IN
bZx Vesting Token: vBZRX Token
0 ETH0.0036039922.41401305
Claim204273692024-07-31 15:16:1145 days ago1722438971IN
bZx Vesting Token: vBZRX Token
0 ETH0.0023606814.68158707
Claim204147452024-07-29 20:54:4746 days ago1722286487IN
bZx Vesting Token: vBZRX Token
0 ETH0.000407522.53449854
Approve204066742024-07-28 17:54:4748 days ago1722189287IN
bZx Vesting Token: vBZRX Token
0 ETH0.000045071.86997522
Claim203988922024-07-27 15:50:3549 days ago1722095435IN
bZx Vesting Token: vBZRX Token
0 ETH0.000890115.5358456
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

[{"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.