Source Code
Latest 25 from a total of 121 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Retrieve Access ... | 15776723 | 1242 days ago | IN | 0 ETH | 0.00127523 | ||||
| Release | 14527612 | 1438 days ago | IN | 0 ETH | 0.00478924 | ||||
| Release | 14527611 | 1438 days ago | IN | 0 ETH | 0.00459784 | ||||
| Release | 14527610 | 1438 days ago | IN | 0 ETH | 0.00479749 | ||||
| Release | 14527608 | 1438 days ago | IN | 0 ETH | 0.00476791 | ||||
| Release | 14527606 | 1438 days ago | IN | 0 ETH | 0.00529829 | ||||
| Release | 14482848 | 1445 days ago | IN | 0 ETH | 0.00428831 | ||||
| Release | 14482483 | 1445 days ago | IN | 0 ETH | 0.00377999 | ||||
| Release | 14482477 | 1445 days ago | IN | 0 ETH | 0.00310368 | ||||
| Release | 14482472 | 1445 days ago | IN | 0 ETH | 0.00323486 | ||||
| Release | 14482469 | 1445 days ago | IN | 0 ETH | 0.0035816 | ||||
| Release | 14482459 | 1445 days ago | IN | 0 ETH | 0.00353851 | ||||
| Release | 14482457 | 1445 days ago | IN | 0 ETH | 0.00372496 | ||||
| Release | 14482456 | 1445 days ago | IN | 0 ETH | 0.00354064 | ||||
| Release | 14482451 | 1445 days ago | IN | 0 ETH | 0.0043652 | ||||
| Release | 14482451 | 1445 days ago | IN | 0 ETH | 0.0043652 | ||||
| Release | 14482427 | 1445 days ago | IN | 0 ETH | 0.00592483 | ||||
| Release | 14482424 | 1445 days ago | IN | 0 ETH | 0.00492361 | ||||
| Release | 14482418 | 1445 days ago | IN | 0 ETH | 0.00488464 | ||||
| Release | 14482415 | 1445 days ago | IN | 0 ETH | 0.00458727 | ||||
| Release | 14482398 | 1445 days ago | IN | 0 ETH | 0.00295511 | ||||
| Release | 14482394 | 1445 days ago | IN | 0 ETH | 0.00267387 | ||||
| Release | 14482378 | 1445 days ago | IN | 0 ETH | 0.0031007 | ||||
| Release | 14482373 | 1445 days ago | IN | 0 ETH | 0.00351295 | ||||
| Release | 13938537 | 1529 days ago | IN | 0 ETH | 0.00549535 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
YelProject_Vesting
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-07-29
*/
// SPDX-License-Identifier: MIT
/*
* $$$$$$_$$__$$__$$$$__$$$$$$
* ____$$_$$__$$_$$_______$$
* ____$$_$$__$$__$$$$____$$
* $$__$$_$$__$$_____$$___$$
* _$$$$___$$$$___$$$$____$$
*
* $$__$$_$$$$$$_$$$$$__$$_____$$$$$
* _$$$$____$$___$$_____$$_____$$__$$
* __$$_____$$___$$$$___$$_____$$__$$
* __$$_____$$___$$_____$$_____$$__$$
* __$$___$$$$$$_$$$$$__$$$$$$_$$$$$
*
* $$___$_$$$$$$_$$$$$$_$$__$$
* $$___$___$$_____$$___$$__$$
* $$_$_$___$$_____$$___$$$$$$
* $$$$$$___$$_____$$___$$__$$
* _$$_$$_$$$$$$___$$___$$__$$
*
* $$__$$_$$$$$__$$
* _$$$$__$$_____$$
* __$$___$$$$___$$
* __$$___$$_____$$
* __$$___$$$$$__$$$$$$
*/
pragma solidity ^0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly { size := extcodesize(account) }
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain`call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
/**
* @dev Deprecated. This function has issues similar to the ones found in
* {IERC20-approve}, and its usage is discouraged.
*
* Whenever possible, use {safeIncreaseAllowance} and
* {safeDecreaseAllowance} instead.
*/
function safeApprove(IERC20 token, address spender, uint256 value) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
// solhint-disable-next-line max-line-length
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender) + value;
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
unchecked {
uint256 oldAllowance = token.allowance(address(this), spender);
require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
uint256 newAllowance = oldAllowance - value;
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function _callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
// the target address contains contract code and also asserts for success in the low-level call.
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
/**
* To ensure proper governance and reward distribution YEL tokens
* are locked in this vesting contract
*/
contract YelProject_Vesting is Ownable {
using SafeERC20 for IERC20;
// YEL Token pointer
IERC20 immutable public yelToken;
string private constant INSUFFICIENT_BALANCE = "Insufficient balance";
string private constant VESTING_ALREADY_RELEASED = "Vesting already released";
string private constant NOT_VESTED = "Tokens are locked yet";
uint256 immutable public creationTime;
// Total amount of tokens which were released from this contract
uint256 public totalTokensReleased = 0;
event TokenVestingReleased(uint256 indexed weekNumber, uint256 amount);
event TokenVestingRemoved(uint256 indexed weekNumber, uint256 amount);
uint256 SCALING_FACTOR = 10 ** 18; // decimals
// Token amount that should be distributed from week 1 until the end of week 6
uint256 public FROM_1_TILL_6_WEEKS = 30000000 * SCALING_FACTOR;
// Token amount that should be distributed from week 7 until the end of week 17
uint256 public FROM_7_TILL_16_WEEKS = 20000000 * SCALING_FACTOR;
// Token amount that should be distributed from week 17 until the end of week 52
uint256 public FROM_17_TILL_52_WEEKS = 40000000 * SCALING_FACTOR;
uint256 week = 1 weeks;
address receiverAddress1 = 0x950005C26e9899E749D75e239417324512bCB817;
address receiverAddress2 = 0x2C6787f0b6aEB06446DE0314496203a6340C198F;
address receiverAddress3 = 0x9ea87D2910e62c5c64D57f4a8A43525c2C1C3969;
address receiverAddress4 = 0xC4F03e7992b2fBb6BC3C75DB0c6E68cfbcc5b5B3;
// Info of each vesting.
struct Vesting {
uint256 amount; // amount that is released at specific point of time
bool released; // flag that verifies if the funds are already withdrawn
}
// Info stack about requested vesting at specific period of time.
mapping(uint256 => Vesting) public vestingInfo;
constructor (IERC20 _token) {
require(address(_token) != address(0x0), "YEL token address is not valid");
yelToken = _token;
creationTime = block.timestamp + 1;
}
/**
* @dev Throws if called by any account other than the Receivers.
*/
modifier onlyReceivers() {
require(
receiverAddress1 == msg.sender ||
receiverAddress2 == msg.sender ||
receiverAddress3 == msg.sender ||
receiverAddress4 == msg.sender,
"YelProject_Vesting: caller is not the receiver");
_;
}
// Function returns reward token address
function token() public view returns (IERC20) {
return yelToken;
}
// Function returns timestamp in which funds can be withdrawn
function releaseTime(uint256 weekNumber) public view returns (uint256) {
return weekNumber * week + creationTime;
}
// Function returns amount that can be withdrawn at a specific time
function vestingAmount(uint256 weekNumber) public view returns (uint256 amount) {
if (weekNumber >= 1 && weekNumber <= 6) {
amount = FROM_1_TILL_6_WEEKS / 6;
}
if (weekNumber >= 7 && weekNumber <= 16) {
amount = FROM_7_TILL_16_WEEKS / 10;
}
if (weekNumber >= 17 && weekNumber <= 52) {
amount = FROM_17_TILL_52_WEEKS / 36;
}
}
// Adds vesting information to vesting array. Can be called only by contract owner
function removeVesting(uint256 weekNumber) external onlyOwner {
Vesting storage vesting = vestingInfo[weekNumber];
require(!vesting.released , VESTING_ALREADY_RELEASED);
vesting.amount = 0;
vesting.released = true; // save some gas in the future
emit TokenVestingRemoved(weekNumber, vesting.amount);
}
// Function is responsible for releasing the funds at specific point of time
// Can be called only by contract owner
function release(uint256 weekNumber) external onlyReceivers{
Vesting storage vesting = vestingInfo[weekNumber];
require(!vesting.released, VESTING_ALREADY_RELEASED);
require(block.timestamp >= releaseTime(weekNumber), NOT_VESTED);
uint256 amountTotal = vestingAmount(weekNumber);
uint256 amount = amountTotal / 4; // how many tokens per one receiver
if (amount > 0) {
require(yelToken.balanceOf(address(this)) >= amount, INSUFFICIENT_BALANCE);
vesting.amount = vesting.amount + amount;
yelToken.safeTransfer(msg.sender, amount);
totalTokensReleased += amount;
if(vesting.amount == amountTotal) {
vesting.released = true;
}
emit TokenVestingReleased(weekNumber, vesting.amount);
}
}
// In a case when there are some YEL tokens left on a contract this function allows the contract owner to retrieve excess tokens
function retrieveAccessTokens(uint256 _amount) external onlyOwner {
require(
block.timestamp >= releaseTime(53),
"Can be executed by the owner only after 52 weeks.");
require(_amount <= yelToken.balanceOf(address(this)), INSUFFICIENT_BALANCE);
yelToken.safeTransfer(owner(), _amount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"weekNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenVestingReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"weekNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenVestingRemoved","type":"event"},{"inputs":[],"name":"FROM_17_TILL_52_WEEKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FROM_1_TILL_6_WEEKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FROM_7_TILL_16_WEEKS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creationTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"weekNumber","type":"uint256"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weekNumber","type":"uint256"}],"name":"releaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"weekNumber","type":"uint256"}],"name":"removeVesting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"retrieveAccessTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weekNumber","type":"uint256"}],"name":"vestingAmount","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"vestingInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"released","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"yelToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60c06040526000600155670de0b6b3a7640000600281905562000027906301c9c38062000221565b6003556002546200003d906301312d0062000221565b60045560025462000053906302625a0062000221565b60055562093a80600655600780546001600160a01b031990811673950005c26e9899e749d75e239417324512bcb81717909155600880548216732c6787f0b6aeb06446de0314496203a6340c198f179055600980548216739ea87d2910e62c5c64d57f4a8a43525c2c1c3969179055600a805490911673c4f03e7992b2fbb6bc3c75db0c6e68cfbcc5b5b3179055348015620000ee57600080fd5b50604051620011ad380380620011ad8339810160408190526200011191620001d6565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038116620001ad5760405162461bcd60e51b815260206004820152601e60248201527f59454c20746f6b656e2061646472657373206973206e6f742076616c69640000604482015260640160405180910390fd5b6001600160601b0319606082901b16608052620001cc42600162000206565b60a0525062000259565b600060208284031215620001e8578081fd5b81516001600160a01b0381168114620001ff578182fd5b9392505050565b600082198211156200021c576200021c62000243565b500190565b60008160001904831182151516156200023e576200023e62000243565b500290565b634e487b7160e01b600052601160045260246000fd5b60805160601c60a051610f01620002ac60003960008181610226015261031a01526000818161017401528181610270015281816105e8015281816106d40152818161089001526109800152610f016000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063d8270dce11610066578063d8270dce14610221578063e1d649e114610248578063f2fde38b1461025b578063fc0c546a1461026e57600080fd5b80638da5cb5b146101f5578063c4773a7314610206578063cc4ff1f21461020f578063d5b88cf91461021857600080fd5b806337bdc99b116100d357806337bdc99b1461015c578063478236c91461016f57806366ffcf5f146101ae578063715018a6146101ed57600080fd5b806307ad23ef1461010557806309c4bb2b1461012b5780631bcde4ec1461013e5780633791194714610153575b600080fd5b610118610113366004610d7e565b610294565b6040519081526020015b60405180910390f35b610118610139366004610d7e565b610316565b61015161014c366004610d7e565b610351565b005b61011860045481565b61015161016a366004610d7e565b61043c565b6101967f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b6101d86101bc366004610d7e565b600b602052600090815260409020805460019091015460ff1682565b60408051928352901515602083015201610122565b61015161076a565b6000546001600160a01b0316610196565b61011860015481565b61011860055481565b61011860035481565b6101187f000000000000000000000000000000000000000000000000000000000000000081565b610151610256366004610d7e565b6107de565b610151610269366004610d37565b6109aa565b7f0000000000000000000000000000000000000000000000000000000000000000610196565b6000600182101580156102a8575060068211155b156102bf5760066003546102bc9190610e4a565b90505b600782101580156102d1575060108211155b156102e857600a6004546102e59190610e4a565b90505b601182101580156102fa575060348211155b1561031157602460055461030e9190610e4a565b90505b919050565b60007f0000000000000000000000000000000000000000000000000000000000000000600654836103479190610e6a565b61030e9190610e32565b6000546001600160a01b031633146103845760405162461bcd60e51b815260040161037b90610dfd565b60405180910390fd5b6000818152600b602090815260409182902060018101548351808501909452601884527715995cdd1a5b99c8185b1c9958591e481c995b19585cd95960421b92840192909252919060ff16156103ed5760405162461bcd60e51b815260040161037b9190610dca565b5060008082556001808301805460ff1916909117905560405190815282907f296b8a6e0484b7508a0cdc54e0937a032f990ce341c2d7b7bb03df5feb9c549e9060200160405180910390a25050565b6007546001600160a01b031633148061045f57506008546001600160a01b031633145b8061047457506009546001600160a01b031633145b806104895750600a546001600160a01b031633145b6104ec5760405162461bcd60e51b815260206004820152602e60248201527f59656c50726f6a6563745f56657374696e673a2063616c6c6572206973206e6f60448201526d3a103a3432903932b1b2b4bb32b960911b606482015260840161037b565b6000818152600b602090815260409182902060018101548351808501909452601884527715995cdd1a5b99c8185b1c9958591e481c995b19585cd95960421b92840192909252919060ff16156105555760405162461bcd60e51b815260040161037b9190610dca565b5061055f82610316565b42101560405180604001604052806015815260200174151bdad95b9cc8185c99481b1bd8dad959081e595d605a1b815250906105ae5760405162461bcd60e51b815260040161037b9190610dca565b5060006105ba83610294565b905060006105c9600483610e4a565b90508015610764576040516370a0823160e01b815230600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561063257600080fd5b505afa158015610646573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066a9190610d96565b101560405180604001604052806014815260200173496e73756666696369656e742062616c616e636560601b815250906106b75760405162461bcd60e51b815260040161037b9190610dca565b5082546106c5908290610e32565b83556106fb6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383610a94565b806001600082825461070d9190610e32565b9091555050825482141561072c576001838101805460ff191690911790555b825460405190815284907f1b1f2137a64084193106cd10566382d8874f6a0d8a9513b3606702f6e380f9c99060200160405180910390a25b50505050565b6000546001600160a01b031633146107945760405162461bcd60e51b815260040161037b90610dfd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108085760405162461bcd60e51b815260040161037b90610dfd565b6108126035610316565b42101561087b5760405162461bcd60e51b815260206004820152603160248201527f43616e20626520657865637574656420627920746865206f776e6572206f6e6c6044820152703c9030b33a32b9101a99103bb2b2b5b99760791b606482015260840161037b565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156108da57600080fd5b505afa1580156108ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109129190610d96565b81111560405180604001604052806014815260200173496e73756666696369656e742062616c616e636560601b815250906109605760405162461bcd60e51b815260040161037b9190610dca565b506109a76109766000546001600160a01b031690565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083610a94565b50565b6000546001600160a01b031633146109d45760405162461bcd60e51b815260040161037b90610dfd565b6001600160a01b038116610a395760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161037b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ae6908490610aeb565b505050565b6000610b40826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610bbd9092919063ffffffff16565b805190915015610ae65780806020019051810190610b5e9190610d5e565b610ae65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161037b565b6060610bcc8484600085610bd6565b90505b9392505050565b606082471015610c375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161037b565b843b610c855760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161037b565b600080866001600160a01b03168587604051610ca19190610dae565b60006040518083038185875af1925050503d8060008114610cde576040519150601f19603f3d011682016040523d82523d6000602084013e610ce3565b606091505b5091509150610cf3828286610cfe565b979650505050505050565b60608315610d0d575081610bcf565b825115610d1d5782518084602001fd5b8160405162461bcd60e51b815260040161037b9190610dca565b600060208284031215610d48578081fd5b81356001600160a01b0381168114610bcf578182fd5b600060208284031215610d6f578081fd5b81518015158114610bcf578182fd5b600060208284031215610d8f578081fd5b5035919050565b600060208284031215610da7578081fd5b5051919050565b60008251610dc0818460208701610e89565b9190910192915050565b6020815260008251806020840152610de9816040850160208701610e89565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115610e4557610e45610eb5565b500190565b600082610e6557634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610e8457610e84610eb5565b500290565b60005b83811015610ea4578181015183820152602001610e8c565b838111156107645750506000910152565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220dd6e6dc7c9d783c3bdb9c8c67e9dd733cb2c65d094faf4adff435b7021ff6e9264736f6c634300080400330000000000000000000000007815bda662050d84718b988735218cffd32f75ea
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063d8270dce11610066578063d8270dce14610221578063e1d649e114610248578063f2fde38b1461025b578063fc0c546a1461026e57600080fd5b80638da5cb5b146101f5578063c4773a7314610206578063cc4ff1f21461020f578063d5b88cf91461021857600080fd5b806337bdc99b116100d357806337bdc99b1461015c578063478236c91461016f57806366ffcf5f146101ae578063715018a6146101ed57600080fd5b806307ad23ef1461010557806309c4bb2b1461012b5780631bcde4ec1461013e5780633791194714610153575b600080fd5b610118610113366004610d7e565b610294565b6040519081526020015b60405180910390f35b610118610139366004610d7e565b610316565b61015161014c366004610d7e565b610351565b005b61011860045481565b61015161016a366004610d7e565b61043c565b6101967f0000000000000000000000007815bda662050d84718b988735218cffd32f75ea81565b6040516001600160a01b039091168152602001610122565b6101d86101bc366004610d7e565b600b602052600090815260409020805460019091015460ff1682565b60408051928352901515602083015201610122565b61015161076a565b6000546001600160a01b0316610196565b61011860015481565b61011860055481565b61011860035481565b6101187f000000000000000000000000000000000000000000000000000000006103180d81565b610151610256366004610d7e565b6107de565b610151610269366004610d37565b6109aa565b7f0000000000000000000000007815bda662050d84718b988735218cffd32f75ea610196565b6000600182101580156102a8575060068211155b156102bf5760066003546102bc9190610e4a565b90505b600782101580156102d1575060108211155b156102e857600a6004546102e59190610e4a565b90505b601182101580156102fa575060348211155b1561031157602460055461030e9190610e4a565b90505b919050565b60007f000000000000000000000000000000000000000000000000000000006103180d600654836103479190610e6a565b61030e9190610e32565b6000546001600160a01b031633146103845760405162461bcd60e51b815260040161037b90610dfd565b60405180910390fd5b6000818152600b602090815260409182902060018101548351808501909452601884527715995cdd1a5b99c8185b1c9958591e481c995b19585cd95960421b92840192909252919060ff16156103ed5760405162461bcd60e51b815260040161037b9190610dca565b5060008082556001808301805460ff1916909117905560405190815282907f296b8a6e0484b7508a0cdc54e0937a032f990ce341c2d7b7bb03df5feb9c549e9060200160405180910390a25050565b6007546001600160a01b031633148061045f57506008546001600160a01b031633145b8061047457506009546001600160a01b031633145b806104895750600a546001600160a01b031633145b6104ec5760405162461bcd60e51b815260206004820152602e60248201527f59656c50726f6a6563745f56657374696e673a2063616c6c6572206973206e6f60448201526d3a103a3432903932b1b2b4bb32b960911b606482015260840161037b565b6000818152600b602090815260409182902060018101548351808501909452601884527715995cdd1a5b99c8185b1c9958591e481c995b19585cd95960421b92840192909252919060ff16156105555760405162461bcd60e51b815260040161037b9190610dca565b5061055f82610316565b42101560405180604001604052806015815260200174151bdad95b9cc8185c99481b1bd8dad959081e595d605a1b815250906105ae5760405162461bcd60e51b815260040161037b9190610dca565b5060006105ba83610294565b905060006105c9600483610e4a565b90508015610764576040516370a0823160e01b815230600482015281907f0000000000000000000000007815bda662050d84718b988735218cffd32f75ea6001600160a01b0316906370a082319060240160206040518083038186803b15801561063257600080fd5b505afa158015610646573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066a9190610d96565b101560405180604001604052806014815260200173496e73756666696369656e742062616c616e636560601b815250906106b75760405162461bcd60e51b815260040161037b9190610dca565b5082546106c5908290610e32565b83556106fb6001600160a01b037f0000000000000000000000007815bda662050d84718b988735218cffd32f75ea163383610a94565b806001600082825461070d9190610e32565b9091555050825482141561072c576001838101805460ff191690911790555b825460405190815284907f1b1f2137a64084193106cd10566382d8874f6a0d8a9513b3606702f6e380f9c99060200160405180910390a25b50505050565b6000546001600160a01b031633146107945760405162461bcd60e51b815260040161037b90610dfd565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108085760405162461bcd60e51b815260040161037b90610dfd565b6108126035610316565b42101561087b5760405162461bcd60e51b815260206004820152603160248201527f43616e20626520657865637574656420627920746865206f776e6572206f6e6c6044820152703c9030b33a32b9101a99103bb2b2b5b99760791b606482015260840161037b565b6040516370a0823160e01b81523060048201527f0000000000000000000000007815bda662050d84718b988735218cffd32f75ea6001600160a01b0316906370a082319060240160206040518083038186803b1580156108da57600080fd5b505afa1580156108ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109129190610d96565b81111560405180604001604052806014815260200173496e73756666696369656e742062616c616e636560601b815250906109605760405162461bcd60e51b815260040161037b9190610dca565b506109a76109766000546001600160a01b031690565b6001600160a01b037f0000000000000000000000007815bda662050d84718b988735218cffd32f75ea169083610a94565b50565b6000546001600160a01b031633146109d45760405162461bcd60e51b815260040161037b90610dfd565b6001600160a01b038116610a395760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161037b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610ae6908490610aeb565b505050565b6000610b40826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610bbd9092919063ffffffff16565b805190915015610ae65780806020019051810190610b5e9190610d5e565b610ae65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161037b565b6060610bcc8484600085610bd6565b90505b9392505050565b606082471015610c375760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161037b565b843b610c855760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161037b565b600080866001600160a01b03168587604051610ca19190610dae565b60006040518083038185875af1925050503d8060008114610cde576040519150601f19603f3d011682016040523d82523d6000602084013e610ce3565b606091505b5091509150610cf3828286610cfe565b979650505050505050565b60608315610d0d575081610bcf565b825115610d1d5782518084602001fd5b8160405162461bcd60e51b815260040161037b9190610dca565b600060208284031215610d48578081fd5b81356001600160a01b0381168114610bcf578182fd5b600060208284031215610d6f578081fd5b81518015158114610bcf578182fd5b600060208284031215610d8f578081fd5b5035919050565b600060208284031215610da7578081fd5b5051919050565b60008251610dc0818460208701610e89565b9190910192915050565b6020815260008251806020840152610de9816040850160208701610e89565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115610e4557610e45610eb5565b500190565b600082610e6557634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610e8457610e84610eb5565b500290565b60005b83811015610ea4578181015183820152602001610e8c565b838111156107645750506000910152565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220dd6e6dc7c9d783c3bdb9c8c67e9dd733cb2c65d094faf4adff435b7021ff6e9264736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007815bda662050d84718b988735218cffd32f75ea
-----Decoded View---------------
Arg [0] : _token (address): 0x7815bDa662050D84718B988735218CFfd32f75ea
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007815bda662050d84718b988735218cffd32f75ea
Deployed Bytecode Sourcemap
18347:5370:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21334:423;;;;;;:::i;:::-;;:::i;:::-;;;5320:25:1;;;5308:2;5293:18;21334:423:0;;;;;;;;21120:129;;;;;;:::i;:::-;;:::i;21857:351::-;;;;;;:::i;:::-;;:::i;:::-;;19368:63;;;;;;22347:871;;;;;;:::i;:::-;;:::i;18458:32::-;;;;;;;;-1:-1:-1;;;;;1464:32:1;;;1446:51;;1434:2;1419:18;18458:32:0;1401:102:1;20237:47:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;5524:25:1;;;5592:14;;5585:22;5580:2;5565:18;;5558:50;5497:18;20237:47:0;5479:135:1;3367:148:0;;;:::i;2716:87::-;2762:7;2789:6;-1:-1:-1;;;;;2789:6:0;2716:87;;18850:38;;;;;;19530:64;;;;;;19208:62;;;;;;18730:37;;;;;23364:344;;;;;;:::i;:::-;;:::i;3670:244::-;;;;;;:::i;:::-;;:::i;20961:80::-;21025:8;20961:80;;21334:423;21398:14;21443:1;21429:10;:15;;:34;;;;;21462:1;21448:10;:15;;21429:34;21425:99;;;21511:1;21489:19;;:23;;;;:::i;:::-;21480:32;;21425:99;21552:1;21538:10;:15;;:35;;;;;21571:2;21557:10;:16;;21538:35;21534:102;;;21622:2;21599:20;;:25;;;;:::i;:::-;21590:34;;21534:102;21664:2;21650:10;:16;;:36;;;;;21684:2;21670:10;:16;;21650:36;21646:104;;;21736:2;21712:21;;:26;;;;:::i;:::-;21703:35;;21646:104;21334:423;;;:::o;21120:129::-;21182:7;21229:12;21222:4;;21209:10;:17;;;;:::i;:::-;:32;;;;:::i;21857:351::-;2762:7;2789:6;-1:-1:-1;;;;;2789:6:0;1440:10;2936:23;2928:68;;;;-1:-1:-1;;;2928:68:0;;;;;;;:::i;:::-;;;;;;;;;21930:23:::1;21956::::0;;;:11:::1;:23;::::0;;;;;;;;21999:16:::1;::::0;::::1;::::0;22018:24;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;22018:24:0;;::::1;::::0;;;;21956:23;22018:24;21999:16:::1;;21998:17;21990:53;;;;-1:-1:-1::0;;;21990:53:0::1;;;;;;;;:::i;:::-;-1:-1:-1::0;22071:1:0::1;22054:18:::0;;;22102:4:::1;22083:16:::0;;::::1;:23:::0;;-1:-1:-1;;22083:23:0::1;::::0;;::::1;::::0;;22153:47:::1;::::0;5320:25:1;;;22173:10:0;;22153:47:::1;::::0;5308:2:1;5293:18;22153:47:0::1;;;;;;;3007:1;21857:351:::0;:::o;22347:871::-;20652:16;;-1:-1:-1;;;;;20652:16:0;20672:10;20652:30;;:77;;-1:-1:-1;20699:16:0;;-1:-1:-1;;;;;20699:16:0;20719:10;20699:30;20652:77;:124;;;-1:-1:-1;20746:16:0;;-1:-1:-1;;;;;20746:16:0;20766:10;20746:30;20652:124;:171;;;-1:-1:-1;20793:16:0;;-1:-1:-1;;;;;20793:16:0;20813:10;20793:30;20652:171;20630:257;;;;-1:-1:-1;;;20630:257:0;;3017:2:1;20630:257:0;;;2999:21:1;3056:2;3036:18;;;3029:30;3095:34;3075:18;;;3068:62;-1:-1:-1;;;3146:18:1;;;3139:44;3200:19;;20630:257:0;2989:236:1;20630:257:0;22417:23:::1;22443::::0;;;:11:::1;:23;::::0;;;;;;;;22486:16:::1;::::0;::::1;::::0;22504:24;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;22504:24:0;;::::1;::::0;;;;22443:23;22504:24;22486:16:::1;;22485:17;22477:52;;;;-1:-1:-1::0;;;22477:52:0::1;;;;;;;;:::i;:::-;;22567:23;22579:10;22567:11;:23::i;:::-;22548:15;:42;;22592:10;;;;;;;;;;;;;-1:-1:-1::0;;;22592:10:0::1;;::::0;22540:63:::1;;;;;-1:-1:-1::0;;;22540:63:0::1;;;;;;;;:::i;:::-;;22616:19;22638:25;22652:10;22638:13;:25::i;:::-;22616:47:::0;-1:-1:-1;22674:14:0::1;22691:15;22705:1;22616:47:::0;22691:15:::1;:::i;:::-;22674:32:::0;-1:-1:-1;22759:10:0;;22755:446:::1;;22794:33;::::0;-1:-1:-1;;;22794:33:0;;22821:4:::1;22794:33;::::0;::::1;1446:51:1::0;22831:6:0;;22794:8:::1;-1:-1:-1::0;;;;;22794:18:0::1;::::0;::::1;::::0;1419::1;;22794:33:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;22839:20;;;;;;;;;;;;;-1:-1:-1::0;;;22839:20:0::1;;::::0;22786:74:::1;;;;;-1:-1:-1::0;;;22786:74:0::1;;;;;;;;:::i;:::-;-1:-1:-1::0;22892:14:0;;:23:::1;::::0;22909:6;;22892:23:::1;:::i;:::-;22875:40:::0;;22930:41:::1;-1:-1:-1::0;;;;;22930:8:0::1;:21;22952:10;22964:6:::0;22930:21:::1;:41::i;:::-;23009:6;22986:19;;:29;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;23033:14:0;;:29;::::1;23030:92;;;23102:4;23083:16:::0;;::::1;:23:::0;;-1:-1:-1;;23083:23:0::1;::::0;;::::1;::::0;;23030:92:::1;23174:14:::0;;23141:48:::1;::::0;5320:25:1;;;23162:10:0;;23141:48:::1;::::0;5308:2:1;5293:18;23141:48:0::1;;;;;;;22755:446;20898:1;;;22347:871:::0;:::o;3367:148::-;2762:7;2789:6;-1:-1:-1;;;;;2789:6:0;1440:10;2936:23;2928:68;;;;-1:-1:-1;;;2928:68:0;;;;;;;:::i;:::-;3474:1:::1;3458:6:::0;;3437:40:::1;::::0;-1:-1:-1;;;;;3458:6:0;;::::1;::::0;3437:40:::1;::::0;3474:1;;3437:40:::1;3505:1;3488:19:::0;;-1:-1:-1;;;;;;3488:19:0::1;::::0;;3367:148::o;23364:344::-;2762:7;2789:6;-1:-1:-1;;;;;2789:6:0;1440:10;2936:23;2928:68;;;;-1:-1:-1;;;2928:68:0;;;;;;;:::i;:::-;23482:15:::1;23494:2;23482:11;:15::i;:::-;23463;:34;;23441:123;;;::::0;-1:-1:-1;;;23441:123:0;;2599:2:1;23441:123:0::1;::::0;::::1;2581:21:1::0;2638:2;2618:18;;;2611:30;2677:34;2657:18;;;2650:62;-1:-1:-1;;;2728:18:1;;;2721:47;2785:19;;23441:123:0::1;2571:239:1::0;23441:123:0::1;23594:33;::::0;-1:-1:-1;;;23594:33:0;;23621:4:::1;23594:33;::::0;::::1;1446:51:1::0;23594:8:0::1;-1:-1:-1::0;;;;;23594:18:0::1;::::0;::::1;::::0;1419::1;;23594:33:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23583:7;:44;;23629:20;;;;;;;;;;;;;-1:-1:-1::0;;;23629:20:0::1;;::::0;23575:75:::1;;;;;-1:-1:-1::0;;;23575:75:0::1;;;;;;;;:::i;:::-;;23661:39;23683:7;2762::::0;2789:6;-1:-1:-1;;;;;2789:6:0;;2716:87;23683:7:::1;-1:-1:-1::0;;;;;23661:8:0::1;:21;::::0;23692:7;23661:21:::1;:39::i;:::-;23364:344:::0;:::o;3670:244::-;2762:7;2789:6;-1:-1:-1;;;;;2789:6:0;1440:10;2936:23;2928:68;;;;-1:-1:-1;;;2928:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3759:22:0;::::1;3751:73;;;::::0;-1:-1:-1;;;3751:73:0;;3432:2:1;3751:73:0::1;::::0;::::1;3414:21:1::0;3471:2;3451:18;;;3444:30;3510:34;3490:18;;;3483:62;-1:-1:-1;;;3561:18:1;;;3554:36;3607:19;;3751:73:0::1;3404:228:1::0;3751:73:0::1;3861:6;::::0;;3840:38:::1;::::0;-1:-1:-1;;;;;3840:38:0;;::::1;::::0;3861:6;::::1;::::0;3840:38:::1;::::0;::::1;3889:6;:17:::0;;-1:-1:-1;;;;;;3889:17:0::1;-1:-1:-1::0;;;;;3889:17:0;;;::::1;::::0;;;::::1;::::0;;3670:244::o;15026:177::-;15136:58;;;-1:-1:-1;;;;;1700:32:1;;15136:58:0;;;1682:51:1;1749:18;;;;1742:34;;;15136:58:0;;;;;;;;;;1655:18:1;;;;15136:58:0;;;;;;;;-1:-1:-1;;;;;15136:58:0;-1:-1:-1;;;15136:58:0;;;15109:86;;15129:5;;15109:19;:86::i;:::-;15026:177;;;:::o;17460:761::-;17884:23;17910:69;17938:4;17910:69;;;;;;;;;;;;;;;;;17918:5;-1:-1:-1;;;;;17910:27:0;;;:69;;;;;:::i;:::-;17994:17;;17884:95;;-1:-1:-1;17994:21:0;17990:224;;18136:10;18125:30;;;;;;;;;;;;:::i;:::-;18117:85;;;;-1:-1:-1;;;18117:85:0;;4965:2:1;18117:85:0;;;4947:21:1;5004:2;4984:18;;;4977:30;5043:34;5023:18;;;5016:62;-1:-1:-1;;;5094:18:1;;;5087:40;5144:19;;18117:85:0;4937:232:1;10159:195:0;10262:12;10294:52;10316:6;10324:4;10330:1;10333:12;10294:21;:52::i;:::-;10287:59;;10159:195;;;;;;:::o;11211:530::-;11338:12;11396:5;11371:21;:30;;11363:81;;;;-1:-1:-1;;;11363:81:0;;3839:2:1;11363:81:0;;;3821:21:1;3878:2;3858:18;;;3851:30;3917:34;3897:18;;;3890:62;-1:-1:-1;;;3968:18:1;;;3961:36;4014:19;;11363:81:0;3811:228:1;11363:81:0;7608:20;;11455:60;;;;-1:-1:-1;;;11455:60:0;;4607:2:1;11455:60:0;;;4589:21:1;4646:2;4626:18;;;4619:30;4685:31;4665:18;;;4658:59;4734:18;;11455:60:0;4579:179:1;11455:60:0;11589:12;11603:23;11630:6;-1:-1:-1;;;;;11630:11:0;11650:5;11658:4;11630:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11588:75;;;;11681:52;11699:7;11708:10;11720:12;11681:17;:52::i;:::-;11674:59;11211:530;-1:-1:-1;;;;;;;11211:530:0:o;13751:742::-;13866:12;13895:7;13891:595;;;-1:-1:-1;13926:10:0;13919:17;;13891:595;14040:17;;:21;14036:439;;14303:10;14297:17;14364:15;14351:10;14347:2;14343:19;14336:44;14251:148;14446:12;14439:20;;-1:-1:-1;;;14439:20:0;;;;;;;;:::i;14:306:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;178:23;;-1:-1:-1;;;;;230:31:1;;220:42;;210:2;;281:6;273;266:22;325:297;392:6;445:2;433:9;424:7;420:23;416:32;413:2;;;466:6;458;451:22;413:2;503:9;497:16;556:5;549:13;542:21;535:5;532:32;522:2;;583:6;575;568:22;627:190;686:6;739:2;727:9;718:7;714:23;710:32;707:2;;;760:6;752;745:22;707:2;-1:-1:-1;788:23:1;;697:120;-1:-1:-1;697:120:1:o;822:194::-;892:6;945:2;933:9;924:7;920:23;916:32;913:2;;;966:6;958;951:22;913:2;-1:-1:-1;994:16:1;;903:113;-1:-1:-1;903:113:1:o;1021:274::-;1150:3;1188:6;1182:13;1204:53;1250:6;1245:3;1238:4;1230:6;1226:17;1204:53;:::i;:::-;1273:16;;;;;1158:137;-1:-1:-1;;1158:137:1:o;2009:383::-;2158:2;2147:9;2140:21;2121:4;2190:6;2184:13;2233:6;2228:2;2217:9;2213:18;2206:34;2249:66;2308:6;2303:2;2292:9;2288:18;2283:2;2275:6;2271:15;2249:66;:::i;:::-;2376:2;2355:15;-1:-1:-1;;2351:29:1;2336:45;;;;2383:2;2332:54;;2130:262;-1:-1:-1;;2130:262:1:o;4044:356::-;4246:2;4228:21;;;4265:18;;;4258:30;4324:34;4319:2;4304:18;;4297:62;4391:2;4376:18;;4218:182::o;5619:128::-;5659:3;5690:1;5686:6;5683:1;5680:13;5677:2;;;5696:18;;:::i;:::-;-1:-1:-1;5732:9:1;;5667:80::o;5752:217::-;5792:1;5818;5808:2;;-1:-1:-1;;;5843:31:1;;5897:4;5894:1;5887:15;5925:4;5850:1;5915:15;5808:2;-1:-1:-1;5954:9:1;;5798:171::o;5974:168::-;6014:7;6080:1;6076;6072:6;6068:14;6065:1;6062:21;6057:1;6050:9;6043:17;6039:45;6036:2;;;6087:18;;:::i;:::-;-1:-1:-1;6127:9:1;;6026:116::o;6147:258::-;6219:1;6229:113;6243:6;6240:1;6237:13;6229:113;;;6319:11;;;6313:18;6300:11;;;6293:39;6265:2;6258:10;6229:113;;;6360:6;6357:1;6354:13;6351:2;;;-1:-1:-1;;6395:1:1;6377:16;;6370:27;6200:205::o;6410:127::-;6471:10;6466:3;6462:20;6459:1;6452:31;6502:4;6499:1;6492:15;6526:4;6523:1;6516:15
Swarm Source
ipfs://dd6e6dc7c9d783c3bdb9c8c67e9dd733cb2c65d094faf4adff435b7021ff6e92
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
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.