ETH Price: $3,366.97 (+1.27%)

Contract

0xCfF79e48a2dc2f213F23d03b2BFFBbc541CeEF22
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Permit211133652024-11-04 9:23:1119 days ago1730712191IN
0xCfF79e48...541CeEF22
0 ETH0.000175164.7
Permit210865892024-10-31 15:42:4722 days ago1730389367IN
0xCfF79e48...541CeEF22
0 ETH0.0006606812.15441504
Transfer206224882024-08-27 21:03:3587 days ago1724792615IN
0xCfF79e48...541CeEF22
0 ETH0.000132362.55933358
Transfer205234022024-08-14 0:51:11101 days ago1723596671IN
0xCfF79e48...541CeEF22
0 ETH0.000054891.06146113
Transfer203699062024-07-23 14:43:47122 days ago1721745827IN
0xCfF79e48...541CeEF22
0 ETH0.0005776311.1689177
Permit202581532024-07-08 0:15:59138 days ago1720397759IN
0xCfF79e48...541CeEF22
0 ETH0.000091022.44237376
Permit202580762024-07-08 0:00:35138 days ago1720396835IN
0xCfF79e48...541CeEF22
0 ETH0.000122682.25642595
Permit200177922024-06-04 10:14:47172 days ago1717496087IN
0xCfF79e48...541CeEF22
0 ETH0.000364686.71049496
Approve199436002024-05-25 1:25:47182 days ago1716600347IN
0xCfF79e48...541CeEF22
0 ETH0.000110934.57453725
Permit199193522024-05-21 16:03:47185 days ago1716307427IN
0xCfF79e48...541CeEF22
0 ETH0.0022684241.72208323
Permit196745752024-04-17 10:23:59220 days ago1713349439IN
0xCfF79e48...541CeEF22
0 ETH0.0007514613.82125193
Transfer195334622024-03-28 15:24:47239 days ago1711639487IN
0xCfF79e48...541CeEF22
0 ETH0.002405746.51586874
Transfer194814982024-03-21 7:16:59247 days ago1711005419IN
0xCfF79e48...541CeEF22
0 ETH0.0014397327.8381442
Permit194295582024-03-14 0:00:35254 days ago1710374435IN
0xCfF79e48...541CeEF22
0 ETH0.0030294655.71947768
Permit194246812024-03-13 7:32:11255 days ago1710315131IN
0xCfF79e48...541CeEF22
0 ETH0.0027030849.71655119
Permit192916202024-02-23 16:56:23273 days ago1708707383IN
0xCfF79e48...541CeEF22
0 ETH0.0021046838.71034808
Permit191706482024-02-06 17:21:59290 days ago1707240119IN
0xCfF79e48...541CeEF22
0 ETH0.0014240838.20992229
Permit191705692024-02-06 17:06:11290 days ago1707239171IN
0xCfF79e48...541CeEF22
0 ETH0.0023528443.29382443
Permit191153932024-01-29 23:15:59298 days ago1706570159IN
0xCfF79e48...541CeEF22
0 ETH0.0009636217.72734359
Permit191130732024-01-29 15:27:47298 days ago1706542067IN
0xCfF79e48...541CeEF22
0 ETH0.0008079221.68458207
Permit190899032024-01-26 9:32:23302 days ago1706261543IN
0xCfF79e48...541CeEF22
0 ETH0.0007330419.66839548
Permit190898522024-01-26 9:22:11302 days ago1706260931IN
0xCfF79e48...541CeEF22
0 ETH0.0009411117.30948951
Permit190675932024-01-23 6:27:59305 days ago1705991279IN
0xCfF79e48...541CeEF22
0 ETH0.000333488.9479346
Permit190675662024-01-23 6:22:35305 days ago1705990955IN
0xCfF79e48...541CeEF22
0 ETH0.000350919.41545011
Permit190487002024-01-20 14:33:35307 days ago1705761215IN
0xCfF79e48...541CeEF22
0 ETH0.0007778920.87863345
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:
pCNV

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 4 : pCNV.sol
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity ^0.8.13;

import {ERC20} from "solmate/tokens/ERC20.sol";
import {Owned} from "solmate/auth/Owned.sol";
import {ICNV} from "./interface/ICNV.sol";

contract pCNV is ERC20, Owned {
    ////////////////////////////////////////////////////////////////////////////
    // EVENTS
    ////////////////////////////////////////////////////////////////////////////

    event Paused(bool indexed _paused);

    event Mint(uint256 indexed _amount);

    event Redemption(
        address indexed _from,
        address indexed _who,
        uint256 indexed _amount
    );

    ////////////////////////////////////////////////////////////////////////////
    // CONSTANT
    ////////////////////////////////////////////////////////////////////////////

    /// @notice time vesting begins: 1656633600 (Fri Jul 01 2022 00:00:00 GMT+0000)
    uint256 public constant VESTING_TIME_START = 1656633600;
    /// @notice time linear-vesting begins: 1680307200 (Sat Apr 01 2023 00:00:00 GMT+0000)
    uint256 public constant LINEAR_VESTING_TIME_START = 1680307200;
    /// @notice time vesting ends: 1711929600 (Mon Apr 01 2024 00:00:00 GMT+0000)
    uint256 public constant VESTING_TIME_END = 1711929600;
    /// @notice duration of linear-vesting: 31622400
    uint256 public constant LINEAR_VESTING_TIME_LENGTH = 31622400;
    /// @notice vesting begins at 50%
    uint256 public constant VESTING_AMOUNT_START = 5e17;
    /// @notice vesting grows to 100%, thus has a length of 50
    uint256 public constant VESTING_AMOUNT_LENGTH = 5e17;
    /// @notice max supply of 33,300,000
    uint256 public constant MAX_SUPPLY = 333e23;

    ////////////////////////////////////////////////////////////////////////////
    // STATE
    ////////////////////////////////////////////////////////////////////////////

    /// @notice address of CNV Token
    address public immutable CNV;
    /// @notice redeem paused;
    bool public paused;
    /// @notice total minted amount
    uint256 public totalMinted;
    /// @notice mapping of how many CNV tokens a pCNV holder has redeemed
    mapping(address => uint256) public redeemed;

    ////////////////////////////////////////////////////////////////////////////
    // CONSTRUCTOR
    ////////////////////////////////////////////////////////////////////////////

    constructor(address _CNV)
        ERC20("Concave pCNV", "pCNV", 18)
        Owned(0x226e7AF139a0F34c6771DeB252F9988876ac1Ced)
    {
        CNV = _CNV;
    }

    ////////////////////////////////////////////////////////////////////////////
    // ADMIN/MGMT
    ////////////////////////////////////////////////////////////////////////////

    function setPause(bool _paused) external onlyOwner {
        paused = _paused;

        emit Paused(paused);
    }

    function mint(address to, uint256 amount) external onlyOwner {
        require(to != address(0), "ZERO_ADDRESS");
        require(totalMinted + amount <= MAX_SUPPLY, "MAX_SUPPLY");

        // Cannot overflow because the total minted
        // can't exceed the max uint256 value.
        unchecked {
            totalMinted += amount;
        }

        _mint(to, amount);

        emit Mint(amount);
    }

    ////////////////////////////////////////////////////////////////////////////
    // ERC20 LOGIC
    ////////////////////////////////////////////////////////////////////////////

    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        // Update redeemed
        uint256 amountRedeemed = (redeemed[msg.sender] * amount) /
            balanceOf[msg.sender];

        redeemed[msg.sender] -= amountRedeemed;

        // Update balance
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            redeemed[to] += amountRedeemed;
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        // Update allowance
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max)
            allowance[from][msg.sender] = allowed - amount;

        // Update redeemed
        uint256 amountRedeemed = (redeemed[from] * amount) / balanceOf[from];

        redeemed[from] -= amountRedeemed;

        // Update balance
        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            redeemed[to] += amountRedeemed;
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    ////////////////////////////////////////////////////////////////////////////
    // ACTIONS
    ////////////////////////////////////////////////////////////////////////////

    /// @notice             redeem pCNV for CNV following vesting schedule
    /// @param  _amount     amount of CNV to redeem, irrelevant if _max = true
    /// @param  _who        address of pCNV holder to redeem
    /// @param  _to         address to which to mint CNV
    /// @param  _max        whether to redeem maximum amount possible
    /// @return amountOut   amount of CNV tokens to be minted to _to
    function redeem(
        uint256 _amount,
        address _who,
        address _to,
        bool _max
    ) external returns (uint256 amountOut) {
        // Check if it's paused
        require(!paused, "PAUSED");

        // Get user pCNV balance
        // If empty balance - revert on "FULLY_REDEEMED" since
        // all balance has already been burnt to redeem.
        uint256 pCNVBalance = balanceOf[_who];
        require(pCNVBalance > 0, "NONE_LEFT");

        // Check how much is currently vested for user.
        uint256 currentTime = block.timestamp;
        require(currentTime >= VESTING_TIME_START, "!VESTING");
        uint256 amountRedeemed = redeemed[_who];
        uint256 amountVested;
        if (currentTime >= VESTING_TIME_END) {
            amountVested = pCNVBalance + amountRedeemed;
        } else {
            uint256 vpct = vestedPercent(currentTime);
            amountVested = ((pCNVBalance + amountRedeemed) * vpct) / 1e18;
        }
        require(amountVested > amountRedeemed, "NONE_LEFT");

        // If _max was not selected and thus a specified amount is to be
        // redeemed, ensure this amount doesn't exceed amountRedeemable.
        uint256 amountRedeemable = amountVested - amountRedeemed;
        if (!_max) {
            require(amountRedeemable >= _amount, "EXCEEDS");
            amountRedeemable = _amount;
        }

        // In case of vault calling on behalf of user, check that user has
        // allowed vault to redeem on behalf of user by checking allowance.
        if (_who != msg.sender) {
            uint256 allowed = allowance[_who][msg.sender];
            require(allowed >= amountRedeemable, "!ALLOWED");
            if (allowed != type(uint256).max)
                allowance[_who][msg.sender] = allowed - amountRedeemable;
        }

        // Update state to reflect redemption.
        redeemed[_who] = amountRedeemed + amountRedeemable;

        // Burn pCNV
        _burn(_who, amountRedeemable);

        // Calculate CNV amount out as total supply of pCNV represents a constant
        // claim on 0.1 (10%) of CNV's total supply.
        amountOut =
            (ICNV(CNV).totalSupply() * amountRedeemable) /
            (10 * MAX_SUPPLY);

        // Mint CNV
        ICNV(CNV).mint(_to, amountOut);

        emit Redemption(msg.sender, _who, amountOut);
    }

    ////////////////////////////////////////////////////////////////////////////
    // VIEW
    ////////////////////////////////////////////////////////////////////////////

    /// @notice         to view how much a holder has redeemable
    /// @param  _who    pHolder address
    /// @return         amount redeemable
    function redeemable(address _who) external view returns (uint256) {
        uint256 pCNVBalance = balanceOf[_who];
        if (pCNVBalance == 0) return 0;

        uint256 currentTime = block.timestamp;
        if (currentTime < VESTING_TIME_START) return 0;

        uint256 amountRedeemed = redeemed[_who];
        uint256 amountVested;
        if (currentTime >= VESTING_TIME_END) {
            amountVested = pCNVBalance + amountRedeemed;
        } else {
            uint256 vpct = vestedPercent(currentTime);
            amountVested = ((pCNVBalance + amountRedeemed) * vpct) / 1e18;
        }
        if (amountVested <= amountRedeemed) return 0;

        return amountVested - amountRedeemed;
    }

    /// @notice         returns the percent of holdings vested for a given point
    ///                 in time.
    /// @param  _time   point in time
    /// @return         percent of holdings vested
    function vestedPercent(uint256 _time) public pure returns (uint256) {
        // Before VestingTimeStart: 0%
        if (_time < VESTING_TIME_START) {
            return 0;
        }

        // VestingTimeStart ~ LinearVestingTimeStart: 50%
        if (_time <= LINEAR_VESTING_TIME_START) {
            return VESTING_AMOUNT_START;
        }

        // After VestingTimeEnd
        if (_time >= VESTING_TIME_END) {
            return 1e18;
        }

        // LinearVestingTimeStart ~ VestingTimeEnd: 50% ~ 100% (Linear)
        // LinearVestingTimeLength: duration of linear vesting
        uint256 pctOf = _percentOf(
            LINEAR_VESTING_TIME_START,
            _time,
            LINEAR_VESTING_TIME_LENGTH
        );
        return
            _linearMapping(VESTING_AMOUNT_START, pctOf, VESTING_AMOUNT_LENGTH);
    }

    ////////////////////////////////////////////////////////////////////////////
    // INTERNAL
    ////////////////////////////////////////////////////////////////////////////

    /// @notice             returns the elapsed percentage of a point within
    ///                     a given range
    /// @param  _start      starting point
    /// @param  _point      current point
    /// @param  _length     lenght
    /// @return elapsedPct  percent from _start
    function _percentOf(
        uint256 _start,
        uint256 _point,
        uint256 _length
    ) internal pure returns (uint256 elapsedPct) {
        uint256 elapsed = _point - _start;
        elapsedPct = (elapsed * 1e18) / _length;
    }

    /// @notice             linearly maps a percentage point to a range
    /// @param  _start      starting point
    /// @param  _pct        percentage point
    /// @param  _length     lenght
    /// @return point       point
    function _linearMapping(
        uint256 _start,
        uint256 _pct,
        uint256 _length
    ) internal pure returns (uint256 point) {
        uint256 elapsed = (_length * _pct) / 1e18;
        point = _start + elapsed;
    }
}

File 2 of 4 : ERC20.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*//////////////////////////////////////////////////////////////
                            METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*//////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

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

    /*//////////////////////////////////////////////////////////////
                            EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*//////////////////////////////////////////////////////////////
                               ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*//////////////////////////////////////////////////////////////
                             EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }
}

File 3 of 4 : Owned.sol
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Simple single owner authorization mixin.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/auth/Owned.sol)
abstract contract Owned {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event OwnerUpdated(address indexed user, address indexed newOwner);

    /*//////////////////////////////////////////////////////////////
                            OWNERSHIP STORAGE
    //////////////////////////////////////////////////////////////*/

    address public owner;

    modifier onlyOwner() virtual {
        require(msg.sender == owner, "UNAUTHORIZED");

        _;
    }

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(address _owner) {
        owner = _owner;

        emit OwnerUpdated(address(0), _owner);
    }

    /*//////////////////////////////////////////////////////////////
                             OWNERSHIP LOGIC
    //////////////////////////////////////////////////////////////*/

    function setOwner(address newOwner) public virtual onlyOwner {
        owner = newOwner;

        emit OwnerUpdated(msg.sender, newOwner);
    }
}

File 4 of 4 : ICNV.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.13;

interface ICNV {
    function mint(address account, uint256 amount) external;

    function totalSupply() external view returns (uint256);
}

Settings
{
  "remappings": [
    "ds-test/=lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "solmate/=lib/solmate/src/",
    "src/=src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london"
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_CNV","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"_paused","type":"bool"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_who","type":"address"},{"indexed":true,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Redemption","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"CNV","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LINEAR_VESTING_TIME_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LINEAR_VESTING_TIME_START","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VESTING_AMOUNT_LENGTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VESTING_AMOUNT_START","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VESTING_TIME_END","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VESTING_TIME_START","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_who","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bool","name":"_max","type":"bool"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_who","type":"address"}],"name":"redeemable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"redeemed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_time","type":"uint256"}],"name":"vestedPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}]

6101006040523480156200001257600080fd5b5060405162001b5438038062001b5483398101604081905262000035916200026e565b604080518082018252600c81526b21b7b731b0bb32903821a72b60a11b6020808301918252835180850190945260048452633821a72b60e11b90840152815173226e7af139a0f34c6771deb252f9988876ac1ced93916012916200009c91600091620001c8565b508151620000b2906001906020850190620001c8565b5060ff81166080524660a052620000c86200012c565b60c0525050600680546001600160a01b0319166001600160a01b0384169081179091556040519091506000907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a3506001600160a01b031660e0526200037f565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620001609190620002dc565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b828054620001d690620002a0565b90600052602060002090601f016020900481019282620001fa576000855562000245565b82601f106200021557805160ff191683800117855562000245565b8280016001018555821562000245579182015b828111156200024557825182559160200191906001019062000228565b506200025392915062000257565b5090565b5b8082111562000253576000815560010162000258565b6000602082840312156200028157600080fd5b81516001600160a01b03811681146200029957600080fd5b9392505050565b600181811c90821680620002b557607f821691505b602082108103620002d657634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620002f957607f831692505b602080841082036200031957634e487b7160e01b86526022600452602486fd5b818015620003305760018114620003425762000371565b60ff1986168952848901965062000371565b60008a81526020902060005b86811015620003695781548b8201529085019083016200034e565b505084890196505b509498975050505050505050565b60805160a05160c05160e05161178d620003c76000396000818161042301528181610d9c0152610e5901526000610775015260006107400152600061026b015261178d6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637ecebe0011610104578063b295bfcb116100a2578063d505accf11610071578063d505accf1461040b578063d51a020b1461041e578063dd62ed3e14610445578063e1de00eb146103a557600080fd5b8063b295bfcb146103c7578063bbb333ed146103d2578063be4a0a14146103e5578063bedb86fb146103f857600080fd5b80639f4568ef116100de5780639f4568ef1461037c578063a2309ff81461039c578063a7271f6e146103a5578063a9059cbb146103b457600080fd5b80637ecebe00146103295780638da5cb5b1461034957806395d89b411461037457600080fd5b806332cb6b0c1161017c578063484267a41161014b578063484267a4146102d75780635b3d2f54146102ea5780635c975abb146102f557806370a082311461030957600080fd5b806332cb6b0c1461029f578063354ba4e2146102b15780633644e515146102bc57806340c10f19146102c457600080fd5b806313af4035116101b857806313af40351461023557806318160ddd1461024a57806323b872dd14610253578063313ce5671461026657600080fd5b8063045bf5d5146101df57806306fdde03146101fd578063095ea7b314610212575b600080fd5b6101ea6362be390081565b6040519081526020015b60405180910390f35b610205610470565b6040516101f49190611374565b6102256102203660046113e5565b6104fe565b60405190151581526020016101f4565b61024861024336600461140f565b61056a565b005b6101ea60025481565b61022561026136600461142a565b6105e9565b61028d7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101f4565b6101ea6a1b8b8c9e000e82a480000081565b6101ea6301e2850081565b6101ea61073c565b6102486102d23660046113e5565b610797565b6101ea6102e536600461140f565b61089c565b6101ea636427740081565b60065461022590600160a01b900460ff1681565b6101ea61031736600461140f565b60036020526000908152604090205481565b6101ea61033736600461140f565b60056020526000908152604090205481565b60065461035c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b610205610972565b6101ea61038a36600461140f565b60086020526000908152604090205481565b6101ea60075481565b6101ea6706f05b59d3b2000081565b6102256103c23660046113e5565b61097f565b6101ea636609f90081565b6101ea6103e0366004611466565b610a58565b6101ea6103f336600461148f565b610adb565b6102486104063660046114dc565b610efc565b6102486104193660046114f7565b610f79565b61035c7f000000000000000000000000000000000000000000000000000000000000000081565b6101ea61045336600461156a565b600460209081526000928352604080842090915290825290205481565b6000805461047d9061159d565b80601f01602080910402602001604051908101604052809291908181526020018280546104a99061159d565b80156104f65780601f106104cb576101008083540402835291602001916104f6565b820191906000526020600020905b8154815290600101906020018083116104d957829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105599086815260200190565b60405180910390a350600192915050565b6006546001600160a01b0316331461059d5760405162461bcd60e51b8152600401610594906115d7565b60405180910390fd5b600680546001600160a01b0319166001600160a01b03831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000198114610645576106208382611613565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020908152604080832054600890925282205461067490869061162a565b61067e9190611649565b6001600160a01b0387166000908152600860205260408120805492935083929091906106ab908490611613565b90915550506001600160a01b038616600090815260036020526040812080548692906106d8908490611613565b90915550506001600160a01b038581166000818152600860209081526040808320805487019055600382529182902080548901905590518781529192891691600080516020611738833981519152910160405180910390a350600195945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146107725761076d6111bd565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6006546001600160a01b031633146107c15760405162461bcd60e51b8152600401610594906115d7565b6001600160a01b0382166108065760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610594565b6a1b8b8c9e000e82a480000081600754610820919061166b565b111561085b5760405162461bcd60e51b815260206004820152600a6024820152694d41585f535550504c5960b01b6044820152606401610594565b600780548201905561086d8282611257565b60405181907f07883703ed0e86588a40d76551c92f8a4b329e3bf19765e0e6749473c1a8466590600090a25050565b6001600160a01b0381166000908152600360205260408120548082036108c55750600092915050565b426362be39008110156108dc575060009392505050565b6001600160a01b03841660009081526008602052604081205490636609f90083106109125761090b828561166b565b905061094b565b600061091d84610a58565b9050670de0b6b3a764000081610933858861166b565b61093d919061162a565b6109479190611649565b9150505b81811161095e5750600095945050505050565b6109688282611613565b9695505050505050565b6001805461047d9061159d565b3360009081526003602090815260408083205460089092528220548291906109a890859061162a565b6109b29190611649565b336000908152600860205260408120805492935083929091906109d6908490611613565b909155505033600090815260036020526040812080548592906109fa908490611613565b90915550506001600160a01b0384166000818152600860209081526040808320805486019055600382529182902080548701905590518581523391600080516020611738833981519152910160405180910390a35060019392505050565b60006362be3900821015610a6e57506000919050565b63642774008211610a8857506706f05b59d3b20000919050565b636609f9008210610aa25750670de0b6b3a7640000919050565b6000610ab76364277400846301e285006112b1565b9050610ad46706f05b59d3b20000826706f05b59d3b200006112e6565b9392505050565b600654600090600160a01b900460ff1615610b215760405162461bcd60e51b815260206004820152600660248201526514105554d15160d21b6044820152606401610594565b6001600160a01b03841660009081526003602052604090205480610b735760405162461bcd60e51b81526020600482015260096024820152681393d39157d311519560ba1b6044820152606401610594565b426362be3900811015610bb35760405162461bcd60e51b81526020600482015260086024820152672156455354494e4760c01b6044820152606401610594565b6001600160a01b03861660009081526008602052604081205490636609f9008310610be957610be2828561166b565b9050610c22565b6000610bf484610a58565b9050670de0b6b3a764000081610c0a858861166b565b610c14919061162a565b610c1e9190611649565b9150505b818111610c5d5760405162461bcd60e51b81526020600482015260096024820152681393d39157d311519560ba1b6044820152606401610594565b6000610c698383611613565b905086610cad5789811015610caa5760405162461bcd60e51b81526020600482015260076024820152664558434545445360c81b6044820152606401610594565b50885b6001600160a01b0389163314610d56576001600160a01b038916600090815260046020908152604080832033845290915290205481811015610d1c5760405162461bcd60e51b81526020600482015260086024820152670850531313d5d15160c21b6044820152606401610594565b6000198114610d5457610d2f8282611613565b6001600160a01b038b1660009081526004602090815260408083203384529091529020555b505b610d60818461166b565b6001600160a01b038a16600090815260086020526040902055610d838982611312565b610d996a1b8b8c9e000e82a4800000600a61162a565b817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1c9190611683565b610e26919061162a565b610e309190611649565b6040516340c10f1960e01b81526001600160a01b038a81166004830152602482018390529197507f0000000000000000000000000000000000000000000000000000000000000000909116906340c10f1990604401600060405180830381600087803b158015610e9f57600080fd5b505af1158015610eb3573d6000803e3d6000fd5b50506040518892506001600160a01b038c16915033907f211e721db9e446132bc018602a497cf5713e88e7d61084ce4d30e7ee4fc9d2bd90600090a45050505050949350505050565b6006546001600160a01b03163314610f265760405162461bcd60e51b8152600401610594906115d7565b6006805460ff60a01b1916600160a01b8315158102919091179182905560405160ff91909204161515907f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd290600090a250565b42841015610fc95760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610594565b60006001610fd561073c565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156110e1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906111175750876001600160a01b0316816001600160a01b0316145b6111545760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610594565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516111ef919061169c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060026000828254611269919061166b565b90915550506001600160a01b03821660008181526003602090815260408083208054860190555184815260008051602061173883398151915291015b60405180910390a35050565b6000806112be8585611613565b9050826112d382670de0b6b3a764000061162a565b6112dd9190611649565b95945050505050565b600080670de0b6b3a76400006112fc858561162a565b6113069190611649565b90506112dd818661166b565b6001600160a01b0382166000908152600360205260408120805483929061133a908490611613565b90915550506002805482900390556040518181526000906001600160a01b03841690600080516020611738833981519152906020016112a5565b600060208083528351808285015260005b818110156113a157858101830151858201604001528201611385565b818111156113b3576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146113e057600080fd5b919050565b600080604083850312156113f857600080fd5b611401836113c9565b946020939093013593505050565b60006020828403121561142157600080fd5b610ad4826113c9565b60008060006060848603121561143f57600080fd5b611448846113c9565b9250611456602085016113c9565b9150604084013590509250925092565b60006020828403121561147857600080fd5b5035919050565b803580151581146113e057600080fd5b600080600080608085870312156114a557600080fd5b843593506114b5602086016113c9565b92506114c3604086016113c9565b91506114d16060860161147f565b905092959194509250565b6000602082840312156114ee57600080fd5b610ad48261147f565b600080600080600080600060e0888a03121561151257600080fd5b61151b886113c9565b9650611529602089016113c9565b95506040880135945060608801359350608088013560ff8116811461154d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561157d57600080fd5b611586836113c9565b9150611594602084016113c9565b90509250929050565b600181811c908216806115b157607f821691505b6020821081036115d157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015611625576116256115fd565b500390565b6000816000190483118215151615611644576116446115fd565b500290565b60008261166657634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561167e5761167e6115fd565b500190565b60006020828403121561169557600080fd5b5051919050565b600080835481600182811c9150808316806116b857607f831692505b602080841082036116d757634e487b7160e01b86526022600452602486fd5b8180156116eb57600181146116fc57611729565b60ff19861689528489019650611729565b60008a81526020902060005b868110156117215781548b820152908501908301611708565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a7b2d2fa6ba50cc576b971da843317c1935d77906cbc3c81fb59a0009a849fcb64736f6c634300080d0033000000000000000000000000000000007a58f5f58e697e51ab0357bc9e260a04

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80637ecebe0011610104578063b295bfcb116100a2578063d505accf11610071578063d505accf1461040b578063d51a020b1461041e578063dd62ed3e14610445578063e1de00eb146103a557600080fd5b8063b295bfcb146103c7578063bbb333ed146103d2578063be4a0a14146103e5578063bedb86fb146103f857600080fd5b80639f4568ef116100de5780639f4568ef1461037c578063a2309ff81461039c578063a7271f6e146103a5578063a9059cbb146103b457600080fd5b80637ecebe00146103295780638da5cb5b1461034957806395d89b411461037457600080fd5b806332cb6b0c1161017c578063484267a41161014b578063484267a4146102d75780635b3d2f54146102ea5780635c975abb146102f557806370a082311461030957600080fd5b806332cb6b0c1461029f578063354ba4e2146102b15780633644e515146102bc57806340c10f19146102c457600080fd5b806313af4035116101b857806313af40351461023557806318160ddd1461024a57806323b872dd14610253578063313ce5671461026657600080fd5b8063045bf5d5146101df57806306fdde03146101fd578063095ea7b314610212575b600080fd5b6101ea6362be390081565b6040519081526020015b60405180910390f35b610205610470565b6040516101f49190611374565b6102256102203660046113e5565b6104fe565b60405190151581526020016101f4565b61024861024336600461140f565b61056a565b005b6101ea60025481565b61022561026136600461142a565b6105e9565b61028d7f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff90911681526020016101f4565b6101ea6a1b8b8c9e000e82a480000081565b6101ea6301e2850081565b6101ea61073c565b6102486102d23660046113e5565b610797565b6101ea6102e536600461140f565b61089c565b6101ea636427740081565b60065461022590600160a01b900460ff1681565b6101ea61031736600461140f565b60036020526000908152604090205481565b6101ea61033736600461140f565b60056020526000908152604090205481565b60065461035c906001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b610205610972565b6101ea61038a36600461140f565b60086020526000908152604090205481565b6101ea60075481565b6101ea6706f05b59d3b2000081565b6102256103c23660046113e5565b61097f565b6101ea636609f90081565b6101ea6103e0366004611466565b610a58565b6101ea6103f336600461148f565b610adb565b6102486104063660046114dc565b610efc565b6102486104193660046114f7565b610f79565b61035c7f000000000000000000000000000000007a58f5f58e697e51ab0357bc9e260a0481565b6101ea61045336600461156a565b600460209081526000928352604080842090915290825290205481565b6000805461047d9061159d565b80601f01602080910402602001604051908101604052809291908181526020018280546104a99061159d565b80156104f65780601f106104cb576101008083540402835291602001916104f6565b820191906000526020600020905b8154815290600101906020018083116104d957829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105599086815260200190565b60405180910390a350600192915050565b6006546001600160a01b0316331461059d5760405162461bcd60e51b8152600401610594906115d7565b60405180910390fd5b600680546001600160a01b0319166001600160a01b03831690811790915560405133907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a350565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000198114610645576106208382611613565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020908152604080832054600890925282205461067490869061162a565b61067e9190611649565b6001600160a01b0387166000908152600860205260408120805492935083929091906106ab908490611613565b90915550506001600160a01b038616600090815260036020526040812080548692906106d8908490611613565b90915550506001600160a01b038581166000818152600860209081526040808320805487019055600382529182902080548901905590518781529192891691600080516020611738833981519152910160405180910390a350600195945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000146146107725761076d6111bd565b905090565b507f1b2ddddf967c8a1c7f502f1b02167fb6d053a7929915bd05752b4c27c2e5f68f90565b6006546001600160a01b031633146107c15760405162461bcd60e51b8152600401610594906115d7565b6001600160a01b0382166108065760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610594565b6a1b8b8c9e000e82a480000081600754610820919061166b565b111561085b5760405162461bcd60e51b815260206004820152600a6024820152694d41585f535550504c5960b01b6044820152606401610594565b600780548201905561086d8282611257565b60405181907f07883703ed0e86588a40d76551c92f8a4b329e3bf19765e0e6749473c1a8466590600090a25050565b6001600160a01b0381166000908152600360205260408120548082036108c55750600092915050565b426362be39008110156108dc575060009392505050565b6001600160a01b03841660009081526008602052604081205490636609f90083106109125761090b828561166b565b905061094b565b600061091d84610a58565b9050670de0b6b3a764000081610933858861166b565b61093d919061162a565b6109479190611649565b9150505b81811161095e5750600095945050505050565b6109688282611613565b9695505050505050565b6001805461047d9061159d565b3360009081526003602090815260408083205460089092528220548291906109a890859061162a565b6109b29190611649565b336000908152600860205260408120805492935083929091906109d6908490611613565b909155505033600090815260036020526040812080548592906109fa908490611613565b90915550506001600160a01b0384166000818152600860209081526040808320805486019055600382529182902080548701905590518581523391600080516020611738833981519152910160405180910390a35060019392505050565b60006362be3900821015610a6e57506000919050565b63642774008211610a8857506706f05b59d3b20000919050565b636609f9008210610aa25750670de0b6b3a7640000919050565b6000610ab76364277400846301e285006112b1565b9050610ad46706f05b59d3b20000826706f05b59d3b200006112e6565b9392505050565b600654600090600160a01b900460ff1615610b215760405162461bcd60e51b815260206004820152600660248201526514105554d15160d21b6044820152606401610594565b6001600160a01b03841660009081526003602052604090205480610b735760405162461bcd60e51b81526020600482015260096024820152681393d39157d311519560ba1b6044820152606401610594565b426362be3900811015610bb35760405162461bcd60e51b81526020600482015260086024820152672156455354494e4760c01b6044820152606401610594565b6001600160a01b03861660009081526008602052604081205490636609f9008310610be957610be2828561166b565b9050610c22565b6000610bf484610a58565b9050670de0b6b3a764000081610c0a858861166b565b610c14919061162a565b610c1e9190611649565b9150505b818111610c5d5760405162461bcd60e51b81526020600482015260096024820152681393d39157d311519560ba1b6044820152606401610594565b6000610c698383611613565b905086610cad5789811015610caa5760405162461bcd60e51b81526020600482015260076024820152664558434545445360c81b6044820152606401610594565b50885b6001600160a01b0389163314610d56576001600160a01b038916600090815260046020908152604080832033845290915290205481811015610d1c5760405162461bcd60e51b81526020600482015260086024820152670850531313d5d15160c21b6044820152606401610594565b6000198114610d5457610d2f8282611613565b6001600160a01b038b1660009081526004602090815260408083203384529091529020555b505b610d60818461166b565b6001600160a01b038a16600090815260086020526040902055610d838982611312565b610d996a1b8b8c9e000e82a4800000600a61162a565b817f000000000000000000000000000000007a58f5f58e697e51ab0357bc9e260a046001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1c9190611683565b610e26919061162a565b610e309190611649565b6040516340c10f1960e01b81526001600160a01b038a81166004830152602482018390529197507f000000000000000000000000000000007a58f5f58e697e51ab0357bc9e260a04909116906340c10f1990604401600060405180830381600087803b158015610e9f57600080fd5b505af1158015610eb3573d6000803e3d6000fd5b50506040518892506001600160a01b038c16915033907f211e721db9e446132bc018602a497cf5713e88e7d61084ce4d30e7ee4fc9d2bd90600090a45050505050949350505050565b6006546001600160a01b03163314610f265760405162461bcd60e51b8152600401610594906115d7565b6006805460ff60a01b1916600160a01b8315158102919091179182905560405160ff91909204161515907f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd290600090a250565b42841015610fc95760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610594565b60006001610fd561073c565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156110e1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906111175750876001600160a01b0316816001600160a01b0316145b6111545760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610594565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516111ef919061169c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060026000828254611269919061166b565b90915550506001600160a01b03821660008181526003602090815260408083208054860190555184815260008051602061173883398151915291015b60405180910390a35050565b6000806112be8585611613565b9050826112d382670de0b6b3a764000061162a565b6112dd9190611649565b95945050505050565b600080670de0b6b3a76400006112fc858561162a565b6113069190611649565b90506112dd818661166b565b6001600160a01b0382166000908152600360205260408120805483929061133a908490611613565b90915550506002805482900390556040518181526000906001600160a01b03841690600080516020611738833981519152906020016112a5565b600060208083528351808285015260005b818110156113a157858101830151858201604001528201611385565b818111156113b3576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146113e057600080fd5b919050565b600080604083850312156113f857600080fd5b611401836113c9565b946020939093013593505050565b60006020828403121561142157600080fd5b610ad4826113c9565b60008060006060848603121561143f57600080fd5b611448846113c9565b9250611456602085016113c9565b9150604084013590509250925092565b60006020828403121561147857600080fd5b5035919050565b803580151581146113e057600080fd5b600080600080608085870312156114a557600080fd5b843593506114b5602086016113c9565b92506114c3604086016113c9565b91506114d16060860161147f565b905092959194509250565b6000602082840312156114ee57600080fd5b610ad48261147f565b600080600080600080600060e0888a03121561151257600080fd5b61151b886113c9565b9650611529602089016113c9565b95506040880135945060608801359350608088013560ff8116811461154d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561157d57600080fd5b611586836113c9565b9150611594602084016113c9565b90509250929050565b600181811c908216806115b157607f821691505b6020821081036115d157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015611625576116256115fd565b500390565b6000816000190483118215151615611644576116446115fd565b500290565b60008261166657634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561167e5761167e6115fd565b500190565b60006020828403121561169557600080fd5b5051919050565b600080835481600182811c9150808316806116b857607f831692505b602080841082036116d757634e487b7160e01b86526022600452602486fd5b8180156116eb57600181146116fc57611729565b60ff19861689528489019650611729565b60008a81526020902060005b868110156117215781548b820152908501908301611708565b505084890196505b50949897505050505050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a7b2d2fa6ba50cc576b971da843317c1935d77906cbc3c81fb59a0009a849fcb64736f6c634300080d0033

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

000000000000000000000000000000007a58f5f58e697e51ab0357bc9e260a04

-----Decoded View---------------
Arg [0] : _CNV (address): 0x000000007a58f5f58E697e51Ab0357BC9e260A04

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000007a58f5f58e697e51ab0357bc9e260a04


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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