More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 5,306 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake | 21650028 | 23 hrs ago | IN | 0 ETH | 0.00064598 | ||||
Unstake | 21646630 | 35 hrs ago | IN | 0 ETH | 0.00081368 | ||||
Unstake | 21644064 | 43 hrs ago | IN | 0 ETH | 0.0004173 | ||||
Unstake | 21627800 | 4 days ago | IN | 0 ETH | 0.0002554 | ||||
Unstake | 21614020 | 6 days ago | IN | 0 ETH | 0.00022362 | ||||
Unstake | 21613874 | 6 days ago | IN | 0 ETH | 0.0002826 | ||||
Unstake | 21605224 | 7 days ago | IN | 0 ETH | 0.00017039 | ||||
Unstake | 21602719 | 7 days ago | IN | 0 ETH | 0.00031391 | ||||
Unstake | 21593556 | 8 days ago | IN | 0 ETH | 0.00035009 | ||||
Unstake | 21589701 | 9 days ago | IN | 0 ETH | 0.00037101 | ||||
Unstake | 21587029 | 9 days ago | IN | 0 ETH | 0.00033166 | ||||
Unstake | 21577429 | 11 days ago | IN | 0 ETH | 0.00028611 | ||||
Unstake | 21576058 | 11 days ago | IN | 0 ETH | 0.00056672 | ||||
Unstake | 21571367 | 11 days ago | IN | 0 ETH | 0.00033073 | ||||
Unstake | 21568582 | 12 days ago | IN | 0 ETH | 0.00070822 | ||||
Unstake | 21567094 | 12 days ago | IN | 0 ETH | 0.00211251 | ||||
Unstake | 21565112 | 12 days ago | IN | 0 ETH | 0.00043941 | ||||
Unstake | 21560080 | 13 days ago | IN | 0 ETH | 0.00045301 | ||||
Unstake | 21543870 | 15 days ago | IN | 0 ETH | 0.00059329 | ||||
Unstake | 21540961 | 16 days ago | IN | 0 ETH | 0.00050607 | ||||
Unstake | 21538417 | 16 days ago | IN | 0 ETH | 0.00080281 | ||||
Unstake | 21533097 | 17 days ago | IN | 0 ETH | 0.00210991 | ||||
Unstake | 21531470 | 17 days ago | IN | 0 ETH | 0.00223122 | ||||
Unstake | 21520747 | 19 days ago | IN | 0 ETH | 0.00092938 | ||||
Unstake | 21516466 | 19 days ago | IN | 0 ETH | 0.00047899 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Staking
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.16; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol"; contract Staking is Ownable { // maximum upper limit of the cooldown period uint256 public constant COOLDOWN_UPPER_LIMIT = 365 days; // token used for staking IERC20Upgradeable public immutable token; // amounts staked, address to value staked mapping mapping(address => uint256) public staked; // timestamps timers until which the penalty is applied, 0 means it is cleared mapping(address => uint256) public timers; // amounts set for the cooldown period mapping(address => uint256) public amounts; // snapshotted penalties, address to penalty mapping mapping(address => uint16) public penalties; // cooldown period uint256 public cooldown = 14 days; // penalty for unstaking, divided by 100 to get the total percentages uint16 public penalty = 1000; // wallet to which the tokens go for penalties address public treasury; error CooldownOverflow(); error NotEnoughBalance(); error NotEnoughStakedBalance(); error PenaltyOverflow(); error UnstakingDifferentAmount(); error ZeroAmount(); error ZeroAddress(); event Staked(address indexed account, uint256 amount); event Unstaked(address indexed account, uint256 amount); event CooldownChanged(uint256 newCooldown); event PenaltyChanged(uint16 newPenalty); event SetCooldownTimer(address indexed account, uint256 amount); event TreasuryChanged(address newTreasury); /** * @param token_ staking token address * @param treasury_ address for the treasury wallet */ constructor(IERC20Upgradeable token_, address treasury_) { if (address(token_) == address(0) || address(treasury_) == address(0)) { revert ZeroAddress(); } token = token_; treasury = treasury_; } /** * @notice Allows any wallet to stake available tokens. * The penalty for unstaking is updated to the current global one when a wallet stakes more tokens. * @param amount amount of tokens to stake */ function stake(uint256 amount) external { if (amount == 0) { revert ZeroAmount(); } if (amount > token.balanceOf(msg.sender)) { revert NotEnoughBalance(); } staked[msg.sender] += amount; penalties[msg.sender] = penalty; require(token.transferFrom(msg.sender, address(this), amount), "transfer failed"); emit Staked(msg.sender, amount); } /** * @notice Allows any wallet to unstake staked tokens. * There is a penalty for unstaking the tokens during or without the cooldown period. * The cooldown period is set via setCooldownTimer(amount) method. * @param amount amount of tokens to unstake */ function unstake(uint256 amount) external { if (amount == 0) { revert ZeroAmount(); } if (amount > staked[msg.sender]) { revert NotEnoughStakedBalance(); } if (amount != amounts[msg.sender] && amounts[msg.sender] != 0) { revert UnstakingDifferentAmount(); } uint256 penaltyAmount = calculatePenalty(amount); staked[msg.sender] -= amount; setCooldownTimer(0); if (penaltyAmount > 0) { require(token.transfer(treasury, penaltyAmount), "penalty transfer failed"); } if (amount != penaltyAmount) { require(token.transfer(msg.sender, amount - penaltyAmount), "transfer failed"); } emit Unstaked(msg.sender, amount); } /** * @notice Sets the cooldown timer for passed amount. * @param amount amount of set for the cooldown period */ function setCooldownTimer(uint256 amount) public { if (amount > staked[msg.sender]) { revert NotEnoughStakedBalance(); } timers[msg.sender] = amount == 0 ? 0 : block.timestamp + cooldown; amounts[msg.sender] = amount; penalties[msg.sender] = amount == 0 ? 0 : penalty; emit SetCooldownTimer(msg.sender, amount); } /** * @notice Allows the owner to set the cooldown period (maximum of 365 days). * @param newCooldown new cooldown period */ function setCooldown(uint256 newCooldown) external onlyOwner { if (newCooldown > COOLDOWN_UPPER_LIMIT) { revert CooldownOverflow(); } cooldown = newCooldown; emit CooldownChanged(newCooldown); } /** * @notice Allows the owner to set the penalty (maximum of 10000 = 100%). * @param newPenalty new penalty */ function setPenalty(uint16 newPenalty) external onlyOwner { if (newPenalty > 10000) { revert PenaltyOverflow(); } penalty = newPenalty; emit PenaltyChanged(newPenalty); } /** * @notice Allows the owner to set the treasury address. * @param newTreasury new treasury address */ function setTreasury(address newTreasury) external onlyOwner { if (newTreasury == address(0)) { revert ZeroAddress(); } treasury = newTreasury; emit TreasuryChanged(newTreasury); } /** * @notice Calculates a penalty based on the given sender and amount. * Can be used to return the penalty amount without actually unstaking. * @param amount amount on which the penalty is calculated * @return amount amount of penalty */ function calculatePenalty(uint256 amount) public view returns (uint256) { if (amounts[msg.sender] == 0) { return (amount * penalty / 100) / 100; } else if (timers[msg.sender] > block.timestamp) { return (amount * penalties[msg.sender] / 100) / 100; } else { return 0; } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../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. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @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 { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _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 { require(newOwner != address(0), "Ownable: new owner is the zero address"); _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 v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20Upgradeable { /** * @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); }
// 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; } }
{ "optimizer": { "enabled": true, "runs": 1000000 }, "metadata": { "bytecodeHash": "none" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20Upgradeable","name":"token_","type":"address"},{"internalType":"address","name":"treasury_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CooldownOverflow","type":"error"},{"inputs":[],"name":"NotEnoughBalance","type":"error"},{"inputs":[],"name":"NotEnoughStakedBalance","type":"error"},{"inputs":[],"name":"PenaltyOverflow","type":"error"},{"inputs":[],"name":"UnstakingDifferentAmount","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newCooldown","type":"uint256"}],"name":"CooldownChanged","type":"event"},{"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":false,"internalType":"uint16","name":"newPenalty","type":"uint16"}],"name":"PenaltyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SetCooldownTimer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newTreasury","type":"address"}],"name":"TreasuryChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unstaked","type":"event"},{"inputs":[],"name":"COOLDOWN_UPPER_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"amounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculatePenalty","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldown","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"penalties","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"penalty","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCooldown","type":"uint256"}],"name":"setCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setCooldownTimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"newPenalty","type":"uint16"}],"name":"setPenalty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"staked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"timers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20Upgradeable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a0604052621275006005556006805461ffff19166103e817905534801561002657600080fd5b50604051620012863803806200128683398101604081905261004791610124565b610050336100bc565b6001600160a01b038216158061006d57506001600160a01b038116155b1561008b5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b039182166080526006805491909216620100000262010000600160b01b031990911617905561015e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461012157600080fd5b50565b6000806040838503121561013757600080fd5b82516101428161010c565b60208401519092506101538161010c565b809150509250929050565b6080516110f06200019660003960008181610332015281816104d6015281816105cc01528181610a6f0152610bca01526110f06000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80638968c0af116100cd578063a694fc3a11610081578063f2fde38b11610066578063f2fde38b146102fa578063f3eba1121461030d578063fc0c546a1461032d57600080fd5b8063a694fc3a146102d4578063f0f44260146102e757600080fd5b80638da5cb5b116100b25780638da5cb5b1461028357806396c62d70146102a157806398807d84146102b457600080fd5b80638968c0af146102655780638bafab4b1461027057600080fd5b80634fc3f41a1161012457806361d027b31161010957806361d027b314610209578063715018a614610254578063787a08a61461025c57600080fd5b80634fc3f41a146101d657806355a3b2c1146101e957600080fd5b80630edd2ffc146101565780632e17de781461017c57806331e8d9a6146101915780634ecce451146101b5575b600080fd5b6006546101649061ffff1681565b60405161ffff90911681526020015b60405180910390f35b61018f61018a366004610f61565b610354565b005b61016461019f366004610f7a565b60046020526000908152604090205461ffff1681565b6101c86101c3366004610f61565b61072f565b604051908152602001610173565b61018f6101e4366004610f61565b6107b7565b6101c86101f7366004610f7a565b60036020526000908152604090205481565b60065461022f9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610173565b61018f610839565b6101c860055481565b6101c86301e1338081565b61018f61027e366004610f61565b61084d565b60005473ffffffffffffffffffffffffffffffffffffffff1661022f565b61018f6102af366004610fb7565b61095e565b6101c86102c2366004610f7a565b60016020526000908152604090205481565b61018f6102e2366004610f61565b610a07565b61018f6102f5366004610f7a565b610ce4565b61018f610308366004610f7a565b610db4565b6101c861031b366004610f7a565b60026020526000908152604090205481565b61022f7f000000000000000000000000000000000000000000000000000000000000000081565b8060000361038e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600160205260409020548111156103d7576040517f4c6ca7e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260036020526040902054811480159061040457503360009081526003602052604090205415155b1561043b576040517fae2772b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006104468261072f565b3360009081526001602052604081208054929350849290919061046a90849061100a565b9091555061047a9050600061084d565b80156105ae576006546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff9081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af115801561051f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610543919061101d565b6105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f70656e616c7479207472616e73666572206661696c656400000000000000000060448201526064015b60405180910390fd5b8082146106f65773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a9059cbb336105fc848661100a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af115801561066c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610690919061101d565b6106f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f7472616e73666572206661696c6564000000000000000000000000000000000060448201526064016105a5565b60405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a25050565b33600090815260036020526040812054810361077557600654606490819061075b9061ffff168561103f565b610765919061107c565b61076f919061107c565b92915050565b336000908152600260205260409020544210156107af5733600090815260046020526040902054606490819061075b9061ffff168561103f565b506000919050565b6107bf610e6b565b6301e133808111156107fd576040517f39a8636400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058190556040518181527faa382e040a4d9efeb5a813fb9d768cb574053b0dfd7cdf78936a29006e0a7a1c906020015b60405180910390a150565b610841610e6b565b61084b6000610eec565b565b33600090815260016020526040902054811115610896576040517f4c6ca7e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156108ae576005546108a990426110b7565b6108b1565b60005b33600090815260026020908152604080832093909355600390522081905580156108e15760065461ffff166108e4565b60005b3360008181526004602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff95909516949094179093555183815290917fb84c8b2fd4af52a39fb58972966ea1918386f1c50ea858e4f052ce41930b984891015b60405180910390a250565b610966610e6b565b6127108161ffff1611156109a6576040517fec27417b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527f8cb7d657884b4f8dd60486fbe96f7b450ea909269a2065c8f9a6247e926fa0ec9060200161082e565b80600003610a41576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610acb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aef91906110ca565b811115610b28576040517fad3a8b9e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526001602052604081208054839290610b479084906110b7565b90915550506006543360008181526004602081905260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90951694909417909355517f23b872dd00000000000000000000000000000000000000000000000000000000815291820152306024820152604481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303816000875af1158015610c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4c919061101d565b610cb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f7472616e73666572206661696c6564000000000000000000000000000000000060448201526064016105a5565b60405181815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90602001610953565b610cec610e6b565b73ffffffffffffffffffffffffffffffffffffffff8116610d39576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527fc714d22a2f08b695f81e7c707058db484aa5b4d6b4c9fd64beb10fe85832f6089060200161082e565b610dbc610e6b565b73ffffffffffffffffffffffffffffffffffffffff8116610e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105a5565b610e6881610eec565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461084b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105a5565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610f7357600080fd5b5035919050565b600060208284031215610f8c57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610fb057600080fd5b9392505050565b600060208284031215610fc957600080fd5b813561ffff81168114610fb057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561076f5761076f610fdb565b60006020828403121561102f57600080fd5b81518015158114610fb057600080fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561107757611077610fdb565b500290565b6000826110b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082018082111561076f5761076f610fdb565b6000602082840312156110dc57600080fd5b505191905056fea164736f6c6343000810000a000000000000000000000000a62cc35625b0c8dc1faea39d33625bb4c15bd71c0000000000000000000000005ed7edca7cea9522c0305f6eac7b63efa778fc78
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101515760003560e01c80638968c0af116100cd578063a694fc3a11610081578063f2fde38b11610066578063f2fde38b146102fa578063f3eba1121461030d578063fc0c546a1461032d57600080fd5b8063a694fc3a146102d4578063f0f44260146102e757600080fd5b80638da5cb5b116100b25780638da5cb5b1461028357806396c62d70146102a157806398807d84146102b457600080fd5b80638968c0af146102655780638bafab4b1461027057600080fd5b80634fc3f41a1161012457806361d027b31161010957806361d027b314610209578063715018a614610254578063787a08a61461025c57600080fd5b80634fc3f41a146101d657806355a3b2c1146101e957600080fd5b80630edd2ffc146101565780632e17de781461017c57806331e8d9a6146101915780634ecce451146101b5575b600080fd5b6006546101649061ffff1681565b60405161ffff90911681526020015b60405180910390f35b61018f61018a366004610f61565b610354565b005b61016461019f366004610f7a565b60046020526000908152604090205461ffff1681565b6101c86101c3366004610f61565b61072f565b604051908152602001610173565b61018f6101e4366004610f61565b6107b7565b6101c86101f7366004610f7a565b60036020526000908152604090205481565b60065461022f9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610173565b61018f610839565b6101c860055481565b6101c86301e1338081565b61018f61027e366004610f61565b61084d565b60005473ffffffffffffffffffffffffffffffffffffffff1661022f565b61018f6102af366004610fb7565b61095e565b6101c86102c2366004610f7a565b60016020526000908152604090205481565b61018f6102e2366004610f61565b610a07565b61018f6102f5366004610f7a565b610ce4565b61018f610308366004610f7a565b610db4565b6101c861031b366004610f7a565b60026020526000908152604090205481565b61022f7f000000000000000000000000a62cc35625b0c8dc1faea39d33625bb4c15bd71c81565b8060000361038e576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600160205260409020548111156103d7576040517f4c6ca7e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33600090815260036020526040902054811480159061040457503360009081526003602052604090205415155b1561043b576040517fae2772b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006104468261072f565b3360009081526001602052604081208054929350849290919061046a90849061100a565b9091555061047a9050600061084d565b80156105ae576006546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff9081166004830152602482018390527f000000000000000000000000a62cc35625b0c8dc1faea39d33625bb4c15bd71c169063a9059cbb906044016020604051808303816000875af115801561051f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610543919061101d565b6105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f70656e616c7479207472616e73666572206661696c656400000000000000000060448201526064015b60405180910390fd5b8082146106f65773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000a62cc35625b0c8dc1faea39d33625bb4c15bd71c1663a9059cbb336105fc848661100a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af115801561066c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610690919061101d565b6106f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f7472616e73666572206661696c6564000000000000000000000000000000000060448201526064016105a5565b60405182815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a25050565b33600090815260036020526040812054810361077557600654606490819061075b9061ffff168561103f565b610765919061107c565b61076f919061107c565b92915050565b336000908152600260205260409020544210156107af5733600090815260046020526040902054606490819061075b9061ffff168561103f565b506000919050565b6107bf610e6b565b6301e133808111156107fd576040517f39a8636400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058190556040518181527faa382e040a4d9efeb5a813fb9d768cb574053b0dfd7cdf78936a29006e0a7a1c906020015b60405180910390a150565b610841610e6b565b61084b6000610eec565b565b33600090815260016020526040902054811115610896576040517f4c6ca7e000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80156108ae576005546108a990426110b7565b6108b1565b60005b33600090815260026020908152604080832093909355600390522081905580156108e15760065461ffff166108e4565b60005b3360008181526004602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff95909516949094179093555183815290917fb84c8b2fd4af52a39fb58972966ea1918386f1c50ea858e4f052ce41930b984891015b60405180910390a250565b610966610e6b565b6127108161ffff1611156109a6576040517fec27417b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff83169081179091556040519081527f8cb7d657884b4f8dd60486fbe96f7b450ea909269a2065c8f9a6247e926fa0ec9060200161082e565b80600003610a41576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000a62cc35625b0c8dc1faea39d33625bb4c15bd71c73ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610acb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aef91906110ca565b811115610b28576040517fad3a8b9e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526001602052604081208054839290610b479084906110b7565b90915550506006543360008181526004602081905260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90951694909417909355517f23b872dd00000000000000000000000000000000000000000000000000000000815291820152306024820152604481018290527f000000000000000000000000a62cc35625b0c8dc1faea39d33625bb4c15bd71c73ffffffffffffffffffffffffffffffffffffffff16906323b872dd906064016020604051808303816000875af1158015610c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4c919061101d565b610cb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f7472616e73666572206661696c6564000000000000000000000000000000000060448201526064016105a5565b60405181815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90602001610953565b610cec610e6b565b73ffffffffffffffffffffffffffffffffffffffff8116610d39576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527fc714d22a2f08b695f81e7c707058db484aa5b4d6b4c9fd64beb10fe85832f6089060200161082e565b610dbc610e6b565b73ffffffffffffffffffffffffffffffffffffffff8116610e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105a5565b610e6881610eec565b50565b60005473ffffffffffffffffffffffffffffffffffffffff16331461084b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105a5565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610f7357600080fd5b5035919050565b600060208284031215610f8c57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610fb057600080fd5b9392505050565b600060208284031215610fc957600080fd5b813561ffff81168114610fb057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561076f5761076f610fdb565b60006020828403121561102f57600080fd5b81518015158114610fb057600080fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561107757611077610fdb565b500290565b6000826110b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082018082111561076f5761076f610fdb565b6000602082840312156110dc57600080fd5b505191905056fea164736f6c6343000810000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a62cc35625b0c8dc1faea39d33625bb4c15bd71c0000000000000000000000005ed7edca7cea9522c0305f6eac7b63efa778fc78
-----Decoded View---------------
Arg [0] : token_ (address): 0xa62cc35625B0C8dc1fAEA39d33625Bb4C15bD71C
Arg [1] : treasury_ (address): 0x5ED7EDCa7CEA9522c0305f6EAc7B63efa778FC78
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000a62cc35625b0c8dc1faea39d33625bb4c15bd71c
Arg [1] : 0000000000000000000000005ed7edca7cea9522c0305f6eac7b63efa778fc78
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.005795 | 159,038,916.0227 | $921,617.8 |
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.