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 319 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 10861715 | 1587 days ago | IN | 0 ETH | 0.01940218 | ||||
Get Reward | 10861707 | 1587 days ago | IN | 0 ETH | 0.01942099 | ||||
Get Reward | 10847233 | 1589 days ago | IN | 0 ETH | 0.00494419 | ||||
Withdraw | 10846848 | 1589 days ago | IN | 0 ETH | 0.00676866 | ||||
Exit | 10830684 | 1592 days ago | IN | 0 ETH | 0.01208971 | ||||
Withdraw | 10829674 | 1592 days ago | IN | 0 ETH | 0.00919424 | ||||
Exit | 10826163 | 1592 days ago | IN | 0 ETH | 0.01208971 | ||||
Exit | 10825715 | 1592 days ago | IN | 0 ETH | 0.00965719 | ||||
Withdraw | 10824979 | 1592 days ago | IN | 0 ETH | 0.00634988 | ||||
Get Reward | 10824952 | 1592 days ago | IN | 0 ETH | 0.00599296 | ||||
Exit | 10824858 | 1592 days ago | IN | 0 ETH | 0.00795613 | ||||
Get Reward | 10824321 | 1592 days ago | IN | 0 ETH | 0.00659225 | ||||
Exit | 10824235 | 1593 days ago | IN | 0 ETH | 0.01157526 | ||||
Exit | 10823748 | 1593 days ago | IN | 0 ETH | 0.00933737 | ||||
Exit | 10823505 | 1593 days ago | IN | 0 ETH | 0.00837277 | ||||
Exit | 10823345 | 1593 days ago | IN | 0 ETH | 0.00895386 | ||||
Withdraw | 10823146 | 1593 days ago | IN | 0 ETH | 0.01109552 | ||||
Get Reward | 10823133 | 1593 days ago | IN | 0 ETH | 0.01159864 | ||||
Withdraw | 10822811 | 1593 days ago | IN | 0 ETH | 0.01099755 | ||||
Exit | 10822702 | 1593 days ago | IN | 0 ETH | 0.01397452 | ||||
Withdraw | 10822316 | 1593 days ago | IN | 0 ETH | 0.01251754 | ||||
Exit | 10821934 | 1593 days ago | IN | 0 ETH | 0.01312761 | ||||
Withdraw | 10821764 | 1593 days ago | IN | 0 ETH | 0.00929999 | ||||
Get Reward | 10821701 | 1593 days ago | IN | 0 ETH | 0.00926093 | ||||
Exit | 10821651 | 1593 days ago | IN | 0 ETH | 0.01273724 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BoostRewardsPool
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-09-01 */ //SPDX-License-Identifier: MIT /* * MIT License * =========== * * 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 */ pragma solidity ^0.5.17; /** * @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); } } pragma solidity ^0.5.17; /** * @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. * * _Available since v2.4.0._ */ 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. * * _Available since v2.4.0._ */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 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. * * _Available since v2.4.0._ */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } pragma solidity ^0.5.17; /* * @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. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } pragma solidity ^0.5.17; /** * @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. * * 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 { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } /** * @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(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _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 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 onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } pragma solidity ^0.5.17; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ 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); } interface IERC20Burnable { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); function burn(uint256 amount) external; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } pragma solidity ^0.5.17; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * This test is non-exhaustive, and there may be false-negatives: during the * execution of a contract's constructor, its address will be reported as * not containing 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. */ 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. // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != 0x0 && codehash != accountHash); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @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]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require(success, "Address: unable to send value, recipient may have reverted"); } } pragma solidity ^0.5.17; /** * @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 ERC20;` 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)); } 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. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "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"); } } } pragma solidity ^0.5.17; contract LPTokenWrapper { using SafeMath for uint256; using SafeERC20 for IERC20; IERC20 public stakeToken; uint256 private _totalSupply; mapping(address => uint256) private _balances; constructor(IERC20 _stakeToken) public { stakeToken = _stakeToken; } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function stake(uint256 amount) public { _totalSupply = _totalSupply.add(amount); _balances[msg.sender] = _balances[msg.sender].add(amount); // safeTransferFrom shifted to last line of overridden method } function withdraw(uint256 amount) public { _totalSupply = _totalSupply.sub(amount); _balances[msg.sender] = _balances[msg.sender].sub(amount); // safeTransfer shifted to last line of overridden method } } interface UniswapRouter { function WETH() external pure returns (address); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); } interface IGovernance { function getStablecoin() external view returns (address); } contract BoostRewardsPool is LPTokenWrapper, Ownable { IERC20 public boostToken; address public governance; address public governanceSetter; UniswapRouter public uniswapRouter; address public stablecoin; uint256 public constant MAX_NUM_BOOSTERS = 5; uint256 public tokenCapAmount; uint256 public starttime; uint256 public duration; uint256 public periodFinish = 0; uint256 public rewardRate = 0; uint256 public lastUpdateTime; uint256 public rewardPerTokenStored; mapping(address => uint256) public userRewardPerTokenPaid; mapping(address => uint256) public rewards; // booster variables // variables to keep track of totalSupply and balances (after accounting for multiplier) uint256 public boostedTotalSupply; mapping(address => uint256) public boostedBalances; mapping(address => uint256) public numBoostersBought; // each booster = 5% increase in stake amt mapping(address => uint256) public nextBoostPurchaseTime; // timestamp for which user is eligible to purchase another booster uint256 public boosterPrice = PRECISION; uint256 internal constant PRECISION = 1e18; event RewardAdded(uint256 reward); event RewardPaid(address indexed user, uint256 reward); modifier checkStart() { require(block.timestamp >= starttime,"not start"); _; } modifier updateReward(address account) { rewardPerTokenStored = rewardPerToken(); lastUpdateTime = lastTimeRewardApplicable(); if (account != address(0)) { rewards[account] = earned(account); userRewardPerTokenPaid[account] = rewardPerTokenStored; } _; } constructor( uint256 _tokenCapAmount, IERC20 _stakeToken, IERC20 _boostToken, address _governanceSetter, UniswapRouter _uniswapRouter, uint256 _starttime, uint256 _duration ) public LPTokenWrapper(_stakeToken) { tokenCapAmount = _tokenCapAmount; boostToken = _boostToken; boostToken.approve(address(_uniswapRouter), uint256(-1)); governanceSetter = _governanceSetter; uniswapRouter = _uniswapRouter; starttime = _starttime; duration = _duration; } function lastTimeRewardApplicable() public view returns (uint256) { return Math.min(block.timestamp, periodFinish); } function rewardPerToken() public view returns (uint256) { if (boostedTotalSupply == 0) { return rewardPerTokenStored; } return rewardPerTokenStored.add( lastTimeRewardApplicable() .sub(lastUpdateTime) .mul(rewardRate) .mul(1e18) .div(boostedTotalSupply) ); } function earned(address account) public view returns (uint256) { return boostedBalances[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 updateReward(msg.sender) checkStart { require(amount > 0, "Cannot stake 0"); super.stake(amount); // check user cap require( balanceOf(msg.sender) <= tokenCapAmount || block.timestamp >= starttime.add(86400), "token cap exceeded" ); // update boosted balance and supply updateBoostBalanceAndSupply(msg.sender); // transfer token last, to follow CEI pattern stakeToken.safeTransferFrom(msg.sender, address(this), amount); } function withdraw(uint256 amount) public updateReward(msg.sender) checkStart { require(amount > 0, "Cannot withdraw 0"); super.withdraw(amount); // update boosted balance and supply updateBoostBalanceAndSupply(msg.sender); stakeToken.safeTransfer(msg.sender, amount); } function exit() external { withdraw(balanceOf(msg.sender)); getReward(); } function getReward() public updateReward(msg.sender) checkStart { uint256 reward = earned(msg.sender); if (reward > 0) { rewards[msg.sender] = 0; boostToken.safeTransfer(msg.sender, reward); emit RewardPaid(msg.sender, reward); } } function boost() external updateReward(msg.sender) checkStart { require( // 2 days after starttime block.timestamp > starttime.add(172800) && block.timestamp > nextBoostPurchaseTime[msg.sender], "early boost purchase" ); // increase next purchase eligibility by an hour nextBoostPurchaseTime[msg.sender] = block.timestamp.add(3600); // increase no. of boosters bought uint256 booster = numBoostersBought[msg.sender].add(1); numBoostersBought[msg.sender] = booster; require(booster <= MAX_NUM_BOOSTERS, "max boosters bought"); // save current booster price, since transfer is done last booster = boosterPrice; // increase next booster price by 5% boosterPrice = boosterPrice.mul(105).div(100); // update boosted balance and supply updateBoostBalanceAndSupply(msg.sender); boostToken.safeTransferFrom(msg.sender, address(this), booster); IERC20Burnable burnableBoostToken = IERC20Burnable(address(boostToken)); // if governance not set, burn all if (governance == address(0)) { burnableBoostToken.burn(booster); return; } // otherwise, burn 50% uint256 burnAmount = booster.div(2); burnableBoostToken.burn(burnAmount); booster = booster.sub(burnAmount); // swap to stablecoin, transferred to governance address[] memory routeDetails = new address[](3); routeDetails[0] = address(boostToken); routeDetails[1] = uniswapRouter.WETH(); routeDetails[2] = stablecoin; uniswapRouter.swapExactTokensForTokens( booster, 0, routeDetails, governance, block.timestamp + 100 ); } function notifyRewardAmount(uint256 reward) external onlyOwner updateReward(address(0)) { rewardRate = reward.div(duration); lastUpdateTime = starttime; periodFinish = starttime.add(duration); emit RewardAdded(reward); } function setGovernance(address _governance) external { require(msg.sender == governanceSetter, "only setter"); governance = _governance; stablecoin = IGovernance(governance).getStablecoin(); governanceSetter = address(0); } function updateBoostBalanceAndSupply(address user) internal { // subtract existing balance from boostedSupply boostedTotalSupply = boostedTotalSupply.sub(boostedBalances[user]); // calculate and update new boosted balance (user's balance has been updated by parent method) // each booster adds 5% to stake amount uint256 newBoostBalance = balanceOf(user).mul(numBoostersBought[user].mul(5).add(100)).div(100); boostedBalances[user] = newBoostBalance; // update boostedSupply boostedTotalSupply = boostedTotalSupply.add(newBoostBalance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_tokenCapAmount","type":"uint256"},{"internalType":"contract IERC20","name":"_stakeToken","type":"address"},{"internalType":"contract IERC20","name":"_boostToken","type":"address"},{"internalType":"address","name":"_governanceSetter","type":"address"},{"internalType":"contract UniswapRouter","name":"_uniswapRouter","type":"address"},{"internalType":"uint256","name":"_starttime","type":"uint256"},{"internalType":"uint256","name":"_duration","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"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"},{"constant":true,"inputs":[],"name":"MAX_NUM_BOOSTERS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"boost","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"boostToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boostedBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"boostedTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"boosterPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"governanceSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nextBoostPurchaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numBoostersBought","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"setGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stablecoin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakeToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"starttime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenCapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract UniswapRouter","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000600c556000600d55670de0b6b3a76400006016553480156200002757600080fd5b5060405162001f3138038062001f31833981810160405260e08110156200004d57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03871617905594959394929391929091906200009f620001cd565b600380546001600160a01b0319166001600160a01b0392831617908190556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36009879055600480546001600160a01b0319166001600160a01b03878116919091178083556040805163095ea7b360e01b81528784169481019490945260001960248501525191169163095ea7b39160448083019260209291908290030181600087803b1580156200015c57600080fd5b505af115801562000171573d6000803e3d6000fd5b505050506040513d60208110156200018857600080fd5b5050600680546001600160a01b039586166001600160a01b0319918216179091556007805494909516931692909217909255600a91909155600b5550620001d1915050565b3390565b611d5080620001e16000396000f3fe608060405234801561001057600080fd5b50600436106102765760003560e01c806380faa57d11610160578063b0b34949116100d8578063e72c3c421161008c578063e9fad8ee11610071578063e9fad8ee146104fe578063ebe2b12b14610506578063f2fde38b1461050e57610276565b8063e72c3c42146104d0578063e9cbd822146104f657610276565b8063c8f33c91116100bd578063c8f33c91146104b8578063cd3daf9d146104c0578063df136d65146104c857610276565b8063b0b34949146104a8578063c8360c5a146104b057610276565b80638da5cb5b1161012f578063a66f42c011610114578063a66f42c01461045d578063a694fc3a14610465578063ab033ea91461048257610276565b80638da5cb5b146104395780638f32d59b1461044157610276565b806380faa57d146103fb5780638112643c146104035780638b8763471461040b5780638da588971461043157610276565b80633d18b912116101f357806364044fd9116101c2578063715018a6116101a7578063715018a6146103e3578063735de9f7146103eb5780637b0a47ee146103f357610276565b806364044fd91461039757806370a08231146103bd57610276565b80633d18b9121461037757806351ed6a301461037f5780635aa6e675146103875780635be4d8001461038f57610276565b806318160ddd1161024a5780633a589b971161022f5780633a589b97146103105780633ba35551146103345780633c6b16ab1461035a57610276565b806318160ddd146102e95780632e1a7d4d146102f157610276565b80628cc2621461027b57806304058165146102b35780630700037d146102bb5780630fb5a6b4146102e1575b600080fd5b6102a16004803603602081101561029157600080fd5b50356001600160a01b0316610534565b60408051918252519081900360200190f35b6102a16105ca565b6102a1600480360360208110156102d157600080fd5b50356001600160a01b03166105d0565b6102a16105e2565b6102a16105e8565b61030e6004803603602081101561030757600080fd5b50356105ef565b005b610318610729565b604080516001600160a01b039092168252519081900360200190f35b6102a16004803603602081101561034a57600080fd5b50356001600160a01b0316610738565b61030e6004803603602081101561037057600080fd5b503561074a565b61030e61086b565b610318610993565b6103186109a2565b6102a16109b1565b6102a1600480360360208110156103ad57600080fd5b50356001600160a01b03166109b7565b6102a1600480360360208110156103d357600080fd5b50356001600160a01b03166109c9565b61030e6109e4565b610318610a9f565b6102a1610aae565b6102a1610ab4565b6102a1610ac7565b6102a16004803603602081101561042157600080fd5b50356001600160a01b0316610acd565b6102a1610adf565b610318610ae5565b610449610af4565b604080519115158252519081900360200190f35b61030e610b1a565b61030e6004803603602081101561047b57600080fd5b5035611121565b61030e6004803603602081101561049857600080fd5b50356001600160a01b03166112d7565b610318611431565b6102a1611440565b6102a1611445565b6102a161144b565b6102a16114a5565b6102a1600480360360208110156104e657600080fd5b50356001600160a01b03166114ab565b6103186114bd565b61030e6114cc565b6102a16114e7565b61030e6004803603602081101561052457600080fd5b50356001600160a01b03166114ed565b6001600160a01b03811660009081526011602090815260408083205460109092528220546105c491906105b890670de0b6b3a7640000906105ac906105879061057b61144b565b9063ffffffff61154f16565b6001600160a01b0388166000908152601360205260409020549063ffffffff61159816565b9063ffffffff6115f116565b9063ffffffff61163316565b92915050565b60165481565b60116020526000908152604090205481565b600b5481565b6001545b90565b336105f861144b565b600f55610603610ab4565b600e556001600160a01b0381161561064a5761061e81610534565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b600a544210156106a1576040805162461bcd60e51b815260206004820152600960248201527f6e6f742073746172740000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600082116106f6576040805162461bcd60e51b815260206004820152601160248201527f43616e6e6f742077697468647261772030000000000000000000000000000000604482015290519081900360640190fd5b6106ff8261168d565b610708336116d6565b600054610725906001600160a01b0316338463ffffffff61178016565b5050565b6004546001600160a01b031681565b60136020526000908152604090205481565b610752610af4565b6107a3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60006107ad61144b565b600f556107b8610ab4565b600e556001600160a01b038116156107ff576107d381610534565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b600b5461081390839063ffffffff6115f116565b600d55600a54600e819055600b54610831919063ffffffff61163316565b600c556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15050565b3361087461144b565b600f5561087f610ab4565b600e556001600160a01b038116156108c65761089a81610534565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b600a5442101561091d576040805162461bcd60e51b815260206004820152600960248201527f6e6f742073746172740000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600061092833610534565b905080156107255733600081815260116020526040812055600454610959916001600160a01b039091169083611780565b60408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25050565b6000546001600160a01b031681565b6005546001600160a01b031681565b60095481565b60156020526000908152604090205481565b6001600160a01b031660009081526002602052604090205490565b6109ec610af4565b610a3d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6007546001600160a01b031681565b600d5481565b6000610ac242600c54611805565b905090565b60125481565b60106020526000908152604090205481565b600a5481565b6003546001600160a01b031690565b6003546000906001600160a01b0316610b0b61181b565b6001600160a01b031614905090565b33610b2361144b565b600f55610b2e610ab4565b600e556001600160a01b03811615610b7557610b4981610534565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b600a54421015610bcc576040805162461bcd60e51b815260206004820152600960248201527f6e6f742073746172740000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600a54610be2906202a30063ffffffff61163316565b42118015610bfe57503360009081526015602052604090205442115b610c4f576040805162461bcd60e51b815260206004820152601460248201527f6561726c7920626f6f7374207075726368617365000000000000000000000000604482015290519081900360640190fd5b610c6142610e1063ffffffff61163316565b336000908152601560209081526040808320939093556014905290812054610c9090600163ffffffff61163316565b33600090815260146020526040902081905590506005811115610cfa576040805162461bcd60e51b815260206004820152601360248201527f6d617820626f6f737465727320626f7567687400000000000000000000000000604482015290519081900360640190fd5b50601654610d1460646105ac83606963ffffffff61159816565b601655610d20336116d6565b600454610d3e906001600160a01b031633308463ffffffff61181f16565b6004546005546001600160a01b039182169116610dba57806001600160a01b03166342966c68836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610d9b57600080fd5b505af1158015610daf573d6000803e3d6000fd5b50505050505061111e565b6000610dcd83600263ffffffff6115f116565b9050816001600160a01b03166342966c68826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610e1557600080fd5b505af1158015610e29573d6000803e3d6000fd5b50505050610e40818461154f90919063ffffffff16565b6040805160038082526080820190925291945060609190602082018380388339505060045482519293506001600160a01b031691839150600090610e8057fe5b6001600160a01b03928316602091820292909201810191909152600754604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b158015610eed57600080fd5b505afa158015610f01573d6000803e3d6000fd5b505050506040513d6020811015610f1757600080fd5b5051815182906001908110610f2857fe5b6001600160a01b039283166020918202929092010152600854825191169082906002908110610f5357fe5b6001600160a01b039283166020918202929092018101919091526007546005546040517f38ed173900000000000000000000000000000000000000000000000000000000815260048101898152600060248301819052928616606483810182905242016084840181905260a060448501908152895160a4860152895196909816976338ed1739978d978b969495939460c4019187810191028083838b5b83811015611008578181015183820152602001610ff0565b505050509050019650505050505050600060405180830381600087803b15801561103157600080fd5b505af1158015611045573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561108c57600080fd5b81019080805160405193929190846401000000008211156110ac57600080fd5b9083019060208201858111156110c157600080fd5b82518660208202830111640100000000821117156110de57600080fd5b82525081516020918201928201910280838360005b8381101561110b5781810151838201526020016110f3565b5050505090500160405250505050505050505b50565b3361112a61144b565b600f55611135610ab4565b600e556001600160a01b0381161561117c5761115081610534565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b600a544210156111d3576040805162461bcd60e51b815260206004820152600960248201527f6e6f742073746172740000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008211611228576040805162461bcd60e51b815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015290519081900360640190fd5b611231826118ad565b60095461123d336109c9565b11158061125f5750600a5461125b906201518063ffffffff61163316565b4210155b6112b0576040805162461bcd60e51b815260206004820152601260248201527f746f6b656e206361702065786365656465640000000000000000000000000000604482015290519081900360640190fd5b6112b9336116d6565b600054610725906001600160a01b031633308563ffffffff61181f16565b6006546001600160a01b03163314611336576040805162461bcd60e51b815260206004820152600b60248201527f6f6e6c7920736574746572000000000000000000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038381169190911791829055604080517fb6f673120000000000000000000000000000000000000000000000000000000081529051929091169163b6f6731291600480820192602092909190829003018186803b1580156113c357600080fd5b505afa1580156113d7573d6000803e3d6000fd5b505050506040513d60208110156113ed57600080fd5b5051600880546001600160a01b039092167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617905560068054909116905550565b6006546001600160a01b031681565b600581565b600e5481565b6000601254600014156114615750600f546105ec565b610ac26114966012546105ac670de0b6b3a764000061148a600d5461148a600e5461057b610ab4565b9063ffffffff61159816565b600f549063ffffffff61163316565b600f5481565b60146020526000908152604090205481565b6008546001600160a01b031681565b6114dd6114d8336109c9565b6105ef565b6114e561086b565b565b600c5481565b6114f5610af4565b611546576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61111e816118e3565b600061159183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061199c565b9392505050565b6000826115a7575060006105c4565b828202828482816115b457fe5b04146115915760405162461bcd60e51b8152600401808060200182810382526021815260200180611cd16021913960400191505060405180910390fd5b600061159183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a33565b600082820183811015611591576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001546116a0908263ffffffff61154f16565b600155336000908152600260205260409020546116c3908263ffffffff61154f16565b3360009081526002602052604090205550565b6001600160a01b0381166000908152601360205260409020546012546117019163ffffffff61154f16565b6012556001600160a01b038116600090815260146020526040812054611748906064906105ac9061173f9083906105b890600563ffffffff61159816565b61148a866109c9565b6001600160a01b0383166000908152601360205260409020819055601254909150611779908263ffffffff61163316565b6012555050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611800908490611a98565b505050565b60008183106118145781611591565b5090919050565b3390565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526118a7908590611a98565b50505050565b6001546118c0908263ffffffff61163316565b600155336000908152600260205260409020546116c3908263ffffffff61163316565b6001600160a01b0381166119285760405162461bcd60e51b8152600401808060200182810382526026815260200180611cab6026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008184841115611a2b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156119f05781810151838201526020016119d8565b50505050905090810190601f168015611a1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183611a825760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156119f05781810151838201526020016119d8565b506000838581611a8e57fe5b0495945050505050565b611aaa826001600160a01b0316611c6e565b611afb576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611b5757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611b1a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611bb9576040519150601f19603f3d011682016040523d82523d6000602084013e611bbe565b606091505b509150915081611c15576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156118a757808060200190516020811015611c3157600080fd5b50516118a75760405162461bcd60e51b815260040180806020018281038252602a815260200180611cf2602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590611ca25750808214155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820bb7c3f0874db24c2ae4e78bc02f9530b133105ba4af11e2d5f9947b7d372de5964736f6c63430005110032000000000000000000000000000000000000000000000001923e392b91f4afc00000000000000000000000009f8f72aa9304c8b593d555f12ef6589cc3a579a20000000000000000000000003e780920601d61cedb860fe9c4a90c9ea6a35e78000000000000000000000000f0d3db2e1752fe133d6c5ee0fcbbb0632f745a050000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000000000000000000000000000000000005f4e45d00000000000000000000000000000000000000000000000000000000000093a80
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102765760003560e01c806380faa57d11610160578063b0b34949116100d8578063e72c3c421161008c578063e9fad8ee11610071578063e9fad8ee146104fe578063ebe2b12b14610506578063f2fde38b1461050e57610276565b8063e72c3c42146104d0578063e9cbd822146104f657610276565b8063c8f33c91116100bd578063c8f33c91146104b8578063cd3daf9d146104c0578063df136d65146104c857610276565b8063b0b34949146104a8578063c8360c5a146104b057610276565b80638da5cb5b1161012f578063a66f42c011610114578063a66f42c01461045d578063a694fc3a14610465578063ab033ea91461048257610276565b80638da5cb5b146104395780638f32d59b1461044157610276565b806380faa57d146103fb5780638112643c146104035780638b8763471461040b5780638da588971461043157610276565b80633d18b912116101f357806364044fd9116101c2578063715018a6116101a7578063715018a6146103e3578063735de9f7146103eb5780637b0a47ee146103f357610276565b806364044fd91461039757806370a08231146103bd57610276565b80633d18b9121461037757806351ed6a301461037f5780635aa6e675146103875780635be4d8001461038f57610276565b806318160ddd1161024a5780633a589b971161022f5780633a589b97146103105780633ba35551146103345780633c6b16ab1461035a57610276565b806318160ddd146102e95780632e1a7d4d146102f157610276565b80628cc2621461027b57806304058165146102b35780630700037d146102bb5780630fb5a6b4146102e1575b600080fd5b6102a16004803603602081101561029157600080fd5b50356001600160a01b0316610534565b60408051918252519081900360200190f35b6102a16105ca565b6102a1600480360360208110156102d157600080fd5b50356001600160a01b03166105d0565b6102a16105e2565b6102a16105e8565b61030e6004803603602081101561030757600080fd5b50356105ef565b005b610318610729565b604080516001600160a01b039092168252519081900360200190f35b6102a16004803603602081101561034a57600080fd5b50356001600160a01b0316610738565b61030e6004803603602081101561037057600080fd5b503561074a565b61030e61086b565b610318610993565b6103186109a2565b6102a16109b1565b6102a1600480360360208110156103ad57600080fd5b50356001600160a01b03166109b7565b6102a1600480360360208110156103d357600080fd5b50356001600160a01b03166109c9565b61030e6109e4565b610318610a9f565b6102a1610aae565b6102a1610ab4565b6102a1610ac7565b6102a16004803603602081101561042157600080fd5b50356001600160a01b0316610acd565b6102a1610adf565b610318610ae5565b610449610af4565b604080519115158252519081900360200190f35b61030e610b1a565b61030e6004803603602081101561047b57600080fd5b5035611121565b61030e6004803603602081101561049857600080fd5b50356001600160a01b03166112d7565b610318611431565b6102a1611440565b6102a1611445565b6102a161144b565b6102a16114a5565b6102a1600480360360208110156104e657600080fd5b50356001600160a01b03166114ab565b6103186114bd565b61030e6114cc565b6102a16114e7565b61030e6004803603602081101561052457600080fd5b50356001600160a01b03166114ed565b6001600160a01b03811660009081526011602090815260408083205460109092528220546105c491906105b890670de0b6b3a7640000906105ac906105879061057b61144b565b9063ffffffff61154f16565b6001600160a01b0388166000908152601360205260409020549063ffffffff61159816565b9063ffffffff6115f116565b9063ffffffff61163316565b92915050565b60165481565b60116020526000908152604090205481565b600b5481565b6001545b90565b336105f861144b565b600f55610603610ab4565b600e556001600160a01b0381161561064a5761061e81610534565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b600a544210156106a1576040805162461bcd60e51b815260206004820152600960248201527f6e6f742073746172740000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600082116106f6576040805162461bcd60e51b815260206004820152601160248201527f43616e6e6f742077697468647261772030000000000000000000000000000000604482015290519081900360640190fd5b6106ff8261168d565b610708336116d6565b600054610725906001600160a01b0316338463ffffffff61178016565b5050565b6004546001600160a01b031681565b60136020526000908152604090205481565b610752610af4565b6107a3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60006107ad61144b565b600f556107b8610ab4565b600e556001600160a01b038116156107ff576107d381610534565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b600b5461081390839063ffffffff6115f116565b600d55600a54600e819055600b54610831919063ffffffff61163316565b600c556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15050565b3361087461144b565b600f5561087f610ab4565b600e556001600160a01b038116156108c65761089a81610534565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b600a5442101561091d576040805162461bcd60e51b815260206004820152600960248201527f6e6f742073746172740000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600061092833610534565b905080156107255733600081815260116020526040812055600454610959916001600160a01b039091169083611780565b60408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25050565b6000546001600160a01b031681565b6005546001600160a01b031681565b60095481565b60156020526000908152604090205481565b6001600160a01b031660009081526002602052604090205490565b6109ec610af4565b610a3d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6007546001600160a01b031681565b600d5481565b6000610ac242600c54611805565b905090565b60125481565b60106020526000908152604090205481565b600a5481565b6003546001600160a01b031690565b6003546000906001600160a01b0316610b0b61181b565b6001600160a01b031614905090565b33610b2361144b565b600f55610b2e610ab4565b600e556001600160a01b03811615610b7557610b4981610534565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b600a54421015610bcc576040805162461bcd60e51b815260206004820152600960248201527f6e6f742073746172740000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600a54610be2906202a30063ffffffff61163316565b42118015610bfe57503360009081526015602052604090205442115b610c4f576040805162461bcd60e51b815260206004820152601460248201527f6561726c7920626f6f7374207075726368617365000000000000000000000000604482015290519081900360640190fd5b610c6142610e1063ffffffff61163316565b336000908152601560209081526040808320939093556014905290812054610c9090600163ffffffff61163316565b33600090815260146020526040902081905590506005811115610cfa576040805162461bcd60e51b815260206004820152601360248201527f6d617820626f6f737465727320626f7567687400000000000000000000000000604482015290519081900360640190fd5b50601654610d1460646105ac83606963ffffffff61159816565b601655610d20336116d6565b600454610d3e906001600160a01b031633308463ffffffff61181f16565b6004546005546001600160a01b039182169116610dba57806001600160a01b03166342966c68836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610d9b57600080fd5b505af1158015610daf573d6000803e3d6000fd5b50505050505061111e565b6000610dcd83600263ffffffff6115f116565b9050816001600160a01b03166342966c68826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610e1557600080fd5b505af1158015610e29573d6000803e3d6000fd5b50505050610e40818461154f90919063ffffffff16565b6040805160038082526080820190925291945060609190602082018380388339505060045482519293506001600160a01b031691839150600090610e8057fe5b6001600160a01b03928316602091820292909201810191909152600754604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b158015610eed57600080fd5b505afa158015610f01573d6000803e3d6000fd5b505050506040513d6020811015610f1757600080fd5b5051815182906001908110610f2857fe5b6001600160a01b039283166020918202929092010152600854825191169082906002908110610f5357fe5b6001600160a01b039283166020918202929092018101919091526007546005546040517f38ed173900000000000000000000000000000000000000000000000000000000815260048101898152600060248301819052928616606483810182905242016084840181905260a060448501908152895160a4860152895196909816976338ed1739978d978b969495939460c4019187810191028083838b5b83811015611008578181015183820152602001610ff0565b505050509050019650505050505050600060405180830381600087803b15801561103157600080fd5b505af1158015611045573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561108c57600080fd5b81019080805160405193929190846401000000008211156110ac57600080fd5b9083019060208201858111156110c157600080fd5b82518660208202830111640100000000821117156110de57600080fd5b82525081516020918201928201910280838360005b8381101561110b5781810151838201526020016110f3565b5050505090500160405250505050505050505b50565b3361112a61144b565b600f55611135610ab4565b600e556001600160a01b0381161561117c5761115081610534565b6001600160a01b038216600090815260116020908152604080832093909355600f546010909152919020555b600a544210156111d3576040805162461bcd60e51b815260206004820152600960248201527f6e6f742073746172740000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008211611228576040805162461bcd60e51b815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015290519081900360640190fd5b611231826118ad565b60095461123d336109c9565b11158061125f5750600a5461125b906201518063ffffffff61163316565b4210155b6112b0576040805162461bcd60e51b815260206004820152601260248201527f746f6b656e206361702065786365656465640000000000000000000000000000604482015290519081900360640190fd5b6112b9336116d6565b600054610725906001600160a01b031633308563ffffffff61181f16565b6006546001600160a01b03163314611336576040805162461bcd60e51b815260206004820152600b60248201527f6f6e6c7920736574746572000000000000000000000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038381169190911791829055604080517fb6f673120000000000000000000000000000000000000000000000000000000081529051929091169163b6f6731291600480820192602092909190829003018186803b1580156113c357600080fd5b505afa1580156113d7573d6000803e3d6000fd5b505050506040513d60208110156113ed57600080fd5b5051600880546001600160a01b039092167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617905560068054909116905550565b6006546001600160a01b031681565b600581565b600e5481565b6000601254600014156114615750600f546105ec565b610ac26114966012546105ac670de0b6b3a764000061148a600d5461148a600e5461057b610ab4565b9063ffffffff61159816565b600f549063ffffffff61163316565b600f5481565b60146020526000908152604090205481565b6008546001600160a01b031681565b6114dd6114d8336109c9565b6105ef565b6114e561086b565b565b600c5481565b6114f5610af4565b611546576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61111e816118e3565b600061159183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061199c565b9392505050565b6000826115a7575060006105c4565b828202828482816115b457fe5b04146115915760405162461bcd60e51b8152600401808060200182810382526021815260200180611cd16021913960400191505060405180910390fd5b600061159183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a33565b600082820183811015611591576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001546116a0908263ffffffff61154f16565b600155336000908152600260205260409020546116c3908263ffffffff61154f16565b3360009081526002602052604090205550565b6001600160a01b0381166000908152601360205260409020546012546117019163ffffffff61154f16565b6012556001600160a01b038116600090815260146020526040812054611748906064906105ac9061173f9083906105b890600563ffffffff61159816565b61148a866109c9565b6001600160a01b0383166000908152601360205260409020819055601254909150611779908263ffffffff61163316565b6012555050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611800908490611a98565b505050565b60008183106118145781611591565b5090919050565b3390565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526118a7908590611a98565b50505050565b6001546118c0908263ffffffff61163316565b600155336000908152600260205260409020546116c3908263ffffffff61163316565b6001600160a01b0381166119285760405162461bcd60e51b8152600401808060200182810382526026815260200180611cab6026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60008184841115611a2b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156119f05781810151838201526020016119d8565b50505050905090810190601f168015611a1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183611a825760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156119f05781810151838201526020016119d8565b506000838581611a8e57fe5b0495945050505050565b611aaa826001600160a01b0316611c6e565b611afb576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611b5757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611b1a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611bb9576040519150601f19603f3d011682016040523d82523d6000602084013e611bbe565b606091505b509150915081611c15576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156118a757808060200190516020811015611c3157600080fd5b50516118a75760405162461bcd60e51b815260040180806020018281038252602a815260200180611cf2602a913960400191505060405180910390fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590611ca25750808214155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820bb7c3f0874db24c2ae4e78bc02f9530b133105ba4af11e2d5f9947b7d372de5964736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000001923e392b91f4afc00000000000000000000000009f8f72aa9304c8b593d555f12ef6589cc3a579a20000000000000000000000003e780920601d61cedb860fe9c4a90c9ea6a35e78000000000000000000000000f0d3db2e1752fe133d6c5ee0fcbbb0632f745a050000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000000000000000000000000000000000005f4e45d00000000000000000000000000000000000000000000000000000000000093a80
-----Decoded View---------------
Arg [0] : _tokenCapAmount (uint256): 28984667111098200000
Arg [1] : _stakeToken (address): 0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2
Arg [2] : _boostToken (address): 0x3e780920601D61cEdb860fe9c4a90c9EA6A35E78
Arg [3] : _governanceSetter (address): 0xf0d3Db2e1752fE133d6C5Ee0FcbBB0632F745A05
Arg [4] : _uniswapRouter (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [5] : _starttime (uint256): 1598965200
Arg [6] : _duration (uint256): 604800
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000001923e392b91f4afc0
Arg [1] : 0000000000000000000000009f8f72aa9304c8b593d555f12ef6589cc3a579a2
Arg [2] : 0000000000000000000000003e780920601d61cedb860fe9c4a90c9ea6a35e78
Arg [3] : 000000000000000000000000f0d3db2e1752fe133d6c5ee0fcbbb0632f745a05
Arg [4] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [5] : 000000000000000000000000000000000000000000000000000000005f4e45d0
Arg [6] : 0000000000000000000000000000000000000000000000000000000000093a80
Deployed Bytecode Sourcemap
22763:7819:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22763:7819:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25692:271;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25692:271:0;-1:-1:-1;;;;;25692:271:0;;:::i;:::-;;;;;;;;;;;;;;;;23872:39;;;:::i;23367:42::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23367:42:0;-1:-1:-1;;;;;23367:42:0;;:::i;23121:23::-;;;:::i;21674:91::-;;;:::i;26648:339::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26648:339:0;;:::i;:::-;;22823:24;;;:::i;:::-;;;;-1:-1:-1;;;;;22823:24:0;;;;;;;;;;;;;;23582:50;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23582:50:0;-1:-1:-1;;;;;23582:50:0;;:::i;29368:293::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29368:293:0;;:::i;27100:302::-;;;:::i;21462:24::-;;;:::i;22854:25::-;;;:::i;23054:29::-;;;:::i;23741:56::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23741:56:0;-1:-1:-1;;;;;23741:56:0;;:::i;21773:110::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21773:110:0;-1:-1:-1;;;;;21773:110:0;;:::i;10203:140::-;;;:::i;22924:34::-;;;:::i;23189:29::-;;;:::i;25115:131::-;;;:::i;23542:33::-;;;:::i;23303:57::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23303:57:0;-1:-1:-1;;;;;23303:57:0;;:::i;23090:24::-;;;:::i;9392:79::-;;;:::i;9758:94::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;27414:1946;;;:::i;26054:586::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26054:586:0;;:::i;29673:278::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29673:278:0;-1:-1:-1;;;;;29673:278:0;;:::i;22886:31::-;;;:::i;23003:44::-;;;:::i;23225:29::-;;;:::i;25254:430::-;;;:::i;23261:35::-;;;:::i;23639:52::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23639:52:0;-1:-1:-1;;;;;23639:52:0;;:::i;22965:25::-;;;:::i;26995:97::-;;;:::i;23151:31::-;;;:::i;10498:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10498:109:0;-1:-1:-1;;;;;10498:109:0;;:::i;25692:271::-;-1:-1:-1;;;;;25938:16:0;;25746:7;25938:16;;;:7;:16;;;;;;;;;25854:22;:31;;;;;;25786:169;;25938:16;25786:129;;25910:4;;25786:101;;25833:53;;:16;:14;:16::i;:::-;:20;:53;:20;:53;:::i;:::-;-1:-1:-1;;;;;25786:24:0;;;;;;:15;:24;;;;;;;:101;:46;:101;:::i;:::-;:123;:129;:123;:129;:::i;:::-;:151;:169;:151;:169;:::i;:::-;25766:189;25692:271;-1:-1:-1;;25692:271:0:o;23872:39::-;;;;:::o;23367:42::-;;;;;;;;;;;;;:::o;23121:23::-;;;;:::o;21674:91::-;21745:12;;21674:91;;:::o;26648:339::-;26702:10;24255:16;:14;:16::i;:::-;24232:20;:39;24299:26;:24;:26::i;:::-;24282:14;:43;-1:-1:-1;;;;;24340:21:0;;;24336:157;;24397:15;24404:7;24397:6;:15::i;:::-;-1:-1:-1;;;;;24378:16:0;;;;;;:7;:16;;;;;;;;:34;;;;24461:20;;24427:22;:31;;;;;;:54;24336:157;24132:9;;24113:15;:28;;24105:49;;;;;-1:-1:-1;;;24105:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26753:1;26744:6;:10;26736:40;;;;;-1:-1:-1;;;26736:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26787:22;26802:6;26787:14;:22::i;:::-;26876:39;26904:10;26876:27;:39::i;:::-;26936:10;;:43;;-1:-1:-1;;;;;26936:10:0;26960;26972:6;26936:43;:23;:43;:::i;:::-;26648:339;;:::o;22823:24::-;;;-1:-1:-1;;;;;22823:24:0;;:::o;23582:50::-;;;;;;;;;;;;;:::o;29368:293::-;9604:9;:7;:9::i;:::-;9596:54;;;;;-1:-1:-1;;;9596:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29479:1;24255:16;:14;:16::i;:::-;24232:20;:39;24299:26;:24;:26::i;:::-;24282:14;:43;-1:-1:-1;;;;;24340:21:0;;;24336:157;;24397:15;24404:7;24397:6;:15::i;:::-;-1:-1:-1;;;;;24378:16:0;;;;;;:7;:16;;;;;;;;:34;;;;24461:20;;24427:22;:31;;;;;;:54;24336:157;29523:8;;29512:20;;:6;;:20;:10;:20;:::i;:::-;29499:10;:33;29560:9;;29543:14;:26;;;29609:8;;29595:23;;29560:9;29595:23;:13;:23;:::i;:::-;29580:12;:38;29634:19;;;;;;;;;;;;;;;;;9661:1;29368:293;:::o;27100:302::-;27141:10;24255:16;:14;:16::i;:::-;24232:20;:39;24299:26;:24;:26::i;:::-;24282:14;:43;-1:-1:-1;;;;;24340:21:0;;;24336:157;;24397:15;24404:7;24397:6;:15::i;:::-;-1:-1:-1;;;;;24378:16:0;;;;;;:7;:16;;;;;;;;:34;;;;24461:20;;24427:22;:31;;;;;;:54;24336:157;24132:9;;24113:15;:28;;24105:49;;;;;-1:-1:-1;;;24105:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27175:14;27192:18;27199:10;27192:6;:18::i;:::-;27175:35;-1:-1:-1;27225:10:0;;27221:174;;27260:10;27274:1;27252:19;;;:7;:19;;;;;:23;27290:10;;:43;;-1:-1:-1;;;;;27290:10:0;;;;27326:6;27290:23;:43::i;:::-;27353:30;;;;;;;;27364:10;;27353:30;;;;;;;;;;24165:1;27100:302;:::o;21462:24::-;;;-1:-1:-1;;;;;21462:24:0;;:::o;22854:25::-;;;-1:-1:-1;;;;;22854:25:0;;:::o;23054:29::-;;;;:::o;23741:56::-;;;;;;;;;;;;;:::o;21773:110::-;-1:-1:-1;;;;;21857:18:0;21830:7;21857:18;;;:9;:18;;;;;;;21773:110::o;10203:140::-;9604:9;:7;:9::i;:::-;9596:54;;;;;-1:-1:-1;;;9596:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10286:6;;10265:40;;10302:1;;-1:-1:-1;;;;;10286:6:0;;10265:40;;10302:1;;10265:40;10316:6;:19;;;;;;10203:140::o;22924:34::-;;;-1:-1:-1;;;;;22924:34:0;;:::o;23189:29::-;;;;:::o;25115:131::-;25172:7;25199:39;25208:15;25225:12;;25199:8;:39::i;:::-;25192:46;;25115:131;:::o;23542:33::-;;;;:::o;23303:57::-;;;;;;;;;;;;;:::o;23090:24::-;;;;:::o;9392:79::-;9457:6;;-1:-1:-1;;;;;9457:6:0;9392:79;:::o;9758:94::-;9838:6;;9798:4;;-1:-1:-1;;;;;9838:6:0;9822:12;:10;:12::i;:::-;-1:-1:-1;;;;;9822:22:0;;9815:29;;9758:94;:::o;27414:1946::-;27453:10;24255:16;:14;:16::i;:::-;24232:20;:39;24299:26;:24;:26::i;:::-;24282:14;:43;-1:-1:-1;;;;;24340:21:0;;;24336:157;;24397:15;24404:7;24397:6;:15::i;:::-;-1:-1:-1;;;;;24378:16:0;;;;;;:7;:16;;;;;;;;:34;;;;24461:20;;24427:22;:31;;;;;;:54;24336:157;24132:9;;24113:15;:28;;24105:49;;;;;-1:-1:-1;;;24105:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27566:9;;:21;;27580:6;27566:21;:13;:21;:::i;:::-;27548:15;:39;:107;;;;-1:-1:-1;27644:10:0;27622:33;;;;:21;:33;;;;;;27604:15;:51;27548:107;27487:216;;;;;-1:-1:-1;;;27487:216:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27818:25;:15;27838:4;27818:25;:19;:25;:::i;:::-;27804:10;27782:33;;;;:21;:33;;;;;;;;:61;;;;27926:17;:29;;;;;;:36;;27960:1;27926:36;:33;:36;:::i;:::-;27991:10;27973:29;;;;:17;:29;;;;;:39;;;27908:54;-1:-1:-1;23046:1:0;28031:27;;;28023:59;;;;;-1:-1:-1;;;28023:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28173:12:0;;28257:30;28283:3;28257:21;28173:12;28274:3;28257:21;:16;:21;:::i;:30::-;28242:12;:45;28354:39;28382:10;28354:27;:39::i;:::-;28414:10;;:63;;-1:-1:-1;;;;;28414:10:0;28442;28462:4;28469:7;28414:63;:27;:63;:::i;:::-;28557:10;;28628;;-1:-1:-1;;;;;28557:10:0;;;;28628;28624:110;;28669:18;-1:-1:-1;;;;;28669:23:0;;28693:7;28669:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28669:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28669:32:0;;;;28716:7;;;;28624:110;28778:18;28799:14;:7;28811:1;28799:14;:11;:14;:::i;:::-;28778:35;;28824:18;-1:-1:-1;;;;;28824:23:0;;28848:10;28824:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28824:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28824:35:0;;;;28880:23;28892:10;28880:7;:11;;:23;;;;:::i;:::-;29014:16;;;29028:1;29014:16;;;;;;;;;28870:33;;-1:-1:-1;28982:29:0;;29014:16;;;;28982:29;;105:10:-1;29014:16:0;88:34:-1;-1:-1;;29067:10:0;;29041:15;;;;-1:-1:-1;;;;;;29067:10:0;;29041:15;;-1:-1:-1;29067:10:0;;29041:15;;;;-1:-1:-1;;;;;29041:37:0;;;:15;;;;;;;;;;:37;;;;29107:13;;:20;;;;;;;;:13;;;;;:18;;:20;;;;;29041:15;;29107:20;;;;;:13;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;29107:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29107:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29107:20:0;29089:15;;:12;;29102:1;;29089:15;;;;;;-1:-1:-1;;;;;29089:38:0;;;:15;;;;;;;;;:38;29156:10;;29138:15;;29156:10;;;29138:12;;29151:1;;29138:15;;;;;;-1:-1:-1;;;;;29138:28:0;;;:15;;;;;;;;;;:28;;;;29177:13;;29295:10;;29177:175;;;;;;;;;;;:13;:175;;;;;;29295:10;;;29338:3;29177:175;;;;;;29320:15;:21;29177:175;;;;;;;;;;;;;;;;;;;;;:13;;;;;:38;;29230:7;;29268:12;;29295:10;;29320:21;;29177:175;;;;;;;;;;;:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29177:175:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29177:175:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29177:175:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;29177:175:0;80:15:-1;;;97:9;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;29177:175:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;29177:175:0;;421:4:-1;412:14;;;;29177:175:0;;;;;412:14:-1;29177:175:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;29177:175:0;;;;;;;;;;;;24165:1;;;;;27414:1946;:::o;26054:586::-;26105:10;24255:16;:14;:16::i;:::-;24232:20;:39;24299:26;:24;:26::i;:::-;24282:14;:43;-1:-1:-1;;;;;24340:21:0;;;24336:157;;24397:15;24404:7;24397:6;:15::i;:::-;-1:-1:-1;;;;;24378:16:0;;;;;;:7;:16;;;;;;;;:34;;;;24461:20;;24427:22;:31;;;;;;:54;24336:157;24132:9;;24113:15;:28;;24105:49;;;;;-1:-1:-1;;;24105:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26156:1;26147:6;:10;26139:37;;;;;-1:-1:-1;;;26139:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26187:19;26199:6;26187:11;:19::i;:::-;26293:14;;26268:21;26278:10;26268:9;:21::i;:::-;:39;;:82;;;-1:-1:-1;26330:9:0;;:20;;26344:5;26330:20;:13;:20;:::i;:::-;26311:15;:39;;26268:82;26246:150;;;;;-1:-1:-1;;;26246:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26455:39;26483:10;26455:27;:39::i;:::-;26570:10;;:62;;-1:-1:-1;;;;;26570:10:0;26598;26618:4;26625:6;26570:62;:27;:62;:::i;29673:278::-;29773:16;;-1:-1:-1;;;;;29773:16:0;29759:10;:30;29751:54;;;;;-1:-1:-1;;;29751:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;29816:10;:24;;;;-1:-1:-1;;;;;29816:24:0;;;;;;;;;;;29864:39;;;;;;;;29876:10;;;;;29864:37;;:39;;;;;;;;;;;;;;;29876:10;29864:39;;;5:2:-1;;;;30:1;27;20:12;5:2;29864:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29864:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29864:39:0;29851:10;:52;;-1:-1:-1;;;;;29851:52:0;;;;;;;;;;29914:16;:29;;;;;;;-1:-1:-1;29673:278:0:o;22886:31::-;;;-1:-1:-1;;;;;22886:31:0;;:::o;23003:44::-;23046:1;23003:44;:::o;23225:29::-;;;;:::o;25254:430::-;25301:7;25325:18;;25347:1;25325:23;25321:83;;;-1:-1:-1;25372:20:0;;25365:27;;25321:83;25434:242;25477:184;25642:18;;25477:138;25610:4;25477:106;25572:10;;25477:68;25530:14;;25477:26;:24;:26::i;:68::-;:94;:106;:94;:106;:::i;:184::-;25434:20;;;:242;:24;:242;:::i;23261:35::-;;;;:::o;23639:52::-;;;;;;;;;;;;;:::o;22965:25::-;;;-1:-1:-1;;;;;22965:25:0;;:::o;26995:97::-;27031:31;27040:21;27050:10;27040:9;:21::i;:::-;27031:8;:31::i;:::-;27073:11;:9;:11::i;:::-;26995:97::o;23151:31::-;;;;:::o;10498:109::-;9604:9;:7;:9::i;:::-;9596:54;;;;;-1:-1:-1;;;9596:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10571:28;10590:8;10571:18;:28::i;3250:136::-;3308:7;3335:43;3339:1;3342;3335:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3328:50;3250:136;-1:-1:-1;;;3250:136:0:o;4166:471::-;4224:7;4469:6;4465:47;;-1:-1:-1;4499:1:0;4492:8;;4465:47;4536:5;;;4540:1;4536;:5;:1;4560:5;;;;;:10;4552:56;;;;-1:-1:-1;;;4552:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5105:132;5163:7;5190:39;5194:1;5197;5190:39;;;;;;;;;;;;;;;;;:3;:39::i;2794:181::-;2852:7;2884:5;;;2908:6;;;;2900:46;;;;;-1:-1:-1;;;2900:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;22134:234;22201:12;;:24;;22218:6;22201:24;:16;:24;:::i;:::-;22186:12;:39;22270:10;22260:21;;;;:9;:21;;;;;;:33;;22286:6;22260:33;:25;:33;:::i;:::-;22246:10;22236:21;;;;:9;:21;;;;;:57;-1:-1:-1;22134:234:0:o;29963:616::-;-1:-1:-1;;;;;30136:21:0;;;;;;:15;:21;;;;;;30113:18;;:45;;;:22;:45;:::i;:::-;30092:18;:66;-1:-1:-1;;;;;30368:23:0;;30322;30368;;;:17;:23;;;;;;30348:69;;30413:3;;30348:60;;30368:39;;30413:3;;30368:30;;30396:1;30368:30;:27;:30;:::i;:39::-;30348:15;30358:4;30348:9;:15::i;:69::-;-1:-1:-1;;;;;30428:21:0;;;;;;:15;:21;;;;;:39;;;30532:18;;30322:95;;-1:-1:-1;30532:39:0;;30322:95;30532:39;:22;:39;:::i;:::-;30511:18;:60;-1:-1:-1;;29963:616:0:o;18173:176::-;18282:58;;;-1:-1:-1;;;;;18282:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18282:58:0;;;;;;;;25:18:-1;;61:17;;18282:58:0;182:15:-1;18305:23:0;179:29:-1;160:49;;18256:85:0;;18275:5;;18256:18;:85::i;:::-;18173:176;;;:::o;1509:106::-;1567:7;1598:1;1594;:5;:13;;1606:1;1594:13;;;-1:-1:-1;1602:1:0;;1509:106;-1:-1:-1;1509:106:0:o;8198:98::-;8278:10;8198:98;:::o;18357:204::-;18484:68;;;-1:-1:-1;;;;;18484:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18484:68:0;;;;;;;;25:18:-1;;61:17;;18484:68:0;182:15:-1;18507:27:0;179:29:-1;160:49;;18458:95:0;;18477:5;;18458:18;:95::i;:::-;18357:204;;;;:::o;21891:235::-;21955:12;;:24;;21972:6;21955:24;:16;:24;:::i;:::-;21940:12;:39;22024:10;22014:21;;;;:9;:21;;;;;;:33;;22040:6;22014:33;:25;:33;:::i;10713:229::-;-1:-1:-1;;;;;10787:22:0;;10779:73;;;;-1:-1:-1;;;10779:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10889:6;;10868:38;;-1:-1:-1;;;;;10868:38:0;;;;10889:6;;10868:38;;10889:6;;10868:38;10917:6;:17;;;;-1:-1:-1;;;;;10917:17:0;;;;;;;;;;10713:229::o;3723:192::-;3809:7;3845:12;3837:6;;;;3829:29;;;;-1:-1:-1;;;3829:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3829:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3881:5:0;;;3723:192::o;5767:345::-;5853:7;5955:12;5948:5;5940:28;;;;-1:-1:-1;;;5940:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;5940:28:0;;5979:9;5995:1;5991;:5;;;;;;;5767:345;-1:-1:-1;;;;;5767:345:0:o;20212:1114::-;20816:27;20824:5;-1:-1:-1;;;;;20816:25:0;;:27::i;:::-;20808:71;;;;;-1:-1:-1;;;20808:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20953:12;20967:23;21002:5;-1:-1:-1;;;;;20994:19:0;21014:4;20994:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20994:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;20952:67:0;;;;21038:7;21030:52;;;;;-1:-1:-1;;;21030:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21099:17;;:21;21095:224;;21241:10;21230:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21230:30:0;21222:85;;;;-1:-1:-1;;;21222:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15076:810;15136:4;15795:20;;15638:66;15835:15;;;;;:42;;;15866:11;15854:8;:23;;15835:42;15827:51;15076:810;-1:-1:-1;;;;15076:810:0:o
Swarm Source
bzzr://bb7c3f0874db24c2ae4e78bc02f9530b133105ba4af11e2d5f9947b7d372de59
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.