More Info
Private Name Tags
ContractCreator
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15381724 | 800 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
PicniqVesting
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
Yes with 999999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.16; import "./libraries/Address.sol"; import "@openzeppelin/contracts/utils/Context.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; contract PicniqVesting is Context { using Address for address; IERC20 public immutable SNACK; uint256 public totalVested; mapping (address => UserVest) private _vesting; struct UserVest { uint8 length; uint64 startTime; uint64 endTime; uint256 amount; uint256 withdrawn; } constructor(IERC20 token_) { SNACK = token_; } function vestedOfDetails(address account) external view returns (UserVest memory) { return _vesting[account]; } function vestedOf(address account) public view returns (uint256) { UserVest memory userVest = _vesting[account]; if (userVest.endTime <= block.timestamp) { return userVest.amount - userVest.withdrawn; } else { uint256 timeElapsed = block.timestamp - userVest.startTime; uint256 length = userVest.endTime - userVest.startTime; uint256 percent = timeElapsed * 1e18 / length; return (userVest.amount * percent / 1e18) - userVest.withdrawn; } } function unvest() external { address sender = _msgSender(); uint256 vested = vestedOf(sender); require(vested > 0, "No tokens to unvest"); _vesting[sender].withdrawn += vested; totalVested -= vested; SNACK.transfer(sender, vested); emit TokensClaimed(sender, vested); } function vestTokens(address account, uint256 amount, uint256 length) public { require(length == 6 || length == 12, "Must choose length of 6 or 12 months"); UserVest storage userVest = _vesting[account]; require(userVest.amount == 0, "You are already vesting tokens"); SNACK.transferFrom(msg.sender, address(this), amount); totalVested += amount; userVest.amount = amount; userVest.startTime = uint64(block.timestamp); userVest.endTime = uint64(block.timestamp + (2628000 * length)); userVest.length = uint8(length); userVest.withdrawn = 0; emit TokensVested(account, amount, length); } event TokensVested(address indexed account, uint256 amount, uint256 months); event TokensClaimed(address indexed account, uint256 amount); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Address.sol) pragma solidity ^0.8.1; /** * @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 * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 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); } } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) 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) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount ) external returns (bool); }
{ "optimizer": { "enabled": true, "runs": 999999 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"months","type":"uint256"}],"name":"TokensVested","type":"event"},{"inputs":[],"name":"SNACK","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalVested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"vestTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"vestedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"vestedOfDetails","outputs":[{"components":[{"internalType":"uint8","name":"length","type":"uint8"},{"internalType":"uint64","name":"startTime","type":"uint64"},{"internalType":"uint64","name":"endTime","type":"uint64"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"withdrawn","type":"uint256"}],"internalType":"struct PicniqVesting.UserVest","name":"","type":"tuple"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b50604051610ab7380380610ab783398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610a1e610099600039600081816101d801528181610475015261069f0152610a1e6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063985d544911610050578063985d5449146101b6578063d1ef4e91146101c0578063f1d42b36146101d357600080fd5b80630ab6cccb14610077578063199cbc541461018c57806394477104146101a3575b600080fd5b61012e61008536600461087d565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525073ffffffffffffffffffffffffffffffffffffffff16600090815260016020818152604092839020835160a081018552815460ff8116825267ffffffffffffffff61010082048116948301949094526901000000000000000000900490921693820193909352908201546060820152600290910154608082015290565b6040516101839190600060a08201905060ff8351168252602083015167ffffffffffffffff80821660208501528060408601511660408501525050606083015160608301526080830151608083015292915050565b60405180910390f35b61019560005481565b604051908152602001610183565b6101956101b136600461087d565b61021f565b6101be610357565b005b6101be6101ce366004610898565b610537565b6101fa7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610183565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160208181526040808420815160a081018352815460ff8116825267ffffffffffffffff61010082048116958301959095526901000000000000000000900490931691830182905292830154606083015260029092015460808201529042106102ba57806080015181606001516102b391906108fa565b9392505050565b6000816020015167ffffffffffffffff16426102d691906108fa565b90506000826020015183604001516102ee9190610913565b67ffffffffffffffff16905060008161030f84670de0b6b3a764000061093b565b6103199190610978565b90508360800151670de0b6b3a7640000828660600151610339919061093b565b6103439190610978565b61034d91906108fa565b9695505050505050565b3360006103638261021f565b9050600081116103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4e6f20746f6b656e7320746f20756e766573740000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260408120600201805483929061040c9084906109b3565b925050819055508060008082825461042491906108fa565b90915550506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156104be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e291906109c6565b508173ffffffffffffffffffffffffffffffffffffffff167f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4308260405161052b91815260200190565b60405180910390a25050565b8060061480610546575080600c145b6105d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4d7573742063686f6f7365206c656e677468206f662036206f72203132206d6f60448201527f6e7468730000000000000000000000000000000000000000000000000000000060648201526084016103cb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602081905260409091209081015415610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f596f752061726520616c72656164792076657374696e6720746f6b656e73000060448201526064016103cb565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303816000875af11580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072191906109c6565b508260008082825461073391906109b3565b90915550506001810183905580547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff166101004267ffffffffffffffff160217815561078282622819a061093b565b61078c90426109b3565b81547fffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff0016690100000000000000000067ffffffffffffffff92909216919091027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161760ff831617815560006002820155604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff8616917fe37037c1b3b5a7099de9b4ff0b386af195061ad990fcf5c0c5f84b95d328f766910160405180910390a250505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087857600080fd5b919050565b60006020828403121561088f57600080fd5b6102b382610854565b6000806000606084860312156108ad57600080fd5b6108b684610854565b95602085013595506040909401359392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561090d5761090d6108cb565b92915050565b67ffffffffffffffff828116828216039080821115610934576109346108cb565b5092915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610973576109736108cb565b500290565b6000826109ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082018082111561090d5761090d6108cb565b6000602082840312156109d857600080fd5b815180151581146102b357600080fdfea2646970667358221220a7530356502ef47410a1ba3241292c5a50f285b7562311bd7aff238aee872bde64736f6c63430008100033000000000000000000000000282a2d1f3604df62a25168fd1495d822fefc3fde
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100725760003560e01c8063985d544911610050578063985d5449146101b6578063d1ef4e91146101c0578063f1d42b36146101d357600080fd5b80630ab6cccb14610077578063199cbc541461018c57806394477104146101a3575b600080fd5b61012e61008536600461087d565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525073ffffffffffffffffffffffffffffffffffffffff16600090815260016020818152604092839020835160a081018552815460ff8116825267ffffffffffffffff61010082048116948301949094526901000000000000000000900490921693820193909352908201546060820152600290910154608082015290565b6040516101839190600060a08201905060ff8351168252602083015167ffffffffffffffff80821660208501528060408601511660408501525050606083015160608301526080830151608083015292915050565b60405180910390f35b61019560005481565b604051908152602001610183565b6101956101b136600461087d565b61021f565b6101be610357565b005b6101be6101ce366004610898565b610537565b6101fa7f000000000000000000000000282a2d1f3604df62a25168fd1495d822fefc3fde81565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610183565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160208181526040808420815160a081018352815460ff8116825267ffffffffffffffff61010082048116958301959095526901000000000000000000900490931691830182905292830154606083015260029092015460808201529042106102ba57806080015181606001516102b391906108fa565b9392505050565b6000816020015167ffffffffffffffff16426102d691906108fa565b90506000826020015183604001516102ee9190610913565b67ffffffffffffffff16905060008161030f84670de0b6b3a764000061093b565b6103199190610978565b90508360800151670de0b6b3a7640000828660600151610339919061093b565b6103439190610978565b61034d91906108fa565b9695505050505050565b3360006103638261021f565b9050600081116103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4e6f20746f6b656e7320746f20756e766573740000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260408120600201805483929061040c9084906109b3565b925050819055508060008082825461042491906108fa565b90915550506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f000000000000000000000000282a2d1f3604df62a25168fd1495d822fefc3fde169063a9059cbb906044016020604051808303816000875af11580156104be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e291906109c6565b508173ffffffffffffffffffffffffffffffffffffffff167f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4308260405161052b91815260200190565b60405180910390a25050565b8060061480610546575080600c145b6105d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4d7573742063686f6f7365206c656e677468206f662036206f72203132206d6f60448201527f6e7468730000000000000000000000000000000000000000000000000000000060648201526084016103cb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602081905260409091209081015415610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f596f752061726520616c72656164792076657374696e6720746f6b656e73000060448201526064016103cb565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000282a2d1f3604df62a25168fd1495d822fefc3fde73ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303816000875af11580156106fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072191906109c6565b508260008082825461073391906109b3565b90915550506001810183905580547fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ff166101004267ffffffffffffffff160217815561078282622819a061093b565b61078c90426109b3565b81547fffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff0016690100000000000000000067ffffffffffffffff92909216919091027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00161760ff831617815560006002820155604080518481526020810184905273ffffffffffffffffffffffffffffffffffffffff8616917fe37037c1b3b5a7099de9b4ff0b386af195061ad990fcf5c0c5f84b95d328f766910160405180910390a250505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087857600080fd5b919050565b60006020828403121561088f57600080fd5b6102b382610854565b6000806000606084860312156108ad57600080fd5b6108b684610854565b95602085013595506040909401359392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561090d5761090d6108cb565b92915050565b67ffffffffffffffff828116828216039080821115610934576109346108cb565b5092915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610973576109736108cb565b500290565b6000826109ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082018082111561090d5761090d6108cb565b6000602082840312156109d857600080fd5b815180151581146102b357600080fdfea2646970667358221220a7530356502ef47410a1ba3241292c5a50f285b7562311bd7aff238aee872bde64736f6c63430008100033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000282a2d1f3604df62a25168fd1495d822fefc3fde
-----Decoded View---------------
Arg [0] : token_ (address): 0x282A2d1f3604dF62A25168Fd1495D822Fefc3fDE
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000282a2d1f3604df62a25168fd1495d822fefc3fde
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.