ERC-20
Source Code
Overview
Max Total Supply
32,448,576.893399255352170073 pCNV
Holders
7,572
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
26.3624 pCNVValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
pCNV
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// 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;
}
}// 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);
}
}// 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);
}
}// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.13;
interface ICNV {
function mint(address account, uint256 amount) external;
function totalSupply() external view returns (uint256);
}{
"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
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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"}]Contract Creation Code
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
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)