Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 5 from a total of 5 transactions
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.6.6+commit.6c089d02
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-04-24
*/
pragma solidity ^0.6.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);
}
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
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) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
/**
* @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");
}
}
/**
* @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 ERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using SafeMath for uint256;
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));
}
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).add(value);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
_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.
// A Solidity high level call has three parts:
// 1. The target address is checked to verify it contains contract code
// 2. The call itself is made, and success asserted
// 3. The return value is decoded, which in turn checks the size of the returned data.
// solhint-disable-next-line max-line-length
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "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");
}
}
}
contract TokenTimelock {
using SafeERC20 for IERC20;
using SafeMath for uint256;
// ERC20 basic token contract being held
IERC20 private _token;
// beneficiary of tokens after they are released
address internal _beneficiary;
// timestamp when token release is enabled
uint256[] internal _releaseTimes;
// amount when token release is enabled
uint256[] internal _amounts;
//Release Status
mapping (uint => bool) public _releaseStates;
constructor (IERC20 token, address beneficiary, uint256[] memory releaseTimes, uint256[] memory amounts) public {
require(releaseTimes.length == amounts.length, "Length Checking");
_token = token;
for (uint index = 0; index < releaseTimes.length; index++) {
require(releaseTimes[index] > block.timestamp, "TokenTimelock: release time is before current time");
}
_beneficiary = beneficiary;
_releaseTimes = releaseTimes;
_amounts = amounts;
}
/**
* @return the token being held.
*/
function token() public view returns (IERC20) {
return _token;
}
/**
* @return the beneficiary of the tokens.
*/
function beneficiary() public view returns (address) {
return _beneficiary;
}
/**
* @return the time when the tokens are released.
*/
function releaseTime(uint index) public view returns (uint256) {
return _releaseTimes[index];
}
/**
* @return the amount when the tokens are released.
*/
function releaseAmount(uint index) public view returns (uint256) {
return _amounts[index];
}
/**
* @notice Transfers tokens held by timelock to beneficiary.
*/
function release() public {
uint256 amount;
for (uint index = 0; index < _releaseTimes.length; index++) {
if(block.timestamp >= _releaseTimes[index] ){
if(!_releaseStates[index]){
amount = amount.add(_amounts[index]);
_releaseStates[index] = true;
}
}
}
require(amount > 0 , "TokenTimelock: no tokens to release");
require(amount <= _token.balanceOf(address(this)), "TokenTimelock: no enough tokens to release");
_token.safeTransfer(_beneficiary, amount);
}
function finishRelease() public{
require(_releaseStates[_releaseTimes.length -1]);
_token.safeTransfer(_beneficiary, _token.balanceOf(address(this)));
}
}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":"releaseTimes","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_releaseStates","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finishRelease","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"releaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"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
608060405234801561001057600080fd5b50604051610a74380380610a748339818101604052608081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825186602082028301116401000000008211171561009057600080fd5b82525081516020918201928201910280838360005b838110156100bd5781810151838201526020016100a5565b50505050905001604052602001805160405193929190846401000000008211156100e657600080fd5b9083019060208201858111156100fb57600080fd5b825186602082028301116401000000008211171561011857600080fd5b82525081516020918201928201910280838360005b8381101561014557818101518382015260200161012d565b50505050905001604052505050805182511461019a576040805162461bcd60e51b815260206004820152600f60248201526e4c656e67746820436865636b696e6760881b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0386161781555b825181101561021857428382815181106101cc57fe5b6020026020010151116102105760405162461bcd60e51b8152600401808060200182810382526032815260200180610a426032913960400191505060405180910390fd5b6001016101b6565b50600180546001600160a01b0319166001600160a01b0385161790558151610247906002906020850190610265565b50805161025b906003906020840190610265565b50505050506102cd565b8280548282559060005260206000209081019282156102a0579160200282015b828111156102a0578251825591602001919060010190610285565b506102ac9291506102b0565b5090565b6102ca91905b808211156102ac57600081556001016102b6565b90565b610766806102dc6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806338af3eed1161005b57806338af3eed146100d857806360c959db146100fc57806386d1a69f1461012d578063fc0c546a146101355761007d565b806309c4bb2b146100825780632218d457146100b15780632278f36b146100bb575b600080fd5b61009f6004803603602081101561009857600080fd5b503561013d565b60408051918252519081900360200190f35b6100b961015e565b005b61009f600480360360208110156100d157600080fd5b503561021a565b6100e0610229565b604080516001600160a01b039092168252519081900360200190f35b6101196004803603602081101561011257600080fd5b5035610238565b604080519115158252519081900360200190f35b6100b961024d565b6100e06103f8565b60006002828154811061014c57fe5b90600052602060002001549050919050565b6002546000190160009081526004602052604090205460ff1661018057600080fd5b600154600054604080516370a0823160e01b81523060048201529051610218936001600160a01b039081169316916370a08231916024808301926020929190829003018186803b1580156101d357600080fd5b505afa1580156101e7573d6000803e3d6000fd5b505050506040513d60208110156101fd57600080fd5b50516000546001600160a01b0316919063ffffffff61040716565b565b60006003828154811061014c57fe5b6001546001600160a01b031690565b60046020526000908152604090205460ff1681565b6000805b6002548110156102dd576002818154811061026857fe5b906000526020600020015442106102d55760008181526004602052604090205460ff166102d5576102b96003828154811061029f57fe5b90600052602060002001548361045e90919063ffffffff16565b6000828152600460205260409020805460ff1916600117905591505b600101610251565b506000811161031d5760405162461bcd60e51b815260040180806020018281038252602381526020018061070e6023913960400191505060405180910390fd5b600054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561036857600080fd5b505afa15801561037c573d6000803e3d6000fd5b505050506040513d602081101561039257600080fd5b50518111156103d25760405162461bcd60e51b815260040180806020018281038252602a8152602001806106ba602a913960400191505060405180910390fd5b6001546000546103f5916001600160a01b0391821691168363ffffffff61040716565b50565b6000546001600160a01b031690565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526104599084906104bf565b505050565b6000828201838110156104b8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6104d1826001600160a01b031661067d565b610522576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106105605780518252601f199092019160209182019101610541565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105c2576040519150601f19603f3d011682016040523d82523d6000602084013e6105c7565b606091505b50915091508161061e576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156106775780806020019051602081101561063a57600080fd5b50516106775760405162461bcd60e51b815260040180806020018281038252602a8152602001806106e4602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906106b157508115155b94935050505056fe546f6b656e54696d656c6f636b3a206e6f20656e6f75676820746f6b656e7320746f2072656c656173655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c65617365a264697066735822122035e65feccad8c16f6536c7872a8328a02a2f3e7fe2b7ea62c41de3845a0fe4f364736f6c63430006060033546f6b656e54696d656c6f636b3a2072656c656173652074696d65206973206265666f72652063757272656e742074696d650000000000000000000000000bb217e40f8a5cb79adf04e1aab60e5abd0dfc1e000000000000000000000000080bb7652ec6d1d8dc8059949353036751fb30fa000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000005ea2d268000000000000000000000000000000000000000000000000000000005ea2d394000000000000000000000000000000000000000000000000000000005ea2d4c0000000000000000000000000000000000000000000000000000000005ea2d5ec000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000908a903600000000000000000000000000000000000000000000000000000000908a9040000000000000000000000000000000000000000000000000000000009502f900000000000000000000000000000000000000000000000000000000009502f900
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806338af3eed1161005b57806338af3eed146100d857806360c959db146100fc57806386d1a69f1461012d578063fc0c546a146101355761007d565b806309c4bb2b146100825780632218d457146100b15780632278f36b146100bb575b600080fd5b61009f6004803603602081101561009857600080fd5b503561013d565b60408051918252519081900360200190f35b6100b961015e565b005b61009f600480360360208110156100d157600080fd5b503561021a565b6100e0610229565b604080516001600160a01b039092168252519081900360200190f35b6101196004803603602081101561011257600080fd5b5035610238565b604080519115158252519081900360200190f35b6100b961024d565b6100e06103f8565b60006002828154811061014c57fe5b90600052602060002001549050919050565b6002546000190160009081526004602052604090205460ff1661018057600080fd5b600154600054604080516370a0823160e01b81523060048201529051610218936001600160a01b039081169316916370a08231916024808301926020929190829003018186803b1580156101d357600080fd5b505afa1580156101e7573d6000803e3d6000fd5b505050506040513d60208110156101fd57600080fd5b50516000546001600160a01b0316919063ffffffff61040716565b565b60006003828154811061014c57fe5b6001546001600160a01b031690565b60046020526000908152604090205460ff1681565b6000805b6002548110156102dd576002818154811061026857fe5b906000526020600020015442106102d55760008181526004602052604090205460ff166102d5576102b96003828154811061029f57fe5b90600052602060002001548361045e90919063ffffffff16565b6000828152600460205260409020805460ff1916600117905591505b600101610251565b506000811161031d5760405162461bcd60e51b815260040180806020018281038252602381526020018061070e6023913960400191505060405180910390fd5b600054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561036857600080fd5b505afa15801561037c573d6000803e3d6000fd5b505050506040513d602081101561039257600080fd5b50518111156103d25760405162461bcd60e51b815260040180806020018281038252602a8152602001806106ba602a913960400191505060405180910390fd5b6001546000546103f5916001600160a01b0391821691168363ffffffff61040716565b50565b6000546001600160a01b031690565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526104599084906104bf565b505050565b6000828201838110156104b8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6104d1826001600160a01b031661067d565b610522576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106105605780518252601f199092019160209182019101610541565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146105c2576040519150601f19603f3d011682016040523d82523d6000602084013e6105c7565b606091505b50915091508161061e576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156106775780806020019051602081101561063a57600080fd5b50516106775760405162461bcd60e51b815260040180806020018281038252602a8152602001806106e4602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906106b157508115155b94935050505056fe546f6b656e54696d656c6f636b3a206e6f20656e6f75676820746f6b656e7320746f2072656c656173655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c65617365a264697066735822122035e65feccad8c16f6536c7872a8328a02a2f3e7fe2b7ea62c41de3845a0fe4f364736f6c63430006060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000bb217e40f8a5cb79adf04e1aab60e5abd0dfc1e000000000000000000000000080bb7652ec6d1d8dc8059949353036751fb30fa000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000005ea2d268000000000000000000000000000000000000000000000000000000005ea2d394000000000000000000000000000000000000000000000000000000005ea2d4c0000000000000000000000000000000000000000000000000000000005ea2d5ec000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000908a903600000000000000000000000000000000000000000000000000000000908a9040000000000000000000000000000000000000000000000000000000009502f900000000000000000000000000000000000000000000000000000000009502f900
-----Decoded View---------------
Arg [0] : token (address): 0x0bb217E40F8a5Cb79Adf04E1aAb60E5abd0dfC1e
Arg [1] : beneficiary (address): 0x080bB7652Ec6d1d8DC8059949353036751Fb30fA
Arg [2] : releaseTimes (uint256[]): 1587729000,1587729300,1587729600,1587729900
Arg [3] : amounts (uint256[]): 2424999990,2425000000,2500000000,2500000000
-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000000bb217e40f8a5cb79adf04e1aab60e5abd0dfc1e
Arg [1] : 000000000000000000000000080bb7652ec6d1d8dc8059949353036751fb30fa
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 000000000000000000000000000000000000000000000000000000005ea2d268
Arg [6] : 000000000000000000000000000000000000000000000000000000005ea2d394
Arg [7] : 000000000000000000000000000000000000000000000000000000005ea2d4c0
Arg [8] : 000000000000000000000000000000000000000000000000000000005ea2d5ec
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [10] : 00000000000000000000000000000000000000000000000000000000908a9036
Arg [11] : 00000000000000000000000000000000000000000000000000000000908a9040
Arg [12] : 000000000000000000000000000000000000000000000000000000009502f900
Arg [13] : 000000000000000000000000000000000000000000000000000000009502f900
Deployed Bytecode Sourcemap
13762:2635:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13762:2635:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;15194:109:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15194:109:0;;:::i;:::-;;;;;;;;;;;;;;;;16218:176;;;:::i;:::-;;15386:106;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15386:106:0;;:::i;15022:91::-;;;:::i;:::-;;;;-1:-1:-1;;;;;15022:91:0;;;;;;;;;;;;;;14218:44;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14218:44:0;;:::i;:::-;;;;;;;;;;;;;;;;;;15584:622;;;:::i;14871:78::-;;;:::i;15194:109::-;15248:7;15275:13;15289:5;15275:20;;;;;;;;;;;;;;;;15268:27;;15194:109;;;:::o;16218:176::-;16284:13;:20;-1:-1:-1;;16284:23:0;16269:39;;;;:14;:39;;;;;;;;16261:48;;12:1:-1;9;2:12;16261:48:0;16340:12;;;16354:6;:31;;;-1:-1:-1;;;16354:31:0;;16379:4;16354:31;;;;;;16320:66;;-1:-1:-1;;;;;16340:12:0;;;;16354:6;;:16;;:31;;;;;;;;;;;;;;:6;:31;;;2:2:-1;;;;27:1;24;17:12;2:2;16354:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16354:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16354:31:0;16320:6;;-1:-1:-1;;;;;16320:6:0;;:66;;:19;:66;:::i;:::-;16218:176::o;15386:106::-;15442:7;15469:8;15478:5;15469:15;;;;;;;15022:91;15093:12;;-1:-1:-1;;;;;15093:12:0;15022:91;:::o;14218:44::-;;;;;;;;;;;;;;;:::o;15584:622::-;15621:14;;15646:312;15675:13;:20;15667:28;;15646:312;;;15743:13;15757:5;15743:20;;;;;;;;;;;;;;;;15724:15;:39;15721:226;;15788:21;;;;:14;:21;;;;;;;;15784:148;;15838:27;15849:8;15858:5;15849:15;;;;;;;;;;;;;;;;15838:6;:10;;:27;;;;:::i;:::-;15884:21;;;;:14;:21;;;;;:28;;-1:-1:-1;;15884:28:0;15908:4;15884:28;;;15829:36;-1:-1:-1;15784:148:0;15697:7;;15646:312;;;;15995:1;15986:6;:10;15978:59;;;;-1:-1:-1;;;15978:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16066:6;;:31;;;-1:-1:-1;;;16066:31:0;;16091:4;16066:31;;;;;;-1:-1:-1;;;;;16066:6:0;;;;:16;;:31;;;;;;;;;;;;;;;:6;:31;;;2:2:-1;;;;27:1;24;17:12;2:2;16066:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16066:31:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16066:31:0;16056:41;;;16048:96;;;;-1:-1:-1;;;16048:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16177:12;;;16157:6;:41;;-1:-1:-1;;;;;16157:6:0;;;;16177:12;16191:6;16157:41;:19;:41;:::i;:::-;15584:622;:::o;14871:78::-;14909:6;14935;-1:-1:-1;;;;;14935:6:0;14871:78;:::o;10596:177::-;10706:58;;;-1:-1:-1;;;;;10706:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;10706:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;10679:86:0;;10699:5;;10679:19;:86::i;:::-;10596:177;;;:::o;3001:181::-;3059:7;3091:5;;;3115:6;;;;3107:46;;;;;-1:-1:-1;;;3107:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3173:1;3001:181;-1:-1:-1;;;3001:181:0:o;12640:1115::-;13245:27;13253:5;-1:-1:-1;;;;;13245:25:0;;:27::i;:::-;13237:71;;;;;-1:-1:-1;;;13237:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13382:12;13396:23;13431:5;-1:-1:-1;;;;;13423:19:0;13443:4;13423:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13423:25:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;13381:67:0;;;;13467:7;13459:52;;;;;-1:-1:-1;;;13459:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13528:17;;:21;13524:224;;13670:10;13659:30;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13659:30:0;13651:85;;;;-1:-1:-1;;;13651:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12640:1115;;;;:::o;8080:619::-;8140:4;8608:20;;8451:66;8648:23;;;;;;:42;;-1:-1:-1;8675:15:0;;;8648:42;8640:51;8080:619;-1:-1:-1;;;;8080:619:0:o
Swarm Source
ipfs://35e65feccad8c16f6536c7872a8328a02a2f3e7fe2b7ea62c41de3845a0fe4f3
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.