Source Code
Overview
S Balance
27 S
Token Holdings
More Info
ContractCreator
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Tokens | 5280132 | 24 days ago | IN | 0 S | 0.00010237 | ||||
Claim Tokens | 5279546 | 24 days ago | IN | 0 S | 0.00010237 | ||||
Claim Tokens | 5270352 | 24 days ago | IN | 0 S | 0.00008048 | ||||
Close Sale | 5269873 | 24 days ago | IN | 0 S | 0.00002704 | ||||
Contribute | 5039287 | 25 days ago | IN | 13 S | 0.00006598 | ||||
Contribute | 5036324 | 25 days ago | IN | 2 S | 0.00006598 | ||||
Contribute | 5036008 | 25 days ago | IN | 1 S | 0.00011274 | ||||
Contribute | 5034853 | 25 days ago | IN | 10 S | 0.00009393 | ||||
Contribute | 5033151 | 25 days ago | IN | 1 S | 0.00008649 | ||||
Set Sale Times | 5031660 | 25 days ago | IN | 0 S | 0.00007648 |
Loading...
Loading
Contract Name:
FrogsSale
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; contract FrogsSale is Ownable { IERC20 public saleToken; // Token to be distributed uint256 public constant MAX_POOL = 500000 ether; // 500,000 CRO uint256 public constant INDIVIDUAL_CAP = 5000 ether; // 5,000 CRO uint256 public constant SALE_TOKEN_SUPPLY = 1000000000 * 10**18; // 1,000,000,000 FROGS with 18 decimals mapping(address => uint256) public contributions; // Tracks contributions per user mapping(address => address) public referrals; // Tracks user referrals mapping(address => uint256) public totalReferralEarned; // Tracks total referral rewards earned per user mapping(address => uint256) public totalReferredContribution; // Tracks total contributions made by referrals uint256 public totalContributed; // Total CRO contributed bool public isSaleActive = true; uint256 public startTime; // Sale start time uint256 public endTime; // Sale end time uint256 public referralPercentage = 2; // Default 2% referral reward event Contribution(address indexed user, uint256 amount, address indexed referral); event TokensClaimed(address indexed user, uint256 tokenAmount, uint256 croRefunded, uint256 referralReward); event SaleClosed(); event SaleTimesUpdated(uint256 startTime, uint256 endTime); event ReferralPercentageUpdated(uint256 newPercentage); constructor(IERC20 _saleToken) { saleToken = _saleToken; } /** * @dev Allows users to claim tokens, refunds excess CRO, and allocates referral rewards. */ function claimTokens() external { require(!isSaleActive, "Sale is still active"); require(block.timestamp > endTime, "Sale has not ended yet"); require(contributions[msg.sender] > 0, "No contributions to claim tokens"); uint256 userContribution = contributions[msg.sender]; uint256 totalTokens = SALE_TOKEN_SUPPLY; uint256 tokenAmount = (userContribution * totalTokens) / totalContributed; uint256 excessCRO = userContribution > (userContribution * MAX_POOL / totalContributed) ? userContribution - (userContribution * MAX_POOL / totalContributed) : 0; // Calculate referral reward for the user uint256 referralReward = (totalReferredContribution[msg.sender] * totalTokens / totalContributed) * referralPercentage / 100; totalReferralEarned[msg.sender] += referralReward; // Reset user contribution contributions[msg.sender] = 0; // Transfer tokens (main + referral rewards) to the user saleToken.transfer(msg.sender, tokenAmount + referralReward); // Refund excess CRO if (excessCRO > 0) { payable(msg.sender).transfer(excessCRO); } emit TokensClaimed(msg.sender, tokenAmount, excessCRO, referralReward); } /** * @dev Allows users to estimate their token allocation, excess CRO, and referral rewards. */ function estimateClaim(address user) external view returns (uint256 tokenAmount, uint256 excessCRO, uint256 referralReward) { if (totalContributed == 0 || contributions[user] == 0) { return (0, 0, 0); } uint256 userContribution = contributions[user]; uint256 totalTokens = SALE_TOKEN_SUPPLY; tokenAmount = (userContribution * totalTokens) / totalContributed; excessCRO = userContribution > (userContribution * MAX_POOL / totalContributed) ? userContribution - (userContribution * MAX_POOL / totalContributed) : 0; referralReward = (totalReferredContribution[user] * totalTokens / totalContributed) * referralPercentage / 100; } /** * @dev Withdraw collected CRO up to the MAX_POOL limit. */ function withdrawCRO() external onlyOwner { uint256 amount = address(this).balance > MAX_POOL ? MAX_POOL : address(this).balance; payable(owner()).transfer(amount); } /** * @dev Withdraw unsold tokens proportional to the uncollected CRO. */ function withdrawUnsoldTokens() external onlyOwner { uint256 soldTokens = (totalContributed * SALE_TOKEN_SUPPLY) / MAX_POOL; uint256 unsoldTokens = SALE_TOKEN_SUPPLY - soldTokens; require(unsoldTokens > 0, "No unsold tokens available"); saleToken.transfer(owner(), unsoldTokens); } /** * @dev Allows users to contribute CRO to the sale with an optional referral. */ function contribute(address referral) external payable { require(isSaleActive, "Sale is not active"); require(block.timestamp >= startTime, "Sale has not started yet"); require(block.timestamp <= endTime, "Sale has ended"); require(msg.value > 0, "Contribution must be > 0"); require(contributions[msg.sender] + msg.value <= INDIVIDUAL_CAP, "Exceeds individual cap"); uint256 contribution = msg.value; contributions[msg.sender] += contribution; totalContributed += contribution; // Record referral if (referral != address(0) && referral != msg.sender && referrals[msg.sender] == address(0)) { referrals[msg.sender] = referral; totalReferredContribution[referral] += contribution; } else if (referrals[msg.sender] != address(0)) { totalReferredContribution[referrals[msg.sender]] += contribution; } emit Contribution(msg.sender, contribution, referral); } /** * @dev Allows the owner to close the sale. */ function closeSale() external onlyOwner { require(isSaleActive, "Sale already closed"); isSaleActive = false; emit SaleClosed(); } /** * @dev Sets the start and end time for the sale. */ function setSaleTimes(uint256 _startTime, uint256 _endTime) external onlyOwner { require(_startTime < _endTime, "Start time must be before end time"); startTime = _startTime; endTime = _endTime; emit SaleTimesUpdated(startTime, endTime); } /** * @dev Allows the owner to set the referral reward percentage. */ function setReferralPercentage(uint256 _percentage) external onlyOwner { require(_percentage <= 10, "Referral percentage too high"); referralPercentage = _percentage; emit ReferralPercentageUpdated(_percentage); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.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. 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 { 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.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); }
// 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; } }
{ "evmVersion": "shanghai", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 200 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
[{"inputs":[{"internalType":"contract IERC20","name":"_saleToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"referral","type":"address"}],"name":"Contribution","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":"uint256","name":"newPercentage","type":"uint256"}],"name":"ReferralPercentageUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"SaleClosed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"startTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"SaleTimesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"croRefunded","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"referralReward","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"inputs":[],"name":"INDIVIDUAL_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_POOL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SALE_TOKEN_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"referral","type":"address"}],"name":"contribute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contributions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"estimateClaim","outputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"excessCRO","type":"uint256"},{"internalType":"uint256","name":"referralReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referrals","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setReferralPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_endTime","type":"uint256"}],"name":"setSaleTimes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalContributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalReferralEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalReferredContribution","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":[],"name":"withdrawCRO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawUnsoldTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526007805460ff191660011790556002600a55348015610021575f80fd5b50604051611250380380611250833981016040819052610040916100bd565b6100493361006e565b600180546001600160a01b0319166001600160a01b03929092169190911790556100ea565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cd575f80fd5b81516001600160a01b03811681146100e3575f80fd5b9392505050565b611159806100f75f395ff3fe608060405260043610610147575f3560e01c806379ac20b1116100b3578063a8d294051161006d578063a8d29405146103a6578063c8bdbfb6146103c3578063cbaaf1dc146103d7578063e985e367146103f6578063ee55efee14610415578063f2fde38b14610429575f80fd5b806379ac20b1146102db5780638da5cb5b146102ef57806396ea8b9c1461031f5780639ca423b314610334578063a0311bd414610368578063a7f3e70f14610387575f80fd5b80634e5e0134116101045780634e5e01341461021157806355fb77471461024b578063564566a814610276578063715018a61461029f57806373e888fd146102b357806378e97925146102c6575f80fd5b8063023f41471461014b5780630f3cf72c146101735780632c3c91c91461019e5780633197cbb6146101bb57806342e94c90146101d057806348c54b9d146101fb575b5f80fd5b348015610156575f80fd5b5061016060065481565b6040519081526020015b60405180910390f35b34801561017e575f80fd5b5061016061018d36600461102a565b60046020525f908152604090205481565b3480156101a9575f80fd5b506101606969e10de76676d080000081565b3480156101c6575f80fd5b5061016060095481565b3480156101db575f80fd5b506101606101ea36600461102a565b60026020525f908152604090205481565b348015610206575f80fd5b5061020f610448565b005b34801561021c575f80fd5b5061023061022b36600461102a565b610753565b6040805193845260208401929092529082015260600161016a565b348015610256575f80fd5b5061016061026536600461102a565b60056020525f908152604090205481565b348015610281575f80fd5b5060075461028f9060ff1681565b604051901515815260200161016a565b3480156102aa575f80fd5b5061020f61087e565b61020f6102c136600461102a565b610891565b3480156102d1575f80fd5b5061016060085481565b3480156102e6575f80fd5b5061020f610b99565b3480156102fa575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161016a565b34801561032a575f80fd5b50610160600a5481565b34801561033f575f80fd5b5061030761034e36600461102a565b60036020525f90815260409020546001600160a01b031681565b348015610373575f80fd5b5061020f610382366004611057565b610c11565b348015610392575f80fd5b5061020f6103a136600461106e565b610ca5565b3480156103b1575f80fd5b5061016069010f0cf064dd5920000081565b3480156103ce575f80fd5b5061020f610d4e565b3480156103e2575f80fd5b506101606b033b2e3c9fd0803ce800000081565b348015610401575f80fd5b50600154610307906001600160a01b031681565b348015610420575f80fd5b5061020f610e85565b348015610434575f80fd5b5061020f61044336600461102a565b610f09565b60075460ff16156104975760405162461bcd60e51b815260206004820152601460248201527353616c65206973207374696c6c2061637469766560601b60448201526064015b60405180910390fd5b60095442116104e15760405162461bcd60e51b815260206004820152601660248201527514d85b19481a185cc81b9bdd08195b991959081e595d60521b604482015260640161048e565b335f9081526002602052604090205461053c5760405162461bcd60e51b815260206004820181905260248201527f4e6f20636f6e747269627574696f6e7320746f20636c61696d20746f6b656e73604482015260640161048e565b335f9081526002602052604081205460065490916b033b2e3c9fd0803ce80000009161056883856110a2565b61057291906110bf565b90505f6006546969e10de76676d08000008561058e91906110a2565b61059891906110bf565b84116105a4575f6105cf565b6006546105bb6969e10de76676d0800000866110a2565b6105c591906110bf565b6105cf90856110de565b600a54600654335f908152600560205260408120549394509260649291906105f89088906110a2565b61060291906110bf565b61060c91906110a2565b61061691906110bf565b335f908152600460205260408120805492935083929091906106399084906110f1565b9091555050335f818152600260205260408120556001546001600160a01b03169063a9059cbb9061066a84876110f1565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156106b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d69190611104565b50811561070957604051339083156108fc029084905f818181858888f19350505050158015610707573d5f803e3d5ffd5b505b604080518481526020810184905290810182905233907fe49649ad7d04a14b0d2a43dae89f207c0822143ff6f88a6480e88907e4e5c5489060600160405180910390a25050505050565b5f805f6006545f148061077b57506001600160a01b0384165f90815260026020526040902054155b1561078d57505f915081905080610877565b6001600160a01b0384165f908152600260205260409020546006546b033b2e3c9fd0803ce8000000906107c082846110a2565b6107ca91906110bf565b6006549095506107e46969e10de76676d0800000846110a2565b6107ee91906110bf565b82116107fa575f610825565b6006546108116969e10de76676d0800000846110a2565b61081b91906110bf565b61082590836110de565b600a546006546001600160a01b0389165f908152600560205260409020549296506064926108549085906110a2565b61085e91906110bf565b61086891906110a2565b61087291906110bf565b925050505b9193909250565b610886610f82565b61088f5f610fdb565b565b60075460ff166108d85760405162461bcd60e51b815260206004820152601260248201527153616c65206973206e6f742061637469766560701b604482015260640161048e565b60085442101561092a5760405162461bcd60e51b815260206004820152601860248201527f53616c6520686173206e6f742073746172746564207965740000000000000000604482015260640161048e565b60095442111561096d5760405162461bcd60e51b815260206004820152600e60248201526d14d85b19481a185cc8195b99195960921b604482015260640161048e565b5f34116109bc5760405162461bcd60e51b815260206004820152601860248201527f436f6e747269627574696f6e206d757374206265203e20300000000000000000604482015260640161048e565b335f9081526002602052604090205469010f0cf064dd59200000906109e29034906110f1565b1115610a295760405162461bcd60e51b815260206004820152601660248201527504578636565647320696e646976696475616c206361760541b604482015260640161048e565b335f90815260026020526040812080543492839291610a499084906110f1565b925050819055508060065f828254610a6191906110f1565b90915550506001600160a01b03821615801590610a8757506001600160a01b0382163314155b8015610aa85750335f908152600360205260409020546001600160a01b0316155b15610afe57335f90815260036020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352600590915281208054839290610af39084906110f1565b90915550610b559050565b335f908152600360205260409020546001600160a01b031615610b5557335f908152600360209081526040808320546001600160a01b03168352600590915281208054839290610b4f9084906110f1565b90915550505b6040518181526001600160a01b0383169033907fd782c85a6e36ccad8c0a0438cbd8ac1deb2d934d5d7f0931dce0c787ef1096e79060200160405180910390a35050565b610ba1610f82565b5f6969e10de76676d08000004711610bb95747610bc5565b6969e10de76676d08000005b9050610bd85f546001600160a01b031690565b6001600160a01b03166108fc8290811502906040515f60405180830381858888f19350505050158015610c0d573d5f803e3d5ffd5b5050565b610c19610f82565b600a811115610c6a5760405162461bcd60e51b815260206004820152601c60248201527f526566657272616c2070657263656e7461676520746f6f206869676800000000604482015260640161048e565b600a8190556040518181527f19442b8628d48f50974606261c2be961f20e88dd787145ea2e83b5e2ca82cd889060200160405180910390a150565b610cad610f82565b808210610d075760405162461bcd60e51b815260206004820152602260248201527f53746172742074696d65206d757374206265206265666f726520656e642074696044820152616d6560f01b606482015260840161048e565b6008829055600981905560408051838152602081018390527f289f199a6826eaa50db99d09a0c24ca53a167821078e605c8d0aa7d43c0166fd910160405180910390a15050565b610d56610f82565b5f6969e10de76676d08000006b033b2e3c9fd0803ce8000000600654610d7c91906110a2565b610d8691906110bf565b90505f610d9f826b033b2e3c9fd0803ce80000006110de565b90505f8111610df05760405162461bcd60e51b815260206004820152601a60248201527f4e6f20756e736f6c6420746f6b656e7320617661696c61626c65000000000000604482015260640161048e565b6001546001600160a01b031663a9059cbb610e125f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610e5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e809190611104565b505050565b610e8d610f82565b60075460ff16610ed55760405162461bcd60e51b815260206004820152601360248201527214d85b1948185b1c9958591e4818db1bdcd959606a1b604482015260640161048e565b6007805460ff191690556040517f4c013bd73202fde3c7cfe26ca486d0882f2c5b2fc9c761b15212f759bd2347dd905f90a1565b610f11610f82565b6001600160a01b038116610f765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161048e565b610f7f81610fdb565b50565b5f546001600160a01b0316331461088f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161048e565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121561103a575f80fd5b81356001600160a01b0381168114611050575f80fd5b9392505050565b5f60208284031215611067575f80fd5b5035919050565b5f806040838503121561107f575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176110b9576110b961108e565b92915050565b5f826110d957634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156110b9576110b961108e565b808201808211156110b9576110b961108e565b5f60208284031215611114575f80fd5b81518015158114611050575f80fdfea2646970667358221220291eb4c7aca1f78b3b51f256a232d6a2d64e530839ee1b8ea43690bf9c01f87864736f6c63430008140033000000000000000000000000fc08df83c9702e731d3b976c520ac7b14fee3b60
Deployed Bytecode
0x608060405260043610610147575f3560e01c806379ac20b1116100b3578063a8d294051161006d578063a8d29405146103a6578063c8bdbfb6146103c3578063cbaaf1dc146103d7578063e985e367146103f6578063ee55efee14610415578063f2fde38b14610429575f80fd5b806379ac20b1146102db5780638da5cb5b146102ef57806396ea8b9c1461031f5780639ca423b314610334578063a0311bd414610368578063a7f3e70f14610387575f80fd5b80634e5e0134116101045780634e5e01341461021157806355fb77471461024b578063564566a814610276578063715018a61461029f57806373e888fd146102b357806378e97925146102c6575f80fd5b8063023f41471461014b5780630f3cf72c146101735780632c3c91c91461019e5780633197cbb6146101bb57806342e94c90146101d057806348c54b9d146101fb575b5f80fd5b348015610156575f80fd5b5061016060065481565b6040519081526020015b60405180910390f35b34801561017e575f80fd5b5061016061018d36600461102a565b60046020525f908152604090205481565b3480156101a9575f80fd5b506101606969e10de76676d080000081565b3480156101c6575f80fd5b5061016060095481565b3480156101db575f80fd5b506101606101ea36600461102a565b60026020525f908152604090205481565b348015610206575f80fd5b5061020f610448565b005b34801561021c575f80fd5b5061023061022b36600461102a565b610753565b6040805193845260208401929092529082015260600161016a565b348015610256575f80fd5b5061016061026536600461102a565b60056020525f908152604090205481565b348015610281575f80fd5b5060075461028f9060ff1681565b604051901515815260200161016a565b3480156102aa575f80fd5b5061020f61087e565b61020f6102c136600461102a565b610891565b3480156102d1575f80fd5b5061016060085481565b3480156102e6575f80fd5b5061020f610b99565b3480156102fa575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161016a565b34801561032a575f80fd5b50610160600a5481565b34801561033f575f80fd5b5061030761034e36600461102a565b60036020525f90815260409020546001600160a01b031681565b348015610373575f80fd5b5061020f610382366004611057565b610c11565b348015610392575f80fd5b5061020f6103a136600461106e565b610ca5565b3480156103b1575f80fd5b5061016069010f0cf064dd5920000081565b3480156103ce575f80fd5b5061020f610d4e565b3480156103e2575f80fd5b506101606b033b2e3c9fd0803ce800000081565b348015610401575f80fd5b50600154610307906001600160a01b031681565b348015610420575f80fd5b5061020f610e85565b348015610434575f80fd5b5061020f61044336600461102a565b610f09565b60075460ff16156104975760405162461bcd60e51b815260206004820152601460248201527353616c65206973207374696c6c2061637469766560601b60448201526064015b60405180910390fd5b60095442116104e15760405162461bcd60e51b815260206004820152601660248201527514d85b19481a185cc81b9bdd08195b991959081e595d60521b604482015260640161048e565b335f9081526002602052604090205461053c5760405162461bcd60e51b815260206004820181905260248201527f4e6f20636f6e747269627574696f6e7320746f20636c61696d20746f6b656e73604482015260640161048e565b335f9081526002602052604081205460065490916b033b2e3c9fd0803ce80000009161056883856110a2565b61057291906110bf565b90505f6006546969e10de76676d08000008561058e91906110a2565b61059891906110bf565b84116105a4575f6105cf565b6006546105bb6969e10de76676d0800000866110a2565b6105c591906110bf565b6105cf90856110de565b600a54600654335f908152600560205260408120549394509260649291906105f89088906110a2565b61060291906110bf565b61060c91906110a2565b61061691906110bf565b335f908152600460205260408120805492935083929091906106399084906110f1565b9091555050335f818152600260205260408120556001546001600160a01b03169063a9059cbb9061066a84876110f1565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156106b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d69190611104565b50811561070957604051339083156108fc029084905f818181858888f19350505050158015610707573d5f803e3d5ffd5b505b604080518481526020810184905290810182905233907fe49649ad7d04a14b0d2a43dae89f207c0822143ff6f88a6480e88907e4e5c5489060600160405180910390a25050505050565b5f805f6006545f148061077b57506001600160a01b0384165f90815260026020526040902054155b1561078d57505f915081905080610877565b6001600160a01b0384165f908152600260205260409020546006546b033b2e3c9fd0803ce8000000906107c082846110a2565b6107ca91906110bf565b6006549095506107e46969e10de76676d0800000846110a2565b6107ee91906110bf565b82116107fa575f610825565b6006546108116969e10de76676d0800000846110a2565b61081b91906110bf565b61082590836110de565b600a546006546001600160a01b0389165f908152600560205260409020549296506064926108549085906110a2565b61085e91906110bf565b61086891906110a2565b61087291906110bf565b925050505b9193909250565b610886610f82565b61088f5f610fdb565b565b60075460ff166108d85760405162461bcd60e51b815260206004820152601260248201527153616c65206973206e6f742061637469766560701b604482015260640161048e565b60085442101561092a5760405162461bcd60e51b815260206004820152601860248201527f53616c6520686173206e6f742073746172746564207965740000000000000000604482015260640161048e565b60095442111561096d5760405162461bcd60e51b815260206004820152600e60248201526d14d85b19481a185cc8195b99195960921b604482015260640161048e565b5f34116109bc5760405162461bcd60e51b815260206004820152601860248201527f436f6e747269627574696f6e206d757374206265203e20300000000000000000604482015260640161048e565b335f9081526002602052604090205469010f0cf064dd59200000906109e29034906110f1565b1115610a295760405162461bcd60e51b815260206004820152601660248201527504578636565647320696e646976696475616c206361760541b604482015260640161048e565b335f90815260026020526040812080543492839291610a499084906110f1565b925050819055508060065f828254610a6191906110f1565b90915550506001600160a01b03821615801590610a8757506001600160a01b0382163314155b8015610aa85750335f908152600360205260409020546001600160a01b0316155b15610afe57335f90815260036020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352600590915281208054839290610af39084906110f1565b90915550610b559050565b335f908152600360205260409020546001600160a01b031615610b5557335f908152600360209081526040808320546001600160a01b03168352600590915281208054839290610b4f9084906110f1565b90915550505b6040518181526001600160a01b0383169033907fd782c85a6e36ccad8c0a0438cbd8ac1deb2d934d5d7f0931dce0c787ef1096e79060200160405180910390a35050565b610ba1610f82565b5f6969e10de76676d08000004711610bb95747610bc5565b6969e10de76676d08000005b9050610bd85f546001600160a01b031690565b6001600160a01b03166108fc8290811502906040515f60405180830381858888f19350505050158015610c0d573d5f803e3d5ffd5b5050565b610c19610f82565b600a811115610c6a5760405162461bcd60e51b815260206004820152601c60248201527f526566657272616c2070657263656e7461676520746f6f206869676800000000604482015260640161048e565b600a8190556040518181527f19442b8628d48f50974606261c2be961f20e88dd787145ea2e83b5e2ca82cd889060200160405180910390a150565b610cad610f82565b808210610d075760405162461bcd60e51b815260206004820152602260248201527f53746172742074696d65206d757374206265206265666f726520656e642074696044820152616d6560f01b606482015260840161048e565b6008829055600981905560408051838152602081018390527f289f199a6826eaa50db99d09a0c24ca53a167821078e605c8d0aa7d43c0166fd910160405180910390a15050565b610d56610f82565b5f6969e10de76676d08000006b033b2e3c9fd0803ce8000000600654610d7c91906110a2565b610d8691906110bf565b90505f610d9f826b033b2e3c9fd0803ce80000006110de565b90505f8111610df05760405162461bcd60e51b815260206004820152601a60248201527f4e6f20756e736f6c6420746f6b656e7320617661696c61626c65000000000000604482015260640161048e565b6001546001600160a01b031663a9059cbb610e125f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610e5c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e809190611104565b505050565b610e8d610f82565b60075460ff16610ed55760405162461bcd60e51b815260206004820152601360248201527214d85b1948185b1c9958591e4818db1bdcd959606a1b604482015260640161048e565b6007805460ff191690556040517f4c013bd73202fde3c7cfe26ca486d0882f2c5b2fc9c761b15212f759bd2347dd905f90a1565b610f11610f82565b6001600160a01b038116610f765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161048e565b610f7f81610fdb565b50565b5f546001600160a01b0316331461088f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161048e565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121561103a575f80fd5b81356001600160a01b0381168114611050575f80fd5b9392505050565b5f60208284031215611067575f80fd5b5035919050565b5f806040838503121561107f575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176110b9576110b961108e565b92915050565b5f826110d957634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156110b9576110b961108e565b808201808211156110b9576110b961108e565b5f60208284031215611114575f80fd5b81518015158114611050575f80fdfea2646970667358221220291eb4c7aca1f78b3b51f256a232d6a2d64e530839ee1b8ea43690bf9c01f87864736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fc08df83c9702e731d3b976c520ac7b14fee3b60
-----Decoded View---------------
Arg [0] : _saleToken (address): 0xfc08Df83C9702E731d3b976C520Ac7b14feE3b60
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000fc08df83c9702e731d3b976c520ac7b14fee3b60
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.