Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 1 from a total of 1 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Release | 14784399 | 1402 days ago | IN | 0 ETH | 0.0005919 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TokenTimelock
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-09-14
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @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;
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");
(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");
(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");
(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");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal 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
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
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);
}
pragma solidity ^0.8.0;
/**
* @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'
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
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
pragma solidity ^0.8.0;
/**
* @dev A token holder contract that will allow a beneficiary to extract the
* tokens after a given release time.
*
* Useful for simple vesting schedules like "advisors get all of their tokens
* after 1 year".
*/
contract TokenTimelock {
using SafeERC20 for IERC20;
// ERC20 basic token contract being held
IERC20 private immutable _token;
// beneficiary of tokens after they are released
address private immutable _beneficiary;
// timestamp when token release is enabled
uint256 private immutable _releaseTime;
constructor(
IERC20 token_,
address beneficiary_,
uint256 releaseTime_
) {
require(releaseTime_ > block.timestamp, "TokenTimelock: release time is before current time");
_token = token_;
_beneficiary = beneficiary_;
_releaseTime = releaseTime_;
}
/**
* @return the token being held.
*/
function token() public view virtual returns (IERC20) {
return _token;
}
/**
* @return the beneficiary of the tokens.
*/
function beneficiary() public view virtual returns (address) {
return _beneficiary;
}
/**
* @return the time when the tokens are released.
*/
function releaseTime() public view virtual returns (uint256) {
return _releaseTime;
}
/**
* @notice Transfers tokens held by timelock to beneficiary.
*/
function release() public virtual {
require(block.timestamp >= releaseTime(), "TokenTimelock: current time is before release time");
uint256 amount = token().balanceOf(address(this));
require(amount > 0, "TokenTimelock: no tokens to release");
token().safeTransfer(beneficiary(), amount);
}
function getLockedAmount() public view virtual returns (uint256) {
uint256 amount = token().balanceOf(address(this));
return amount;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"},{"internalType":"address","name":"beneficiary_","type":"address"},{"internalType":"uint256","name":"releaseTime_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLockedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60e06040523480156200001157600080fd5b5060405162000f4138038062000f41833981810160405281019062000037919062000140565b4281116200007c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200007390620001c3565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508060c08181525050505050620002ea565b6000815190506200010c816200029c565b92915050565b6000815190506200012381620002b6565b92915050565b6000815190506200013a81620002d0565b92915050565b6000806000606084860312156200015c576200015b62000248565b5b60006200016c8682870162000112565b93505060206200017f86828701620000fb565b9250506040620001928682870162000129565b9150509250925092565b6000620001ab603283620001e5565b9150620001b8826200024d565b604082019050919050565b60006020820190508181036000830152620001de816200019c565b9050919050565b600082825260208201905092915050565b600062000203826200021e565b9050919050565b60006200021782620001f6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b7f546f6b656e54696d656c6f636b3a2072656c656173652074696d65206973206260008201527f65666f72652063757272656e742074696d650000000000000000000000000000602082015250565b620002a781620001f6565b8114620002b357600080fd5b50565b620002c1816200020a565b8114620002cd57600080fd5b50565b620002db816200023e565b8114620002e757600080fd5b50565b60805160601c60a05160601c60c051610c216200032060003960006103030152600061017e0152600061032b0152610c216000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063252bc8861461005c57806338af3eed1461007a57806386d1a69f14610098578063b91d4001146100a2578063fc0c546a146100c0575b600080fd5b6100646100de565b6040516100719190610944565b60405180910390f35b61008261017a565b60405161008f9190610823565b60405180910390f35b6100a06101a2565b005b6100aa6102ff565b6040516100b79190610944565b60405180910390f35b6100c8610327565b6040516100d59190610867565b60405180910390f35b6000806100e9610327565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016101219190610823565b60206040518083038186803b15801561013957600080fd5b505afa15801561014d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101719190610699565b90508091505090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6101aa6102ff565b4210156101ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101e3906108a4565b60405180910390fd5b60006101f6610327565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161022e9190610823565b60206040518083038186803b15801561024657600080fd5b505afa15801561025a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027e9190610699565b9050600081116102c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ba90610924565b60405180910390fd5b6102fc6102ce61017a565b826102d7610327565b73ffffffffffffffffffffffffffffffffffffffff1661034f9092919063ffffffff16565b50565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b6103d08363a9059cbb60e01b848460405160240161036e92919061083e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506103d5565b505050565b6000610437826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661049c9092919063ffffffff16565b90506000815111156104975780806020019051810190610457919061066c565b610496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048d90610904565b60405180910390fd5b5b505050565b60606104ab84846000856104b4565b90509392505050565b6060824710156104f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f0906108c4565b60405180910390fd5b610502856105c8565b610541576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610538906108e4565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161056a919061080c565b60006040518083038185875af1925050503d80600081146105a7576040519150601f19603f3d011682016040523d82523d6000602084013e6105ac565b606091505b50915091506105bc8282866105db565b92505050949350505050565b600080823b905060008111915050919050565b606083156105eb5782905061063b565b6000835111156105fe5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106329190610882565b60405180910390fd5b9392505050565b60008151905061065181610bbd565b92915050565b60008151905061066681610bd4565b92915050565b60006020828403121561068257610681610a42565b5b600061069084828501610642565b91505092915050565b6000602082840312156106af576106ae610a42565b5b60006106bd84828501610657565b91505092915050565b6106cf81610991565b82525050565b60006106e08261095f565b6106ea8185610975565b93506106fa818560208601610a0f565b80840191505092915050565b61070f816109d9565b82525050565b60006107208261096a565b61072a8185610980565b935061073a818560208601610a0f565b61074381610a47565b840191505092915050565b600061075b603283610980565b915061076682610a58565b604082019050919050565b600061077e602683610980565b915061078982610aa7565b604082019050919050565b60006107a1601d83610980565b91506107ac82610af6565b602082019050919050565b60006107c4602a83610980565b91506107cf82610b1f565b604082019050919050565b60006107e7602383610980565b91506107f282610b6e565b604082019050919050565b610806816109cf565b82525050565b600061081882846106d5565b915081905092915050565b600060208201905061083860008301846106c6565b92915050565b600060408201905061085360008301856106c6565b61086060208301846107fd565b9392505050565b600060208201905061087c6000830184610706565b92915050565b6000602082019050818103600083015261089c8184610715565b905092915050565b600060208201905081810360008301526108bd8161074e565b9050919050565b600060208201905081810360008301526108dd81610771565b9050919050565b600060208201905081810360008301526108fd81610794565b9050919050565b6000602082019050818103600083015261091d816107b7565b9050919050565b6000602082019050818103600083015261093d816107da565b9050919050565b600060208201905061095960008301846107fd565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061099c826109af565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006109e4826109eb565b9050919050565b60006109f6826109fd565b9050919050565b6000610a08826109af565b9050919050565b60005b83811015610a2d578082015181840152602081019050610a12565b83811115610a3c576000848401525b50505050565b600080fd5b6000601f19601f8301169050919050565b7f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260008201527f65666f72652072656c656173652074696d650000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560008201527f6173650000000000000000000000000000000000000000000000000000000000602082015250565b610bc6816109a3565b8114610bd157600080fd5b50565b610bdd816109cf565b8114610be857600080fd5b5056fea2646970667358221220e8e7fb30015a0e410e32480de03349c64a9577273bc054a1bf490627852c998264736f6c63430008070033000000000000000000000000aa2d8c9a8bd0f7945143bfd509be3ff23dd7891800000000000000000000000019f9ee046ed1e755c7e8892506c580d3fe3842a200000000000000000000000000000000000000000000000000000000626d4ef0
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063252bc8861461005c57806338af3eed1461007a57806386d1a69f14610098578063b91d4001146100a2578063fc0c546a146100c0575b600080fd5b6100646100de565b6040516100719190610944565b60405180910390f35b61008261017a565b60405161008f9190610823565b60405180910390f35b6100a06101a2565b005b6100aa6102ff565b6040516100b79190610944565b60405180910390f35b6100c8610327565b6040516100d59190610867565b60405180910390f35b6000806100e9610327565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016101219190610823565b60206040518083038186803b15801561013957600080fd5b505afa15801561014d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101719190610699565b90508091505090565b60007f00000000000000000000000019f9ee046ed1e755c7e8892506c580d3fe3842a2905090565b6101aa6102ff565b4210156101ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101e3906108a4565b60405180910390fd5b60006101f6610327565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161022e9190610823565b60206040518083038186803b15801561024657600080fd5b505afa15801561025a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027e9190610699565b9050600081116102c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ba90610924565b60405180910390fd5b6102fc6102ce61017a565b826102d7610327565b73ffffffffffffffffffffffffffffffffffffffff1661034f9092919063ffffffff16565b50565b60007f00000000000000000000000000000000000000000000000000000000626d4ef0905090565b60007f000000000000000000000000aa2d8c9a8bd0f7945143bfd509be3ff23dd78918905090565b6103d08363a9059cbb60e01b848460405160240161036e92919061083e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506103d5565b505050565b6000610437826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661049c9092919063ffffffff16565b90506000815111156104975780806020019051810190610457919061066c565b610496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048d90610904565b60405180910390fd5b5b505050565b60606104ab84846000856104b4565b90509392505050565b6060824710156104f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f0906108c4565b60405180910390fd5b610502856105c8565b610541576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610538906108e4565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161056a919061080c565b60006040518083038185875af1925050503d80600081146105a7576040519150601f19603f3d011682016040523d82523d6000602084013e6105ac565b606091505b50915091506105bc8282866105db565b92505050949350505050565b600080823b905060008111915050919050565b606083156105eb5782905061063b565b6000835111156105fe5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106329190610882565b60405180910390fd5b9392505050565b60008151905061065181610bbd565b92915050565b60008151905061066681610bd4565b92915050565b60006020828403121561068257610681610a42565b5b600061069084828501610642565b91505092915050565b6000602082840312156106af576106ae610a42565b5b60006106bd84828501610657565b91505092915050565b6106cf81610991565b82525050565b60006106e08261095f565b6106ea8185610975565b93506106fa818560208601610a0f565b80840191505092915050565b61070f816109d9565b82525050565b60006107208261096a565b61072a8185610980565b935061073a818560208601610a0f565b61074381610a47565b840191505092915050565b600061075b603283610980565b915061076682610a58565b604082019050919050565b600061077e602683610980565b915061078982610aa7565b604082019050919050565b60006107a1601d83610980565b91506107ac82610af6565b602082019050919050565b60006107c4602a83610980565b91506107cf82610b1f565b604082019050919050565b60006107e7602383610980565b91506107f282610b6e565b604082019050919050565b610806816109cf565b82525050565b600061081882846106d5565b915081905092915050565b600060208201905061083860008301846106c6565b92915050565b600060408201905061085360008301856106c6565b61086060208301846107fd565b9392505050565b600060208201905061087c6000830184610706565b92915050565b6000602082019050818103600083015261089c8184610715565b905092915050565b600060208201905081810360008301526108bd8161074e565b9050919050565b600060208201905081810360008301526108dd81610771565b9050919050565b600060208201905081810360008301526108fd81610794565b9050919050565b6000602082019050818103600083015261091d816107b7565b9050919050565b6000602082019050818103600083015261093d816107da565b9050919050565b600060208201905061095960008301846107fd565b92915050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061099c826109af565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006109e4826109eb565b9050919050565b60006109f6826109fd565b9050919050565b6000610a08826109af565b9050919050565b60005b83811015610a2d578082015181840152602081019050610a12565b83811115610a3c576000848401525b50505050565b600080fd5b6000601f19601f8301169050919050565b7f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260008201527f65666f72652072656c656173652074696d650000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560008201527f6173650000000000000000000000000000000000000000000000000000000000602082015250565b610bc6816109a3565b8114610bd157600080fd5b50565b610bdd816109cf565b8114610be857600080fd5b5056fea2646970667358221220e8e7fb30015a0e410e32480de03349c64a9577273bc054a1bf490627852c998264736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000aa2d8c9a8bd0f7945143bfd509be3ff23dd7891800000000000000000000000019f9ee046ed1e755c7e8892506c580d3fe3842a200000000000000000000000000000000000000000000000000000000626d4ef0
-----Decoded View---------------
Arg [0] : token_ (address): 0xAA2d8c9a8bd0F7945143bfD509bE3ff23dd78918
Arg [1] : beneficiary_ (address): 0x19F9ee046Ed1E755c7e8892506c580D3FE3842A2
Arg [2] : releaseTime_ (uint256): 1651330800
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000aa2d8c9a8bd0f7945143bfd509be3ff23dd78918
Arg [1] : 00000000000000000000000019f9ee046ed1e755c7e8892506c580d3fe3842a2
Arg [2] : 00000000000000000000000000000000000000000000000000000000626d4ef0
Deployed Bytecode Sourcemap
14959:1779:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16566:157;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15848:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16219:335;;;:::i;:::-;;16028:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15689:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16566:157;16622:7;16642:14;16659:7;:5;:7::i;:::-;:17;;;16685:4;16659:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16642:49;;16709:6;16702:13;;;16566:157;:::o;15848:99::-;15900:7;15927:12;15920:19;;15848:99;:::o;16219:335::-;16291:13;:11;:13::i;:::-;16272:15;:32;;16264:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;16372:14;16389:7;:5;:7::i;:::-;:17;;;16415:4;16389:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16372:49;;16449:1;16440:6;:10;16432:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;16503:43;16524:13;:11;:13::i;:::-;16539:6;16503:7;:5;:7::i;:::-;:20;;;;:43;;;;;:::i;:::-;16253:301;16219:335::o;16028:99::-;16080:7;16107:12;16100:19;;16028:99;:::o;15689:86::-;15735:6;15761;15754:13;;15689:86;:::o;11405:211::-;11522:86;11542:5;11572:23;;;11597:2;11601:5;11549:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11522:19;:86::i;:::-;11405:211;;;:::o;13978:716::-;14402:23;14428:69;14456:4;14428:69;;;;;;;;;;;;;;;;;14436:5;14428:27;;;;:69;;;;;:::i;:::-;14402:95;;14532:1;14512:10;:17;:21;14508:179;;;14609:10;14598:30;;;;;;;;;;;;:::i;:::-;14590:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14508:179;14048:646;13978:716;;:::o;3549:229::-;3686:12;3718:52;3740:6;3748:4;3754:1;3757:12;3718:21;:52::i;:::-;3711:59;;3549:229;;;;;:::o;4669:510::-;4839:12;4897:5;4872:21;:30;;4864:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;4964:18;4975:6;4964:10;:18::i;:::-;4956:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5030:12;5044:23;5071:6;:11;;5090:5;5097:4;5071:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5029:73;;;;5120:51;5137:7;5146:10;5158:12;5120:16;:51::i;:::-;5113:58;;;;4669:510;;;;;;:::o;743:387::-;803:4;1011:12;1078:7;1066:20;1058:28;;1121:1;1114:4;:8;1107:15;;;743:387;;;:::o;7355:712::-;7505:12;7534:7;7530:530;;;7565:10;7558:17;;;;7530:530;7699:1;7679:10;:17;:21;7675:374;;;7877:10;7871:17;7938:15;7925:10;7921:2;7917:19;7910:44;7675:374;8020:12;8013:20;;;;;;;;;;;:::i;:::-;;;;;;;;7355:712;;;;;;:::o;7:137:1:-;61:5;92:6;86:13;77:22;;108:30;132:5;108:30;:::i;:::-;7:137;;;;:::o;150:143::-;207:5;238:6;232:13;223:22;;254:33;281:5;254:33;:::i;:::-;150:143;;;;:::o;299:345::-;366:6;415:2;403:9;394:7;390:23;386:32;383:119;;;421:79;;:::i;:::-;383:119;541:1;566:61;619:7;610:6;599:9;595:22;566:61;:::i;:::-;556:71;;512:125;299:345;;;;:::o;650:351::-;720:6;769:2;757:9;748:7;744:23;740:32;737:119;;;775:79;;:::i;:::-;737:119;895:1;920:64;976:7;967:6;956:9;952:22;920:64;:::i;:::-;910:74;;866:128;650:351;;;;:::o;1007:118::-;1094:24;1112:5;1094:24;:::i;:::-;1089:3;1082:37;1007:118;;:::o;1131:373::-;1235:3;1263:38;1295:5;1263:38;:::i;:::-;1317:88;1398:6;1393:3;1317:88;:::i;:::-;1310:95;;1414:52;1459:6;1454:3;1447:4;1440:5;1436:16;1414:52;:::i;:::-;1491:6;1486:3;1482:16;1475:23;;1239:265;1131:373;;;;:::o;1510:159::-;1611:51;1656:5;1611:51;:::i;:::-;1606:3;1599:64;1510:159;;:::o;1675:364::-;1763:3;1791:39;1824:5;1791:39;:::i;:::-;1846:71;1910:6;1905:3;1846:71;:::i;:::-;1839:78;;1926:52;1971:6;1966:3;1959:4;1952:5;1948:16;1926:52;:::i;:::-;2003:29;2025:6;2003:29;:::i;:::-;1998:3;1994:39;1987:46;;1767:272;1675:364;;;;:::o;2045:366::-;2187:3;2208:67;2272:2;2267:3;2208:67;:::i;:::-;2201:74;;2284:93;2373:3;2284:93;:::i;:::-;2402:2;2397:3;2393:12;2386:19;;2045:366;;;:::o;2417:::-;2559:3;2580:67;2644:2;2639:3;2580:67;:::i;:::-;2573:74;;2656:93;2745:3;2656:93;:::i;:::-;2774:2;2769:3;2765:12;2758:19;;2417:366;;;:::o;2789:::-;2931:3;2952:67;3016:2;3011:3;2952:67;:::i;:::-;2945:74;;3028:93;3117:3;3028:93;:::i;:::-;3146:2;3141:3;3137:12;3130:19;;2789:366;;;:::o;3161:::-;3303:3;3324:67;3388:2;3383:3;3324:67;:::i;:::-;3317:74;;3400:93;3489:3;3400:93;:::i;:::-;3518:2;3513:3;3509:12;3502:19;;3161:366;;;:::o;3533:::-;3675:3;3696:67;3760:2;3755:3;3696:67;:::i;:::-;3689:74;;3772:93;3861:3;3772:93;:::i;:::-;3890:2;3885:3;3881:12;3874:19;;3533:366;;;:::o;3905:118::-;3992:24;4010:5;3992:24;:::i;:::-;3987:3;3980:37;3905:118;;:::o;4029:271::-;4159:3;4181:93;4270:3;4261:6;4181:93;:::i;:::-;4174:100;;4291:3;4284:10;;4029:271;;;;:::o;4306:222::-;4399:4;4437:2;4426:9;4422:18;4414:26;;4450:71;4518:1;4507:9;4503:17;4494:6;4450:71;:::i;:::-;4306:222;;;;:::o;4534:332::-;4655:4;4693:2;4682:9;4678:18;4670:26;;4706:71;4774:1;4763:9;4759:17;4750:6;4706:71;:::i;:::-;4787:72;4855:2;4844:9;4840:18;4831:6;4787:72;:::i;:::-;4534:332;;;;;:::o;4872:250::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:85;5112:1;5101:9;5097:17;5088:6;5030:85;:::i;:::-;4872:250;;;;:::o;5128:313::-;5241:4;5279:2;5268:9;5264:18;5256:26;;5328:9;5322:4;5318:20;5314:1;5303:9;5299:17;5292:47;5356:78;5429:4;5420:6;5356:78;:::i;:::-;5348:86;;5128:313;;;;:::o;5447:419::-;5613:4;5651:2;5640:9;5636:18;5628:26;;5700:9;5694:4;5690:20;5686:1;5675:9;5671:17;5664:47;5728:131;5854:4;5728:131;:::i;:::-;5720:139;;5447:419;;;:::o;5872:::-;6038:4;6076:2;6065:9;6061:18;6053:26;;6125:9;6119:4;6115:20;6111:1;6100:9;6096:17;6089:47;6153:131;6279:4;6153:131;:::i;:::-;6145:139;;5872:419;;;:::o;6297:::-;6463:4;6501:2;6490:9;6486:18;6478:26;;6550:9;6544:4;6540:20;6536:1;6525:9;6521:17;6514:47;6578:131;6704:4;6578:131;:::i;:::-;6570:139;;6297:419;;;:::o;6722:::-;6888:4;6926:2;6915:9;6911:18;6903:26;;6975:9;6969:4;6965:20;6961:1;6950:9;6946:17;6939:47;7003:131;7129:4;7003:131;:::i;:::-;6995:139;;6722:419;;;:::o;7147:::-;7313:4;7351:2;7340:9;7336:18;7328:26;;7400:9;7394:4;7390:20;7386:1;7375:9;7371:17;7364:47;7428:131;7554:4;7428:131;:::i;:::-;7420:139;;7147:419;;;:::o;7572:222::-;7665:4;7703:2;7692:9;7688:18;7680:26;;7716:71;7784:1;7773:9;7769:17;7760:6;7716:71;:::i;:::-;7572:222;;;;:::o;7881:98::-;7932:6;7966:5;7960:12;7950:22;;7881:98;;;:::o;7985:99::-;8037:6;8071:5;8065:12;8055:22;;7985:99;;;:::o;8090:147::-;8191:11;8228:3;8213:18;;8090:147;;;;:::o;8243:169::-;8327:11;8361:6;8356:3;8349:19;8401:4;8396:3;8392:14;8377:29;;8243:169;;;;:::o;8418:96::-;8455:7;8484:24;8502:5;8484:24;:::i;:::-;8473:35;;8418:96;;;:::o;8520:90::-;8554:7;8597:5;8590:13;8583:21;8572:32;;8520:90;;;:::o;8616:126::-;8653:7;8693:42;8686:5;8682:54;8671:65;;8616:126;;;:::o;8748:77::-;8785:7;8814:5;8803:16;;8748:77;;;:::o;8831:140::-;8895:9;8928:37;8959:5;8928:37;:::i;:::-;8915:50;;8831:140;;;:::o;8977:126::-;9027:9;9060:37;9091:5;9060:37;:::i;:::-;9047:50;;8977:126;;;:::o;9109:113::-;9159:9;9192:24;9210:5;9192:24;:::i;:::-;9179:37;;9109:113;;;:::o;9228:307::-;9296:1;9306:113;9320:6;9317:1;9314:13;9306:113;;;9405:1;9400:3;9396:11;9390:18;9386:1;9381:3;9377:11;9370:39;9342:2;9339:1;9335:10;9330:15;;9306:113;;;9437:6;9434:1;9431:13;9428:101;;;9517:1;9508:6;9503:3;9499:16;9492:27;9428:101;9277:258;9228:307;;;:::o;9664:117::-;9773:1;9770;9763:12;9787:102;9828:6;9879:2;9875:7;9870:2;9863:5;9859:14;9855:28;9845:38;;9787:102;;;:::o;9895:237::-;10035:34;10031:1;10023:6;10019:14;10012:58;10104:20;10099:2;10091:6;10087:15;10080:45;9895:237;:::o;10138:225::-;10278:34;10274:1;10266:6;10262:14;10255:58;10347:8;10342:2;10334:6;10330:15;10323:33;10138:225;:::o;10369:179::-;10509:31;10505:1;10497:6;10493:14;10486:55;10369:179;:::o;10554:229::-;10694:34;10690:1;10682:6;10678:14;10671:58;10763:12;10758:2;10750:6;10746:15;10739:37;10554:229;:::o;10789:222::-;10929:34;10925:1;10917:6;10913:14;10906:58;10998:5;10993:2;10985:6;10981:15;10974:30;10789:222;:::o;11017:116::-;11087:21;11102:5;11087:21;:::i;:::-;11080:5;11077:32;11067:60;;11123:1;11120;11113:12;11067:60;11017:116;:::o;11139:122::-;11212:24;11230:5;11212:24;:::i;:::-;11205:5;11202:35;11192:63;;11251:1;11248;11241:12;11192:63;11139:122;:::o
Swarm Source
ipfs://e8e7fb30015a0e410e32480de03349c64a9577273bc054a1bf490627852c9982
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.