Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 200 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Exit | 15339078 | 766 days ago | IN | 0 ETH | 0.00065567 | ||||
Stake | 15339071 | 766 days ago | IN | 0 ETH | 0.00088648 | ||||
Get Reward | 12307971 | 1242 days ago | IN | 0 ETH | 0.00297378 | ||||
Get Reward | 12305118 | 1242 days ago | IN | 0 ETH | 0.00313408 | ||||
Exit | 12300155 | 1243 days ago | IN | 0 ETH | 0.00812193 | ||||
Withdraw | 12292311 | 1244 days ago | IN | 0 ETH | 0.01139302 | ||||
Stake | 12240295 | 1252 days ago | IN | 0 ETH | 0.01305275 | ||||
Get Reward | 12228680 | 1254 days ago | IN | 0 ETH | 0.00706812 | ||||
Get Reward | 12202532 | 1258 days ago | IN | 0 ETH | 0.00806363 | ||||
Get Reward | 12189752 | 1260 days ago | IN | 0 ETH | 0.0075226 | ||||
Withdraw | 12163166 | 1264 days ago | IN | 0 ETH | 0.01496244 | ||||
Get Reward | 12161755 | 1265 days ago | IN | 0 ETH | 0.01065342 | ||||
Withdraw | 12154361 | 1266 days ago | IN | 0 ETH | 0.0180724 | ||||
Get Reward | 12154355 | 1266 days ago | IN | 0 ETH | 0.01730644 | ||||
Stake | 12149116 | 1266 days ago | IN | 0 ETH | 0.03174064 | ||||
Withdraw | 12145994 | 1267 days ago | IN | 0 ETH | 0.02020402 | ||||
Get Reward | 12143272 | 1267 days ago | IN | 0 ETH | 0.01236981 | ||||
Withdraw | 12140538 | 1268 days ago | IN | 0 ETH | 0.01343671 | ||||
Get Reward | 12140300 | 1268 days ago | IN | 0 ETH | 0.0116173 | ||||
Get Reward | 12138500 | 1268 days ago | IN | 0 ETH | 0.01018406 | ||||
Get Reward | 12137229 | 1268 days ago | IN | 0 ETH | 0.0092076 | ||||
Withdraw | 12137159 | 1268 days ago | IN | 0 ETH | 0.00973003 | ||||
Get Reward | 12137151 | 1268 days ago | IN | 0 ETH | 0.01045285 | ||||
Get Reward | 12136420 | 1268 days ago | IN | 0 ETH | 0.01612726 | ||||
Get Reward | 12136293 | 1268 days ago | IN | 0 ETH | 0.01274252 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DAIMICLPTokenSharePool
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-02-26 */ // File: @openzeppelin/contracts/math/Math.sol // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); } } // File: @openzeppelin/contracts/math/SafeMath.sol // -License-Identifier: MIT pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @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) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @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 sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { // 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 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * 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) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * 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) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts 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 mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message 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, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // -License-Identifier: MIT pragma solidity ^0.6.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); } // File: @openzeppelin/contracts/utils/Address.sol // -License-Identifier: MIT pragma solidity ^0.6.2; /** * @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 in 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"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); 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); } } } } // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol // -License-Identifier: MIT pragma solidity ^0.6.0; /** * @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 SafeMath for uint256; 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).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _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"); } } } // File: @openzeppelin/contracts/GSN/Context.sol // -License-Identifier: MIT pragma solidity ^0.6.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 GSN 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 payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // -License-Identifier: MIT pragma solidity ^0.6.0; /** * @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. */ 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 () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view 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; } } // File: contracts/interfaces/IRewardDistributionRecipient.sol pragma solidity ^0.6.0; abstract contract IRewardDistributionRecipient is Ownable { address public rewardDistribution; function notifyRewardAmount(uint256 reward) external virtual; modifier onlyRewardDistribution() { require( _msgSender() == rewardDistribution, 'Caller is not reward distribution' ); _; } function setRewardDistribution(address _rewardDistribution) external virtual onlyOwner { rewardDistribution = _rewardDistribution; } } // File: contracts/token/LPTokenWrapper.sol pragma solidity ^0.6.0; contract LPTokenWrapper { using SafeMath for uint256; using SafeERC20 for IERC20; IERC20 public lpt; uint256 private _totalSupply; mapping(address => uint256) private _balances; function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function stake(uint256 amount) public virtual { _totalSupply = _totalSupply.add(amount); _balances[msg.sender] = _balances[msg.sender].add(amount); lpt.safeTransferFrom(msg.sender, address(this), amount); } function withdraw(uint256 amount) public virtual { _totalSupply = _totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); lpt.safeTransfer(msg.sender, amount); } } // File: contracts/owner/Operator.sol pragma solidity ^0.6.0; contract Operator is Context, Ownable { address private _operator; event OperatorTransferred( address indexed previousOperator, address indexed newOperator ); constructor() internal { _operator = _msgSender(); emit OperatorTransferred(address(0), _operator); } function operator() public view returns (address) { return _operator; } modifier onlyOperator() { require( _operator == msg.sender, 'operator: caller is not the operator' ); _; } function isOperator() public view returns (bool) { return _msgSender() == _operator; } function transferOperator(address newOperator_) public onlyOwner { _transferOperator(newOperator_); } function _transferOperator(address newOperator_) internal { require( newOperator_ != address(0), 'operator: zero address given for new operator' ); emit OperatorTransferred(address(0), newOperator_); _operator = newOperator_; } } // File: contracts/distribution/DAIMICLPTokenSharePool.sol pragma solidity ^0.6.0; /** *Submitted for verification at Etherscan.io on 2020-07-17 */ /* ____ __ __ __ _ / __/__ __ ___ / /_ / / ___ / /_ (_)__ __ _\ \ / // // _ \/ __// _ \/ -_)/ __// / \ \ / /___/ \_, //_//_/\__//_//_/\__/ \__//_/ /_\_\ /___/ * Synthetix: BASISCASHRewards.sol * * Docs: https://docs.synthetix.io/ * * * MIT License * =========== * * Copyright (c) 2020 Synthetix * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE */ // File: @openzeppelin/contracts/math/Math.sol // File: @openzeppelin/contracts/math/SafeMath.sol // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // File: @openzeppelin/contracts/utils/Address.sol // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol // File: contracts/IRewardDistributionRecipient.sol contract DAIMICLPTokenSharePool is LPTokenWrapper, IRewardDistributionRecipient, Operator { IERC20 public mithShare; uint256 public constant DURATION = 30 days; uint256 public initreward = 2980333 * 10**16; // 29,803.33 Shares uint256 public starttime; // starttime TBD uint256 public periodFinish = 0; uint256 public rewardRate = 0; uint256 public lastUpdateTime; uint256 public rewardPerTokenStored; mapping(address => uint256) public userRewardPerTokenPaid; mapping(address => uint256) public rewards; mapping(address => bool) public contractWhitelist; event RewardAdded(uint256 reward); event Staked(address indexed user, uint256 amount); event Withdrawn(address indexed user, uint256 amount); event RewardPaid(address indexed user, uint256 reward); constructor( address mithShare_, address lptoken_, uint256 starttime_ ) public { mithShare = IERC20(mithShare_); lpt = IERC20(lptoken_); starttime = starttime_; } modifier updateReward(address account) { rewardPerTokenStored = rewardPerToken(); lastUpdateTime = lastTimeRewardApplicable(); if (account != address(0)) { rewards[account] = earned(account); userRewardPerTokenPaid[account] = rewardPerTokenStored; } _; } function lastTimeRewardApplicable() public view returns (uint256) { return Math.min(block.timestamp, periodFinish); } function rewardPerToken() public view returns (uint256) { if (totalSupply() == 0) { return rewardPerTokenStored; } return rewardPerTokenStored.add( lastTimeRewardApplicable() .sub(lastUpdateTime) .mul(rewardRate) .mul(1e18) .div(totalSupply()) ); } function earned(address account) public view returns (uint256) { return balanceOf(account) .mul(rewardPerToken().sub(userRewardPerTokenPaid[account])) .div(1e18) .add(rewards[account]); } // stake visibility is public as overriding LPTokenWrapper's stake() function function stake(uint256 amount) public override updateReward(msg.sender) checkhalve checkStart { require(amount > 0, 'Cannot stake 0'); require(msg.sender == tx.origin || contractWhitelist[msg.sender] == true, "no contracts"); super.stake(amount); emit Staked(msg.sender, amount); } function withdraw(uint256 amount) public override updateReward(msg.sender) checkhalve checkStart { require(amount > 0, 'Cannot withdraw 0'); super.withdraw(amount); emit Withdrawn(msg.sender, amount); } function exit() external { withdraw(balanceOf(msg.sender)); getReward(); } function getReward() public updateReward(msg.sender) checkhalve checkStart { uint256 reward = earned(msg.sender); if (reward > 0) { rewards[msg.sender] = 0; mithShare.safeTransfer(msg.sender, reward); emit RewardPaid(msg.sender, reward); } } modifier checkhalve() { if (block.timestamp >= periodFinish) { initreward = initreward.mul(75).div(100); rewardRate = initreward.div(DURATION); periodFinish = block.timestamp.add(DURATION); emit RewardAdded(initreward); } _; } modifier checkStart() { require(block.timestamp >= starttime, 'not start'); _; } function notifyRewardAmount(uint256 reward) external override onlyRewardDistribution updateReward(address(0)) { if (block.timestamp > starttime) { if (block.timestamp >= periodFinish) { rewardRate = reward.div(DURATION); } else { uint256 remaining = periodFinish.sub(block.timestamp); uint256 leftover = remaining.mul(rewardRate); rewardRate = reward.add(leftover).div(DURATION); } lastUpdateTime = block.timestamp; periodFinish = block.timestamp.add(DURATION); emit RewardAdded(reward); } else { rewardRate = initreward.div(DURATION); lastUpdateTime = starttime; periodFinish = starttime.add(DURATION); emit RewardAdded(reward); } } function addToWhitelist(address _contractAddress) public onlyOperator { contractWhitelist[_contractAddress] = true; } function removeFromWhitelist(address _contractAddress) public onlyOperator { contractWhitelist[_contractAddress] = false; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"mithShare_","type":"address"},{"internalType":"address","name":"lptoken_","type":"address"},{"internalType":"uint256","name":"starttime_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOperator","type":"address"},{"indexed":true,"internalType":"address","name":"newOperator","type":"address"}],"name":"OperatorTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"contractWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initreward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpt","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mithShare","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardDistribution","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardDistribution","type":"address"}],"name":"setRewardDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"starttime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator_","type":"address"}],"name":"transferOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405269064fa44a2a30aead000060075560006009556000600a5534801561002857600080fd5b506040516119c43803806119c48339818101604052606081101561004b57600080fd5b50805160208201516040909201519091906000610066610140565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100bc610140565b600580546001600160a01b0319166001600160a01b0392831617908190556040519116906000907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908290a3600680546001600160a01b039485166001600160a01b0319918216179091556000805493909416921691909117909155600855610144565b3390565b611871806101536000396000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c806380faa57d1161010f578063cd3daf9d116100a2578063e9fad8ee11610071578063e9fad8ee14610465578063ebe2b12b1461046d578063f22de10414610475578063f2fde38b1461047d576101ef565b8063cd3daf9d14610427578063ce5fc8d01461042f578063df136d6514610437578063e43252d71461043f576101ef565b80638da5cb5b116100de5780638da5cb5b146103f25780639c907b58146103fa578063a694fc3a14610402578063c8f33c911461041f576101ef565b806380faa57d146103965780638ab1d6811461039e5780638b876347146103c45780638da58897146103ea576101ef565b80633c6b16ab11610187578063570ca73511610156578063570ca7351461035857806370a0823114610360578063715018a6146103865780637b0a47ee1461038e576101ef565b80633c6b16ab146102f15780633d18b9121461030e5780634456eda2146103165780634c999f5e14610332576101ef565b806318160ddd116101c357806318160ddd1461029e5780631be05289146102a657806329605e77146102ae5780632e1a7d4d146102d4576101ef565b80628cc262146101f45780630700037d1461022c5780630d68b76114610252578063101114cf1461027a575b600080fd5b61021a6004803603602081101561020a57600080fd5b50356001600160a01b03166104a3565b60408051918252519081900360200190f35b61021a6004803603602081101561024257600080fd5b50356001600160a01b0316610511565b6102786004803603602081101561026857600080fd5b50356001600160a01b0316610523565b005b61028261059d565b604080516001600160a01b039092168252519081900360200190f35b61021a6105ac565b61021a6105b3565b610278600480360360208110156102c457600080fd5b50356001600160a01b03166105ba565b610278600480360360208110156102ea57600080fd5b503561061e565b6102786004803603602081101561030757600080fd5b50356107b5565b610278610961565b61031e610ae2565b604080519115158252519081900360200190f35b61031e6004803603602081101561034857600080fd5b50356001600160a01b0316610b08565b610282610b1d565b61021a6004803603602081101561037657600080fd5b50356001600160a01b0316610b2c565b610278610b47565b61021a610be9565b61021a610bef565b610278600480360360208110156103b457600080fd5b50356001600160a01b0316610c02565b61021a600480360360208110156103da57600080fd5b50356001600160a01b0316610c6c565b61021a610c7e565b610282610c84565b61021a610c93565b6102786004803603602081101561041857600080fd5b5035610c99565b61021a610e8f565b61021a610e95565b610282610ee3565b61021a610ef2565b6102786004803603602081101561045557600080fd5b50356001600160a01b0316610ef8565b610278610f65565b61021a610f80565b610282610f86565b6102786004803603602081101561049357600080fd5b50356001600160a01b0316610f95565b6001600160a01b0381166000908152600e6020908152604080832054600d90925282205461050b919061050590670de0b6b3a7640000906104ff906104f0906104ea610e95565b9061108e565b6104f988610b2c565b906110d7565b90611130565b90611172565b92915050565b600e6020526000908152604090205481565b61052b6111cc565b6003546001600160a01b0390811691161461057b576040805162461bcd60e51b815260206004820181905260248201526000805160206117ad833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b031681565b6001545b90565b62278d0081565b6105c26111cc565b6003546001600160a01b03908116911614610612576040805162461bcd60e51b815260206004820181905260248201526000805160206117ad833981519152604482015290519081900360640190fd5b61061b816111d0565b50565b33610627610e95565b600c55610632610bef565b600b556001600160a01b038116156106795761064d816104a3565b6001600160a01b0382166000908152600e6020908152604080832093909355600c54600d909152919020555b60095442106106e65761069d60646104ff604b6007546110d790919063ffffffff16565b60078190556106af9062278d00611130565b600a556106bf4262278d00611172565b600955600754604080519182525160008051602061176c8339815191529181900360200190a15b600854421015610729576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b60008211610772576040805162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b604482015290519081900360640190fd5b61077b8261126d565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050565b6004546001600160a01b03166107c96111cc565b6001600160a01b03161461080e5760405162461bcd60e51b81526004018080602001828103825260218152602001806117f16021913960400191505060405180910390fd5b6000610818610e95565b600c55610823610bef565b600b556001600160a01b0381161561086a5761083e816104a3565b6001600160a01b0382166000908152600e6020908152604080832093909355600c54600d909152919020555b6008544211156109105760095442106108925761088a8262278d00611130565b600a556108d4565b6009546000906108a2904261108e565b905060006108bb600a54836110d790919063ffffffff16565b90506108ce62278d006104ff8684611172565b600a5550505b42600b8190556108e79062278d00611172565b60095560408051838152905160008051602061176c8339815191529181900360200190a161095d565b6007546109209062278d00611130565b600a55600854600b8190556109389062278d00611172565b60095560408051838152905160008051602061176c8339815191529181900360200190a15b5050565b3361096a610e95565b600c55610975610bef565b600b556001600160a01b038116156109bc57610990816104a3565b6001600160a01b0382166000908152600e6020908152604080832093909355600c54600d909152919020555b6009544210610a29576109e060646104ff604b6007546110d790919063ffffffff16565b60078190556109f29062278d00611130565b600a55610a024262278d00611172565b600955600754604080519182525160008051602061176c8339815191529181900360200190a15b600854421015610a6c576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b6000610a77336104a3565b9050801561095d57336000818152600e6020526040812055600654610aa8916001600160a01b0390911690836112be565b60408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25050565b6005546000906001600160a01b0316610af96111cc565b6001600160a01b031614905090565b600f6020526000908152604090205460ff1681565b6005546001600160a01b031690565b6001600160a01b031660009081526002602052604090205490565b610b4f6111cc565b6003546001600160a01b03908116911614610b9f576040805162461bcd60e51b815260206004820181905260248201526000805160206117ad833981519152604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600a5481565b6000610bfd42600954611315565b905090565b6005546001600160a01b03163314610c4b5760405162461bcd60e51b81526004018080602001828103825260248152602001806117cd6024913960400191505060405180910390fd5b6001600160a01b03166000908152600f60205260409020805460ff19169055565b600d6020526000908152604090205481565b60085481565b6003546001600160a01b031690565b60075481565b33610ca2610e95565b600c55610cad610bef565b600b556001600160a01b03811615610cf457610cc8816104a3565b6001600160a01b0382166000908152600e6020908152604080832093909355600c54600d909152919020555b6009544210610d6157610d1860646104ff604b6007546110d790919063ffffffff16565b6007819055610d2a9062278d00611130565b600a55610d3a4262278d00611172565b600955600754604080519182525160008051602061176c8339815191529181900360200190a15b600854421015610da4576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b60008211610dea576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b33321480610e0c5750336000908152600f602052604090205460ff1615156001145b610e4c576040805162461bcd60e51b815260206004820152600c60248201526b6e6f20636f6e74726163747360a01b604482015290519081900360640190fd5b610e558261132b565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050565b600b5481565b6000610e9f6105ac565b610eac5750600c546105b0565b610bfd610eda610eba6105ac565b6104ff670de0b6b3a76400006104f9600a546104f9600b546104ea610bef565b600c5490611172565b6000546001600160a01b031681565b600c5481565b6005546001600160a01b03163314610f415760405162461bcd60e51b81526004018080602001828103825260248152602001806117cd6024913960400191505060405180910390fd5b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b610f76610f7133610b2c565b61061e565b610f7e610961565b565b60095481565b6006546001600160a01b031681565b610f9d6111cc565b6003546001600160a01b03908116911614610fed576040805162461bcd60e51b815260206004820181905260248201526000805160206117ad833981519152604482015290519081900360640190fd5b6001600160a01b0381166110325760405162461bcd60e51b81526004018080602001828103825260268152602001806117196026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60006110d083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611381565b9392505050565b6000826110e65750600061050b565b828202828482816110f357fe5b04146110d05760405162461bcd60e51b815260040180806020018281038252602181526020018061178c6021913960400191505060405180910390fd5b60006110d083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611418565b6000828201838110156110d0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b6001600160a01b0381166112155760405162461bcd60e51b815260040180806020018281038252602d81526020018061173f602d913960400191505060405180910390fd5b6040516001600160a01b038216906000907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908290a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60015461127a908261108e565b60015533600090815260026020526040902054611297908261108e565b33600081815260026020526040812092909255905461061b916001600160a01b0390911690835b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261131090849061147d565b505050565b600081831061132457816110d0565b5090919050565b6001546113389082611172565b600155336000908152600260205260409020546113559082611172565b33600081815260026020526040812092909255905461061b916001600160a01b0390911690308461152e565b600081848411156114105760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113d55781810151838201526020016113bd565b50505050905090810190601f1680156114025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836114675760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156113d55781810151838201526020016113bd565b50600083858161147357fe5b0495945050505050565b60606114d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661158e9092919063ffffffff16565b805190915015611310578080602001905160208110156114f157600080fd5b50516113105760405162461bcd60e51b815260040180806020018281038252602a815260200180611812602a913960400191505060405180910390fd5b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261158890859061147d565b50505050565b606061159d84846000856115a5565b949350505050565b60606115b085611712565b611601576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106116405780518252601f199092019160209182019101611621565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116a2576040519150601f19603f3d011682016040523d82523d6000602084013e6116a7565b606091505b509150915081156116bb57915061159d9050565b8051156116cb5780518082602001fd5b60405162461bcd60e51b81526020600482018181528651602484015286518793919283926044019190850190808383600083156113d55781810151838201526020016113bd565b3b15159056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573736f70657261746f723a207a65726f206164647265737320676976656e20666f72206e6577206f70657261746f72de88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657261746f7243616c6c6572206973206e6f742072657761726420646973747269627574696f6e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212208fa63acd6677117ce3ea5b4605ab4ed3a390b3fa08b6c8b419e0d94cf511ba5b64736f6c634300060c0033000000000000000000000000b58dfbb72e648a0b035b8c85b3628123cc9bb8810000000000000000000000000f8c89d3fb0b502732b338f1dfb3c465dc856c8e000000000000000000000000000000000000000000000000000000006039a7a0
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101ef5760003560e01c806380faa57d1161010f578063cd3daf9d116100a2578063e9fad8ee11610071578063e9fad8ee14610465578063ebe2b12b1461046d578063f22de10414610475578063f2fde38b1461047d576101ef565b8063cd3daf9d14610427578063ce5fc8d01461042f578063df136d6514610437578063e43252d71461043f576101ef565b80638da5cb5b116100de5780638da5cb5b146103f25780639c907b58146103fa578063a694fc3a14610402578063c8f33c911461041f576101ef565b806380faa57d146103965780638ab1d6811461039e5780638b876347146103c45780638da58897146103ea576101ef565b80633c6b16ab11610187578063570ca73511610156578063570ca7351461035857806370a0823114610360578063715018a6146103865780637b0a47ee1461038e576101ef565b80633c6b16ab146102f15780633d18b9121461030e5780634456eda2146103165780634c999f5e14610332576101ef565b806318160ddd116101c357806318160ddd1461029e5780631be05289146102a657806329605e77146102ae5780632e1a7d4d146102d4576101ef565b80628cc262146101f45780630700037d1461022c5780630d68b76114610252578063101114cf1461027a575b600080fd5b61021a6004803603602081101561020a57600080fd5b50356001600160a01b03166104a3565b60408051918252519081900360200190f35b61021a6004803603602081101561024257600080fd5b50356001600160a01b0316610511565b6102786004803603602081101561026857600080fd5b50356001600160a01b0316610523565b005b61028261059d565b604080516001600160a01b039092168252519081900360200190f35b61021a6105ac565b61021a6105b3565b610278600480360360208110156102c457600080fd5b50356001600160a01b03166105ba565b610278600480360360208110156102ea57600080fd5b503561061e565b6102786004803603602081101561030757600080fd5b50356107b5565b610278610961565b61031e610ae2565b604080519115158252519081900360200190f35b61031e6004803603602081101561034857600080fd5b50356001600160a01b0316610b08565b610282610b1d565b61021a6004803603602081101561037657600080fd5b50356001600160a01b0316610b2c565b610278610b47565b61021a610be9565b61021a610bef565b610278600480360360208110156103b457600080fd5b50356001600160a01b0316610c02565b61021a600480360360208110156103da57600080fd5b50356001600160a01b0316610c6c565b61021a610c7e565b610282610c84565b61021a610c93565b6102786004803603602081101561041857600080fd5b5035610c99565b61021a610e8f565b61021a610e95565b610282610ee3565b61021a610ef2565b6102786004803603602081101561045557600080fd5b50356001600160a01b0316610ef8565b610278610f65565b61021a610f80565b610282610f86565b6102786004803603602081101561049357600080fd5b50356001600160a01b0316610f95565b6001600160a01b0381166000908152600e6020908152604080832054600d90925282205461050b919061050590670de0b6b3a7640000906104ff906104f0906104ea610e95565b9061108e565b6104f988610b2c565b906110d7565b90611130565b90611172565b92915050565b600e6020526000908152604090205481565b61052b6111cc565b6003546001600160a01b0390811691161461057b576040805162461bcd60e51b815260206004820181905260248201526000805160206117ad833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b031681565b6001545b90565b62278d0081565b6105c26111cc565b6003546001600160a01b03908116911614610612576040805162461bcd60e51b815260206004820181905260248201526000805160206117ad833981519152604482015290519081900360640190fd5b61061b816111d0565b50565b33610627610e95565b600c55610632610bef565b600b556001600160a01b038116156106795761064d816104a3565b6001600160a01b0382166000908152600e6020908152604080832093909355600c54600d909152919020555b60095442106106e65761069d60646104ff604b6007546110d790919063ffffffff16565b60078190556106af9062278d00611130565b600a556106bf4262278d00611172565b600955600754604080519182525160008051602061176c8339815191529181900360200190a15b600854421015610729576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b60008211610772576040805162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b604482015290519081900360640190fd5b61077b8261126d565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050565b6004546001600160a01b03166107c96111cc565b6001600160a01b03161461080e5760405162461bcd60e51b81526004018080602001828103825260218152602001806117f16021913960400191505060405180910390fd5b6000610818610e95565b600c55610823610bef565b600b556001600160a01b0381161561086a5761083e816104a3565b6001600160a01b0382166000908152600e6020908152604080832093909355600c54600d909152919020555b6008544211156109105760095442106108925761088a8262278d00611130565b600a556108d4565b6009546000906108a2904261108e565b905060006108bb600a54836110d790919063ffffffff16565b90506108ce62278d006104ff8684611172565b600a5550505b42600b8190556108e79062278d00611172565b60095560408051838152905160008051602061176c8339815191529181900360200190a161095d565b6007546109209062278d00611130565b600a55600854600b8190556109389062278d00611172565b60095560408051838152905160008051602061176c8339815191529181900360200190a15b5050565b3361096a610e95565b600c55610975610bef565b600b556001600160a01b038116156109bc57610990816104a3565b6001600160a01b0382166000908152600e6020908152604080832093909355600c54600d909152919020555b6009544210610a29576109e060646104ff604b6007546110d790919063ffffffff16565b60078190556109f29062278d00611130565b600a55610a024262278d00611172565b600955600754604080519182525160008051602061176c8339815191529181900360200190a15b600854421015610a6c576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b6000610a77336104a3565b9050801561095d57336000818152600e6020526040812055600654610aa8916001600160a01b0390911690836112be565b60408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25050565b6005546000906001600160a01b0316610af96111cc565b6001600160a01b031614905090565b600f6020526000908152604090205460ff1681565b6005546001600160a01b031690565b6001600160a01b031660009081526002602052604090205490565b610b4f6111cc565b6003546001600160a01b03908116911614610b9f576040805162461bcd60e51b815260206004820181905260248201526000805160206117ad833981519152604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600a5481565b6000610bfd42600954611315565b905090565b6005546001600160a01b03163314610c4b5760405162461bcd60e51b81526004018080602001828103825260248152602001806117cd6024913960400191505060405180910390fd5b6001600160a01b03166000908152600f60205260409020805460ff19169055565b600d6020526000908152604090205481565b60085481565b6003546001600160a01b031690565b60075481565b33610ca2610e95565b600c55610cad610bef565b600b556001600160a01b03811615610cf457610cc8816104a3565b6001600160a01b0382166000908152600e6020908152604080832093909355600c54600d909152919020555b6009544210610d6157610d1860646104ff604b6007546110d790919063ffffffff16565b6007819055610d2a9062278d00611130565b600a55610d3a4262278d00611172565b600955600754604080519182525160008051602061176c8339815191529181900360200190a15b600854421015610da4576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b60008211610dea576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b33321480610e0c5750336000908152600f602052604090205460ff1615156001145b610e4c576040805162461bcd60e51b815260206004820152600c60248201526b6e6f20636f6e74726163747360a01b604482015290519081900360640190fd5b610e558261132b565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050565b600b5481565b6000610e9f6105ac565b610eac5750600c546105b0565b610bfd610eda610eba6105ac565b6104ff670de0b6b3a76400006104f9600a546104f9600b546104ea610bef565b600c5490611172565b6000546001600160a01b031681565b600c5481565b6005546001600160a01b03163314610f415760405162461bcd60e51b81526004018080602001828103825260248152602001806117cd6024913960400191505060405180910390fd5b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b610f76610f7133610b2c565b61061e565b610f7e610961565b565b60095481565b6006546001600160a01b031681565b610f9d6111cc565b6003546001600160a01b03908116911614610fed576040805162461bcd60e51b815260206004820181905260248201526000805160206117ad833981519152604482015290519081900360640190fd5b6001600160a01b0381166110325760405162461bcd60e51b81526004018080602001828103825260268152602001806117196026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60006110d083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611381565b9392505050565b6000826110e65750600061050b565b828202828482816110f357fe5b04146110d05760405162461bcd60e51b815260040180806020018281038252602181526020018061178c6021913960400191505060405180910390fd5b60006110d083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611418565b6000828201838110156110d0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3390565b6001600160a01b0381166112155760405162461bcd60e51b815260040180806020018281038252602d81526020018061173f602d913960400191505060405180910390fd5b6040516001600160a01b038216906000907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908290a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60015461127a908261108e565b60015533600090815260026020526040902054611297908261108e565b33600081815260026020526040812092909255905461061b916001600160a01b0390911690835b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261131090849061147d565b505050565b600081831061132457816110d0565b5090919050565b6001546113389082611172565b600155336000908152600260205260409020546113559082611172565b33600081815260026020526040812092909255905461061b916001600160a01b0390911690308461152e565b600081848411156114105760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113d55781810151838201526020016113bd565b50505050905090810190601f1680156114025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836114675760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156113d55781810151838201526020016113bd565b50600083858161147357fe5b0495945050505050565b60606114d2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661158e9092919063ffffffff16565b805190915015611310578080602001905160208110156114f157600080fd5b50516113105760405162461bcd60e51b815260040180806020018281038252602a815260200180611812602a913960400191505060405180910390fd5b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261158890859061147d565b50505050565b606061159d84846000856115a5565b949350505050565b60606115b085611712565b611601576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106116405780518252601f199092019160209182019101611621565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116a2576040519150601f19603f3d011682016040523d82523d6000602084013e6116a7565b606091505b509150915081156116bb57915061159d9050565b8051156116cb5780518082602001fd5b60405162461bcd60e51b81526020600482018181528651602484015286518793919283926044019190850190808383600083156113d55781810151838201526020016113bd565b3b15159056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573736f70657261746f723a207a65726f206164647265737320676976656e20666f72206e6577206f70657261746f72de88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657261746f7243616c6c6572206973206e6f742072657761726420646973747269627574696f6e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212208fa63acd6677117ce3ea5b4605ab4ed3a390b3fa08b6c8b419e0d94cf511ba5b64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b58dfbb72e648a0b035b8c85b3628123cc9bb8810000000000000000000000000f8c89d3fb0b502732b338f1dfb3c465dc856c8e000000000000000000000000000000000000000000000000000000006039a7a0
-----Decoded View---------------
Arg [0] : mithShare_ (address): 0xb58DFBB72e648a0b035B8C85B3628123CC9bb881
Arg [1] : lptoken_ (address): 0x0F8c89d3fB0b502732b338f1dfb3c465Dc856C8e
Arg [2] : starttime_ (uint256): 1614391200
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000b58dfbb72e648a0b035b8c85b3628123cc9bb881
Arg [1] : 0000000000000000000000000f8c89d3fb0b502732b338f1dfb3c465dc856c8e
Arg [2] : 000000000000000000000000000000000000000000000000000000006039a7a0
Deployed Bytecode Sourcemap
27041:5070:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29034:265;;;;;;;;;;;;;;;;-1:-1:-1;29034:265:0;-1:-1:-1;;;;;29034:265:0;;:::i;:::-;;;;;;;;;;;;;;;;27568:42;;;;;;;;;;;;;;;;-1:-1:-1;27568:42:0;-1:-1:-1;;;;;27568:42:0;;:::i;22743:178::-;;;;;;;;;;;;;;;;-1:-1:-1;22743:178:0;-1:-1:-1;;;;;22743:178:0;;:::i;:::-;;22442:33;;;:::i;:::-;;;;-1:-1:-1;;;;;22442:33:0;;;;;;;;;;;;;;23222:91;;;:::i;27184:42::-;;;:::i;24692:115::-;;;;;;;;;;;;;;;;-1:-1:-1;24692:115:0;-1:-1:-1;;;;;24692:115:0;;:::i;29772:284::-;;;;;;;;;;;;;;;;-1:-1:-1;29772:284:0;;:::i;30920:904::-;;;;;;;;;;;;;;;;-1:-1:-1;30920:904:0;;:::i;30169:312::-;;;:::i;24584:100::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;27617:49;;;;;;;;;;;;;;;;-1:-1:-1;27617:49:0;-1:-1:-1;;;;;27617:49:0;;:::i;24319:85::-;;;:::i;23321:110::-;;;;;;;;;;;;;;;;-1:-1:-1;23321:110:0;-1:-1:-1;;;;;23321:110:0;;:::i;21728:148::-;;;:::i;27390:29::-;;;:::i;28467:131::-;;;:::i;31971:137::-;;;;;;;;;;;;;;;;-1:-1:-1;31971:137:0;-1:-1:-1;;;;;31971:137:0;;:::i;27504:57::-;;;;;;;;;;;;;;;;-1:-1:-1;27504:57:0;-1:-1:-1;;;;;27504:57:0;;:::i;27304:24::-;;;:::i;21086:79::-;;;:::i;27233:44::-;;;:::i;29390:374::-;;;;;;;;;;;;;;;;-1:-1:-1;29390:374:0;;:::i;27426:29::-;;;:::i;28606:420::-;;;:::i;23107:17::-;;;:::i;27462:35::-;;;:::i;31832:131::-;;;;;;;;;;;;;;;;-1:-1:-1;31832:131:0;-1:-1:-1;;;;;31832:131:0;;:::i;30064:97::-;;;:::i;27352:31::-;;;:::i;27154:23::-;;;:::i;22031:244::-;;;;;;;;;;;;;;;;-1:-1:-1;22031:244:0;-1:-1:-1;;;;;22031:244:0;;:::i;29034:265::-;-1:-1:-1;;;;;29274:16:0;;29088:7;29274:16;;;:7;:16;;;;;;;;;29190:22;:31;;;;;;29128:163;;29274:16;29128:123;;29246:4;;29128:95;;29169:53;;:16;:14;:16::i;:::-;:20;;:53::i;:::-;29128:18;29138:7;29128:9;:18::i;:::-;:40;;:95::i;:::-;:117;;:123::i;:::-;:145;;:163::i;:::-;29108:183;29034:265;-1:-1:-1;;29034:265:0:o;27568:42::-;;;;;;;;;;;;;:::o;22743:178::-;21308:12;:10;:12::i;:::-;21298:6;;-1:-1:-1;;;;;21298:6:0;;;:22;;;21290:67;;;;;-1:-1:-1;;;21290:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21290:67:0;;;;;;;;;;;;;;;22873:18:::1;:40:::0;;-1:-1:-1;;;;;;22873:40:0::1;-1:-1:-1::0;;;;;22873:40:0;;;::::1;::::0;;;::::1;::::0;;22743:178::o;22442:33::-;;;-1:-1:-1;;;;;22442:33:0;;:::o;23222:91::-;23293:12;;23222:91;;:::o;27184:42::-;27219:7;27184:42;:::o;24692:115::-;21308:12;:10;:12::i;:::-;21298:6;;-1:-1:-1;;;;;21298:6:0;;;:22;;;21290:67;;;;;-1:-1:-1;;;21290:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21290:67:0;;;;;;;;;;;;;;;24768:31:::1;24786:12;24768:17;:31::i;:::-;24692:115:::0;:::o;29772:284::-;29862:10;28202:16;:14;:16::i;:::-;28179:20;:39;28246:26;:24;:26::i;:::-;28229:14;:43;-1:-1:-1;;;;;28287:21:0;;;28283:157;;28344:15;28351:7;28344:6;:15::i;:::-;-1:-1:-1;;;;;28325:16:0;;;;;;:7;:16;;;;;;;;:34;;;;28408:20;;28374:22;:31;;;;;;:54;28283:157;30545:12:::1;;30526:15;:31;30522:260;;30587:27;30610:3;30587:18;30602:2;30587:10;;:14;;:18;;;;:::i;:27::-;30574:10;:40:::0;;;30644:24:::1;::::0;27219:7:::1;30644:14;:24::i;:::-;30631:10;:37:::0;30698:29:::1;:15;27219:7;30698:19;:29::i;:::-;30683:12;:44:::0;30759:10:::1;::::0;30747:23:::1;::::0;;;;;;-1:-1:-1;;;;;;;;;;;30747:23:0;;;;::::1;::::0;;::::1;30522:260;30869:9:::2;;30850:15;:28;;30842:50;;;::::0;;-1:-1:-1;;;30842:50:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;30842:50:0;;;;;;;;;;;;;::::2;;29947:1:::3;29938:6;:10;29930:40;;;::::0;;-1:-1:-1;;;29930:40:0;;::::3;;::::0;::::3;::::0;::::3;::::0;;;;-1:-1:-1;;;29930:40:0;;;;;;;;;;;;;::::3;;29981:22;29996:6;29981:14;:22::i;:::-;30019:29;::::0;;;;;;;30029:10:::3;::::0;30019:29:::3;::::0;;;;;::::3;::::0;;::::3;29772:284:::0;;:::o;30920:904::-;22636:18;;-1:-1:-1;;;;;22636:18:0;22620:12;:10;:12::i;:::-;-1:-1:-1;;;;;22620:34:0;;22598:117;;;;-1:-1:-1;;;22598:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31062:1:::1;28202:16;:14;:16::i;:::-;28179:20;:39:::0;28246:26:::1;:24;:26::i;:::-;28229:14;:43:::0;-1:-1:-1;;;;;28287:21:0;::::1;::::0;28283:157:::1;;28344:15;28351:7;28344:6;:15::i;:::-;-1:-1:-1::0;;;;;28325:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:34;;;;28408:20:::1;::::0;28374:22:::1;:31:::0;;;;;;:54;28283:157:::1;31104:9:::2;;31086:15;:27;31082:735;;;31153:12;;31134:15;:31;31130:328;;31199:20;:6:::0;27219:7:::2;31199:10;:20::i;:::-;31186:10;:33:::0;31130:328:::2;;;31280:12;::::0;31260:17:::2;::::0;31280:33:::2;::::0;31297:15:::2;31280:16;:33::i;:::-;31260:53;;31332:16;31351:25;31365:10;;31351:9;:13;;:25;;;;:::i;:::-;31332:44:::0;-1:-1:-1;31408:34:0::2;27219:7;31408:20;:6:::0;31332:44;31408:10:::2;:20::i;:34::-;31395:10;:47:::0;-1:-1:-1;;31130:328:0::2;31489:15;31472:14;:32:::0;;;31534:29:::2;::::0;27219:7:::2;31534:19;:29::i;:::-;31519:12;:44:::0;31583:19:::2;::::0;;;;;;;-1:-1:-1;;;;;;;;;;;31583:19:0;;;;::::2;::::0;;::::2;31082:735;;;31648:10;::::0;:24:::2;::::0;27219:7:::2;31648:14;:24::i;:::-;31635:10;:37:::0;31704:9:::2;::::0;31687:14:::2;:26:::0;;;31743:23:::2;::::0;27219:7:::2;31743:13;:23::i;:::-;31728:12;:38:::0;31786:19:::2;::::0;;;;;;;-1:-1:-1;;;;;;;;;;;31786:19:0;;;;::::2;::::0;;::::2;31082:735;22726:1:::1;30920:904:::0;:::o;30169:312::-;30210:10;28202:16;:14;:16::i;:::-;28179:20;:39;28246:26;:24;:26::i;:::-;28229:14;:43;-1:-1:-1;;;;;28287:21:0;;;28283:157;;28344:15;28351:7;28344:6;:15::i;:::-;-1:-1:-1;;;;;28325:16:0;;;;;;:7;:16;;;;;;;;:34;;;;28408:20;;28374:22;:31;;;;;;:54;28283:157;30545:12:::1;;30526:15;:31;30522:260;;30587:27;30610:3;30587:18;30602:2;30587:10;;:14;;:18;;;;:::i;:27::-;30574:10;:40:::0;;;30644:24:::1;::::0;27219:7:::1;30644:14;:24::i;:::-;30631:10;:37:::0;30698:29:::1;:15;27219:7;30698:19;:29::i;:::-;30683:12;:44:::0;30759:10:::1;::::0;30747:23:::1;::::0;;;;;;-1:-1:-1;;;;;;;;;;;30747:23:0;;;;::::1;::::0;;::::1;30522:260;30869:9:::2;;30850:15;:28;;30842:50;;;::::0;;-1:-1:-1;;;30842:50:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;30842:50:0;;;;;;;;;;;;;::::2;;30255:14:::3;30272:18;30279:10;30272:6;:18::i;:::-;30255:35:::0;-1:-1:-1;30305:10:0;;30301:173:::3;;30340:10;30354:1;30332:19:::0;;;:7:::3;:19;::::0;;;;:23;30370:9:::3;::::0;:42:::3;::::0;-1:-1:-1;;;;;30370:9:0;;::::3;::::0;30405:6;30370:22:::3;:42::i;:::-;30432:30;::::0;;;;;;;30443:10:::3;::::0;30432:30:::3;::::0;;;;;::::3;::::0;;::::3;30903:1;30169:312:::0;:::o;24584:100::-;24667:9;;24627:4;;-1:-1:-1;;;;;24667:9:0;24651:12;:10;:12::i;:::-;-1:-1:-1;;;;;24651:25:0;;24644:32;;24584:100;:::o;27617:49::-;;;;;;;;;;;;;;;:::o;24319:85::-;24387:9;;-1:-1:-1;;;;;24387:9:0;24319:85;:::o;23321:110::-;-1:-1:-1;;;;;23405:18:0;23378:7;23405:18;;;:9;:18;;;;;;;23321:110::o;21728:148::-;21308:12;:10;:12::i;:::-;21298:6;;-1:-1:-1;;;;;21298:6:0;;;:22;;;21290:67;;;;;-1:-1:-1;;;21290:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21290:67:0;;;;;;;;;;;;;;;21819:6:::1;::::0;21798:40:::1;::::0;21835:1:::1;::::0;-1:-1:-1;;;;;21819:6:0::1;::::0;21798:40:::1;::::0;21835:1;;21798:40:::1;21849:6;:19:::0;;-1:-1:-1;;;;;;21849:19:0::1;::::0;;21728:148::o;27390:29::-;;;;:::o;28467:131::-;28524:7;28551:39;28560:15;28577:12;;28551:8;:39::i;:::-;28544:46;;28467:131;:::o;31971:137::-;24469:9;;-1:-1:-1;;;;;24469:9:0;24482:10;24469:23;24447:109;;;;-1:-1:-1;;;24447:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32057:35:0::1;32095:5;32057:35:::0;;;:17:::1;:35;::::0;;;;:43;;-1:-1:-1;;32057:43:0::1;::::0;;31971:137::o;27504:57::-;;;;;;;;;;;;;:::o;27304:24::-;;;;:::o;21086:79::-;21151:6;;-1:-1:-1;;;;;21151:6:0;21086:79;:::o;27233:44::-;;;;:::o;29390:374::-;29477:10;28202:16;:14;:16::i;:::-;28179:20;:39;28246:26;:24;:26::i;:::-;28229:14;:43;-1:-1:-1;;;;;28287:21:0;;;28283:157;;28344:15;28351:7;28344:6;:15::i;:::-;-1:-1:-1;;;;;28325:16:0;;;;;;:7;:16;;;;;;;;:34;;;;28408:20;;28374:22;:31;;;;;;:54;28283:157;30545:12:::1;;30526:15;:31;30522:260;;30587:27;30610:3;30587:18;30602:2;30587:10;;:14;;:18;;;;:::i;:27::-;30574:10;:40:::0;;;30644:24:::1;::::0;27219:7:::1;30644:14;:24::i;:::-;30631:10;:37:::0;30698:29:::1;:15;27219:7;30698:19;:29::i;:::-;30683:12;:44:::0;30759:10:::1;::::0;30747:23:::1;::::0;;;;;;-1:-1:-1;;;;;;;;;;;30747:23:0;;;;::::1;::::0;;::::1;30522:260;30869:9:::2;;30850:15;:28;;30842:50;;;::::0;;-1:-1:-1;;;30842:50:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;30842:50:0;;;;;;;;;;;;;::::2;;29562:1:::3;29553:6;:10;29545:37;;;::::0;;-1:-1:-1;;;29545:37:0;;::::3;;::::0;::::3;::::0;::::3;::::0;;;;-1:-1:-1;;;29545:37:0;;;;;;;;;;;;;::::3;;29601:10;29615:9;29601:23;::::0;:64:::3;;-1:-1:-1::0;29646:10:0::3;29628:29;::::0;;;:17:::3;:29;::::0;;;;;::::3;;:37;;:29:::0;:37:::3;29601:64;29593:89;;;::::0;;-1:-1:-1;;;29593:89:0;;::::3;;::::0;::::3;::::0;::::3;::::0;;;;-1:-1:-1;;;29593:89:0;;;;;;;;;;;;;::::3;;29695:19;29707:6;29695:11;:19::i;:::-;29730:26;::::0;;;;;;;29737:10:::3;::::0;29730:26:::3;::::0;;;;;::::3;::::0;;::::3;29390:374:::0;;:::o;27426:29::-;;;;:::o;28606:420::-;28653:7;28677:13;:11;:13::i;:::-;28673:78;;-1:-1:-1;28719:20:0;;28712:27;;28673:78;28781:237;28824:179;28989:13;:11;:13::i;:::-;28824:138;28957:4;28824:106;28919:10;;28824:68;28877:14;;28824:26;:24;:26::i;:179::-;28781:20;;;:24;:237::i;23107:17::-;;;-1:-1:-1;;;;;23107:17:0;;:::o;27462:35::-;;;;:::o;31832:131::-;24469:9;;-1:-1:-1;;;;;24469:9:0;24482:10;24469:23;24447:109;;;;-1:-1:-1;;;24447:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31913:35:0::1;;::::0;;;:17:::1;:35;::::0;;;;:42;;-1:-1:-1;;31913:42:0::1;31951:4;31913:42;::::0;;31832:131::o;30064:97::-;30100:31;30109:21;30119:10;30109:9;:21::i;:::-;30100:8;:31::i;:::-;30142:11;:9;:11::i;:::-;30064:97::o;27352:31::-;;;;:::o;27154:23::-;;;-1:-1:-1;;;;;27154:23:0;;:::o;22031:244::-;21308:12;:10;:12::i;:::-;21298:6;;-1:-1:-1;;;;;21298:6:0;;;:22;;;21290:67;;;;;-1:-1:-1;;;21290:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;21290:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22120:22:0;::::1;22112:73;;;;-1:-1:-1::0;;;22112:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22222:6;::::0;22201:38:::1;::::0;-1:-1:-1;;;;;22201:38:0;;::::1;::::0;22222:6:::1;::::0;22201:38:::1;::::0;22222:6:::1;::::0;22201:38:::1;22250:6;:17:::0;;-1:-1:-1;;;;;;22250:17:0::1;-1:-1:-1::0;;;;;22250:17:0;;;::::1;::::0;;;::::1;::::0;;22031:244::o;2300:136::-;2358:7;2385:43;2389:1;2392;2385:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2378:50;2300:136;-1:-1:-1;;;2300:136:0:o;3190:471::-;3248:7;3493:6;3489:47;;-1:-1:-1;3523:1:0;3516:8;;3489:47;3560:5;;;3564:1;3560;:5;:1;3584:5;;;;;:10;3576:56;;;;-1:-1:-1;;;3576:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4137:132;4195:7;4222:39;4226:1;4229;4222:39;;;;;;;;;;;;;;;;;:3;:39::i;1836:181::-;1894:7;1926:5;;;1950:6;;;;1942:46;;;;;-1:-1:-1;;;1942:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;19611:106;19699:10;19611:106;:::o;24815:294::-;-1:-1:-1;;;;;24906:26:0;;24884:121;;;;-1:-1:-1;;;24884:121:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25021:45;;-1:-1:-1;;;;;25021:45:0;;;25049:1;;25021:45;;25049:1;;25021:45;25077:9;:24;;-1:-1:-1;;;;;;25077:24:0;-1:-1:-1;;;;;25077:24:0;;;;;;;;;;24815:294::o;23685:222::-;23760:12;;:24;;23777:6;23760:16;:24::i;:::-;23745:12;:39;23829:10;23819:21;;;;:9;:21;;;;;;:33;;23845:6;23819:25;:33::i;:::-;23805:10;23795:21;;;;:9;:21;;;;;:57;;;;23863:3;;:36;;-1:-1:-1;;;;;23863:3:0;;;;23892:6;15885:177;15995:58;;;-1:-1:-1;;;;;15995:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15995:58:0;-1:-1:-1;;;15995:58:0;;;15968:86;;15988:5;;15968:19;:86::i;:::-;15885:177;;;:::o;459:106::-;517:7;548:1;544;:5;:13;;556:1;544:13;;;-1:-1:-1;552:1:0;;459:106;-1:-1:-1;459:106:0:o;23439:238::-;23511:12;;:24;;23528:6;23511:16;:24::i;:::-;23496:12;:39;23580:10;23570:21;;;;:9;:21;;;;;;:33;;23596:6;23570:25;:33::i;:::-;23556:10;23546:21;;;;:9;:21;;;;;:57;;;;23614:3;;:55;;-1:-1:-1;;;;;23614:3:0;;;;23655:4;23662:6;23614:20;:55::i;2739:192::-;2825:7;2861:12;2853:6;;;;2845:29;;;;-1:-1:-1;;;2845:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2897:5:0;;;2739:192::o;4765:278::-;4851:7;4886:12;4879:5;4871:28;;;;-1:-1:-1;;;4871:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4910:9;4926:1;4922;:5;;;;;;;4765:278;-1:-1:-1;;;;;4765:278:0:o;18190:761::-;18614:23;18640:69;18668:4;18640:69;;;;;;;;;;;;;;;;;18648:5;-1:-1:-1;;;;;18640:27:0;;;:69;;;;;:::i;:::-;18724:17;;18614:95;;-1:-1:-1;18724:21:0;18720:224;;18866:10;18855:30;;;;;;;;;;;;;;;-1:-1:-1;18855:30:0;18847:85;;;;-1:-1:-1;;;18847:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16070:205;16198:68;;;-1:-1:-1;;;;;16198:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16198:68:0;-1:-1:-1;;;16198:68:0;;;16171:96;;16191:5;;16171:19;:96::i;:::-;16070:205;;;;:::o;12837:196::-;12940:12;12972:53;12995:6;13003:4;13009:1;13012:12;12972:22;:53::i;:::-;12965:60;12837:196;-1:-1:-1;;;;12837:196:0:o;14214:979::-;14344:12;14377:18;14388:6;14377:10;:18::i;:::-;14369:60;;;;;-1:-1:-1;;;14369:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14503:12;14517:23;14544:6;-1:-1:-1;;;;;14544:11:0;14564:8;14575:4;14544:36;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14544:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14502:78;;;;14595:7;14591:595;;;14626:10;-1:-1:-1;14619:17:0;;-1:-1:-1;14619:17:0;14591:595;14740:17;;:21;14736:439;;15003:10;14997:17;15064:15;15051:10;15047:2;15043:19;15036:44;14951:148;15139:20;;-1:-1:-1;;;15139:20:0;;;;;;;;;;;;;;;;;15146:12;;15139:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9919:422;10286:20;10325:8;;;9919:422::o
Swarm Source
ipfs://8fa63acd6677117ce3ea5b4605ab4ed3a390b3fa08b6c8b419e0d94cf511ba5b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.