More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 5,725 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 16299784 | 725 days ago | IN | 0 ETH | 0.00159166 | ||||
Withdraw | 15288477 | 871 days ago | IN | 0 ETH | 0.00040014 | ||||
Withdraw | 13987266 | 1078 days ago | IN | 0 ETH | 0.01777572 | ||||
Withdraw | 13959987 | 1082 days ago | IN | 0 ETH | 0.00701654 | ||||
Withdraw | 13888755 | 1093 days ago | IN | 0 ETH | 0.00742594 | ||||
Withdraw | 13888754 | 1093 days ago | IN | 0 ETH | 0.01199551 | ||||
Withdraw | 13650694 | 1130 days ago | IN | 0 ETH | 0.0021474 | ||||
Withdraw | 13607401 | 1137 days ago | IN | 0 ETH | 0.00892476 | ||||
Withdraw | 13606894 | 1137 days ago | IN | 0 ETH | 0.0086803 | ||||
Withdraw | 13597936 | 1139 days ago | IN | 0 ETH | 0.01215853 | ||||
Withdraw | 13530900 | 1149 days ago | IN | 0 ETH | 0.00849206 | ||||
Withdraw | 13511638 | 1152 days ago | IN | 0 ETH | 0.00915374 | ||||
Withdraw | 13511606 | 1152 days ago | IN | 0 ETH | 0.0110904 | ||||
Withdraw | 13485333 | 1156 days ago | IN | 0 ETH | 0.0040347 | ||||
Withdraw | 13483381 | 1157 days ago | IN | 0 ETH | 0.00386177 | ||||
Withdraw | 13479530 | 1157 days ago | IN | 0 ETH | 0.00288961 | ||||
Withdraw | 13479523 | 1157 days ago | IN | 0 ETH | 0.00334856 | ||||
Withdraw | 13478915 | 1157 days ago | IN | 0 ETH | 0.00361583 | ||||
Withdraw | 13478915 | 1157 days ago | IN | 0 ETH | 0.00556704 | ||||
Withdraw | 13469591 | 1159 days ago | IN | 0 ETH | 0.00818541 | ||||
Withdraw | 13415048 | 1167 days ago | IN | 0 ETH | 0.00662517 | ||||
Withdraw | 13404778 | 1169 days ago | IN | 0 ETH | 0.00420465 | ||||
Withdraw | 13401597 | 1169 days ago | IN | 0 ETH | 0.00531347 | ||||
Withdraw | 13401578 | 1169 days ago | IN | 0 ETH | 0.00740627 | ||||
Withdraw | 13391162 | 1171 days ago | IN | 0 ETH | 0.0056991 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Sorbettiere
Compiler Version
v0.8.3+commit.8d00100c
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-03-29 */ // 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; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @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); } /** * @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; } } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // Sorbettiere is a "semifredo of popsicle stand" this contract is created to provide single side farm for IFO of Popsicle Finance. // The contract is based on famous Masterchef contract (Ty guys for that) // It intakes one token and allows the user to farm another token. Due to the crosschain nature of Popsicle Stand we've swapped reward per block // to reward per second. Moreover, we've implemented safe transfer of reward instead of mint in Masterchef. // Future is crosschain... // The contract is ownable untill the DAO will be able to take over. Popsicle community shows that DAO is coming soon. // And the contract ownership will be transferred to other contract contract Sorbettiere is Ownable { using SafeERC20 for IERC20; // Info of each user. struct UserInfo { uint256 amount; // How many LP tokens the user has provided. uint256 rewardDebt; // Reward debt. See explanation below. uint256 remainingIceTokenReward; // ICE Tokens that weren't distributed for user per pool. // // We do some fancy math here. Basically, any point in time, the amount of ICE // entitled to a user but is pending to be distributed is: // // pending reward = (user.amount * pool.accICEPerShare) - user.rewardDebt // // Whenever a user deposits or withdraws Staked tokens to a pool. Here's what happens: // 1. The pool's `accICEPerShare` (and `lastRewardTime`) gets updated. // 2. User receives the pending reward sent to his/her address. // 3. User's `amount` gets updated. // 4. User's `rewardDebt` gets updated. } // Info of each pool. struct PoolInfo { IERC20 stakingToken; // Contract address of staked token uint256 stakingTokenTotalAmount; //Total amount of deposited tokens uint256 accIcePerShare; // Accumulated ICE per share, times 1e12. See below. uint32 lastRewardTime; // Last timestamp number that ICE distribution occurs. uint16 allocPoint; // How many allocation points assigned to this pool. ICE to distribute per second. } IERC20 immutable public ice; // The ICE TOKEN!! uint256 public icePerSecond; // Ice tokens vested per second. PoolInfo[] public poolInfo; // Info of each pool. mapping(uint256 => mapping(address => UserInfo)) public userInfo; // Info of each user that stakes tokens. uint256 public totalAllocPoint = 0; // Total allocation poitns. Must be the sum of all allocation points in all pools. uint32 immutable public startTime; // The timestamp when ICE farming starts. uint32 public endTime; // Time on which the reward calculation should end event Deposit(address indexed user, uint256 indexed pid, uint256 amount); event Withdraw(address indexed user, uint256 indexed pid, uint256 amount); event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount); constructor( IERC20 _ice, uint256 _icePerSecond, uint32 _startTime ) { ice = _ice; icePerSecond = _icePerSecond; startTime = _startTime; endTime = _startTime + 7 days; } function changeEndTime(uint32 addSeconds) external onlyOwner { endTime += addSeconds; } // Changes Ice token reward per second. Use this function to moderate the `lockup amount`. Essentially this function changes the amount of the reward // which is entitled to the user for his token staking by the time the `endTime` is passed. //Good practice to update pools without messing up the contract function setIcePerSecond(uint256 _icePerSecond, bool _withUpdate) external onlyOwner { if (_withUpdate) { massUpdatePools(); } icePerSecond= _icePerSecond; } // How many pools are in the contract function poolLength() external view returns (uint256) { return poolInfo.length; } // Add a new staking token to the pool. Can only be called by the owner. // VERY IMPORTANT NOTICE // ----------- DO NOT add the same staking token more than once. Rewards will be messed up if you do. ------------- // Good practice to update pools without messing up the contract function add( uint16 _allocPoint, IERC20 _stakingToken, bool _withUpdate ) external onlyOwner { if (_withUpdate) { massUpdatePools(); } uint256 lastRewardTime = block.timestamp > startTime ? block.timestamp : startTime; totalAllocPoint +=_allocPoint; poolInfo.push( PoolInfo({ stakingToken: _stakingToken, stakingTokenTotalAmount: 0, allocPoint: _allocPoint, lastRewardTime: uint32(lastRewardTime), accIcePerShare: 0 }) ); } // Update the given pool's ICE allocation point. Can only be called by the owner. // Good practice to update pools without messing up the contract function set( uint256 _pid, uint16 _allocPoint, bool _withUpdate ) external onlyOwner { if (_withUpdate) { massUpdatePools(); } totalAllocPoint = totalAllocPoint - poolInfo[_pid].allocPoint + _allocPoint; poolInfo[_pid].allocPoint = _allocPoint; } // Return reward multiplier over the given _from to _to time. function getMultiplier(uint256 _from, uint256 _to) public view returns (uint256) { _from = _from > startTime ? _from : startTime; if (_from > endTime || _to < startTime) { return 0; } if (_to > endTime) { return endTime - _from; } return _to - _from; } // View function to see pending ICE on frontend. function pendingIce(uint256 _pid, address _user) external view returns (uint256) { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][_user]; uint256 accIcePerShare = pool.accIcePerShare; if (block.timestamp > pool.lastRewardTime && pool.stakingTokenTotalAmount != 0) { uint256 multiplier = getMultiplier(pool.lastRewardTime, block.timestamp); uint256 iceReward = multiplier * icePerSecond * pool.allocPoint / totalAllocPoint; accIcePerShare += iceReward * 1e12 / pool.stakingTokenTotalAmount; } return user.amount * accIcePerShare / 1e12 - user.rewardDebt + user.remainingIceTokenReward; } // Update reward vairables for all pools. Be careful of gas spending! function massUpdatePools() public { uint256 length = poolInfo.length; for (uint256 pid = 0; pid < length; ++pid) { updatePool(pid); } } // Update reward variables of the given pool to be up-to-date. function updatePool(uint256 _pid) public { PoolInfo storage pool = poolInfo[_pid]; if (block.timestamp <= pool.lastRewardTime) { return; } if (pool.stakingTokenTotalAmount == 0) { pool.lastRewardTime = uint32(block.timestamp); return; } uint256 multiplier = getMultiplier(pool.lastRewardTime, block.timestamp); uint256 iceReward = multiplier * icePerSecond * pool.allocPoint / totalAllocPoint; pool.accIcePerShare += iceReward * 1e12 / pool.stakingTokenTotalAmount; pool.lastRewardTime = uint32(block.timestamp); } // Deposit staking tokens to Sorbettiere for ICE allocation. function deposit(uint256 _pid, uint256 _amount) public { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; updatePool(_pid); if (user.amount > 0) { uint256 pending = user.amount * pool.accIcePerShare / 1e12 - user.rewardDebt + user.remainingIceTokenReward; user.remainingIceTokenReward = safeRewardTransfer(msg.sender, pending); } pool.stakingToken.safeTransferFrom( address(msg.sender), address(this), _amount ); user.amount += _amount; pool.stakingTokenTotalAmount += _amount; user.rewardDebt = user.amount * pool.accIcePerShare / 1e12; emit Deposit(msg.sender, _pid, _amount); } // Withdraw staked tokens from Sorbettiere. function withdraw(uint256 _pid, uint256 _amount) public { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; require(user.amount >= _amount, "Sorbettiere: you cant eat that much popsicles"); updatePool(_pid); uint256 pending = user.amount * pool.accIcePerShare / 1e12 - user.rewardDebt + user.remainingIceTokenReward; user.remainingIceTokenReward = safeRewardTransfer(msg.sender, pending); user.amount -= _amount; pool.stakingTokenTotalAmount -= _amount; user.rewardDebt = user.amount * pool.accIcePerShare / 1e12; pool.stakingToken.safeTransfer(address(msg.sender), _amount); emit Withdraw(msg.sender, _pid, _amount); } // Safe ice transfer function. Just in case if the pool does not have enough ICE token, // The function returns the amount which is owed to the user function safeRewardTransfer(address _to, uint256 _amount) internal returns(uint256) { uint256 iceTokenBalance = ice.balanceOf(address(this)); if (iceTokenBalance == 0) { //save some gas fee return _amount; } if (_amount > iceTokenBalance) { //save some gas fee ice.safeTransfer(_to, iceTokenBalance); return _amount - iceTokenBalance; } ice.safeTransfer(_to, _amount); return 0; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract IERC20","name":"_ice","type":"address"},{"internalType":"uint256","name":"_icePerSecond","type":"uint256"},{"internalType":"uint32","name":"_startTime","type":"uint32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","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":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint16","name":"_allocPoint","type":"uint16"},{"internalType":"contract IERC20","name":"_stakingToken","type":"address"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"addSeconds","type":"uint32"}],"name":"changeEndTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ice","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"icePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingIce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"stakingToken","type":"address"},{"internalType":"uint256","name":"stakingTokenTotalAmount","type":"uint256"},{"internalType":"uint256","name":"accIcePerShare","type":"uint256"},{"internalType":"uint32","name":"lastRewardTime","type":"uint32"},{"internalType":"uint16","name":"allocPoint","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint16","name":"_allocPoint","type":"uint16"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_icePerSecond","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"setIcePerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","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":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"},{"internalType":"uint256","name":"remainingIceTokenReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c0604052600060045534801561001557600080fd5b506040516200188138038062001881833981016040819052610036916100d0565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160601b0319606084901b1660805260018290556001600160e01b031960e082901b1660a0526100ad8162093a80610125565b6005805463ffffffff191663ffffffff9290921691909117905550610159915050565b6000806000606084860312156100e4578283fd5b83516001600160a01b03811681146100fa578384fd5b60208501516040860151919450925063ffffffff8116811461011a578182fd5b809150509250925092565b600063ffffffff80831681851680830382111561015057634e487b7160e01b84526011600452602484fd5b01949350505050565b60805160601c60a05160e01c6116c4620001bd60003960008181610255015281816107510152818161077e015281816107c00152818161086f015261089c0152600081816101f301528181610f5d01528181610ffc015261104201526116c46000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806378e97925116100b8578063cf42947b1161007c578063cf42947b14610303578063d1c1b4a814610316578063e2bbb15814610329578063eaa6ef041461033c578063f2fde38b1461034f578063f4cd1b021461036257610137565b806378e97925146102505780638da5cb5b146102775780638dbb1e3a1461028857806393f1a40b1461029b57806398ec8da6146102f057610137565b8063441a3e70116100ff578063441a3e70146101d95780634c2a860d146101ee57806351eb05a61461022d578063630b5ba114610240578063715018a61461024857610137565b8063081e3eda1461013c5780631526fe271461015357806317caf6f1146101a25780631b2e7d55146101ab5780633197cbb6146101b4575b600080fd5b6002545b6040519081526020015b60405180910390f35b610166610161366004611408565b610375565b604080516001600160a01b03909616865260208601949094529284019190915263ffffffff16606083015261ffff16608082015260a00161014a565b61014060045481565b61014060015481565b6005546101c49063ffffffff1681565b60405163ffffffff909116815260200161014a565b6101ec6101e73660046114af565b6103cd565b005b6102157f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161014a565b6101ec61023b366004611408565b610590565b6101ec6106ae565b6101ec6106d9565b6101c47f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b0316610215565b6101406102963660046114af565b61074d565b6102d56102a9366004611438565b600360209081526000928352604080842090915290825290208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161014a565b6101ec6102fe3660046113c0565b610833565b6101ec6103113660046114d0565b610a0e565b6101ec61032436600461148b565b610a74565b6101ec6103373660046114af565b610b65565b6101ec61034a366004611467565b610cc5565b6101ec61035d366004611388565b610d03565b610140610370366004611438565b610ded565b6002818154811061038557600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919063ffffffff811690640100000000900461ffff1685565b6000600283815481106103f057634e487b7160e01b600052603260045260246000fd5b6000918252602080832086845260038252604080852033865290925292208054600490920290920192508311156104845760405162461bcd60e51b815260206004820152602d60248201527f536f7262657474696572653a20796f752063616e74206561742074686174206d60448201526c75636820706f707369636c657360981b60648201526084015b60405180910390fd5b61048d84610590565b60008160020154826001015464e8d4a51000856002015485600001546104b391906115d8565b6104bd91906115b8565b6104c791906115f7565b6104d19190611578565b90506104dd3382610f3b565b60028301558154849083906000906104f69084906115f7565b925050819055508383600101600082825461051191906115f7565b90915550506002830154825464e8d4a510009161052d916115d8565b61053791906115b8565b60018301558254610552906001600160a01b03163386611073565b604051848152859033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689060200160405180910390a35050505050565b6000600282815481106105b357634e487b7160e01b600052603260045260246000fd5b60009182526020909120600490910201600381015490915063ffffffff1642116105dd57506106ab565b600181015461060157600301805463ffffffff19164263ffffffff161790556106ab565b60038101546000906106199063ffffffff164261074d565b905060006004548360030160049054906101000a900461ffff1661ffff166001548461064591906115d8565b61064f91906115d8565b61065991906115b8565b60018401549091506106708264e8d4a510006115d8565b61067a91906115b8565b83600201600082825461068d9190611578565b90915550505050600301805463ffffffff19164263ffffffff161790555b50565b60025460005b818110156106d5576106c581610590565b6106ce8161163a565b90506106b4565b5050565b6000546001600160a01b031633146107035760405162461bcd60e51b815260040161047b90611543565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60007f000000000000000000000000000000000000000000000000000000000000000063ffffffff1683116107a8577f000000000000000000000000000000000000000000000000000000000000000063ffffffff166107aa565b825b60055490935063ffffffff168311806107e857507f000000000000000000000000000000000000000000000000000000000000000063ffffffff1682105b156107f55750600061082d565b60055463ffffffff168211156108205760055461081990849063ffffffff166115f7565b905061082d565b61082a83836115f7565b90505b92915050565b6000546001600160a01b0316331461085d5760405162461bcd60e51b815260040161047b90611543565b801561086b5761086b6106ae565b60007f000000000000000000000000000000000000000000000000000000000000000063ffffffff1642116108c6577f000000000000000000000000000000000000000000000000000000000000000063ffffffff166108c8565b425b90508361ffff16600460008282546108e09190611578565b90915550506040805160a0810182526001600160a01b03948516815260006020820181815292820181815263ffffffff9485166060840190815261ffff98891660808501908152600280546001810182559452935160049093027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054949099166001600160a01b03199094169390931790975592517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf82015591517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad083015593517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad1909101805494519095166401000000000265ffffffffffff199094169116179190911790915550565b6000546001600160a01b03163314610a385760405162461bcd60e51b815260040161047b90611543565b60058054829190600090610a5390849063ffffffff16611590565b92506101000a81548163ffffffff021916908363ffffffff16021790555050565b6000546001600160a01b03163314610a9e5760405162461bcd60e51b815260040161047b90611543565b8015610aac57610aac6106ae565b8161ffff1660028481548110610ad257634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160030160049054906101000a900461ffff1661ffff16600454610b0391906115f7565b610b0d9190611578565b6004819055508160028481548110610b3557634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160030160046101000a81548161ffff021916908361ffff160217905550505050565b600060028381548110610b8857634e487b7160e01b600052603260045260246000fd5b60009182526020808320868452600382526040808520338652909252922060049091029091019150610bb984610590565b805415610c175760008160020154826001015464e8d4a5100085600201548560000154610be691906115d8565b610bf091906115b8565b610bfa91906115f7565b610c049190611578565b9050610c103382610f3b565b6002830155505b8154610c2e906001600160a01b03163330866110db565b82816000016000828254610c429190611578565b9250508190555082826001016000828254610c5d9190611578565b90915550506002820154815464e8d4a5100091610c79916115d8565b610c8391906115b8565b6001820155604051838152849033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159060200160405180910390a350505050565b6000546001600160a01b03163314610cef5760405162461bcd60e51b815260040161047b90611543565b8015610cfd57610cfd6106ae565b50600155565b6000546001600160a01b03163314610d2d5760405162461bcd60e51b815260040161047b90611543565b6001600160a01b038116610d925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161047b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008060028481548110610e1157634e487b7160e01b600052603260045260246000fd5b60009182526020808320878452600380835260408086206001600160a01b038a168752909352919093206002600490930290930191820154908201549193509063ffffffff1642118015610e685750600183015415155b15610ef5576003830154600090610e859063ffffffff164261074d565b905060006004548560030160049054906101000a900461ffff1661ffff1660015484610eb191906115d8565b610ebb91906115d8565b610ec591906115b8565b6001860154909150610edc8264e8d4a510006115d8565b610ee691906115b8565b610ef09084611578565b925050505b60028201546001830154835464e8d4a5100090610f139085906115d8565b610f1d91906115b8565b610f2791906115f7565b610f319190611578565b9695505050505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015610f9f57600080fd5b505afa158015610fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd79190611420565b905080610fe7578291505061082d565b80831115611035576110236001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583611073565b61102d81846115f7565b91505061082d565b6110696001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585611073565b5060009392505050565b6040516001600160a01b0383166024820152604481018290526110d690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611119565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526111139085906323b872dd60e01b9060840161109f565b50505050565b600061116e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111eb9092919063ffffffff16565b8051909150156110d6578080602001905181019061118c91906113a4565b6110d65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161047b565b60606111fa8484600085611204565b90505b9392505050565b6060824710156112655760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161047b565b61126e85611333565b6112ba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161047b565b600080866001600160a01b031685876040516112d691906114f4565b60006040518083038185875af1925050503d8060008114611313576040519150601f19603f3d011682016040523d82523d6000602084013e611318565b606091505b509150915061132882828661133d565b979650505050505050565b803b15155b919050565b6060831561134c5750816111fd565b82511561135c5782518084602001fd5b8160405162461bcd60e51b815260040161047b9190611510565b803561ffff8116811461133857600080fd5b600060208284031215611399578081fd5b81356111fd8161166b565b6000602082840312156113b5578081fd5b81516111fd81611680565b6000806000606084860312156113d4578182fd5b6113dd84611376565b925060208401356113ed8161166b565b915060408401356113fd81611680565b809150509250925092565b600060208284031215611419578081fd5b5035919050565b600060208284031215611431578081fd5b5051919050565b6000806040838503121561144a578182fd5b82359150602083013561145c8161166b565b809150509250929050565b60008060408385031215611479578182fd5b82359150602083013561145c81611680565b60008060006060848603121561149f578283fd5b833592506113ed60208501611376565b600080604083850312156114c1578182fd5b50508035926020909101359150565b6000602082840312156114e1578081fd5b813563ffffffff811681146111fd578182fd5b6000825161150681846020870161160e565b9190910192915050565b600060208252825180602084015261152f81604085016020870161160e565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561158b5761158b611655565b500190565b600063ffffffff8083168185168083038211156115af576115af611655565b01949350505050565b6000826115d357634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156115f2576115f2611655565b500290565b60008282101561160957611609611655565b500390565b60005b83811015611629578181015183820152602001611611565b838111156111135750506000910152565b600060001982141561164e5761164e611655565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146106ab57600080fd5b80151581146106ab57600080fdfea264697066735822122021ba68ed0b63d07fbff55e0176898d39992981670cdf0df49207bb1fa5a7db9264736f6c63430008030033000000000000000000000000f16e81dce15b08f326220742020379b855b87df90000000000000000000000000000000000000000000000000427f6b722cbf2aa00000000000000000000000000000000000000000000000000000000606231c0
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101375760003560e01c806378e97925116100b8578063cf42947b1161007c578063cf42947b14610303578063d1c1b4a814610316578063e2bbb15814610329578063eaa6ef041461033c578063f2fde38b1461034f578063f4cd1b021461036257610137565b806378e97925146102505780638da5cb5b146102775780638dbb1e3a1461028857806393f1a40b1461029b57806398ec8da6146102f057610137565b8063441a3e70116100ff578063441a3e70146101d95780634c2a860d146101ee57806351eb05a61461022d578063630b5ba114610240578063715018a61461024857610137565b8063081e3eda1461013c5780631526fe271461015357806317caf6f1146101a25780631b2e7d55146101ab5780633197cbb6146101b4575b600080fd5b6002545b6040519081526020015b60405180910390f35b610166610161366004611408565b610375565b604080516001600160a01b03909616865260208601949094529284019190915263ffffffff16606083015261ffff16608082015260a00161014a565b61014060045481565b61014060015481565b6005546101c49063ffffffff1681565b60405163ffffffff909116815260200161014a565b6101ec6101e73660046114af565b6103cd565b005b6102157f000000000000000000000000f16e81dce15b08f326220742020379b855b87df981565b6040516001600160a01b03909116815260200161014a565b6101ec61023b366004611408565b610590565b6101ec6106ae565b6101ec6106d9565b6101c47f00000000000000000000000000000000000000000000000000000000606231c081565b6000546001600160a01b0316610215565b6101406102963660046114af565b61074d565b6102d56102a9366004611438565b600360209081526000928352604080842090915290825290208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161014a565b6101ec6102fe3660046113c0565b610833565b6101ec6103113660046114d0565b610a0e565b6101ec61032436600461148b565b610a74565b6101ec6103373660046114af565b610b65565b6101ec61034a366004611467565b610cc5565b6101ec61035d366004611388565b610d03565b610140610370366004611438565b610ded565b6002818154811061038557600080fd5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919063ffffffff811690640100000000900461ffff1685565b6000600283815481106103f057634e487b7160e01b600052603260045260246000fd5b6000918252602080832086845260038252604080852033865290925292208054600490920290920192508311156104845760405162461bcd60e51b815260206004820152602d60248201527f536f7262657474696572653a20796f752063616e74206561742074686174206d60448201526c75636820706f707369636c657360981b60648201526084015b60405180910390fd5b61048d84610590565b60008160020154826001015464e8d4a51000856002015485600001546104b391906115d8565b6104bd91906115b8565b6104c791906115f7565b6104d19190611578565b90506104dd3382610f3b565b60028301558154849083906000906104f69084906115f7565b925050819055508383600101600082825461051191906115f7565b90915550506002830154825464e8d4a510009161052d916115d8565b61053791906115b8565b60018301558254610552906001600160a01b03163386611073565b604051848152859033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689060200160405180910390a35050505050565b6000600282815481106105b357634e487b7160e01b600052603260045260246000fd5b60009182526020909120600490910201600381015490915063ffffffff1642116105dd57506106ab565b600181015461060157600301805463ffffffff19164263ffffffff161790556106ab565b60038101546000906106199063ffffffff164261074d565b905060006004548360030160049054906101000a900461ffff1661ffff166001548461064591906115d8565b61064f91906115d8565b61065991906115b8565b60018401549091506106708264e8d4a510006115d8565b61067a91906115b8565b83600201600082825461068d9190611578565b90915550505050600301805463ffffffff19164263ffffffff161790555b50565b60025460005b818110156106d5576106c581610590565b6106ce8161163a565b90506106b4565b5050565b6000546001600160a01b031633146107035760405162461bcd60e51b815260040161047b90611543565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60007f00000000000000000000000000000000000000000000000000000000606231c063ffffffff1683116107a8577f00000000000000000000000000000000000000000000000000000000606231c063ffffffff166107aa565b825b60055490935063ffffffff168311806107e857507f00000000000000000000000000000000000000000000000000000000606231c063ffffffff1682105b156107f55750600061082d565b60055463ffffffff168211156108205760055461081990849063ffffffff166115f7565b905061082d565b61082a83836115f7565b90505b92915050565b6000546001600160a01b0316331461085d5760405162461bcd60e51b815260040161047b90611543565b801561086b5761086b6106ae565b60007f00000000000000000000000000000000000000000000000000000000606231c063ffffffff1642116108c6577f00000000000000000000000000000000000000000000000000000000606231c063ffffffff166108c8565b425b90508361ffff16600460008282546108e09190611578565b90915550506040805160a0810182526001600160a01b03948516815260006020820181815292820181815263ffffffff9485166060840190815261ffff98891660808501908152600280546001810182559452935160049093027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace81018054949099166001600160a01b03199094169390931790975592517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf82015591517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad083015593517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad1909101805494519095166401000000000265ffffffffffff199094169116179190911790915550565b6000546001600160a01b03163314610a385760405162461bcd60e51b815260040161047b90611543565b60058054829190600090610a5390849063ffffffff16611590565b92506101000a81548163ffffffff021916908363ffffffff16021790555050565b6000546001600160a01b03163314610a9e5760405162461bcd60e51b815260040161047b90611543565b8015610aac57610aac6106ae565b8161ffff1660028481548110610ad257634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160030160049054906101000a900461ffff1661ffff16600454610b0391906115f7565b610b0d9190611578565b6004819055508160028481548110610b3557634e487b7160e01b600052603260045260246000fd5b906000526020600020906004020160030160046101000a81548161ffff021916908361ffff160217905550505050565b600060028381548110610b8857634e487b7160e01b600052603260045260246000fd5b60009182526020808320868452600382526040808520338652909252922060049091029091019150610bb984610590565b805415610c175760008160020154826001015464e8d4a5100085600201548560000154610be691906115d8565b610bf091906115b8565b610bfa91906115f7565b610c049190611578565b9050610c103382610f3b565b6002830155505b8154610c2e906001600160a01b03163330866110db565b82816000016000828254610c429190611578565b9250508190555082826001016000828254610c5d9190611578565b90915550506002820154815464e8d4a5100091610c79916115d8565b610c8391906115b8565b6001820155604051838152849033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159060200160405180910390a350505050565b6000546001600160a01b03163314610cef5760405162461bcd60e51b815260040161047b90611543565b8015610cfd57610cfd6106ae565b50600155565b6000546001600160a01b03163314610d2d5760405162461bcd60e51b815260040161047b90611543565b6001600160a01b038116610d925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161047b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008060028481548110610e1157634e487b7160e01b600052603260045260246000fd5b60009182526020808320878452600380835260408086206001600160a01b038a168752909352919093206002600490930290930191820154908201549193509063ffffffff1642118015610e685750600183015415155b15610ef5576003830154600090610e859063ffffffff164261074d565b905060006004548560030160049054906101000a900461ffff1661ffff1660015484610eb191906115d8565b610ebb91906115d8565b610ec591906115b8565b6001860154909150610edc8264e8d4a510006115d8565b610ee691906115b8565b610ef09084611578565b925050505b60028201546001830154835464e8d4a5100090610f139085906115d8565b610f1d91906115b8565b610f2791906115f7565b610f319190611578565b9695505050505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000f16e81dce15b08f326220742020379b855b87df916906370a082319060240160206040518083038186803b158015610f9f57600080fd5b505afa158015610fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd79190611420565b905080610fe7578291505061082d565b80831115611035576110236001600160a01b037f000000000000000000000000f16e81dce15b08f326220742020379b855b87df9168583611073565b61102d81846115f7565b91505061082d565b6110696001600160a01b037f000000000000000000000000f16e81dce15b08f326220742020379b855b87df9168585611073565b5060009392505050565b6040516001600160a01b0383166024820152604481018290526110d690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611119565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526111139085906323b872dd60e01b9060840161109f565b50505050565b600061116e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166111eb9092919063ffffffff16565b8051909150156110d6578080602001905181019061118c91906113a4565b6110d65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161047b565b60606111fa8484600085611204565b90505b9392505050565b6060824710156112655760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161047b565b61126e85611333565b6112ba5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161047b565b600080866001600160a01b031685876040516112d691906114f4565b60006040518083038185875af1925050503d8060008114611313576040519150601f19603f3d011682016040523d82523d6000602084013e611318565b606091505b509150915061132882828661133d565b979650505050505050565b803b15155b919050565b6060831561134c5750816111fd565b82511561135c5782518084602001fd5b8160405162461bcd60e51b815260040161047b9190611510565b803561ffff8116811461133857600080fd5b600060208284031215611399578081fd5b81356111fd8161166b565b6000602082840312156113b5578081fd5b81516111fd81611680565b6000806000606084860312156113d4578182fd5b6113dd84611376565b925060208401356113ed8161166b565b915060408401356113fd81611680565b809150509250925092565b600060208284031215611419578081fd5b5035919050565b600060208284031215611431578081fd5b5051919050565b6000806040838503121561144a578182fd5b82359150602083013561145c8161166b565b809150509250929050565b60008060408385031215611479578182fd5b82359150602083013561145c81611680565b60008060006060848603121561149f578283fd5b833592506113ed60208501611376565b600080604083850312156114c1578182fd5b50508035926020909101359150565b6000602082840312156114e1578081fd5b813563ffffffff811681146111fd578182fd5b6000825161150681846020870161160e565b9190910192915050565b600060208252825180602084015261152f81604085016020870161160e565b601f01601f19169190910160400192915050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561158b5761158b611655565b500190565b600063ffffffff8083168185168083038211156115af576115af611655565b01949350505050565b6000826115d357634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156115f2576115f2611655565b500290565b60008282101561160957611609611655565b500390565b60005b83811015611629578181015183820152602001611611565b838111156111135750506000910152565b600060001982141561164e5761164e611655565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146106ab57600080fd5b80151581146106ab57600080fdfea264697066735822122021ba68ed0b63d07fbff55e0176898d39992981670cdf0df49207bb1fa5a7db9264736f6c63430008030033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f16e81dce15b08f326220742020379b855b87df90000000000000000000000000000000000000000000000000427f6b722cbf2aa00000000000000000000000000000000000000000000000000000000606231c0
-----Decoded View---------------
Arg [0] : _ice (address): 0xf16e81dce15B08F326220742020379B855B87DF9
Arg [1] : _icePerSecond (uint256): 299479166666666666
Arg [2] : _startTime (uint32): 1617048000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000f16e81dce15b08f326220742020379b855b87df9
Arg [1] : 0000000000000000000000000000000000000000000000000427f6b722cbf2aa
Arg [2] : 00000000000000000000000000000000000000000000000000000000606231c0
Deployed Bytecode Sourcemap
18223:9530:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21535:95;21607:8;:15;21535:95;;;7985:25:1;;;7973:2;7958:18;21535:95:0;;;;;;;;19861:26;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;4846:32:1;;;4828:51;;4910:2;4895:18;;4888:34;;;;4938:18;;;4931:34;;;;5013:10;5001:23;4996:2;4981:18;;4974:51;5074:6;5062:19;5056:3;5041:19;;5034:48;4815:3;4800:19;19861:26:0;4782:306:1;20040:34:0;;;;;;19788:27;;;;;;20258:21;;;;;;;;;;;;8519:10:1;8507:23;;;8489:42;;8477:2;8462:18;20258:21:0;8444:93:1;26318:778:0;;;;;;:::i;:::-;;:::i;:::-;;19729:27;;;;;;;;-1:-1:-1;;;;;3634:32:1;;;3616:51;;3604:2;3589:18;19729:27:0;3571:102:1;24724:654:0;;;;;;:::i;:::-;;:::i;24468:180::-;;;:::i;13261:148::-;;;:::i;20170:33::-;;;;;12610:87;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;12610:87;;23163:369;;;;;;:::i;:::-;;:::i;19922:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8223:25:1;;;8279:2;8264:18;;8257:34;;;;8307:18;;;8300:34;8211:2;8196:18;19922:64:0;8178:162:1;21938:652:0;;;;;;:::i;:::-;;:::i;20853:101::-;;;;;;:::i;:::-;;:::i;22755:333::-;;;;;;:::i;:::-;;:::i;25452:809::-;;;;;;:::i;:::-;;:::i;21287:203::-;;;;;;:::i;:::-;;:::i;13564:244::-;;;;;;:::i;:::-;;:::i;23594:791::-;;;;;;:::i;:::-;;:::i;19861:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19861:26:0;;;;-1:-1:-1;19861:26:0;;;;;;;;;;;;:::o;26318:778::-;26385:21;26409:8;26418:4;26409:14;;;;;;-1:-1:-1;;;26409:14:0;;;;;;;;;;;;;;;;;26458;;;:8;:14;;;;;;26473:10;26458:26;;;;;;;26503:11;;26409:14;;;;;;;;-1:-1:-1;26503:22:0;-1:-1:-1;26503:22:0;26495:80;;;;-1:-1:-1;;;26495:80:0;;6497:2:1;26495:80:0;;;6479:21:1;6536:2;6516:18;;;6509:30;6575:34;6555:18;;;6548:62;-1:-1:-1;;;6626:18:1;;;6619:43;6679:19;;26495:80:0;;;;;;;;;26586:16;26597:4;26586:10;:16::i;:::-;26613:15;26705:4;:28;;;26687:4;:15;;;26680:4;26658;:19;;;26644:4;:11;;;:33;;;;:::i;:::-;:40;;;;:::i;:::-;:58;;;;:::i;:::-;:89;;;;:::i;:::-;26613:120;;26775:39;26794:10;26806:7;26775:18;:39::i;:::-;26744:28;;;:70;26825:22;;26840:7;;26744:4;;26825:11;;:22;;26840:7;;26825:22;:::i;:::-;;;;;;;;26890:7;26858:4;:28;;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;;26940:19:0;;;;26926:11;;26962:4;;26926:33;;;:::i;:::-;:40;;;;:::i;:::-;26908:15;;;:58;26977:17;;:60;;-1:-1:-1;;;;;26977:17:0;27016:10;27029:7;26977:30;:60::i;:::-;27053:35;;7985:25:1;;;27074:4:0;;27062:10;;27053:35;;7973:2:1;7958:18;27053:35:0;;;;;;;26318:778;;;;;:::o;24724:654::-;24776:21;24800:8;24809:4;24800:14;;;;;;-1:-1:-1;;;24800:14:0;;;;;;;;;;;;;;;;;;;;;;24848:19;;;;24800:14;;-1:-1:-1;24848:19:0;;24829:15;:38;24825:77;;24884:7;;;24825:77;24918:28;;;;24914:132;;24968:19;;:45;;-1:-1:-1;;24968:45:0;24997:15;24968:45;;;;;25028:7;;24914:132;25091:19;;;;25056:18;;25077:51;;25091:19;;25112:15;25077:13;:51::i;:::-;25056:72;;25139:17;25218:15;;25200:4;:15;;;;;;;;;;;;25172:43;;25185:12;;25172:10;:25;;;;:::i;:::-;:43;;;;:::i;:::-;:61;;;;:::i;:::-;25286:28;;;;25139:94;;-1:-1:-1;25267:16:0;25139:94;25279:4;25267:16;:::i;:::-;:47;;;;:::i;:::-;25244:4;:19;;;:70;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;25325:19:0;;:45;;-1:-1:-1;;25325:45:0;25354:15;25325:45;;;;;24724:654;;:::o;24468:180::-;24530:8;:15;24513:14;24556:85;24584:6;24578:3;:12;24556:85;;;24614:15;24625:3;24614:10;:15::i;:::-;24592:5;;;:::i;:::-;;;24556:85;;;;24468:180;:::o;13261:148::-;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;681:10;12830:23;12822:68;;;;-1:-1:-1;;;12822:68:0;;;;;;;:::i;:::-;13368:1:::1;13352:6:::0;;13331:40:::1;::::0;-1:-1:-1;;;;;13352:6:0;;::::1;::::0;13331:40:::1;::::0;13368:1;;13331:40:::1;13399:1;13382:19:::0;;-1:-1:-1;;;;;;13382:19:0::1;::::0;;13261:148::o;23163:369::-;23262:7;23303:9;23295:17;;:5;:17;:37;;23323:9;23295:37;;;;;23315:5;23295:37;23355:7;;23287:45;;-1:-1:-1;23355:7:0;;23347:15;;;:34;;;23372:9;23366:15;;:3;:15;23347:34;23343:75;;;-1:-1:-1;23405:1:0;23398:8;;23343:75;23438:7;;;;23432:13;;23428:68;;;23469:7;;:15;;23479:5;;23469:7;;:15;:::i;:::-;23462:22;;;;23428:68;23513:11;23519:5;23513:3;:11;:::i;:::-;23506:18;;23163:369;;;;;:::o;21938:652::-;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;681:10;12830:23;12822:68;;;;-1:-1:-1;;;12822:68:0;;;;;;;:::i;:::-;22079:11:::1;22075:61;;;22107:17;:15;:17::i;:::-;22146:22;22202:9;22184:27;;:15;:27;:57;;22232:9;22184:57;;;;;22214:15;22184:57;22146:95;;22270:11;22252:29;;:15;;:29;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;22320:251:0::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;22320:251:0;;::::1;::::0;;-1:-1:-1;22320:251:0::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;;;22292:8:::1;:290:::0;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;-1:-1:-1::0;;;;;;22292:290:0;;::::1;::::0;;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;::::1;-1:-1:-1::0;;22292:290:0;;;;::::1;::::0;;;;::::1;::::0;;;-1:-1:-1;21938:652:0:o;20853:101::-;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;681:10;12830:23;12822:68;;;;-1:-1:-1;;;12822:68:0;;;;;;;:::i;:::-;20925:7:::1;:21:::0;;20936:10;;20925:7;::::1;::::0;:21:::1;::::0;20936:10;;20925:21:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20853:101:::0;:::o;22755:333::-;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;681:10;12830:23;12822:68;;;;-1:-1:-1;;;12822:68:0;;;;;;;:::i;:::-;22888:11:::1;22884:61;;;22916:17;:15;:17::i;:::-;23019:11;22973:57;;22991:8;23000:4;22991:14;;;;;;-1:-1:-1::0;;;22991:14:0::1;;;;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;22973:43;;:15;;:43;;;;:::i;:::-;:57;;;;:::i;:::-;22955:15;:75;;;;23069:11;23041:8;23050:4;23041:14;;;;;;-1:-1:-1::0;;;23041:14:0::1;;;;;;;;;;;;;;;;;;;:25;;;:39;;;;;;;;;;;;;;;;;;22755:333:::0;;;:::o;25452:809::-;25518:21;25542:8;25551:4;25542:14;;;;;;-1:-1:-1;;;25542:14:0;;;;;;;;;;;;;;;;;25591;;;:8;:14;;;;;;25606:10;25591:26;;;;;;;25542:14;;;;;;;;-1:-1:-1;25628:16:0;25600:4;25628:10;:16::i;:::-;25659:11;;:15;25655:257;;25691:15;25787:4;:28;;;25769:4;:15;;;25762:4;25740;:19;;;25726:4;:11;;;:33;;;;:::i;:::-;:40;;;;:::i;:::-;:58;;;;:::i;:::-;:89;;;;:::i;:::-;25691:124;;25861:39;25880:10;25892:7;25861:18;:39::i;:::-;25830:28;;;:70;-1:-1:-1;25655:257:0;25922:17;;:129;;-1:-1:-1;;;;;25922:17:0;25979:10;26013:4;26033:7;25922:34;:129::i;:::-;26077:7;26062:4;:11;;;:22;;;;;;;:::i;:::-;;;;;;;;26127:7;26095:4;:28;;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;;26177:19:0;;;;26163:11;;26199:4;;26163:33;;;:::i;:::-;:40;;;;:::i;:::-;26145:15;;;:58;26219:34;;7985:25:1;;;26239:4:0;;26227:10;;26219:34;;7973:2:1;7958:18;26219:34:0;;;;;;;25452:809;;;;:::o;21287:203::-;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;681:10;12830:23;12822:68;;;;-1:-1:-1;;;12822:68:0;;;;;;;:::i;:::-;21388:11:::1;21384:61;;;21416:17;:15;:17::i;:::-;-1:-1:-1::0;21455:12:0::1;:27:::0;21287:203::o;13564:244::-;12656:7;12683:6;-1:-1:-1;;;;;12683:6:0;681:10;12830:23;12822:68;;;;-1:-1:-1;;;12822:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13653:22:0;::::1;13645:73;;;::::0;-1:-1:-1;;;13645:73:0;;5683:2:1;13645:73:0::1;::::0;::::1;5665:21:1::0;5722:2;5702:18;;;5695:30;5761:34;5741:18;;;5734:62;-1:-1:-1;;;5812:18:1;;;5805:36;5858:19;;13645:73:0::1;5655:228:1::0;13645:73:0::1;13755:6;::::0;;13734:38:::1;::::0;-1:-1:-1;;;;;13734:38:0;;::::1;::::0;13755:6;::::1;::::0;13734:38:::1;::::0;::::1;13783:6;:17:::0;;-1:-1:-1;;;;;;13783:17:0::1;-1:-1:-1::0;;;;;13783:17:0;;;::::1;::::0;;;::::1;::::0;;13564:244::o;23594:791::-;23693:7;23718:21;23742:8;23751:4;23742:14;;;;;;-1:-1:-1;;;23742:14:0;;;;;;;;;;;;;;;;;23791;;;:8;:14;;;;;;;-1:-1:-1;;;;;23791:21:0;;;;;;;;;;;23848:19;23742:14;;;;;;;23848:19;;;;23909;;;;23742:14;;-1:-1:-1;23848:19:0;23909;;23891:15;:37;:74;;;;-1:-1:-1;23932:28:0;;;;:33;;23891:74;23887:389;;;24034:19;;;;23982:18;;24020:51;;24034:19;;24055:15;24020:13;:51::i;:::-;23982:89;;24086:17;24169:15;;24151:4;:15;;;;;;;;;;;;24123:43;;24136:12;;24123:10;:25;;;;:::i;:::-;:43;;;;:::i;:::-;:61;;;;:::i;:::-;24236:28;;;;24086:98;;-1:-1:-1;24217:16:0;24086:98;24229:4;24217:16;:::i;:::-;:47;;;;:::i;:::-;24199:65;;;;:::i;:::-;;;23887:389;;;24349:28;;;;24331:15;;;;24293:11;;24324:4;;24293:28;;24307:14;;24293:28;:::i;:::-;:35;;;;:::i;:::-;:53;;;;:::i;:::-;:84;;;;:::i;:::-;24286:91;23594:791;-1:-1:-1;;;;;;23594:791:0:o;27263:487::-;27384:28;;-1:-1:-1;;;27384:28:0;;27406:4;27384:28;;;3616:51:1;27338:7:0;;;;-1:-1:-1;;;;;27384:3:0;:13;;;;3589:18:1;;27384:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27358:54;-1:-1:-1;27427:20:0;27423:87;;27491:7;27484:14;;;;;27423:87;27534:15;27524:7;:25;27520:163;;;27586:38;-1:-1:-1;;;;;27586:3:0;:16;27603:3;27608:15;27586:16;:38::i;:::-;27646:25;27656:15;27646:7;:25;:::i;:::-;27639:32;;;;;27520:163;27693:30;-1:-1:-1;;;;;27693:3:0;:16;27710:3;27715:7;27693:16;:30::i;:::-;-1:-1:-1;27741:1:0;;27263:487;-1:-1:-1;;;27263:487:0:o;14341:177::-;14451:58;;-1:-1:-1;;;;;4250:32:1;;14451:58:0;;;4232:51:1;4299:18;;;4292:34;;;14424:86:0;;14444:5;;-1:-1:-1;;;14474:23:0;4205:18:1;;14451:58:0;;;;-1:-1:-1;;14451:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;14451:58:0;-1:-1:-1;;;;;;14451:58:0;;;;;;;;;;14424:19;:86::i;:::-;14341:177;;;:::o;14526:205::-;14654:68;;-1:-1:-1;;;;;3936:15:1;;;14654:68:0;;;3918:34:1;3988:15;;3968:18;;;3961:43;4020:18;;;4013:34;;;14627:96:0;;14647:5;;-1:-1:-1;;;14677:27:0;3853:18:1;;14654:68:0;3835:218:1;14627:96:0;14526:205;;;;:::o;16775:761::-;17199:23;17225:69;17253:4;17225:69;;;;;;;;;;;;;;;;;17233:5;-1:-1:-1;;;;;17225:27:0;;;:69;;;;;:::i;:::-;17309:17;;17199:95;;-1:-1:-1;17309:21:0;17305:224;;17451:10;17440:30;;;;;;;;;;;;:::i;:::-;17432:85;;;;-1:-1:-1;;;17432:85:0;;7630:2:1;17432:85:0;;;7612:21:1;7669:2;7649:18;;;7642:30;7708:34;7688:18;;;7681:62;-1:-1:-1;;;7759:18:1;;;7752:40;7809:19;;17432:85:0;7602:232:1;4548:195:0;4651:12;4683:52;4705:6;4713:4;4719:1;4722:12;4683:21;:52::i;:::-;4676:59;;4548:195;;;;;;:::o;5600:530::-;5727:12;5785:5;5760:21;:30;;5752:81;;;;-1:-1:-1;;;5752:81:0;;6090:2:1;5752:81:0;;;6072:21:1;6129:2;6109:18;;;6102:30;6168:34;6148:18;;;6141:62;-1:-1:-1;;;6219:18:1;;;6212:36;6265:19;;5752:81:0;6062:228:1;5752:81:0;5852:18;5863:6;5852:10;:18::i;:::-;5844:60;;;;-1:-1:-1;;;5844:60:0;;7272:2:1;5844:60:0;;;7254:21:1;7311:2;7291:18;;;7284:30;7350:31;7330:18;;;7323:59;7399:18;;5844:60:0;7244:179:1;5844:60:0;5978:12;5992:23;6019:6;-1:-1:-1;;;;;6019:11:0;6039:5;6047:4;6019:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5977:75;;;;6070:52;6088:7;6097:10;6109:12;6070:17;:52::i;:::-;6063:59;5600:530;-1:-1:-1;;;;;;;5600:530:0:o;1630:422::-;1997:20;;2036:8;;1630:422;;;;:::o;8140:742::-;8255:12;8284:7;8280:595;;;-1:-1:-1;8315:10:0;8308:17;;8280:595;8429:17;;:21;8425:439;;8692:10;8686:17;8753:15;8740:10;8736:2;8732:19;8725:44;8640:148;8835:12;8828:20;;-1:-1:-1;;;8828:20:0;;;;;;;;:::i;14:159:1:-;81:20;;141:6;130:18;;120:29;;110:2;;163:1;160;153:12;178:257;;290:2;278:9;269:7;265:23;261:32;258:2;;;311:6;303;296:22;258:2;355:9;342:23;374:31;399:5;374:31;:::i;440:255::-;;560:2;548:9;539:7;535:23;531:32;528:2;;;581:6;573;566:22;528:2;618:9;612:16;637:28;659:5;637:28;:::i;700:478::-;;;;856:2;844:9;835:7;831:23;827:32;824:2;;;877:6;869;862:22;824:2;905:28;923:9;905:28;:::i;:::-;895:38;;983:2;972:9;968:18;955:32;996:31;1021:5;996:31;:::i;:::-;1046:5;-1:-1:-1;1103:2:1;1088:18;;1075:32;1116:30;1075:32;1116:30;:::i;:::-;1165:7;1155:17;;;814:364;;;;;:::o;1183:190::-;;1295:2;1283:9;1274:7;1270:23;1266:32;1263:2;;;1316:6;1308;1301:22;1263:2;-1:-1:-1;1344:23:1;;1253:120;-1:-1:-1;1253:120:1:o;1378:194::-;;1501:2;1489:9;1480:7;1476:23;1472:32;1469:2;;;1522:6;1514;1507:22;1469:2;-1:-1:-1;1550:16:1;;1459:113;-1:-1:-1;1459:113:1:o;1577:325::-;;;1706:2;1694:9;1685:7;1681:23;1677:32;1674:2;;;1727:6;1719;1712:22;1674:2;1768:9;1755:23;1745:33;;1828:2;1817:9;1813:18;1800:32;1841:31;1866:5;1841:31;:::i;:::-;1891:5;1881:15;;;1664:238;;;;;:::o;1907:319::-;;;2033:2;2021:9;2012:7;2008:23;2004:32;2001:2;;;2054:6;2046;2039:22;2001:2;2095:9;2082:23;2072:33;;2155:2;2144:9;2140:18;2127:32;2168:28;2190:5;2168:28;:::i;2231:391::-;;;;2373:2;2361:9;2352:7;2348:23;2344:32;2341:2;;;2394:6;2386;2379:22;2341:2;2435:9;2422:23;2412:33;;2464:37;2497:2;2486:9;2482:18;2464:37;:::i;2627:258::-;;;2756:2;2744:9;2735:7;2731:23;2727:32;2724:2;;;2777:6;2769;2762:22;2724:2;-1:-1:-1;;2805:23:1;;;2875:2;2860:18;;;2847:32;;-1:-1:-1;2714:171:1:o;2890:296::-;;3001:2;2989:9;2980:7;2976:23;2972:32;2969:2;;;3022:6;3014;3007:22;2969:2;3066:9;3053:23;3116:10;3109:5;3105:22;3098:5;3095:33;3085:2;;3147:6;3139;3132:22;3191:274;;3358:6;3352:13;3374:53;3420:6;3415:3;3408:4;3400:6;3396:17;3374:53;:::i;:::-;3443:16;;;;;3328:137;-1:-1:-1;;3328:137:1:o;5093:383::-;;5242:2;5231:9;5224:21;5274:6;5268:13;5317:6;5312:2;5301:9;5297:18;5290:34;5333:66;5392:6;5387:2;5376:9;5372:18;5367:2;5359:6;5355:15;5333:66;:::i;:::-;5460:2;5439:15;-1:-1:-1;;5435:29:1;5420:45;;;;5467:2;5416:54;;5214:262;-1:-1:-1;;5214:262:1:o;6709:356::-;6911:2;6893:21;;;6930:18;;;6923:30;6989:34;6984:2;6969:18;;6962:62;7056:2;7041:18;;6883:182::o;8542:128::-;;8613:1;8609:6;8606:1;8603:13;8600:2;;;8619:18;;:::i;:::-;-1:-1:-1;8655:9:1;;8590:80::o;8675:228::-;;8742:10;8779:2;8776:1;8772:10;8809:2;8806:1;8802:10;8840:3;8836:2;8832:12;8827:3;8824:21;8821:2;;;8848:18;;:::i;:::-;8884:13;;8722:181;-1:-1:-1;;;;8722:181:1:o;8908:217::-;;8974:1;8964:2;;-1:-1:-1;;;8999:31:1;;9053:4;9050:1;9043:15;9081:4;9006:1;9071:15;8964:2;-1:-1:-1;9110:9:1;;8954:171::o;9130:168::-;;9236:1;9232;9228:6;9224:14;9221:1;9218:21;9213:1;9206:9;9199:17;9195:45;9192:2;;;9243:18;;:::i;:::-;-1:-1:-1;9283:9:1;;9182:116::o;9303:125::-;;9371:1;9368;9365:8;9362:2;;;9376:18;;:::i;:::-;-1:-1:-1;9413:9:1;;9352:76::o;9433:258::-;9505:1;9515:113;9529:6;9526:1;9523:13;9515:113;;;9605:11;;;9599:18;9586:11;;;9579:39;9551:2;9544:10;9515:113;;;9646:6;9643:1;9640:13;9637:2;;;-1:-1:-1;;9681:1:1;9663:16;;9656:27;9486:205::o;9696:135::-;;-1:-1:-1;;9756:17:1;;9753:2;;;9776:18;;:::i;:::-;-1:-1:-1;9823:1:1;9812:13;;9743:88::o;9836:127::-;9897:10;9892:3;9888:20;9885:1;9878:31;9928:4;9925:1;9918:15;9952:4;9949:1;9942:15;9968:131;-1:-1:-1;;;;;10043:31:1;;10033:42;;10023:2;;10089:1;10086;10079:12;10104:118;10190:5;10183:13;10176:21;10169:5;10166:32;10156:2;;10212:1;10209;10202:12
Swarm Source
ipfs://21ba68ed0b63d07fbff55e0176898d39992981670cdf0df49207bb1fa5a7db92
Loading...
Loading
Loading...
Loading
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.