More Info
Private Name Tags
ContractCreator
Latest 15 from a total of 15 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Token | 15994704 | 761 days ago | IN | 0 ETH | 0.00062752 | ||||
Withdraw Token | 15994697 | 761 days ago | IN | 0 ETH | 0.00064854 | ||||
Stake Tokens | 15976322 | 764 days ago | IN | 0 ETH | 0.00144027 | ||||
Stake Tokens | 15976307 | 764 days ago | IN | 0 ETH | 0.00164041 | ||||
Stake Tokens | 15976285 | 764 days ago | IN | 0 ETH | 0.00306341 | ||||
Set Price Feed C... | 15966747 | 765 days ago | IN | 0 ETH | 0.00062153 | ||||
Add Allowed Toke... | 15966744 | 765 days ago | IN | 0 ETH | 0.00071998 | ||||
Set Price Feed C... | 15966741 | 765 days ago | IN | 0 ETH | 0.00062569 | ||||
Add Allowed Toke... | 15966737 | 765 days ago | IN | 0 ETH | 0.00072288 | ||||
Set Price Feed C... | 15966695 | 765 days ago | IN | 0 ETH | 0.0007071 | ||||
Add Allowed Toke... | 15966694 | 765 days ago | IN | 0 ETH | 0.00079457 | ||||
Set Price Feed C... | 15966693 | 765 days ago | IN | 0 ETH | 0.00074091 | ||||
Add Allowed Toke... | 15966692 | 765 days ago | IN | 0 ETH | 0.00081972 | ||||
Set Price Feed C... | 15966691 | 765 days ago | IN | 0 ETH | 0.00075328 | ||||
Add Allowed Toke... | 15966690 | 765 days ago | IN | 0 ETH | 0.00113912 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TokenFarm
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT import "Ownable.sol"; import "IERC20.sol"; import "AggregatorV3Interface.sol"; import "ReentrancyGuard.sol"; pragma solidity ^0.8.0; contract TokenFarm is Ownable, ReentrancyGuard { mapping(address => mapping(address => uint256)) public stakingBalance; mapping(address => uint256) public uniqueTokensStaked; mapping(address => address) public tokenPriceFeedMapping; address[] public stakers; address[] public allowedTokens; IERC20 public timeToken; uint256 public totalRaised; uint256 public goal; enum FUND_STATE { OPEN, REFUND, CLOSED } FUND_STATE public fund_state; constructor(address _timeTokenAddress) public { timeToken = IERC20(_timeTokenAddress); fund_state = FUND_STATE.OPEN; goal = 225000000000000000000000; } function stateOpen() public onlyOwner { fund_state = FUND_STATE.OPEN; } function stateRefund() public onlyOwner { fund_state = FUND_STATE.REFUND; } function stateClosed() public onlyOwner { fund_state = FUND_STATE.CLOSED; } function setPriceFeedContract(address _token, address _priceFeed) public onlyOwner { tokenPriceFeedMapping[_token] = _priceFeed; } function goalAmount() public onlyOwner returns (uint256) { return goal; } function totalERCRaised() public onlyOwner returns (uint256) { return totalRaised; } function getTokenValue(address _token) public view returns (uint256, uint256) { address priceFeedAddress = tokenPriceFeedMapping[_token]; AggregatorV3Interface priceFeed = AggregatorV3Interface( priceFeedAddress ); (, int256 price, , , ) = priceFeed.latestRoundData(); uint256 decimals = uint256(priceFeed.decimals()); return (uint256(price), decimals); } function stakeTokens(uint256 _amount, address _token) public nonReentrant { require(fund_state == FUND_STATE.OPEN); require(_amount > 0, "Amount must be more than zero!"); require(tokenIsAllowed(_token), "Token is currently not allowed!"); (uint256 price, uint256 decimals) = getTokenValue(_token); require( totalRaised + ((_amount * price) / ((10**decimals))) < goal, "Too much money" ); uint256 _amount2 = ((_amount * (10**20)) / (10**decimals)); IERC20(_token).transferFrom(msg.sender, address(this), _amount); updateUniqueTokensStaked(msg.sender, _token); if ( address(_token) == address(0x07865c6E87B9F70255377e024ace6630C1Eaa37F) ) { stakingBalance[_token][msg.sender] = stakingBalance[_token][msg.sender] + _amount2; totalRaised = uint256( totalRaised + (((_amount2 * price)) / ((10**decimals))) ); } if ( address(_token) == address(0x509Ee0d083DdF8AC028f2a56731412edD63223B9) ) { stakingBalance[_token][msg.sender] = stakingBalance[_token][msg.sender] + _amount2; totalRaised = uint256( totalRaised + (((_amount2 * price)) / ((10**decimals))) ); } if ( address(_token) == address(0xBA62BCfcAaFc6622853cca2BE6Ac7d845BC0f2Dc) ) { stakingBalance[_token][msg.sender] = stakingBalance[_token][msg.sender] + _amount; totalRaised = uint256( totalRaised + (((_amount * price)) / ((10**decimals))) ); } if ( address(_token) == address(0x60D4dB9b534EF9260a88b0BED6c486fe13E604Fc) ) { stakingBalance[_token][msg.sender] = stakingBalance[_token][msg.sender] + _amount; totalRaised = uint256( totalRaised + (((_amount * price)) / ((10**decimals))) ); } if (uniqueTokensStaked[msg.sender] == 1) { stakers.push(msg.sender); } } function issueTokens() public onlyOwner nonReentrant { require(fund_state == FUND_STATE.OPEN); for ( uint256 stakersIndex = 0; stakersIndex < stakers.length; stakersIndex++ ) { address recipient = stakers[stakersIndex]; uint256 userTotalValue = getUserTotalValue(recipient); timeToken.transfer(recipient, userTotalValue); } } function claimRefund(address _token) public nonReentrant { require(fund_state == FUND_STATE.REFUND); uint256 balance = stakingBalance[_token][msg.sender]; require(balance > 0, "Staking balance cannot be zero!"); IERC20(_token).transfer(msg.sender, balance); stakingBalance[_token][msg.sender] = 0; uniqueTokensStaked[msg.sender] = uniqueTokensStaked[msg.sender] - 1; } function getUserTotalValue(address _user) public view returns (uint256) { uint256 totalValue = 0; require(uniqueTokensStaked[_user] > 0, "No tokens staked!"); for ( uint256 allowedTokensIndex = 0; allowedTokensIndex < allowedTokens.length; allowedTokensIndex++ ) { totalValue = totalValue + getUserSingleTokenValue( _user, allowedTokens[allowedTokensIndex] ); } return totalValue; } function getUserSingleTokenValue(address _user, address _token) public view returns (uint256) { if (uniqueTokensStaked[_user] <= 0) { return 0; } (uint256 price, uint256 decimals) = getTokenValue(_token); return ((stakingBalance[_token][_user] * price) / (10**decimals)); } function withdrawToken(address _token, uint256 _amount) external onlyOwner nonReentrant { IERC20 token = IERC20(_token); token.transfer(msg.sender, _amount); } function updateUniqueTokensStaked(address _user, address _token) internal { if (stakingBalance[_token][_user] <= 0) { uniqueTokensStaked[_user] = uniqueTokensStaked[_user] + 1; } } function addAllowedTokens(address _token) public onlyOwner { allowedTokens.push(_token); } function tokenIsAllowed(address _token) public view returns (bool) { for ( uint256 allowedTokensIndex = 0; allowedTokensIndex < allowedTokens.length; allowedTokensIndex++ ) { if (allowedTokens[allowedTokensIndex] == _token) { return true; } } return false; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "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() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { 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 { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT 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 pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface AggregatorV3Interface { function decimals() external view returns ( uint8 ); function description() external view returns ( string memory ); function version() external view returns ( uint256 ); // getRoundData and latestRoundData should both raise "No data present" // if they do not have data to report, instead of returning unset values // which could be misinterpreted as actual reported values. function getRoundData( uint80 _roundId ) external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); function latestRoundData() external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "libraries": { "TokenFarm.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_timeTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"addAllowedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allowedTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"claimRefund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fund_state","outputs":[{"internalType":"enum TokenFarm.FUND_STATE","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"getTokenValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"getUserSingleTokenValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getUserTotalValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goalAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"issueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_priceFeed","type":"address"}],"name":"setPriceFeedContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"}],"name":"stakeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"stakingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stateClosed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stateOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stateRefund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"timeToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"tokenIsAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenPriceFeedMapping","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalERCRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"uniqueTokensStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161181e38038061181e83398101604081905261002f916100c9565b61003833610079565b60018055600780546001600160a01b0319166001600160a01b0392909216919091179055600a805460ff19169055692fa54641bae8aaa000006009556100f9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100db57600080fd5b81516001600160a01b03811681146100f257600080fd5b9392505050565b611716806101086000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063715018a6116100f9578063c5c4744c11610097578063e27af3b911610071578063e27af3b91461037f578063f1c5d6c214610392578063f2fde38b146103ba578063fd5e6dd1146103cd57600080fd5b8063c5c4744c1461034b578063d08c9dbd14610354578063dd5b84671461035c57600080fd5b80639e281a98116100d35780639e281a98146102f2578063af3f5e2214610305578063b83e023414610318578063bffa55d51461033857600080fd5b8063715018a6146102c6578063877dd39d146102ce5780638da5cb5b146102e157600080fd5b806327927b3e1161016657806357e11a011161014057806357e11a01146102895780635e5f2e26146102a35780636043903d146102b657806360ab5852146102be57600080fd5b806327927b3e1461021457806329161a0014610255578063401938831461028057600080fd5b806304bedc04146101ae5780630bea440d146101b857806315637548146101cb578063171e44ea146101d35780632636b945146101e6578063276b11da14610201575b600080fd5b6101b66103e0565b005b6101b66101c6366004611327565b61042a565b6101b661094b565b6101b66101e1366004611353565b610988565b6101ee610a04565b6040519081526020015b60405180910390f35b6101ee61020f366004611375565b610a36565b61023d610222366004611353565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101f8565b6101ee610263366004611375565b600260209081526000928352604080842090915290825290205481565b6101ee60095481565b600a546102969060ff1681565b6040516101f891906113b5565b61023d6102b13660046113dd565b610abd565b6101b6610ae7565b6101b6610b25565b6101b6610c70565b6101b66102dc366004611375565b610ca6565b6000546001600160a01b031661023d565b6101b66103003660046113f6565b610cfe565b6101ee610313366004611353565b610dcc565b6101ee610326366004611353565b60036020526000908152604090205481565b6101b6610346366004611353565b610e8a565b6101ee60085481565b6101ee611009565b61036f61036a366004611353565b61103b565b60405190151581526020016101f8565b60075461023d906001600160a01b031681565b6103a56103a0366004611353565b6110a4565b604080519283526020830191909152016101f8565b6101b66103c8366004611353565b6111a4565b61023d6103db3660046113dd565b61123f565b6000546001600160a01b031633146104135760405162461bcd60e51b815260040161040a90611420565b60405180910390fd5b600a80546002919060ff19166001835b0217905550565b60026001540361044c5760405162461bcd60e51b815260040161040a90611455565b60026001556000600a5460ff16600281111561046a5761046a61139f565b1461047457600080fd5b600082116104c45760405162461bcd60e51b815260206004820152601e60248201527f416d6f756e74206d757374206265206d6f7265207468616e207a65726f210000604482015260640161040a565b6104cd8161103b565b6105195760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e2069732063757272656e746c79206e6f7420616c6c6f7765642100604482015260640161040a565b600080610525836110a4565b600954919350915061053882600a611586565b6105428487611592565b61054c91906115b1565b60085461055991906115d3565b106105975760405162461bcd60e51b815260206004820152600e60248201526d546f6f206d756368206d6f6e657960901b604482015260640161040a565b60006105a482600a611586565b6105b78668056bc75e2d63100000611592565b6105c191906115b1565b6040516323b872dd60e01b8152336004820152306024820152604481018790529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b91906115eb565b50610646338561124f565b7307865c6e87b9f70255377e024ace6630c1eaa37e196001600160a01b038516016106ee576001600160a01b038416600090815260026020908152604080832033845290915290205461069a9082906115d3565b6001600160a01b03851660009081526002602090815260408083203384529091529020556106c982600a611586565b6106d38483611592565b6106dd91906115b1565b6008546106ea91906115d3565b6008555b73509ee0d083ddf8ac028f2a56731412edd63223b8196001600160a01b03851601610796576001600160a01b03841660009081526002602090815260408083203384529091529020546107429082906115d3565b6001600160a01b038516600090815260026020908152604080832033845290915290205561077182600a611586565b61077b8483611592565b61078591906115b1565b60085461079291906115d3565b6008555b73ba62bcfcaafc6622853cca2be6ac7d845bc0f2db196001600160a01b0385160161083e576001600160a01b03841660009081526002602090815260408083203384529091529020546107ea9086906115d3565b6001600160a01b038516600090815260026020908152604080832033845290915290205561081982600a611586565b6108238487611592565b61082d91906115b1565b60085461083a91906115d3565b6008555b7360d4db9b534ef9260a88b0bed6c486fe13e604fb196001600160a01b038516016108e6576001600160a01b03841660009081526002602090815260408083203384529091529020546108929086906115d3565b6001600160a01b03851660009081526002602090815260408083203384529091529020556108c182600a611586565b6108cb8487611592565b6108d591906115b1565b6008546108e291906115d3565b6008555b3360009081526003602052604090205460010361094057600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b031916331790555b505060018055505050565b6000546001600160a01b031633146109755760405162461bcd60e51b815260040161040a90611420565b600a80546001919060ff19168280610423565b6000546001600160a01b031633146109b25760405162461bcd60e51b815260040161040a90611420565b600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b03163314610a2f5760405162461bcd60e51b815260040161040a90611420565b5060095490565b6001600160a01b038216600090815260036020526040812054610a5b57506000610ab7565b600080610a67846110a4565b9092509050610a7781600a611586565b6001600160a01b038086166000908152600260209081526040808320938a1683529290522054610aa8908490611592565b610ab291906115b1565b925050505b92915050565b60068181548110610acd57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314610b115760405162461bcd60e51b815260040161040a90611420565b600a80546000919060ff1916600183610423565b6000546001600160a01b03163314610b4f5760405162461bcd60e51b815260040161040a90611420565b600260015403610b715760405162461bcd60e51b815260040161040a90611455565b60026001556000600a5460ff166002811115610b8f57610b8f61139f565b14610b9957600080fd5b60005b600554811015610c6957600060058281548110610bbb57610bbb61160d565b60009182526020822001546001600160a01b03169150610bda82610dcc565b60075460405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5391906115eb565b5050508080610c6190611623565b915050610b9c565b5060018055565b6000546001600160a01b03163314610c9a5760405162461bcd60e51b815260040161040a90611420565b610ca460006112bb565b565b6000546001600160a01b03163314610cd05760405162461bcd60e51b815260040161040a90611420565b6001600160a01b03918216600090815260046020526040902080546001600160a01b03191691909216179055565b6000546001600160a01b03163314610d285760405162461bcd60e51b815260040161040a90611420565b600260015403610d4a5760405162461bcd60e51b815260040161040a90611455565b600260015560405163a9059cbb60e01b81523360048201526024810182905282906001600160a01b0382169063a9059cbb906044016020604051808303816000875af1158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc291906115eb565b5050600180555050565b6001600160a01b0381166000908152600360205260408120548190610e275760405162461bcd60e51b81526020600482015260116024820152704e6f20746f6b656e73207374616b65642160781b604482015260640161040a565b60005b600654811015610e8357610e658460068381548110610e4b57610e4b61160d565b6000918252602090912001546001600160a01b0316610a36565b610e6f90836115d3565b915080610e7b81611623565b915050610e2a565b5092915050565b600260015403610eac5760405162461bcd60e51b815260040161040a90611455565b60026001908155600a5460ff166002811115610eca57610eca61139f565b14610ed457600080fd5b6001600160a01b038116600090815260026020908152604080832033845290915290205480610f455760405162461bcd60e51b815260206004820152601f60248201527f5374616b696e672062616c616e63652063616e6e6f74206265207a65726f2100604482015260640161040a565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb691906115eb565b506001600160a01b038216600090815260026020908152604080832033845282528083208390556003909152902054610ff19060019061163c565b33600090815260036020526040902055505060018055565b600080546001600160a01b031633146110345760405162461bcd60e51b815260040161040a90611420565b5060085490565b6000805b60065481101561109b57826001600160a01b0316600682815481106110665761106661160d565b6000918252602090912001546001600160a01b0316036110895750600192915050565b8061109381611623565b91505061103f565b50600092915050565b6001600160a01b038082166000908152600460208190526040808320548151633fabe5a360e21b815291519394859491169283928592849263feaf968c928082019260a09290918290030181865afa158015611104573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611128919061166d565b5050509150506000826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119291906116bd565b919760ff909216965090945050505050565b6000546001600160a01b031633146111ce5760405162461bcd60e51b815260040161040a90611420565b6001600160a01b0381166112335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040a565b61123c816112bb565b50565b60058181548110610acd57600080fd5b6001600160a01b038082166000908152600260209081526040808320938616835292905220546112b7576001600160a01b03821660009081526003602052604090205461129d9060016115d3565b6001600160a01b0383166000908152600360205260409020555b5050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461132257600080fd5b919050565b6000806040838503121561133a57600080fd5b8235915061134a6020840161130b565b90509250929050565b60006020828403121561136557600080fd5b61136e8261130b565b9392505050565b6000806040838503121561138857600080fd5b6113918361130b565b915061134a6020840161130b565b634e487b7160e01b600052602160045260246000fd5b60208101600383106113d757634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156113ef57600080fd5b5035919050565b6000806040838503121561140957600080fd5b6114128361130b565b946020939093013593505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156114dd5781600019048211156114c3576114c361148c565b808516156114d057918102915b93841c93908002906114a7565b509250929050565b6000826114f457506001610ab7565b8161150157506000610ab7565b816001811461151757600281146115215761153d565b6001915050610ab7565b60ff8411156115325761153261148c565b50506001821b610ab7565b5060208310610133831016604e8410600b8410161715611560575081810a610ab7565b61156a83836114a2565b806000190482111561157e5761157e61148c565b029392505050565b600061136e83836114e5565b60008160001904831182151516156115ac576115ac61148c565b500290565b6000826115ce57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156115e6576115e661148c565b500190565b6000602082840312156115fd57600080fd5b8151801515811461136e57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016116355761163561148c565b5060010190565b60008282101561164e5761164e61148c565b500390565b805169ffffffffffffffffffff8116811461132257600080fd5b600080600080600060a0868803121561168557600080fd5b61168e86611653565b94506020860151935060408601519250606086015191506116b160808701611653565b90509295509295909350565b6000602082840312156116cf57600080fd5b815160ff8116811461136e57600080fdfea2646970667358221220f33801a5eed124ffe0739779ff6e5be3ec661a162396e84916ad7b573feeff7264736f6c634300080d003300000000000000000000000052941abf2a10bf41b0470a6209adc66bd9bd1394
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c8063715018a6116100f9578063c5c4744c11610097578063e27af3b911610071578063e27af3b91461037f578063f1c5d6c214610392578063f2fde38b146103ba578063fd5e6dd1146103cd57600080fd5b8063c5c4744c1461034b578063d08c9dbd14610354578063dd5b84671461035c57600080fd5b80639e281a98116100d35780639e281a98146102f2578063af3f5e2214610305578063b83e023414610318578063bffa55d51461033857600080fd5b8063715018a6146102c6578063877dd39d146102ce5780638da5cb5b146102e157600080fd5b806327927b3e1161016657806357e11a011161014057806357e11a01146102895780635e5f2e26146102a35780636043903d146102b657806360ab5852146102be57600080fd5b806327927b3e1461021457806329161a0014610255578063401938831461028057600080fd5b806304bedc04146101ae5780630bea440d146101b857806315637548146101cb578063171e44ea146101d35780632636b945146101e6578063276b11da14610201575b600080fd5b6101b66103e0565b005b6101b66101c6366004611327565b61042a565b6101b661094b565b6101b66101e1366004611353565b610988565b6101ee610a04565b6040519081526020015b60405180910390f35b6101ee61020f366004611375565b610a36565b61023d610222366004611353565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101f8565b6101ee610263366004611375565b600260209081526000928352604080842090915290825290205481565b6101ee60095481565b600a546102969060ff1681565b6040516101f891906113b5565b61023d6102b13660046113dd565b610abd565b6101b6610ae7565b6101b6610b25565b6101b6610c70565b6101b66102dc366004611375565b610ca6565b6000546001600160a01b031661023d565b6101b66103003660046113f6565b610cfe565b6101ee610313366004611353565b610dcc565b6101ee610326366004611353565b60036020526000908152604090205481565b6101b6610346366004611353565b610e8a565b6101ee60085481565b6101ee611009565b61036f61036a366004611353565b61103b565b60405190151581526020016101f8565b60075461023d906001600160a01b031681565b6103a56103a0366004611353565b6110a4565b604080519283526020830191909152016101f8565b6101b66103c8366004611353565b6111a4565b61023d6103db3660046113dd565b61123f565b6000546001600160a01b031633146104135760405162461bcd60e51b815260040161040a90611420565b60405180910390fd5b600a80546002919060ff19166001835b0217905550565b60026001540361044c5760405162461bcd60e51b815260040161040a90611455565b60026001556000600a5460ff16600281111561046a5761046a61139f565b1461047457600080fd5b600082116104c45760405162461bcd60e51b815260206004820152601e60248201527f416d6f756e74206d757374206265206d6f7265207468616e207a65726f210000604482015260640161040a565b6104cd8161103b565b6105195760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e2069732063757272656e746c79206e6f7420616c6c6f7765642100604482015260640161040a565b600080610525836110a4565b600954919350915061053882600a611586565b6105428487611592565b61054c91906115b1565b60085461055991906115d3565b106105975760405162461bcd60e51b815260206004820152600e60248201526d546f6f206d756368206d6f6e657960901b604482015260640161040a565b60006105a482600a611586565b6105b78668056bc75e2d63100000611592565b6105c191906115b1565b6040516323b872dd60e01b8152336004820152306024820152604481018790529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b91906115eb565b50610646338561124f565b7307865c6e87b9f70255377e024ace6630c1eaa37e196001600160a01b038516016106ee576001600160a01b038416600090815260026020908152604080832033845290915290205461069a9082906115d3565b6001600160a01b03851660009081526002602090815260408083203384529091529020556106c982600a611586565b6106d38483611592565b6106dd91906115b1565b6008546106ea91906115d3565b6008555b73509ee0d083ddf8ac028f2a56731412edd63223b8196001600160a01b03851601610796576001600160a01b03841660009081526002602090815260408083203384529091529020546107429082906115d3565b6001600160a01b038516600090815260026020908152604080832033845290915290205561077182600a611586565b61077b8483611592565b61078591906115b1565b60085461079291906115d3565b6008555b73ba62bcfcaafc6622853cca2be6ac7d845bc0f2db196001600160a01b0385160161083e576001600160a01b03841660009081526002602090815260408083203384529091529020546107ea9086906115d3565b6001600160a01b038516600090815260026020908152604080832033845290915290205561081982600a611586565b6108238487611592565b61082d91906115b1565b60085461083a91906115d3565b6008555b7360d4db9b534ef9260a88b0bed6c486fe13e604fb196001600160a01b038516016108e6576001600160a01b03841660009081526002602090815260408083203384529091529020546108929086906115d3565b6001600160a01b03851660009081526002602090815260408083203384529091529020556108c182600a611586565b6108cb8487611592565b6108d591906115b1565b6008546108e291906115d3565b6008555b3360009081526003602052604090205460010361094057600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b031916331790555b505060018055505050565b6000546001600160a01b031633146109755760405162461bcd60e51b815260040161040a90611420565b600a80546001919060ff19168280610423565b6000546001600160a01b031633146109b25760405162461bcd60e51b815260040161040a90611420565b600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b03163314610a2f5760405162461bcd60e51b815260040161040a90611420565b5060095490565b6001600160a01b038216600090815260036020526040812054610a5b57506000610ab7565b600080610a67846110a4565b9092509050610a7781600a611586565b6001600160a01b038086166000908152600260209081526040808320938a1683529290522054610aa8908490611592565b610ab291906115b1565b925050505b92915050565b60068181548110610acd57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314610b115760405162461bcd60e51b815260040161040a90611420565b600a80546000919060ff1916600183610423565b6000546001600160a01b03163314610b4f5760405162461bcd60e51b815260040161040a90611420565b600260015403610b715760405162461bcd60e51b815260040161040a90611455565b60026001556000600a5460ff166002811115610b8f57610b8f61139f565b14610b9957600080fd5b60005b600554811015610c6957600060058281548110610bbb57610bbb61160d565b60009182526020822001546001600160a01b03169150610bda82610dcc565b60075460405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5391906115eb565b5050508080610c6190611623565b915050610b9c565b5060018055565b6000546001600160a01b03163314610c9a5760405162461bcd60e51b815260040161040a90611420565b610ca460006112bb565b565b6000546001600160a01b03163314610cd05760405162461bcd60e51b815260040161040a90611420565b6001600160a01b03918216600090815260046020526040902080546001600160a01b03191691909216179055565b6000546001600160a01b03163314610d285760405162461bcd60e51b815260040161040a90611420565b600260015403610d4a5760405162461bcd60e51b815260040161040a90611455565b600260015560405163a9059cbb60e01b81523360048201526024810182905282906001600160a01b0382169063a9059cbb906044016020604051808303816000875af1158015610d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc291906115eb565b5050600180555050565b6001600160a01b0381166000908152600360205260408120548190610e275760405162461bcd60e51b81526020600482015260116024820152704e6f20746f6b656e73207374616b65642160781b604482015260640161040a565b60005b600654811015610e8357610e658460068381548110610e4b57610e4b61160d565b6000918252602090912001546001600160a01b0316610a36565b610e6f90836115d3565b915080610e7b81611623565b915050610e2a565b5092915050565b600260015403610eac5760405162461bcd60e51b815260040161040a90611455565b60026001908155600a5460ff166002811115610eca57610eca61139f565b14610ed457600080fd5b6001600160a01b038116600090815260026020908152604080832033845290915290205480610f455760405162461bcd60e51b815260206004820152601f60248201527f5374616b696e672062616c616e63652063616e6e6f74206265207a65726f2100604482015260640161040a565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb691906115eb565b506001600160a01b038216600090815260026020908152604080832033845282528083208390556003909152902054610ff19060019061163c565b33600090815260036020526040902055505060018055565b600080546001600160a01b031633146110345760405162461bcd60e51b815260040161040a90611420565b5060085490565b6000805b60065481101561109b57826001600160a01b0316600682815481106110665761106661160d565b6000918252602090912001546001600160a01b0316036110895750600192915050565b8061109381611623565b91505061103f565b50600092915050565b6001600160a01b038082166000908152600460208190526040808320548151633fabe5a360e21b815291519394859491169283928592849263feaf968c928082019260a09290918290030181865afa158015611104573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611128919061166d565b5050509150506000826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561116e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119291906116bd565b919760ff909216965090945050505050565b6000546001600160a01b031633146111ce5760405162461bcd60e51b815260040161040a90611420565b6001600160a01b0381166112335760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161040a565b61123c816112bb565b50565b60058181548110610acd57600080fd5b6001600160a01b038082166000908152600260209081526040808320938616835292905220546112b7576001600160a01b03821660009081526003602052604090205461129d9060016115d3565b6001600160a01b0383166000908152600360205260409020555b5050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461132257600080fd5b919050565b6000806040838503121561133a57600080fd5b8235915061134a6020840161130b565b90509250929050565b60006020828403121561136557600080fd5b61136e8261130b565b9392505050565b6000806040838503121561138857600080fd5b6113918361130b565b915061134a6020840161130b565b634e487b7160e01b600052602160045260246000fd5b60208101600383106113d757634e487b7160e01b600052602160045260246000fd5b91905290565b6000602082840312156113ef57600080fd5b5035919050565b6000806040838503121561140957600080fd5b6114128361130b565b946020939093013593505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156114dd5781600019048211156114c3576114c361148c565b808516156114d057918102915b93841c93908002906114a7565b509250929050565b6000826114f457506001610ab7565b8161150157506000610ab7565b816001811461151757600281146115215761153d565b6001915050610ab7565b60ff8411156115325761153261148c565b50506001821b610ab7565b5060208310610133831016604e8410600b8410161715611560575081810a610ab7565b61156a83836114a2565b806000190482111561157e5761157e61148c565b029392505050565b600061136e83836114e5565b60008160001904831182151516156115ac576115ac61148c565b500290565b6000826115ce57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156115e6576115e661148c565b500190565b6000602082840312156115fd57600080fd5b8151801515811461136e57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016116355761163561148c565b5060010190565b60008282101561164e5761164e61148c565b500390565b805169ffffffffffffffffffff8116811461132257600080fd5b600080600080600060a0868803121561168557600080fd5b61168e86611653565b94506020860151935060408601519250606086015191506116b160808701611653565b90509295509295909350565b6000602082840312156116cf57600080fd5b815160ff8116811461136e57600080fdfea2646970667358221220f33801a5eed124ffe0739779ff6e5be3ec661a162396e84916ad7b573feeff7264736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000052941abf2a10bf41b0470a6209adc66bd9bd1394
-----Decoded View---------------
Arg [0] : _timeTokenAddress (address): 0x52941ABf2a10bf41B0470a6209Adc66bD9bd1394
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000052941abf2a10bf41b0470a6209adc66bd9bd1394
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.