More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 50 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Tokens | 10669116 | 23 mins ago | IN | 0 S | 0.00462904 | ||||
Claim Tokens | 10665869 | 42 mins ago | IN | 0 S | 0.00478175 | ||||
Claim Tokens | 10649083 | 2 hrs ago | IN | 0 S | 0.00504366 | ||||
Claim Tokens | 10557118 | 11 hrs ago | IN | 0 S | 0.0014819 | ||||
Claim Tokens | 10508321 | 16 hrs ago | IN | 0 S | 0.00478175 | ||||
Claim Tokens | 10493226 | 18 hrs ago | IN | 0 S | 0.00502175 | ||||
Claim Tokens | 10490525 | 18 hrs ago | IN | 0 S | 0.00384125 | ||||
Claim Tokens | 10484668 | 19 hrs ago | IN | 0 S | 0.00591023 | ||||
Claim Tokens | 10481544 | 19 hrs ago | IN | 0 S | 0.00148163 | ||||
Claim Tokens | 10480452 | 19 hrs ago | IN | 0 S | 0.00478175 | ||||
Claim Tokens | 10479351 | 19 hrs ago | IN | 0 S | 0.00384125 | ||||
Claim Tokens | 10479282 | 19 hrs ago | IN | 0 S | 0.00502175 | ||||
Claim Tokens | 10479229 | 19 hrs ago | IN | 0 S | 0.00502175 | ||||
Claim Tokens | 10479110 | 19 hrs ago | IN | 0 S | 0.00502175 | ||||
Claim Tokens | 10478862 | 20 hrs ago | IN | 0 S | 0.00502175 | ||||
Claim Tokens | 10478853 | 20 hrs ago | IN | 0 S | 0.00384125 | ||||
Claim Tokens | 10478750 | 20 hrs ago | IN | 0 S | 0.00384125 | ||||
Claim Tokens | 10478625 | 20 hrs ago | IN | 0 S | 0.00384125 | ||||
Claim Tokens | 10478581 | 20 hrs ago | IN | 0 S | 0.00502175 | ||||
Claim Tokens | 10478485 | 20 hrs ago | IN | 0 S | 0.00384125 | ||||
Claim Tokens | 10478268 | 20 hrs ago | IN | 0 S | 0.00567172 | ||||
Claim Tokens | 10477874 | 20 hrs ago | IN | 0 S | 0.00502175 | ||||
Claim Tokens | 10477852 | 20 hrs ago | IN | 0 S | 0.00478175 | ||||
Claim Tokens | 10477621 | 20 hrs ago | IN | 0 S | 0.00502175 | ||||
Claim Tokens | 10477349 | 20 hrs ago | IN | 0 S | 0.00502175 |
Loading...
Loading
Contract Name:
TokenClaimWithVesting
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; /** * @title TokenClaimWithVesting * @dev A contract that allows recipients to claim tokens on a monthly basis for 3 months */ contract TokenClaimWithVesting is Ownable { // The token being vested IERC20 public token; uint256 public claim1Time; uint256 public claim2Time; uint256 public claim3Time; uint256 public deadline; // Mapping of recipient address to their vesting details mapping(address => uint256) public allocation; mapping(address => uint256) public claimedAmount; // Events event RecipientAdded(address indexed recipient, uint256 totalAllocation); event TokensClaimed(address indexed recipient, uint256 amount); /** * @dev Constructor that sets the token address * @param _token Address of the ERC20 token contract */ constructor(address _token, uint256 _deadline) Ownable(msg.sender) { require(_token != address(0), "Token address cannot be zero"); token = IERC20(_token); deadline = _deadline; claim1Time = block.timestamp; claim2Time = claim1Time + 30 days; claim3Time = claim1Time + 60 days; } /** * @dev Add a recipient to the vesting schedule * @param _recipient Address of the recipient * @param _totalAllocation Total amount of tokens allocated to the recipient */ function addRecipient(address[] calldata _recipient, uint256[] calldata _totalAllocation) external onlyOwner { require(_recipient.length == _totalAllocation.length, "Recipient and allocation length mismatch"); for (uint256 i = 0; i < _recipient.length; i++) { require(_recipient[i] != address(0), "Recipient address cannot be zero"); require(_totalAllocation[i] > 0, "Allocation must be greater than 0"); allocation[_recipient[i]] = _totalAllocation[i]; emit RecipientAdded(_recipient[i], _totalAllocation[i]); } } /** * @dev Allows a recipient to claim their tokens for available periods */ function claimTokens() external { require(block.timestamp < deadline, "Claim period has ended"); uint256 totalAllocation = allocation[msg.sender]; require(totalAllocation > 0, "Not a recipient"); require(claimedAmount[msg.sender] < totalAllocation, "Tokens claimed"); uint256 amountToClaim; if (block.timestamp < claim2Time) { amountToClaim = totalAllocation / 3; } else if (block.timestamp < claim3Time) { amountToClaim = totalAllocation / 3 * 2; } else { amountToClaim = totalAllocation; } uint256 adjustedAmountToClaim = amountToClaim - claimedAmount[msg.sender]; require(adjustedAmountToClaim > 0, "No tokens to claim"); claimedAmount[msg.sender] += adjustedAmountToClaim; // Transfer tokens require(token.transfer(msg.sender, adjustedAmountToClaim), "Token transfer failed"); emit TokensClaimed(msg.sender, adjustedAmountToClaim); } /** * @dev Returns the claimable amount for a recipient * @param _recipient Address of the recipient * @return The amount of tokens that can be claimed */ function getClaimableAmount(address _recipient) external view returns (uint256) { uint256 totalAllocation = allocation[_recipient]; require(totalAllocation > 0, "Not a recipient"); uint256 amountToClaim; if (block.timestamp < claim2Time) { amountToClaim = totalAllocation / 3; } else if (block.timestamp < claim3Time) { amountToClaim = totalAllocation / 3 * 2; } else { amountToClaim = totalAllocation; } return amountToClaim - claimedAmount[_recipient]; } /** * @dev Allows the owner to withdraw any tokens accidentally sent to the contract * @param _token Address of the token to withdraw */ function withdrawToken(address _token) external onlyOwner { IERC20 tokenToWithdraw = IERC20(_token); uint256 balance = tokenToWithdraw.balanceOf(address(this)); require(balance > 0, "No tokens to withdraw"); require(tokenToWithdraw.transfer(owner(), balance), "Token transfer failed"); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @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 value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` 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 value) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
{ "remappings": [ "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "v2-core/=lib/v2-core/contracts/", "v2-periphery/=lib/v2-periphery/contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "shanghai", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalAllocation","type":"uint256"}],"name":"RecipientAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"inputs":[{"internalType":"address[]","name":"_recipient","type":"address[]"},{"internalType":"uint256[]","name":"_totalAllocation","type":"uint256[]"}],"name":"addRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allocation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim1Time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim2Time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim3Time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"claimedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadline","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"getClaimableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561000f575f80fd5b50604051610dac380380610dac83398101604081905261002e91610154565b338061005457604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61005d81610105565b506001600160a01b0382166100b45760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e20616464726573732063616e6e6f74206265207a65726f00000000604482015260640161004b565b600180546001600160a01b0319166001600160a01b03841617905560058190554260028190556100e79062278d0061018b565b6003556002546100fa90624f1a0061018b565b600455506101b09050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8060408385031215610165575f80fd5b82516001600160a01b038116811461017b575f80fd5b6020939093015192949293505050565b808201808211156101aa57634e487b7160e01b5f52601160045260245ffd5b92915050565b610bef806101bd5f395ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c80638da5cb5b11610088578063d7fff34d11610063578063d7fff34d146101b1578063e12f3a61146101ba578063f2fde38b146101cd578063fc0c546a146101e0575f80fd5b80638da5cb5b14610165578063b81b863014610189578063ccc79dcf146101a8575f80fd5b806348c54b9d116100c357806348c54b9d14610139578063715018a61461014157806382ec40d3146101495780638947606914610152575f80fd5b806304e86903146100e957806329dcb0cf1461011b57806342cbc08814610124575b5f80fd5b6101086100f7366004610a05565b60076020525f908152604090205481565b6040519081526020015b60405180910390f35b61010860055481565b610137610132366004610a7a565b6101f3565b005b61013761044f565b6101376106e7565b61010860035481565b610137610160366004610a05565b6106fa565b5f546001600160a01b03165b6040516001600160a01b039091168152602001610112565b610108610197366004610a05565b60066020525f908152604090205481565b61010860025481565b61010860045481565b6101086101c8366004610a05565b61088c565b6101376101db366004610a05565b61094d565b600154610171906001600160a01b031681565b6101fb61098a565b8281146102605760405162461bcd60e51b815260206004820152602860248201527f526563697069656e7420616e6420616c6c6f636174696f6e206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084015b60405180910390fd5b5f5b83811015610448575f85858381811061027d5761027d610ae1565b90506020020160208101906102929190610a05565b6001600160a01b0316036102e85760405162461bcd60e51b815260206004820181905260248201527f526563697069656e7420616464726573732063616e6e6f74206265207a65726f6044820152606401610257565b5f8383838181106102fb576102fb610ae1565b90506020020135116103595760405162461bcd60e51b815260206004820152602160248201527f416c6c6f636174696f6e206d7573742062652067726561746572207468616e206044820152600360fc1b6064820152608401610257565b82828281811061036b5761036b610ae1565b9050602002013560065f87878581811061038757610387610ae1565b905060200201602081019061039c9190610a05565b6001600160a01b0316815260208101919091526040015f20558484828181106103c7576103c7610ae1565b90506020020160208101906103dc9190610a05565b6001600160a01b03167f79e1204b22e0669817ad586b72c3139f6c32afa18749b53228050f4c7f69646784848481811061041857610418610ae1565b9050602002013560405161042e91815260200190565b60405180910390a28061044081610b09565b915050610262565b5050505050565b60055442106104995760405162461bcd60e51b815260206004820152601660248201527510db185a5b481c195c9a5bd9081a185cc8195b99195960521b6044820152606401610257565b335f90815260066020526040902054806104e75760405162461bcd60e51b815260206004820152600f60248201526e139bdd0818481c9958da5c1a595b9d608a1b6044820152606401610257565b335f9081526007602052604090205481116105355760405162461bcd60e51b815260206004820152600e60248201526d151bdad95b9cc818db185a5b595960921b6044820152606401610257565b5f6003544210156105525761054b600383610b21565b9050610575565b60045442101561057257610567600383610b21565b61054b906002610b40565b50805b335f9081526007602052604081205461058e9083610b5d565b90505f81116105d45760405162461bcd60e51b81526020600482015260126024820152714e6f20746f6b656e7320746f20636c61696d60701b6044820152606401610257565b335f90815260076020526040812080548392906105f2908490610b70565b909155505060015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015610645573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106699190610b83565b6106ad5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610257565b60405181815233907f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4309060200160405180910390a2505050565b6106ef61098a565b6106f85f6109b6565b565b61070261098a565b6040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610748573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076c9190610ba2565b90505f81116107b55760405162461bcd60e51b81526020600482015260156024820152744e6f20746f6b656e7320746f20776974686472617760581b6044820152606401610257565b816001600160a01b031663a9059cbb6107d55f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af115801561081f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108439190610b83565b6108875760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610257565b505050565b6001600160a01b0381165f90815260066020526040812054806108e35760405162461bcd60e51b815260206004820152600f60248201526e139bdd0818481c9958da5c1a595b9d608a1b6044820152606401610257565b5f600354421015610900576108f9600383610b21565b9050610923565b60045442101561092057610915600383610b21565b6108f9906002610b40565b50805b6001600160a01b0384165f908152600760205260409020546109459082610b5d565b949350505050565b61095561098a565b6001600160a01b03811661097e57604051631e4fbdf760e01b81525f6004820152602401610257565b610987816109b6565b50565b5f546001600160a01b031633146106f85760405163118cdaa760e01b8152336004820152602401610257565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610a15575f80fd5b81356001600160a01b0381168114610a2b575f80fd5b9392505050565b5f8083601f840112610a42575f80fd5b50813567ffffffffffffffff811115610a59575f80fd5b6020830191508360208260051b8501011115610a73575f80fd5b9250929050565b5f805f8060408587031215610a8d575f80fd5b843567ffffffffffffffff80821115610aa4575f80fd5b610ab088838901610a32565b90965094506020870135915080821115610ac8575f80fd5b50610ad587828801610a32565b95989497509550505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201610b1a57610b1a610af5565b5060010190565b5f82610b3b57634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610b5757610b57610af5565b92915050565b81810381811115610b5757610b57610af5565b80820180821115610b5757610b57610af5565b5f60208284031215610b93575f80fd5b81518015158114610a2b575f80fd5b5f60208284031215610bb2575f80fd5b505191905056fea2646970667358221220ac639c2f9331fcf0005065869daab6a3da1b7f5ffbebe8ada9531f585adda54c64736f6c6343000814003300000000000000000000000059524d5667b299c0813ba3c99a11c038a3908fbc0000000000000000000000000000000000000000000000000000000068a95772
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106100e5575f3560e01c80638da5cb5b11610088578063d7fff34d11610063578063d7fff34d146101b1578063e12f3a61146101ba578063f2fde38b146101cd578063fc0c546a146101e0575f80fd5b80638da5cb5b14610165578063b81b863014610189578063ccc79dcf146101a8575f80fd5b806348c54b9d116100c357806348c54b9d14610139578063715018a61461014157806382ec40d3146101495780638947606914610152575f80fd5b806304e86903146100e957806329dcb0cf1461011b57806342cbc08814610124575b5f80fd5b6101086100f7366004610a05565b60076020525f908152604090205481565b6040519081526020015b60405180910390f35b61010860055481565b610137610132366004610a7a565b6101f3565b005b61013761044f565b6101376106e7565b61010860035481565b610137610160366004610a05565b6106fa565b5f546001600160a01b03165b6040516001600160a01b039091168152602001610112565b610108610197366004610a05565b60066020525f908152604090205481565b61010860025481565b61010860045481565b6101086101c8366004610a05565b61088c565b6101376101db366004610a05565b61094d565b600154610171906001600160a01b031681565b6101fb61098a565b8281146102605760405162461bcd60e51b815260206004820152602860248201527f526563697069656e7420616e6420616c6c6f636174696f6e206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084015b60405180910390fd5b5f5b83811015610448575f85858381811061027d5761027d610ae1565b90506020020160208101906102929190610a05565b6001600160a01b0316036102e85760405162461bcd60e51b815260206004820181905260248201527f526563697069656e7420616464726573732063616e6e6f74206265207a65726f6044820152606401610257565b5f8383838181106102fb576102fb610ae1565b90506020020135116103595760405162461bcd60e51b815260206004820152602160248201527f416c6c6f636174696f6e206d7573742062652067726561746572207468616e206044820152600360fc1b6064820152608401610257565b82828281811061036b5761036b610ae1565b9050602002013560065f87878581811061038757610387610ae1565b905060200201602081019061039c9190610a05565b6001600160a01b0316815260208101919091526040015f20558484828181106103c7576103c7610ae1565b90506020020160208101906103dc9190610a05565b6001600160a01b03167f79e1204b22e0669817ad586b72c3139f6c32afa18749b53228050f4c7f69646784848481811061041857610418610ae1565b9050602002013560405161042e91815260200190565b60405180910390a28061044081610b09565b915050610262565b5050505050565b60055442106104995760405162461bcd60e51b815260206004820152601660248201527510db185a5b481c195c9a5bd9081a185cc8195b99195960521b6044820152606401610257565b335f90815260066020526040902054806104e75760405162461bcd60e51b815260206004820152600f60248201526e139bdd0818481c9958da5c1a595b9d608a1b6044820152606401610257565b335f9081526007602052604090205481116105355760405162461bcd60e51b815260206004820152600e60248201526d151bdad95b9cc818db185a5b595960921b6044820152606401610257565b5f6003544210156105525761054b600383610b21565b9050610575565b60045442101561057257610567600383610b21565b61054b906002610b40565b50805b335f9081526007602052604081205461058e9083610b5d565b90505f81116105d45760405162461bcd60e51b81526020600482015260126024820152714e6f20746f6b656e7320746f20636c61696d60701b6044820152606401610257565b335f90815260076020526040812080548392906105f2908490610b70565b909155505060015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015610645573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106699190610b83565b6106ad5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610257565b60405181815233907f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4309060200160405180910390a2505050565b6106ef61098a565b6106f85f6109b6565b565b61070261098a565b6040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610748573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076c9190610ba2565b90505f81116107b55760405162461bcd60e51b81526020600482015260156024820152744e6f20746f6b656e7320746f20776974686472617760581b6044820152606401610257565b816001600160a01b031663a9059cbb6107d55f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af115801561081f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108439190610b83565b6108875760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b6044820152606401610257565b505050565b6001600160a01b0381165f90815260066020526040812054806108e35760405162461bcd60e51b815260206004820152600f60248201526e139bdd0818481c9958da5c1a595b9d608a1b6044820152606401610257565b5f600354421015610900576108f9600383610b21565b9050610923565b60045442101561092057610915600383610b21565b6108f9906002610b40565b50805b6001600160a01b0384165f908152600760205260409020546109459082610b5d565b949350505050565b61095561098a565b6001600160a01b03811661097e57604051631e4fbdf760e01b81525f6004820152602401610257565b610987816109b6565b50565b5f546001600160a01b031633146106f85760405163118cdaa760e01b8152336004820152602401610257565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610a15575f80fd5b81356001600160a01b0381168114610a2b575f80fd5b9392505050565b5f8083601f840112610a42575f80fd5b50813567ffffffffffffffff811115610a59575f80fd5b6020830191508360208260051b8501011115610a73575f80fd5b9250929050565b5f805f8060408587031215610a8d575f80fd5b843567ffffffffffffffff80821115610aa4575f80fd5b610ab088838901610a32565b90965094506020870135915080821115610ac8575f80fd5b50610ad587828801610a32565b95989497509550505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201610b1a57610b1a610af5565b5060010190565b5f82610b3b57634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610b5757610b57610af5565b92915050565b81810381811115610b5757610b57610af5565b80820180821115610b5757610b57610af5565b5f60208284031215610b93575f80fd5b81518015158114610a2b575f80fd5b5f60208284031215610bb2575f80fd5b505191905056fea2646970667358221220ac639c2f9331fcf0005065869daab6a3da1b7f5ffbebe8ada9531f585adda54c64736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000059524d5667b299c0813ba3c99a11c038a3908fbc0000000000000000000000000000000000000000000000000000000068a95772
-----Decoded View---------------
Arg [0] : _token (address): 0x59524D5667B299c0813Ba3c99a11C038a3908fBC
Arg [1] : _deadline (uint256): 1755928434
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000059524d5667b299c0813ba3c99a11c038a3908fbc
Arg [1] : 0000000000000000000000000000000000000000000000000000000068a95772
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.