Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 557 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim Tge Tokens | 16963596 | 657 days ago | IN | 0 ETH | 0.00197687 | ||||
Claim Locked Tok... | 16362245 | 741 days ago | IN | 0 ETH | 0.00399831 | ||||
Claim Locked Tok... | 15882124 | 808 days ago | IN | 0 ETH | 0.00112451 | ||||
Transfer | 14980256 | 946 days ago | IN | 0.03738471 ETH | 0.00160793 | ||||
Claim Tge Tokens | 14423494 | 1035 days ago | IN | 0 ETH | 0.00075021 | ||||
Claim Locked Tok... | 13932495 | 1111 days ago | IN | 0 ETH | 0.01007727 | ||||
Claim Locked Tok... | 13890256 | 1117 days ago | IN | 0 ETH | 0.0094585 | ||||
Claim Tge Tokens | 13862815 | 1122 days ago | IN | 0 ETH | 0.00686319 | ||||
Claim Locked Tok... | 13842389 | 1125 days ago | IN | 0 ETH | 0.00810696 | ||||
Claim Locked Tok... | 13837244 | 1126 days ago | IN | 0 ETH | 0.00636064 | ||||
Claim Locked Tok... | 13821620 | 1128 days ago | IN | 0 ETH | 0.00507179 | ||||
Claim Tge Tokens | 13758091 | 1138 days ago | IN | 0 ETH | 0.0040799 | ||||
Claim Locked Tok... | 13744995 | 1140 days ago | IN | 0 ETH | 0.01067165 | ||||
Claim Locked Tok... | 13724267 | 1143 days ago | IN | 0 ETH | 0.00843987 | ||||
Claim Locked Tok... | 13649059 | 1155 days ago | IN | 0 ETH | 0.00774843 | ||||
Claim Locked Tok... | 13642212 | 1156 days ago | IN | 0 ETH | 0.01623855 | ||||
Claim Locked Tok... | 13624906 | 1159 days ago | IN | 0 ETH | 0.00999212 | ||||
Claim Locked Tok... | 13590385 | 1165 days ago | IN | 0 ETH | 0.02308558 | ||||
Claim Locked Tok... | 13590368 | 1165 days ago | IN | 0 ETH | 0.01153728 | ||||
Claim Locked Tok... | 13590339 | 1165 days ago | IN | 0 ETH | 0.00747907 | ||||
Claim Locked Tok... | 13588539 | 1165 days ago | IN | 0 ETH | 0.01239192 | ||||
Claim Locked Tok... | 13568208 | 1168 days ago | IN | 0 ETH | 0.00587946 | ||||
Claim Tge Tokens | 13560394 | 1169 days ago | IN | 0 ETH | 0.01037711 | ||||
Claim Locked Tok... | 13517060 | 1176 days ago | IN | 0 ETH | 0.00986581 | ||||
Claim Locked Tok... | 13496463 | 1179 days ago | IN | 0 ETH | 0.01098019 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
12749160 | 1296 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
InvestorsVesting
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.4; import '@openzeppelin/contracts/access/Ownable.sol'; import '@openzeppelin/contracts/utils/math/SafeMath.sol'; import './interfaces/IOneUp.sol'; import './interfaces/IVesting.sol'; contract InvestorsVesting is IVesting, Ownable { using SafeMath for uint256; uint256 public start; uint256 public finish; uint256 public constant RATE_BASE = 10000; // 100% uint256 public constant VESTING_DELAY = 90 days; IOneUp public immutable oneUpToken; struct Investor { // If user keep his tokens during the all vesting delay // He becomes privileged user and will be allowed to do some extra stuff bool isPrivileged; // Tge tokens will be available for claiming immediately after UNI liquidity creation // Users will receive all available TGE tokens with 1 transaction uint256 tgeTokens; // Released locked tokens shows amount of tokens, which user already received uint256 releasedLockedTokens; // Total locked tokens shows total amount, which user should receive in general uint256 totalLockedTokens; } mapping(address => Investor) internal _investors; event NewPrivilegedUser(address investor); event TokensReceived(address investor, uint256 amount, bool isLockedTokens); // ------------------------ // CONSTRUCTOR // ------------------------ constructor(address token_) { oneUpToken = IOneUp(token_); } // ------------------------ // SETTERS (ONLY PRE-SALE) // ------------------------ /// @notice Add investor and receivable amount for future claiming /// @dev This method can be called only by Public sale contract, during the public sale /// @param investor Address of investor /// @param amount Tokens amount which investor should receive in general /// @param lockPercent Which percent of tokens should be available immediately (after start), and which should be locked function submit( address investor, uint256 amount, uint256 lockPercent ) public override onlyOwner { require(start == 0, 'submit: Can not be added after liquidity pool creation!'); uint256 tgeTokens = amount.mul(lockPercent).div(RATE_BASE); uint256 lockedAmount = amount.sub(tgeTokens); _investors[investor].tgeTokens = _investors[investor].tgeTokens.add(tgeTokens); _investors[investor].totalLockedTokens = _investors[investor].totalLockedTokens.add(lockedAmount); } /// @notice Remove investor data /// @dev Owner will remove investors data if they called emergency exit method /// @param investor Address of investor function reset(address investor) public override onlyOwner { delete _investors[investor]; } /// @notice The same as submit, but for multiply investors /// @dev Provided arrays should have the same length /// @param investors Array of investors /// @param amounts Array of receivable amounts /// @param lockPercent Which percent of tokens should be available immediately (after start), and which should be locked function submitMulti( address[] memory investors, uint256[] memory amounts, uint256 lockPercent ) external override onlyOwner { uint256 investorsLength = investors.length; for (uint i = 0; i < investorsLength; i++) { submit(investors[i], amounts[i], lockPercent); } } /// @notice Start vesting process /// @dev After this method investors can claim their tokens function setStart() external override onlyOwner { start = block.timestamp; finish = start.add(VESTING_DELAY); } // ------------------------ // SETTERS (ONLY CONTRIBUTOR) // ------------------------ /// @notice Claim TGE tokens immediately after start /// @dev Can be called once for each investor function claimTgeTokens() external override { require(start > 0, 'claimTgeTokens: TGE tokens not available now!'); // Get user available TGE tokens uint256 amount = _investors[msg.sender].tgeTokens; require(amount > 0, 'claimTgeTokens: No available tokens!'); // Update user available TGE balance _investors[msg.sender].tgeTokens = 0; // Mint tokens to user address oneUpToken.mint(msg.sender, amount); emit TokensReceived(msg.sender, amount, false); } /// @notice Claim locked tokens function claimLockedTokens() external override { require(start > 0, 'claimLockedTokens: Locked tokens not available now!'); // Get user releasable tokens uint256 availableAmount = _releasableAmount(msg.sender); require(availableAmount > 0, 'claimLockedTokens: No available tokens!'); // If investors claim all tokens after vesting finish they become privileged // No need to validate flag every time, as users will claim all tokens with this method if (_investors[msg.sender].releasedLockedTokens == 0 && block.timestamp > finish) { _investors[msg.sender].isPrivileged = true; emit NewPrivilegedUser(msg.sender); } // Update user released locked tokens amount _investors[msg.sender].releasedLockedTokens = _investors[msg.sender].releasedLockedTokens.add(availableAmount); // Mint tokens to user address oneUpToken.mint(msg.sender, availableAmount); emit TokensReceived(msg.sender, availableAmount, true); } // ------------------------ // GETTERS // ------------------------ /// @notice Get current available locked tokens /// @param investor address function getReleasableLockedTokens(address investor) external override view returns (uint256) { return _releasableAmount(investor); } /// @notice Get investor data /// @param investor address function getUserData(address investor) external override view returns ( uint256 tgeAmount, uint256 releasedLockedTokens, uint256 totalLockedTokens ) { return ( _investors[investor].tgeTokens, _investors[investor].releasedLockedTokens, _investors[investor].totalLockedTokens ); } /// @notice Is investor privileged or not, it will be used from external contracts /// @param account user address function isPrivilegedInvestor(address account) external override view returns (bool) { return _investors[account].isPrivileged; } // ------------------------ // INTERNAL // ------------------------ function _releasableAmount(address investor) private view returns (uint256) { return _vestedAmount(investor).sub(_investors[investor].releasedLockedTokens); } function _vestedAmount(address investor) private view returns (uint256) { uint256 userMaxTokens = _investors[investor].totalLockedTokens; if (start == 0 || block.timestamp < start) { return 0; } else if (block.timestamp >= finish) { return userMaxTokens; } else { uint256 timeSinceStart = block.timestamp.sub(start); return userMaxTokens.mul(timeSinceStart).div(VESTING_DELAY); } } function getStartTime() external view returns (uint256) { return start; } }
// SPDX-License-Identifier: MIT 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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), 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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.4; import '@openzeppelin/contracts/token/ERC20/IERC20.sol'; interface IOneUp is IERC20 { function burn(uint256 amount) external; function setTradingStart(uint256 time) external; function mint(address to, uint256 value) external; }
//SPDX-License-Identifier: Unlicensed pragma solidity 0.8.4; interface IVesting { function submit(address investor, uint256 amount, uint256 lockPercent) external; function submitMulti(address[] memory investors, uint256[] memory amounts, uint256 lockPercent) external; function setStart() external; function claimTgeTokens() external; function claimLockedTokens() external; function reset(address investor) external; function isPrivilegedInvestor(address account) external view returns (bool); function getReleasableLockedTokens(address investor) external view returns (uint256); function getUserData(address investor) external view returns (uint256 tgeAmount, uint256 releasedLockedTokens, uint256 totalLockedTokens); }
// 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) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 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); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"investor","type":"address"}],"name":"NewPrivilegedUser","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":"address","name":"investor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"isLockedTokens","type":"bool"}],"name":"TokensReceived","type":"event"},{"inputs":[],"name":"RATE_BASE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VESTING_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimLockedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTgeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"investor","type":"address"}],"name":"getReleasableLockedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"investor","type":"address"}],"name":"getUserData","outputs":[{"internalType":"uint256","name":"tgeAmount","type":"uint256"},{"internalType":"uint256","name":"releasedLockedTokens","type":"uint256"},{"internalType":"uint256","name":"totalLockedTokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPrivilegedInvestor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oneUpToken","outputs":[{"internalType":"contract IOneUp","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"investor","type":"address"}],"name":"reset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"investor","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lockPercent","type":"uint256"}],"name":"submit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"investors","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256","name":"lockPercent","type":"uint256"}],"name":"submitMulti","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b50604051610f94380380610f9483398101604081905261002f91610085565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060601b6001600160601b0319166080526100b3565b600060208284031215610096578081fd5b81516001600160a01b03811681146100ac578182fd5b9392505050565b60805160601c610eb56100df600039600081816102260152818161056c01526107f10152610eb56000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638da5cb5b116100a2578063c828371e11610071578063c828371e14610219578063d197c4c814610221578063d56b288914610248578063f2fde38b14610251578063ffc9896b1461026457600080fd5b80638da5cb5b146101d0578063a32b2b2e146101f5578063b57c0be4146101fd578063be9a65551461021057600080fd5b80633b9c7ac2116100e95780633b9c7ac2146101675780634faacb1d1461016f5780636b8ab97d146101ab5780636dcb5c5b146101be578063715018a6146101c857600080fd5b80630873c6ec1461011b578063291323051461013757806335975a371461014a5780633a2e38b014610154575b600080fd5b61012461271081565b6040519081526020015b60405180910390f35b610124610145366004610c2a565b6102bd565b6101526102ce565b005b610152610162366004610c76565b610319565b6101526103c2565b61019b61017d366004610c2a565b6001600160a01b031660009081526003602052604090205460ff1690565b604051901515815260200161012e565b6101526101b9366004610c2a565b610611565b6101246276a70081565b61015261066e565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161012e565b6101526106e2565b61015261020b366004610c44565b61088f565b61012460015481565b600154610124565b6101dd7f000000000000000000000000000000000000000000000000000000000000000081565b61012460025481565b61015261025f366004610c2a565b6109d4565b6102a2610272366004610c2a565b6001600160a01b031660009081526003602081905260409091206001810154600282015491909201549192909190565b6040805193845260208401929092529082015260600161012e565b60006102c882610abe565b92915050565b6000546001600160a01b031633146103015760405162461bcd60e51b81526004016102f890610d40565b60405180910390fd5b426001819055610314906276a700610aed565b600255565b6000546001600160a01b031633146103435760405162461bcd60e51b81526004016102f890610d40565b825160005b818110156103bb576103a985828151811061037357634e487b7160e01b600052603260045260246000fd5b602002602001015185838151811061039b57634e487b7160e01b600052603260045260246000fd5b60200260200101518561088f565b806103b381610e38565b915050610348565b5050505050565b6000600154116104305760405162461bcd60e51b815260206004820152603360248201527f636c61696d4c6f636b6564546f6b656e733a204c6f636b656420746f6b656e73604482015272206e6f7420617661696c61626c65206e6f772160681b60648201526084016102f8565b600061043b33610abe565b90506000811161049d5760405162461bcd60e51b815260206004820152602760248201527f636c61696d4c6f636b6564546f6b656e733a204e6f20617661696c61626c6520604482015266746f6b656e732160c81b60648201526084016102f8565b336000908152600360205260409020600201541580156104be575060025442115b156105125733600081815260036020908152604091829020805460ff1916600117905590519182527fff6460dc94b1b73be93f67241b05d59d2e43a45c195938f3ea3d02c3c2d87537910160405180910390a15b3360009081526003602052604090206002015461052f9082610aed565b33600081815260036020526040908190206002019290925590516340c10f1960e01b81526004810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156105b057600080fd5b505af11580156105c4573d6000803e3d6000fd5b505060408051338152602081018590526001918101919091527f34ee0291988a40d2f041e289f7387ac8a7414efb5c48f1ea9b1ff05ed1c2fbe5925060600190505b60405180910390a150565b6000546001600160a01b0316331461063b5760405162461bcd60e51b81526004016102f890610d40565b6001600160a01b031660009081526003602081905260408220805460ff1916815560018101839055600281018390550155565b6000546001600160a01b031633146106985760405162461bcd60e51b81526004016102f890610d40565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006001541161074a5760405162461bcd60e51b815260206004820152602d60248201527f636c61696d546765546f6b656e733a2054474520746f6b656e73206e6f74206160448201526c7661696c61626c65206e6f772160981b60648201526084016102f8565b33600090815260036020526040902060010154806107b65760405162461bcd60e51b8152602060048201526024808201527f636c61696d546765546f6b656e733a204e6f20617661696c61626c6520746f6b604482015263656e732160e01b60648201526084016102f8565b3360008181526003602052604080822060010191909155516340c10f1960e01b81526004810191909152602481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b505060408051338152602081018590526000918101919091527f34ee0291988a40d2f041e289f7387ac8a7414efb5c48f1ea9b1ff05ed1c2fbe592506060019050610606565b6000546001600160a01b031633146108b95760405162461bcd60e51b81526004016102f890610d40565b6001541561092f5760405162461bcd60e51b815260206004820152603760248201527f7375626d69743a2043616e206e6f74206265206164646564206166746572206c60448201527f697175696469747920706f6f6c206372656174696f6e2100000000000000000060648201526084016102f8565b60006109476127106109418585610b00565b90610b0c565b905060006109558483610b18565b6001600160a01b03861660009081526003602052604090206001015490915061097e9083610aed565b6001600160a01b0386166000908152600360208190526040909120600181019290925501546109ad9082610aed565b6001600160a01b039095166000908152600360208190526040909120019490945550505050565b6000546001600160a01b031633146109fe5760405162461bcd60e51b81526004016102f890610d40565b6001600160a01b038116610a635760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102f8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600360205260408120600201546102c890610ae784610b24565b90610b18565b6000610af98284610dca565b9392505050565b6000610af98284610e02565b6000610af98284610de2565b6000610af98284610e21565b6001600160a01b0381166000908152600360208190526040822001546001541580610b50575060015442105b15610b5e5750600092915050565b6002544210610b6d5792915050565b6000610b8460015442610b1890919063ffffffff16565b9050610b976276a7006109418484610b00565b949350505050565b80356001600160a01b0381168114610bb657600080fd5b919050565b600082601f830112610bcb578081fd5b81356020610be0610bdb83610da6565b610d75565b80838252828201915082860187848660051b8901011115610bff578586fd5b855b85811015610c1d57813584529284019290840190600101610c01565b5090979650505050505050565b600060208284031215610c3b578081fd5b610af982610b9f565b600080600060608486031215610c58578182fd5b610c6184610b9f565b95602085013595506040909401359392505050565b600080600060608486031215610c8a578283fd5b833567ffffffffffffffff80821115610ca1578485fd5b818601915086601f830112610cb4578485fd5b81356020610cc4610bdb83610da6565b8083825282820191508286018b848660051b8901011115610ce357898afd5b8996505b84871015610d0c57610cf881610b9f565b835260019690960195918301918301610ce7565b5097505087013592505080821115610d22578384fd5b50610d2f86828701610bbb565b925050604084013590509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715610d9e57610d9e610e69565b604052919050565b600067ffffffffffffffff821115610dc057610dc0610e69565b5060051b60200190565b60008219821115610ddd57610ddd610e53565b500190565b600082610dfd57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610e1c57610e1c610e53565b500290565b600082821015610e3357610e33610e53565b500390565b6000600019821415610e4c57610e4c610e53565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212203e792d8387bb00332a4618ef3929bc7461864db8031e98f8468cb610378a112f64736f6c63430008040033000000000000000000000000c86817249634ac209bc73fca1712bbd75e37407d
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c80638da5cb5b116100a2578063c828371e11610071578063c828371e14610219578063d197c4c814610221578063d56b288914610248578063f2fde38b14610251578063ffc9896b1461026457600080fd5b80638da5cb5b146101d0578063a32b2b2e146101f5578063b57c0be4146101fd578063be9a65551461021057600080fd5b80633b9c7ac2116100e95780633b9c7ac2146101675780634faacb1d1461016f5780636b8ab97d146101ab5780636dcb5c5b146101be578063715018a6146101c857600080fd5b80630873c6ec1461011b578063291323051461013757806335975a371461014a5780633a2e38b014610154575b600080fd5b61012461271081565b6040519081526020015b60405180910390f35b610124610145366004610c2a565b6102bd565b6101526102ce565b005b610152610162366004610c76565b610319565b6101526103c2565b61019b61017d366004610c2a565b6001600160a01b031660009081526003602052604090205460ff1690565b604051901515815260200161012e565b6101526101b9366004610c2a565b610611565b6101246276a70081565b61015261066e565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161012e565b6101526106e2565b61015261020b366004610c44565b61088f565b61012460015481565b600154610124565b6101dd7f000000000000000000000000c86817249634ac209bc73fca1712bbd75e37407d81565b61012460025481565b61015261025f366004610c2a565b6109d4565b6102a2610272366004610c2a565b6001600160a01b031660009081526003602081905260409091206001810154600282015491909201549192909190565b6040805193845260208401929092529082015260600161012e565b60006102c882610abe565b92915050565b6000546001600160a01b031633146103015760405162461bcd60e51b81526004016102f890610d40565b60405180910390fd5b426001819055610314906276a700610aed565b600255565b6000546001600160a01b031633146103435760405162461bcd60e51b81526004016102f890610d40565b825160005b818110156103bb576103a985828151811061037357634e487b7160e01b600052603260045260246000fd5b602002602001015185838151811061039b57634e487b7160e01b600052603260045260246000fd5b60200260200101518561088f565b806103b381610e38565b915050610348565b5050505050565b6000600154116104305760405162461bcd60e51b815260206004820152603360248201527f636c61696d4c6f636b6564546f6b656e733a204c6f636b656420746f6b656e73604482015272206e6f7420617661696c61626c65206e6f772160681b60648201526084016102f8565b600061043b33610abe565b90506000811161049d5760405162461bcd60e51b815260206004820152602760248201527f636c61696d4c6f636b6564546f6b656e733a204e6f20617661696c61626c6520604482015266746f6b656e732160c81b60648201526084016102f8565b336000908152600360205260409020600201541580156104be575060025442115b156105125733600081815260036020908152604091829020805460ff1916600117905590519182527fff6460dc94b1b73be93f67241b05d59d2e43a45c195938f3ea3d02c3c2d87537910160405180910390a15b3360009081526003602052604090206002015461052f9082610aed565b33600081815260036020526040908190206002019290925590516340c10f1960e01b81526004810191909152602481018290526001600160a01b037f000000000000000000000000c86817249634ac209bc73fca1712bbd75e37407d16906340c10f1990604401600060405180830381600087803b1580156105b057600080fd5b505af11580156105c4573d6000803e3d6000fd5b505060408051338152602081018590526001918101919091527f34ee0291988a40d2f041e289f7387ac8a7414efb5c48f1ea9b1ff05ed1c2fbe5925060600190505b60405180910390a150565b6000546001600160a01b0316331461063b5760405162461bcd60e51b81526004016102f890610d40565b6001600160a01b031660009081526003602081905260408220805460ff1916815560018101839055600281018390550155565b6000546001600160a01b031633146106985760405162461bcd60e51b81526004016102f890610d40565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006001541161074a5760405162461bcd60e51b815260206004820152602d60248201527f636c61696d546765546f6b656e733a2054474520746f6b656e73206e6f74206160448201526c7661696c61626c65206e6f772160981b60648201526084016102f8565b33600090815260036020526040902060010154806107b65760405162461bcd60e51b8152602060048201526024808201527f636c61696d546765546f6b656e733a204e6f20617661696c61626c6520746f6b604482015263656e732160e01b60648201526084016102f8565b3360008181526003602052604080822060010191909155516340c10f1960e01b81526004810191909152602481018290526001600160a01b037f000000000000000000000000c86817249634ac209bc73fca1712bbd75e37407d16906340c10f1990604401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b505060408051338152602081018590526000918101919091527f34ee0291988a40d2f041e289f7387ac8a7414efb5c48f1ea9b1ff05ed1c2fbe592506060019050610606565b6000546001600160a01b031633146108b95760405162461bcd60e51b81526004016102f890610d40565b6001541561092f5760405162461bcd60e51b815260206004820152603760248201527f7375626d69743a2043616e206e6f74206265206164646564206166746572206c60448201527f697175696469747920706f6f6c206372656174696f6e2100000000000000000060648201526084016102f8565b60006109476127106109418585610b00565b90610b0c565b905060006109558483610b18565b6001600160a01b03861660009081526003602052604090206001015490915061097e9083610aed565b6001600160a01b0386166000908152600360208190526040909120600181019290925501546109ad9082610aed565b6001600160a01b039095166000908152600360208190526040909120019490945550505050565b6000546001600160a01b031633146109fe5760405162461bcd60e51b81526004016102f890610d40565b6001600160a01b038116610a635760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102f8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600360205260408120600201546102c890610ae784610b24565b90610b18565b6000610af98284610dca565b9392505050565b6000610af98284610e02565b6000610af98284610de2565b6000610af98284610e21565b6001600160a01b0381166000908152600360208190526040822001546001541580610b50575060015442105b15610b5e5750600092915050565b6002544210610b6d5792915050565b6000610b8460015442610b1890919063ffffffff16565b9050610b976276a7006109418484610b00565b949350505050565b80356001600160a01b0381168114610bb657600080fd5b919050565b600082601f830112610bcb578081fd5b81356020610be0610bdb83610da6565b610d75565b80838252828201915082860187848660051b8901011115610bff578586fd5b855b85811015610c1d57813584529284019290840190600101610c01565b5090979650505050505050565b600060208284031215610c3b578081fd5b610af982610b9f565b600080600060608486031215610c58578182fd5b610c6184610b9f565b95602085013595506040909401359392505050565b600080600060608486031215610c8a578283fd5b833567ffffffffffffffff80821115610ca1578485fd5b818601915086601f830112610cb4578485fd5b81356020610cc4610bdb83610da6565b8083825282820191508286018b848660051b8901011115610ce357898afd5b8996505b84871015610d0c57610cf881610b9f565b835260019690960195918301918301610ce7565b5097505087013592505080821115610d22578384fd5b50610d2f86828701610bbb565b925050604084013590509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715610d9e57610d9e610e69565b604052919050565b600067ffffffffffffffff821115610dc057610dc0610e69565b5060051b60200190565b60008219821115610ddd57610ddd610e53565b500190565b600082610dfd57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610e1c57610e1c610e53565b500290565b600082821015610e3357610e33610e53565b500390565b6000600019821415610e4c57610e4c610e53565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212203e792d8387bb00332a4618ef3929bc7461864db8031e98f8468cb610378a112f64736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c86817249634ac209bc73fca1712bbd75e37407d
-----Decoded View---------------
Arg [0] : token_ (address): 0xC86817249634ac209bc73fCa1712bBd75E37407d
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c86817249634ac209bc73fca1712bbd75e37407d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.