Polygon Sponsored slots available. Book your slot here!
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 51,541 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Mass Harvest | 68931382 | 5 days ago | IN | 0 POL | 0.0030177 | ||||
Mass Harvest | 65437662 | 93 days ago | IN | 0 POL | 0.00301813 | ||||
Mass Harvest | 65270098 | 98 days ago | IN | 0 POL | 0.00629958 | ||||
Mass Harvest | 65182541 | 100 days ago | IN | 0 POL | 0.00330702 | ||||
Mass Harvest | 64603354 | 114 days ago | IN | 0 POL | 0.00813938 | ||||
Mass Harvest | 64573995 | 115 days ago | IN | 0 POL | 0.00655005 | ||||
Mass Harvest | 59129641 | 251 days ago | IN | 0 POL | 0.01815826 | ||||
Mass Harvest | 58918294 | 256 days ago | IN | 0 POL | 0.00427214 | ||||
Mass Harvest | 58877073 | 257 days ago | IN | 0 POL | 0.0035307 | ||||
Mass Harvest | 58644023 | 263 days ago | IN | 0 POL | 0.00299833 | ||||
Mass Harvest | 58550833 | 266 days ago | IN | 0 POL | 0.00870906 | ||||
Mass Harvest | 58482511 | 267 days ago | IN | 0 POL | 0.00330702 | ||||
Mass Harvest | 58482469 | 267 days ago | IN | 0 POL | 0.0030177 | ||||
Mass Harvest | 57309437 | 297 days ago | IN | 0 POL | 0.00806228 | ||||
Mass Harvest | 57274214 | 298 days ago | IN | 0 POL | 0.0191001 | ||||
Mass Harvest | 56699719 | 313 days ago | IN | 0 POL | 0.0050295 | ||||
Mass Harvest | 55549069 | 344 days ago | IN | 0 POL | 0.01294372 | ||||
Mass Harvest | 54649885 | 368 days ago | IN | 0 POL | 0.05802633 | ||||
Mass Harvest | 54622377 | 368 days ago | IN | 0 POL | 0.01503941 | ||||
Mass Harvest | 54583391 | 369 days ago | IN | 0 POL | 0.011769 | ||||
Mass Harvest | 54545906 | 370 days ago | IN | 0 POL | 0.013745 | ||||
Mass Harvest | 54423700 | 373 days ago | IN | 0 POL | 0.01182761 | ||||
Mass Harvest | 54417329 | 373 days ago | IN | 0 POL | 0.02864912 | ||||
Set Reward | 54221991 | 378 days ago | IN | 0 POL | 0.00264088 | ||||
Mass Harvest | 54221975 | 378 days ago | IN | 0 POL | 0.00946005 |
Loading...
Loading
Contract Name:
ImpermaxChef
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-09-23 */ // File: contracts\Ownable.sol // SPDX-License-Identifier: MIT // Audit on 5-Jan-2021 by Keno and BoringCrypto // P1 - P3: OK pragma solidity =0.6.6; // Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol // Edited by BoringCrypto // T1 - T4: OK contract OwnableData { // V1 - V5: OK address public owner; // V1 - V5: OK address public pendingOwner; } // T1 - T4: OK contract Ownable is OwnableData { // E1: OK event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { owner = msg.sender; emit OwnershipTransferred(address(0), msg.sender); } // F1 - F9: OK // C1 - C21: OK function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner { if (direct) { // Checks require(newOwner != address(0) || renounce, "Ownable: zero address"); // Effects emit OwnershipTransferred(owner, newOwner); owner = newOwner; } else { // Effects pendingOwner = newOwner; } } // F1 - F9: OK // C1 - C21: OK function claimOwnership() public { address _pendingOwner = pendingOwner; // Checks require(msg.sender == _pendingOwner, "Ownable: caller != pending owner"); // Effects emit OwnershipTransferred(owner, _pendingOwner); owner = _pendingOwner; pendingOwner = address(0); } // M1 - M5: OK // C1 - C21: OK modifier onlyOwner() { require(msg.sender == owner, "Ownable: caller is not the owner"); _; } } // File: contracts\libraries\SafeMath.sol pragma solidity =0.6.6; // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol // Subject to the MIT license. /** * @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 addition of two unsigned integers, reverting with custom message on overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, errorMessage); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction underflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ 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 multiplication of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b, string memory errorMessage) 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, errorMessage); 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) { // 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. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: contracts\libraries\SafeToken.sol pragma solidity =0.6.6; interface ERC20Interface { function balanceOf(address user) external view returns (uint256); } library SafeToken { function myBalance(address token) internal view returns (uint256) { return ERC20Interface(token).balanceOf(address(this)); } function balanceOf(address token, address user) internal view returns (uint256) { return ERC20Interface(token).balanceOf(user); } function safeApprove(address token, address to, uint256 value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "!safeApprove"); } function safeTransfer(address token, address to, uint256 value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "!safeTransfer"); } function safeTransferFrom(address token, address from, address to, uint256 value) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), "!safeTransferFrom"); } } // File: contracts\libraries\SignedSafeMath.sol // SPDX-License-Identifier: MIT pragma solidity =0.6.6; library SignedSafeMath { int256 constant private _INT256_MIN = -2**255; /** * @dev Returns the multiplication of two signed integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { // 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; } require(!(a == -1 && b == _INT256_MIN), "SignedSafeMath: multiplication overflow"); int256 c = a * b; require(c / a == b, "SignedSafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two signed 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(int256 a, int256 b) internal pure returns (int256) { require(b != 0, "SignedSafeMath: division by zero"); require(!(b == -1 && a == _INT256_MIN), "SignedSafeMath: division overflow"); int256 c = a / b; return c; } /** * @dev Returns the subtraction of two signed integers, reverting on * overflow. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a), "SignedSafeMath: subtraction overflow"); return c; } /** * @dev Returns the addition of two signed integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a), "SignedSafeMath: addition overflow"); return c; } function toUInt256(int256 a) internal pure returns (uint256) { require(a >= 0, "Integer < 0"); return uint256(a); } } // File: contracts\interfaces\IBorrowTracker.sol pragma solidity >=0.5.0; interface IBorrowTracker { function trackBorrow(address borrower, uint borrowBalance, uint borrowIndex) external; } // File: contracts\interfaces\IERC20.sol pragma solidity >=0.5.0; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); } // File: contracts\interfaces\IBorrowable.sol pragma solidity >=0.5.0; interface IBorrowable { /*** Impermax ERC20 ***/ event Transfer(address indexed from, address indexed to, uint value); event Approval(address indexed owner, address indexed spender, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; /*** Pool Token ***/ event Mint(address indexed sender, address indexed minter, uint mintAmount, uint mintTokens); event Redeem(address indexed sender, address indexed redeemer, uint redeemAmount, uint redeemTokens); event Sync(uint totalBalance); function underlying() external view returns (address); function factory() external view returns (address); function totalBalance() external view returns (uint); function MINIMUM_LIQUIDITY() external pure returns (uint); function exchangeRate() external returns (uint); function mint(address minter) external returns (uint mintTokens); function redeem(address redeemer) external returns (uint redeemAmount); function skim(address to) external; function sync() external; function _setFactory() external; /*** Borrowable ***/ event BorrowApproval(address indexed owner, address indexed spender, uint value); event Borrow(address indexed sender, address indexed borrower, address indexed receiver, uint borrowAmount, uint repayAmount, uint accountBorrowsPrior, uint accountBorrows, uint totalBorrows); event Liquidate(address indexed sender, address indexed borrower, address indexed liquidator, uint seizeTokens, uint repayAmount, uint accountBorrowsPrior, uint accountBorrows, uint totalBorrows); function BORROW_FEE() external pure returns (uint); function collateral() external view returns (address); function reserveFactor() external view returns (uint); function exchangeRateLast() external view returns (uint); function borrowIndex() external view returns (uint); function totalBorrows() external view returns (uint); function borrowAllowance(address owner, address spender) external view returns (uint); function borrowBalance(address borrower) external view returns (uint); function borrowTracker() external view returns (address); function BORROW_PERMIT_TYPEHASH() external pure returns (bytes32); function borrowApprove(address spender, uint256 value) external returns (bool); function borrowPermit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; function borrow(address borrower, address receiver, uint borrowAmount, bytes calldata data) external; function liquidate(address borrower, address liquidator) external returns (uint seizeTokens); function trackBorrow(address borrower) external; /*** Borrowable Interest Rate Model ***/ event AccrueInterest(uint interestAccumulated, uint borrowIndex, uint totalBorrows); event CalculateKink(uint kinkRate); event CalculateBorrowRate(uint borrowRate); function KINK_BORROW_RATE_MAX() external pure returns (uint); function KINK_BORROW_RATE_MIN() external pure returns (uint); function KINK_MULTIPLIER() external pure returns (uint); function borrowRate() external view returns (uint); function kinkBorrowRate() external view returns (uint); function kinkUtilizationRate() external view returns (uint); function adjustSpeed() external view returns (uint); function rateUpdateTimestamp() external view returns (uint32); function accrualTimestamp() external view returns (uint32); function accrueInterest() external; /*** Borrowable Setter ***/ event NewReserveFactor(uint newReserveFactor); event NewKinkUtilizationRate(uint newKinkUtilizationRate); event NewAdjustSpeed(uint newAdjustSpeed); event NewBorrowTracker(address newBorrowTracker); function RESERVE_FACTOR_MAX() external pure returns (uint); function KINK_UR_MIN() external pure returns (uint); function KINK_UR_MAX() external pure returns (uint); function ADJUST_SPEED_MIN() external pure returns (uint); function ADJUST_SPEED_MAX() external pure returns (uint); function _initialize ( string calldata _name, string calldata _symbol, address _underlying, address _collateral ) external; function _setReserveFactor(uint newReserveFactor) external; function _setKinkUtilizationRate(uint newKinkUtilizationRate) external; function _setAdjustSpeed(uint newAdjustSpeed) external; function _setBorrowTracker(address newBorrowTracker) external; } // File: contracts\interfaces\IRewarder.sol pragma solidity =0.6.6; interface IRewarder { function onReward(address _borrowable, address user, address recipient, uint256 rewardAmount, uint256 newShares) external; function pendingTokens(address _borrowable, address user, uint256 rewardAmount) external view returns (IERC20[] memory, uint256[] memory); } // File: contracts\interfaces\IFactory.sol pragma solidity >=0.5.0; interface IFactory { event LendingPoolInitialized(address indexed uniswapV2Pair, address indexed token0, address indexed token1, address collateral, address borrowable0, address borrowable1, uint lendingPoolId); event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin); event NewAdmin(address oldAdmin, address newAdmin); event NewReservesPendingAdmin(address oldReservesPendingAdmin, address newReservesPendingAdmin); event NewReservesAdmin(address oldReservesAdmin, address newReservesAdmin); event NewReservesManager(address oldReservesManager, address newReservesManager); function admin() external view returns (address); function pendingAdmin() external view returns (address); function reservesAdmin() external view returns (address); function reservesPendingAdmin() external view returns (address); function reservesManager() external view returns (address); function getLendingPool(address uniswapV2Pair) external view returns ( bool initialized, uint24 lendingPoolId, address collateral, address borrowable0, address borrowable1 ); function allLendingPools(uint) external view returns (address uniswapV2Pair); function allLendingPoolsLength() external view returns (uint); function bDeployer() external view returns (address); function cDeployer() external view returns (address); function simpleUniswapOracle() external view returns (address); function createCollateral(address uniswapV2Pair) external returns (address collateral); function createBorrowable0(address uniswapV2Pair) external returns (address borrowable0); function createBorrowable1(address uniswapV2Pair) external returns (address borrowable1); function initializeLendingPool(address uniswapV2Pair) external; function _setPendingAdmin(address newPendingAdmin) external; function _acceptAdmin() external; function _setReservesPendingAdmin(address newPendingAdmin) external; function _acceptReservesAdmin() external; function _setReservesManager(address newReservesManager) external; } // File: contracts\ImpermaxChef.sol pragma solidity =0.6.6; pragma experimental ABIEncoderV2; contract ImpermaxChef is IBorrowTracker, Ownable { using SafeMath for uint256; using SignedSafeMath for int256; using SafeToken for address; struct UserInfo { uint256 shares; int256 rewardDebt; } struct PoolInfo { uint256 totalShares; uint256 accRewardPerShare; uint256 lastRewardTime; uint256 allocPoint; IRewarder rewarder; } address public immutable rewardToken; uint256 public rewardPerSec; mapping(address => PoolInfo) public poolInfo; mapping(address => mapping(address => UserInfo)) public userInfo; // [borrowable][user] uint256 public totalAllocPoint; uint256 private constant ACC_PRECISION = 2**160; uint256 private constant SHARES_PRECISION = 2**96; uint256 private constant MAX_REWARD_PER_SEC = 1.58e18; // limit reward to 50M IMX per year event TrackBorrow(address indexed borrowable, address indexed borrower, uint256 borrowBalance, uint256 borrowIndex); event Harvest(address indexed borrowable, address indexed user, uint256 amount); event LogSetReward(uint256 rewardPerSec); event LogSetPool(address indexed borrowable, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite); event LogUpdatePool(address indexed borrowable, uint256 lastRewardTime, uint256 totalShares, uint256 accRewardPerShare); constructor(address _rewardToken, uint256 _rewardPerSec) public { require(_rewardPerSec < MAX_REWARD_PER_SEC, "ImperaxChef: MAX_REWARD_PER_SEC"); rewardToken = _rewardToken; rewardPerSec = _rewardPerSec; emit LogSetReward(_rewardPerSec); } /* * Owner */ function setReward(uint256 _rewardPerSec) public onlyOwner { require(_rewardPerSec < MAX_REWARD_PER_SEC, "ImperaxChef: MAX_REWARD_PER_SEC"); rewardPerSec = _rewardPerSec; emit LogSetReward(_rewardPerSec); } function set(address borrowable, uint256 allocPoint, IRewarder rewarder, bool overwrite) public onlyOwner { PoolInfo storage pool = poolInfo[borrowable]; totalAllocPoint = totalAllocPoint.sub(pool.allocPoint).add(allocPoint); pool.allocPoint = allocPoint; if (overwrite) pool.rewarder = rewarder; emit LogSetPool(borrowable, allocPoint, overwrite ? rewarder : pool.rewarder, overwrite); } function setUniswapV2Pair(IFactory factory, address uniswapV2Pair, uint256 allocPoint, IRewarder rewarder, bool overwrite) external { (,,, address borrowable0, address borrowable1) = factory.getLendingPool(uniswapV2Pair); set(borrowable0, allocPoint, rewarder, overwrite); set(borrowable1, allocPoint, rewarder, overwrite); } /* * Interactions */ function pendingReward(address borrowable, address _user) external view returns (uint256 pending) { PoolInfo memory pool = poolInfo[borrowable]; UserInfo memory user = userInfo[borrowable][_user]; uint256 accRewardPerShare = pool.accRewardPerShare; uint256 totalShares = pool.totalShares; if (getBlockTimestamp() > pool.lastRewardTime && totalShares != 0) { uint256 timeElapsed = getBlockTimestamp().sub(pool.lastRewardTime); uint256 reward = timeElapsed.mul(rewardPerSec).mul(pool.allocPoint) / totalAllocPoint; accRewardPerShare = accRewardPerShare.add(reward.mul(ACC_PRECISION) / totalShares); } pending = int256(user.shares.mul(accRewardPerShare) / ACC_PRECISION).sub(user.rewardDebt).toUInt256(); } function updatePool(address borrowable) public returns (PoolInfo memory pool) { pool = poolInfo[borrowable]; if (getBlockTimestamp() > pool.lastRewardTime) { uint256 totalShares = pool.totalShares; if (totalShares > 0) { uint256 timeElapsed = getBlockTimestamp().sub(pool.lastRewardTime); uint256 reward = timeElapsed.mul(rewardPerSec).mul(pool.allocPoint) / totalAllocPoint; pool.accRewardPerShare = pool.accRewardPerShare.add((reward.mul(ACC_PRECISION) / totalShares)); } pool.lastRewardTime = getBlockTimestamp(); poolInfo[borrowable] = pool; emit LogUpdatePool(borrowable, pool.lastRewardTime, totalShares, pool.accRewardPerShare); } } function harvest(address borrowable, address to) public { PoolInfo memory pool = updatePool(borrowable); UserInfo storage user = userInfo[borrowable][msg.sender]; int256 accumulatedReward = int256(user.shares.mul(pool.accRewardPerShare) / ACC_PRECISION); uint256 _pendingReward = accumulatedReward.sub(user.rewardDebt).toUInt256(); // Effects user.rewardDebt = accumulatedReward; // Interactions if (_pendingReward != 0) { rewardToken.safeTransfer(to, _pendingReward); } if (address(pool.rewarder) != address(0)) { pool.rewarder.onReward(borrowable, msg.sender, to, _pendingReward, user.shares); } emit Harvest(borrowable, msg.sender, _pendingReward); } function trackBorrow(address borrower, uint borrowBalance, uint borrowIndex) external override { address borrowable = msg.sender; PoolInfo memory pool = updatePool(borrowable); // Effects UserInfo storage user = userInfo[borrowable][borrower]; uint newShares = borrowBalance.mul(SHARES_PRECISION).div(borrowIndex); int256 diffShares = int256(newShares).sub(int256(user.shares)); int256 diffRewardDebt = diffShares.mul(int256(pool.accRewardPerShare)) / int256(ACC_PRECISION); user.shares = newShares; user.rewardDebt = user.rewardDebt.add(diffRewardDebt); poolInfo[borrowable].totalShares = int256(pool.totalShares).add(diffShares).toUInt256(); // Interactions if (address(pool.rewarder) != address(0)) { pool.rewarder.onReward(borrowable, borrower, borrower, 0, newShares); } emit TrackBorrow(borrowable, borrower, borrowBalance, borrowIndex); } /* * Aggregators */ function massUpdatePools(address[] calldata borrowables) external { uint256 len = borrowables.length; for (uint256 i = 0; i < len; ++i) { updatePool(borrowables[i]); } } function massHarvest(address[] calldata borrowables, address to) external { uint256 len = borrowables.length; for (uint256 i = 0; i < len; ++i) { harvest(borrowables[i], to); } } function getBlockTimestamp() public virtual view returns (uint256) { return block.timestamp; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_rewardToken","type":"address"},{"internalType":"uint256","name":"_rewardPerSec","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"borrowable","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Harvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"borrowable","type":"address"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":true,"internalType":"contract IRewarder","name":"rewarder","type":"address"},{"indexed":false,"internalType":"bool","name":"overwrite","type":"bool"}],"name":"LogSetPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rewardPerSec","type":"uint256"}],"name":"LogSetReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"borrowable","type":"address"},{"indexed":false,"internalType":"uint256","name":"lastRewardTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accRewardPerShare","type":"uint256"}],"name":"LogUpdatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"borrowable","type":"address"},{"indexed":true,"internalType":"address","name":"borrower","type":"address"},{"indexed":false,"internalType":"uint256","name":"borrowBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"borrowIndex","type":"uint256"}],"name":"TrackBorrow","type":"event"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"borrowable","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"borrowables","type":"address[]"},{"internalType":"address","name":"to","type":"address"}],"name":"massHarvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"borrowables","type":"address[]"}],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"borrowable","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"pending","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolInfo","outputs":[{"internalType":"uint256","name":"totalShares","type":"uint256"},{"internalType":"uint256","name":"accRewardPerShare","type":"uint256"},{"internalType":"uint256","name":"lastRewardTime","type":"uint256"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"contract IRewarder","name":"rewarder","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerSec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"borrowable","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"contract IRewarder","name":"rewarder","type":"address"},{"internalType":"bool","name":"overwrite","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardPerSec","type":"uint256"}],"name":"setReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IFactory","name":"factory","type":"address"},{"internalType":"address","name":"uniswapV2Pair","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"contract IRewarder","name":"rewarder","type":"address"},{"internalType":"bool","name":"overwrite","type":"bool"}],"name":"setUniswapV2Pair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"borrowBalance","type":"uint256"},{"internalType":"uint256","name":"borrowIndex","type":"uint256"}],"name":"trackBorrow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"bool","name":"direct","type":"bool"},{"internalType":"bool","name":"renounce","type":"bool"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"borrowable","type":"address"}],"name":"updatePool","outputs":[{"components":[{"internalType":"uint256","name":"totalShares","type":"uint256"},{"internalType":"uint256","name":"accRewardPerShare","type":"uint256"},{"internalType":"uint256","name":"lastRewardTime","type":"uint256"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"contract IRewarder","name":"rewarder","type":"address"}],"internalType":"struct ImpermaxChef.PoolInfo","name":"pool","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"int256","name":"rewardDebt","type":"int256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162002078380380620020788339810160408190526200003491620000ff565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36715ed49a0f91e00008110620000a65760405162461bcd60e51b81526004016200009d9062000139565b60405180910390fd5b6001600160601b0319606083901b1660805260028190556040517f95689dd8916ac2af3670f360c0db71ab5304c307b1b42def2b02b8cca620d0ee90620000ef90839062000170565b60405180910390a1505062000179565b6000806040838503121562000112578182fd5b82516001600160a01b038116811462000129578283fd5b6020939093015192949293505050565b6020808252601f908201527f496d7065726178436865663a204d41585f5245574152445f5045525f53454300604082015260600190565b90815260200190565b60805160601c611edc6200019c60003980610bd852806111685250611edc6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063578461aa116100cd5780638da5cb5b116100815780639ced7e76116100665780639ced7e76146102a0578063e30c3978146102b3578063f7c618c1146102bb57610151565b80638da5cb5b146102675780639a7b5f111461027c57610151565b806366cc1857116100b257806366cc18571461022c578063796b89b91461023f5780637b46c54f1461024757610151565b8063578461aa14610206578063629f89891461021957610151565b8063293be4561161012457806339eaed291161010957806339eaed29146101e35780634e71e0c8146101f65780634f41e95d146101fe57610151565b8063293be456146101bd57806331c1abdc146101d057610151565b806305285d7f14610156578063078dfbe71461016b5780630f208beb1461017e57806317caf6f1146101a8575b600080fd5b6101696101643660046117d5565b6102c3565b005b610169610179366004611739565b6104e7565b61019161018c366004611701565b61066f565b60405161019f929190611dea565b60405180910390f35b6101b0610693565b60405161019f9190611dd1565b6101696101cb366004611983565b610699565b6101696101de366004611849565b61076b565b6101696101f1366004611809565b6107b0565b6101696107ef565b6101b06108d5565b610169610214366004611783565b6108db565b61016961022736600461192a565b610a63565b61016961023a366004611701565b610b17565b6101b0610d25565b61025a6102553660046116e5565b610d29565b60405161019f9190611d81565b61026f610f25565b60405161019f91906119b7565b61028f61028a3660046116e5565b610f41565b60405161019f959493929190611e0e565b6101b06102ae366004611701565b610f87565b61026f61114a565b61026f611166565b336102cc61163d565b6102d582610d29565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600460209081526040808320938a1683529290529081209192506103398561032d886c0100000000000000000000000063ffffffff61118a16565b9063ffffffff6111e716565b825490915060009061035290839063ffffffff61122916565b905060007401000000000000000000000000000000000000000061038386602001518461128990919063ffffffff16565b8161038a57fe5b848655600186015491900591506103a7908263ffffffff61136216565b600185015584516103c7906103c2908463ffffffff61136216565b6113c2565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600360205260409020919091556080860151161561047557846080015173ffffffffffffffffffffffffffffffffffffffff1663c35f5822878b8c6000886040518663ffffffff1660e01b81526004016104429594939291906119d8565b600060405180830381600087803b15801561045c57600080fd5b505af1158015610470573d6000803e3d6000fd5b505050505b8873ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f0b3b05c4c219d1c1afdced4fa5f0fb112c1a5541a3988b66e483a3af9629b2388a8a6040516104d4929190611dea565b60405180910390a3505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611c5d565b60405180910390fd5b81156106295773ffffffffffffffffffffffffffffffffffffffff83161515806105685750805b61059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611b92565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905561066a565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85161790555b505050565b60046020908152600092835260408084209091529082529020805460019091015482565b60055481565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611c5d565b6715ed49a0f91e0000811061072b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611a90565b60028190556040517f95689dd8916ac2af3670f360c0db71ab5304c307b1b42def2b02b8cca620d0ee90610760908390611dd1565b60405180910390a150565b8160005b818110156107a9576107a185858381811061078657fe5b905060200201602081019061079b91906116e5565b84610b17565b60010161076f565b5050505050565b8060005b818110156107e9576107e08484838181106107cb57fe5b905060200201602081019061025591906116e5565b506001016107b4565b50505050565b60015473ffffffffffffffffffffffffffffffffffffffff16338114610841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611cef565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179055600180549091169055565b60025481565b60005473ffffffffffffffffffffffffffffffffffffffff16331461092c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611c5d565b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602081905260409091209081015460055461097c9186916109709163ffffffff61140216565b9063ffffffff61144416565b6005556003810184905581156109cf576004810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85161790555b816109f457600481015473ffffffffffffffffffffffffffffffffffffffff166109f6565b825b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f1d3f76656cef3ed455ab0a402cd130d5fd534f3c0a09d0ef79d1f8d5f19d12b28685604051610a54929190611dda565b60405180910390a35050505050565b6000808673ffffffffffffffffffffffffffffffffffffffff16630572bf5f876040518263ffffffff1660e01b8152600401610a9f91906119b7565b60a06040518083038186803b158015610ab757600080fd5b505afa158015610acb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aef91906118af565b94509450505050610b02828686866108db565b610b0e818686866108db565b50505050505050565b610b1f61163d565b610b2883610d29565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384528252822090830151815493945090927401000000000000000000000000000000000000000091610b89919063ffffffff61118a16565b81610b9057fe5b0490506000610baf6103c284600101548461122990919063ffffffff16565b6001840183905590508015610c0557610c0573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016868363ffffffff61148316565b608084015173ffffffffffffffffffffffffffffffffffffffff1615610cb857608084015183546040517fc35f582200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163c35f582291610c85918a9133918b9188916004016119d8565b600060405180830381600087803b158015610c9f57600080fd5b505af1158015610cb3573d6000803e3d6000fd5b505050505b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fa0306f61d3fafe13787b78e276cb6b644382854a66cb46daae14227d3ec2679783604051610d159190611dd1565b60405180910390a3505050505050565b4290565b610d3161163d565b5073ffffffffffffffffffffffffffffffffffffffff808216600090815260036020818152604092839020835160a0810185528154815260018201549281019290925260028101549382018490529182015460608201526004909101549092166080830152610d9e610d25565b1115610f205780518015610e4f576000610dca8360400151610dbe610d25565b9063ffffffff61140216565b90506000600554610dfa8560600151610dee6002548661118a90919063ffffffff16565b9063ffffffff61118a16565b81610e0157fe5b049050610e4783610e2d837401000000000000000000000000000000000000000063ffffffff61118a16565b81610e3457fe5b602087015191900463ffffffff61144416565b602085015250505b610e57610d25565b604083810191825273ffffffffffffffffffffffffffffffffffffffff858116600081815260036020818152918590208851815591880151600183018190559551600283018190556060890151918301919091556080880151600490920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169290941691909117909255915191927ffa4534c55db3b65cd96eafe03e5ce9fd87638590f49d5907978ff8489ea66ecb92610f1692918691611df8565b60405180910390a2505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60036020819052600091825260409091208054600182015460028301549383015460049093015491939092909173ffffffffffffffffffffffffffffffffffffffff1685565b6000610f9161163d565b5073ffffffffffffffffffffffffffffffffffffffff808416600090815260036020818152604092839020835160a081018552815481526001820154928101929092526002810154938201939093529082015460608201526004909101549091166080820152610fff611682565b5073ffffffffffffffffffffffffffffffffffffffff80851660009081526004602090815260408083209387168352928152908290208251808401845281548152600190910154818301529083015183519284015191929091611060610d25565b11801561106c57508015155b156110f55760006110838560400151610dbe610d25565b905060006005546110a78760600151610dee6002548661118a90919063ffffffff16565b816110ae57fe5b0490506110f0836110da837401000000000000000000000000000000000000000063ffffffff61118a16565b816110e157fe5b8691900463ffffffff61144416565b935050505b6020830151835161113f916103c291740100000000000000000000000000000000000000009061112b908763ffffffff61118a16565b8161113257fe5b049063ffffffff61122916565b979650505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082611199575060006111e1565b828202828482816111a657fe5b04146111de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611bc9565b90505b92915050565b60006111de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115a6565b600081830381831280159061123e5750838113155b80611253575060008312801561125357508381135b6111de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611d24565b600082611298575060006111e1565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1480156112e657507f800000000000000000000000000000000000000000000000000000000000000082145b1561131d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611c92565b8282028284828161132a57fe5b05146111de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611c92565b60008282018183128015906113775750838112155b8061138c575060008312801561138c57508381125b6111de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611b35565b6000808212156113fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611ac7565b5090565b60006111de83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506115f7565b6000828201838110156111de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611afe565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016114b6929190611a19565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611504919061199b565b6000604051808303816000865af19150503d8060008114611541576040519150601f19603f3d011682016040523d82523d6000602084013e611546565b606091505b50915091508180156115705750805115806115705750808060200190518101906115709190611893565b6107a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611c26565b600081836115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105389190611a3f565b5060008385816115ed57fe5b0495945050505050565b60008184841115611635576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105389190611a3f565b505050900390565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b604051806040016040528060008152602001600081525090565b60008083601f8401126116ad578182fd5b50813567ffffffffffffffff8111156116c4578182fd5b60208301915083602080830285010111156116de57600080fd5b9250929050565b6000602082840312156116f6578081fd5b81356111de81611e73565b60008060408385031215611713578081fd5b823561171e81611e73565b9150602083013561172e81611e73565b809150509250929050565b60008060006060848603121561174d578081fd5b833561175881611e73565b9250602084013561176881611e98565b9150604084013561177881611e98565b809150509250925092565b60008060008060808587031215611798578081fd5b84356117a381611e73565b93506020850135925060408501356117ba81611e73565b915060608501356117ca81611e98565b939692955090935050565b6000806000606084860312156117e9578283fd5b83356117f481611e73565b95602085013595506040909401359392505050565b6000806020838503121561181b578182fd5b823567ffffffffffffffff811115611831578283fd5b61183d8582860161169c565b90969095509350505050565b60008060006040848603121561185d578283fd5b833567ffffffffffffffff811115611873578384fd5b61187f8682870161169c565b909450925050602084013561177881611e73565b6000602082840312156118a4578081fd5b81516111de81611e98565b600080600080600060a086880312156118c6578081fd5b85516118d181611e98565b602087015190955062ffffff811681146118e9578182fd5b60408701519094506118fa81611e73565b606087015190935061190b81611e73565b608087015190925061191c81611e73565b809150509295509295909350565b600080600080600060a08688031215611941578081fd5b853561194c81611e73565b9450602086013561195c81611e73565b935060408601359250606086013561197381611e73565b9150608086013561191c81611e98565b600060208284031215611994578081fd5b5035919050565b600082516119ad818460208701611e47565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6000602082528251806020840152611a5e816040850160208701611e47565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6020808252601f908201527f496d7065726178436865663a204d41585f5245574152445f5045525f53454300604082015260600190565b6020808252600b908201527f496e7465676572203c2030000000000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f4f776e61626c653a207a65726f20616464726573730000000000000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252600d908201527f21736166655472616e7366657200000000000000000000000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f60408201527f766572666c6f7700000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f76657260408201527f666c6f7700000000000000000000000000000000000000000000000000000000606082015260800190565b600060a0820190508251825260208301516020830152604083015160408301526060830151606083015273ffffffffffffffffffffffffffffffffffffffff608084015116608083015292915050565b90815260200190565b9182521515602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b94855260208501939093526040840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00190565b60005b83811015611e62578181015183820152602001611e4a565b838111156107e95750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114611e9557600080fd5b50565b8015158114611e9557600080fdfea2646970667358221220160226d2f61da554f5c11f953fd988a25bd4c14647955f7abf3b9013881f592764736f6c6343000606003300000000000000000000000060bb3d364b765c497c8ce50ae0ae3f0882c5bd050000000000000000000000000000000000000000000000000000000000989680
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101515760003560e01c8063578461aa116100cd5780638da5cb5b116100815780639ced7e76116100665780639ced7e76146102a0578063e30c3978146102b3578063f7c618c1146102bb57610151565b80638da5cb5b146102675780639a7b5f111461027c57610151565b806366cc1857116100b257806366cc18571461022c578063796b89b91461023f5780637b46c54f1461024757610151565b8063578461aa14610206578063629f89891461021957610151565b8063293be4561161012457806339eaed291161010957806339eaed29146101e35780634e71e0c8146101f65780634f41e95d146101fe57610151565b8063293be456146101bd57806331c1abdc146101d057610151565b806305285d7f14610156578063078dfbe71461016b5780630f208beb1461017e57806317caf6f1146101a8575b600080fd5b6101696101643660046117d5565b6102c3565b005b610169610179366004611739565b6104e7565b61019161018c366004611701565b61066f565b60405161019f929190611dea565b60405180910390f35b6101b0610693565b60405161019f9190611dd1565b6101696101cb366004611983565b610699565b6101696101de366004611849565b61076b565b6101696101f1366004611809565b6107b0565b6101696107ef565b6101b06108d5565b610169610214366004611783565b6108db565b61016961022736600461192a565b610a63565b61016961023a366004611701565b610b17565b6101b0610d25565b61025a6102553660046116e5565b610d29565b60405161019f9190611d81565b61026f610f25565b60405161019f91906119b7565b61028f61028a3660046116e5565b610f41565b60405161019f959493929190611e0e565b6101b06102ae366004611701565b610f87565b61026f61114a565b61026f611166565b336102cc61163d565b6102d582610d29565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600460209081526040808320938a1683529290529081209192506103398561032d886c0100000000000000000000000063ffffffff61118a16565b9063ffffffff6111e716565b825490915060009061035290839063ffffffff61122916565b905060007401000000000000000000000000000000000000000061038386602001518461128990919063ffffffff16565b8161038a57fe5b848655600186015491900591506103a7908263ffffffff61136216565b600185015584516103c7906103c2908463ffffffff61136216565b6113c2565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600360205260409020919091556080860151161561047557846080015173ffffffffffffffffffffffffffffffffffffffff1663c35f5822878b8c6000886040518663ffffffff1660e01b81526004016104429594939291906119d8565b600060405180830381600087803b15801561045c57600080fd5b505af1158015610470573d6000803e3d6000fd5b505050505b8873ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f0b3b05c4c219d1c1afdced4fa5f0fb112c1a5541a3988b66e483a3af9629b2388a8a6040516104d4929190611dea565b60405180910390a3505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611c5d565b60405180910390fd5b81156106295773ffffffffffffffffffffffffffffffffffffffff83161515806105685750805b61059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611b92565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905561066a565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85161790555b505050565b60046020908152600092835260408084209091529082529020805460019091015482565b60055481565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611c5d565b6715ed49a0f91e0000811061072b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611a90565b60028190556040517f95689dd8916ac2af3670f360c0db71ab5304c307b1b42def2b02b8cca620d0ee90610760908390611dd1565b60405180910390a150565b8160005b818110156107a9576107a185858381811061078657fe5b905060200201602081019061079b91906116e5565b84610b17565b60010161076f565b5050505050565b8060005b818110156107e9576107e08484838181106107cb57fe5b905060200201602081019061025591906116e5565b506001016107b4565b50505050565b60015473ffffffffffffffffffffffffffffffffffffffff16338114610841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611cef565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179055600180549091169055565b60025481565b60005473ffffffffffffffffffffffffffffffffffffffff16331461092c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611c5d565b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602081905260409091209081015460055461097c9186916109709163ffffffff61140216565b9063ffffffff61144416565b6005556003810184905581156109cf576004810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85161790555b816109f457600481015473ffffffffffffffffffffffffffffffffffffffff166109f6565b825b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f1d3f76656cef3ed455ab0a402cd130d5fd534f3c0a09d0ef79d1f8d5f19d12b28685604051610a54929190611dda565b60405180910390a35050505050565b6000808673ffffffffffffffffffffffffffffffffffffffff16630572bf5f876040518263ffffffff1660e01b8152600401610a9f91906119b7565b60a06040518083038186803b158015610ab757600080fd5b505afa158015610acb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aef91906118af565b94509450505050610b02828686866108db565b610b0e818686866108db565b50505050505050565b610b1f61163d565b610b2883610d29565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384528252822090830151815493945090927401000000000000000000000000000000000000000091610b89919063ffffffff61118a16565b81610b9057fe5b0490506000610baf6103c284600101548461122990919063ffffffff16565b6001840183905590508015610c0557610c0573ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000060bb3d364b765c497c8ce50ae0ae3f0882c5bd0516868363ffffffff61148316565b608084015173ffffffffffffffffffffffffffffffffffffffff1615610cb857608084015183546040517fc35f582200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163c35f582291610c85918a9133918b9188916004016119d8565b600060405180830381600087803b158015610c9f57600080fd5b505af1158015610cb3573d6000803e3d6000fd5b505050505b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fa0306f61d3fafe13787b78e276cb6b644382854a66cb46daae14227d3ec2679783604051610d159190611dd1565b60405180910390a3505050505050565b4290565b610d3161163d565b5073ffffffffffffffffffffffffffffffffffffffff808216600090815260036020818152604092839020835160a0810185528154815260018201549281019290925260028101549382018490529182015460608201526004909101549092166080830152610d9e610d25565b1115610f205780518015610e4f576000610dca8360400151610dbe610d25565b9063ffffffff61140216565b90506000600554610dfa8560600151610dee6002548661118a90919063ffffffff16565b9063ffffffff61118a16565b81610e0157fe5b049050610e4783610e2d837401000000000000000000000000000000000000000063ffffffff61118a16565b81610e3457fe5b602087015191900463ffffffff61144416565b602085015250505b610e57610d25565b604083810191825273ffffffffffffffffffffffffffffffffffffffff858116600081815260036020818152918590208851815591880151600183018190559551600283018190556060890151918301919091556080880151600490920180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169290941691909117909255915191927ffa4534c55db3b65cd96eafe03e5ce9fd87638590f49d5907978ff8489ea66ecb92610f1692918691611df8565b60405180910390a2505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60036020819052600091825260409091208054600182015460028301549383015460049093015491939092909173ffffffffffffffffffffffffffffffffffffffff1685565b6000610f9161163d565b5073ffffffffffffffffffffffffffffffffffffffff808416600090815260036020818152604092839020835160a081018552815481526001820154928101929092526002810154938201939093529082015460608201526004909101549091166080820152610fff611682565b5073ffffffffffffffffffffffffffffffffffffffff80851660009081526004602090815260408083209387168352928152908290208251808401845281548152600190910154818301529083015183519284015191929091611060610d25565b11801561106c57508015155b156110f55760006110838560400151610dbe610d25565b905060006005546110a78760600151610dee6002548661118a90919063ffffffff16565b816110ae57fe5b0490506110f0836110da837401000000000000000000000000000000000000000063ffffffff61118a16565b816110e157fe5b8691900463ffffffff61144416565b935050505b6020830151835161113f916103c291740100000000000000000000000000000000000000009061112b908763ffffffff61118a16565b8161113257fe5b049063ffffffff61122916565b979650505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b7f00000000000000000000000060bb3d364b765c497c8ce50ae0ae3f0882c5bd0581565b600082611199575060006111e1565b828202828482816111a657fe5b04146111de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611bc9565b90505b92915050565b60006111de83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115a6565b600081830381831280159061123e5750838113155b80611253575060008312801561125357508381135b6111de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611d24565b600082611298575060006111e1565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1480156112e657507f800000000000000000000000000000000000000000000000000000000000000082145b1561131d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611c92565b8282028284828161132a57fe5b05146111de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611c92565b60008282018183128015906113775750838112155b8061138c575060008312801561138c57508381125b6111de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611b35565b6000808212156113fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611ac7565b5090565b60006111de83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506115f7565b6000828201838110156111de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611afe565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016114b6929190611a19565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611504919061199b565b6000604051808303816000865af19150503d8060008114611541576040519150601f19603f3d011682016040523d82523d6000602084013e611546565b606091505b50915091508180156115705750805115806115705750808060200190518101906115709190611893565b6107a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053890611c26565b600081836115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105389190611a3f565b5060008385816115ed57fe5b0495945050505050565b60008184841115611635576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105389190611a3f565b505050900390565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b604051806040016040528060008152602001600081525090565b60008083601f8401126116ad578182fd5b50813567ffffffffffffffff8111156116c4578182fd5b60208301915083602080830285010111156116de57600080fd5b9250929050565b6000602082840312156116f6578081fd5b81356111de81611e73565b60008060408385031215611713578081fd5b823561171e81611e73565b9150602083013561172e81611e73565b809150509250929050565b60008060006060848603121561174d578081fd5b833561175881611e73565b9250602084013561176881611e98565b9150604084013561177881611e98565b809150509250925092565b60008060008060808587031215611798578081fd5b84356117a381611e73565b93506020850135925060408501356117ba81611e73565b915060608501356117ca81611e98565b939692955090935050565b6000806000606084860312156117e9578283fd5b83356117f481611e73565b95602085013595506040909401359392505050565b6000806020838503121561181b578182fd5b823567ffffffffffffffff811115611831578283fd5b61183d8582860161169c565b90969095509350505050565b60008060006040848603121561185d578283fd5b833567ffffffffffffffff811115611873578384fd5b61187f8682870161169c565b909450925050602084013561177881611e73565b6000602082840312156118a4578081fd5b81516111de81611e98565b600080600080600060a086880312156118c6578081fd5b85516118d181611e98565b602087015190955062ffffff811681146118e9578182fd5b60408701519094506118fa81611e73565b606087015190935061190b81611e73565b608087015190925061191c81611e73565b809150509295509295909350565b600080600080600060a08688031215611941578081fd5b853561194c81611e73565b9450602086013561195c81611e73565b935060408601359250606086013561197381611e73565b9150608086013561191c81611e98565b600060208284031215611994578081fd5b5035919050565b600082516119ad818460208701611e47565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6000602082528251806020840152611a5e816040850160208701611e47565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6020808252601f908201527f496d7065726178436865663a204d41585f5245574152445f5045525f53454300604082015260600190565b6020808252600b908201527f496e7465676572203c2030000000000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f4f776e61626c653a207a65726f20616464726573730000000000000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252600d908201527f21736166655472616e7366657200000000000000000000000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526027908201527f5369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f60408201527f766572666c6f7700000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f76657260408201527f666c6f7700000000000000000000000000000000000000000000000000000000606082015260800190565b600060a0820190508251825260208301516020830152604083015160408301526060830151606083015273ffffffffffffffffffffffffffffffffffffffff608084015116608083015292915050565b90815260200190565b9182521515602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b94855260208501939093526040840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00190565b60005b83811015611e62578181015183820152602001611e4a565b838111156107e95750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114611e9557600080fd5b50565b8015158114611e9557600080fdfea2646970667358221220160226d2f61da554f5c11f953fd988a25bd4c14647955f7abf3b9013881f592764736f6c63430006060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000060bb3d364b765c497c8ce50ae0ae3f0882c5bd050000000000000000000000000000000000000000000000000000000000989680
-----Decoded View---------------
Arg [0] : _rewardToken (address): 0x60bB3D364B765C497C8cE50AE0Ae3f0882c5bD05
Arg [1] : _rewardPerSec (uint256): 10000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000060bb3d364b765c497c8ce50ae0ae3f0882c5bd05
Arg [1] : 0000000000000000000000000000000000000000000000000000000000989680
Deployed Bytecode Sourcemap
21935:6189:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21935:6189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;26685:909:0;;;;;;;;;:::i;:::-;;792:432;;;;;;;;;:::i;22428:64::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;22521:30;;;:::i;:::-;;;;;;;;23527:217;;;;;;;;;:::i;27823:193::-;;;;;;;;;:::i;27632:184::-;;;;;;;;;:::i;1273:340::-;;;:::i;22346:27::-;;;:::i;23750:405::-;;;;;;;;;:::i;24161:336::-;;;;;;;;;:::i;25974:705::-;;;;;;;;;:::i;28022:99::-;;;:::i;25280:689::-;;;;;;;;;:::i;:::-;;;;;;;;378:20;;;:::i;:::-;;;;;;;;22380:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;24537:738;;;;;;;;;:::i;425:27::-;;;:::i;22306:36::-;;;:::i;26685:909::-;26806:10;26821:20;;:::i;:::-;26844:22;26855:10;26844;:22::i;:::-;26913:20;;;;26889:21;26913:20;;;:8;:20;;;;;;;;:30;;;;;;;;;;;26821:45;;-1:-1:-1;26965:52:0;27005:11;26965:35;:13;22652:5;26965:35;:17;:35;:::i;:::-;:39;:52;:39;:52;:::i;:::-;27071:11;;26948:69;;-1:-1:-1;27022:17:0;;27042:42;;26948:69;;27042:42;:21;:42;:::i;:::-;27022:62;;27089:21;22598:6;27113:46;27135:4;:22;;;27113:10;:14;;:46;;;;:::i;:::-;:70;;;;;27188:23;;;27234:15;;;;27113:70;;;;-1:-1:-1;27234:35:0;;27113:70;27234:35;:19;:35;:::i;:::-;27216:15;;;:53;27316:16;;27309:52;;:40;;27338:10;27309:40;:28;:40;:::i;:::-;:50;:52::i;:::-;27274:20;;;;;;;;:8;:20;;;;;:87;;;;27405:13;;;;27397:36;;27393:122;;27441:4;:13;;;:22;;;27464:10;27476:8;27486;27496:1;27499:9;27441:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27441:68:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27441:68:0;;;;27393:122;27552:8;27528:61;;27540:10;27528:61;;;27562:13;27577:11;27528:61;;;;;;;;;;;;;;;;26685:909;;;;;;;;;:::o;792:432::-;1716:5;;;;1702:10;:19;1694:64;;;;;;;;;;;;;;;;;;;;;;897:6:::1;893:324;;;951:22;::::0;::::1;::::0;::::1;::::0;:34:::1;;;977:8;951:34;943:68;;;;;;;;;;;;;;1078:5;::::0;;1057:37:::1;::::0;::::1;::::0;;::::1;::::0;1078:5;::::1;::::0;1057:37:::1;::::0;::::1;1109:5;:16:::0;;;::::1;;::::0;::::1;;::::0;;893:324:::1;;;1182:12;:23:::0;;;::::1;;::::0;::::1;;::::0;;893:324:::1;792:432:::0;;;:::o;22428:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22521:30::-;;;;:::o;23527:217::-;1716:5;;;;1702:10;:19;1694:64;;;;;;;;;;;;;;22707:7:::1;23599:13;:34;23591:78;;;;;;;;;;;;;;23674:12;:28:::0;;;23712:27:::1;::::0;::::1;::::0;::::1;::::0;23689:13;;23712:27:::1;;;;;;;;;;23527:217:::0;:::o;27823:193::-;27916:11;27902;27939:73;27963:3;27959:1;:7;27939:73;;;27979:27;27987:11;;27999:1;27987:14;;;;;;;;;;;;;;;;;;;;;;28003:2;27979:7;:27::i;:::-;27968:3;;27939:73;;;;27823:193;;;;:::o;27632:184::-;27717:11;27703;27740:72;27764:3;27760:1;:7;27740:72;;;27780:26;27791:11;;27803:1;27791:14;;;;;;;;;;;;;;;;;;;;;27780:26;-1:-1:-1;27769:3:0;;27740:72;;;;27632:184;;;:::o;1273:340::-;1341:12;;;;1393:10;:27;;1385:72;;;;;;;;;;;;;;1516:5;;;1495:42;;;;;;;1516:5;;;1495:42;;;1548:5;:21;;;;;;;;;;;;;;1580:25;;;;;;;1273:340::o;22346:27::-;;;;:::o;23750:405::-;1716:5;;;;1702:10;:19;1694:64;;;;;;;;;;;;;;23885:20:::1;::::0;::::1;23861:21;23885:20:::0;;;:8:::1;:20;::::0;;;;;;;23948:15;;::::1;::::0;23928::::1;::::0;:52:::1;::::0;23969:10;;23928:36:::1;::::0;::::1;:19;:36;:::i;:::-;:40:::0;:52:::1;:40;:52;:::i;:::-;23910:15;:70:::0;23985:15:::1;::::0;::::1;:28:::0;;;24018:39;::::1;;;24033:13;::::0;::::1;:24:::0;;;::::1;;::::0;::::1;;::::0;;24018:39:::1;24102:9;:36;;24125:13;::::0;::::1;::::0;::::1;;24102:36;;;24114:8;24102:36;24067:83;;24078:10;24067:83;;;24090:10;24140:9;24067:83;;;;;;;;;;;;;;;;1769:1;23750:405:::0;;;;:::o;24161:336::-;24303:19;24324;24347:7;:22;;;24370:13;24347:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24347:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24347:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;24347:37:0;;;;;;;;;24298:86;;;;;;;24389:49;24393:11;24406:10;24418:8;24428:9;24389:3;:49::i;:::-;24443;24447:11;24460:10;24472:8;24482:9;24443:3;:49::i;:::-;24161:336;;;;;;;:::o;25974:705::-;26035:20;;:::i;:::-;26058:22;26069:10;26058;:22::i;:::-;26109:20;;;26085:21;26109:20;;;:8;:20;;;;;;;;26130:10;26109:32;;;;;;26196:22;;;;26180:11;;26035:45;;-1:-1:-1;26109:32:0;;22598:6;;26180:39;;:11;:39;:15;:39;:::i;:::-;:55;;;;;;26146:90;;26241:22;26266:50;:38;26288:4;:15;;;26266:17;:21;;:38;;;;:::i;:50::-;26337:15;;;:35;;;26241:75;-1:-1:-1;26402:19:0;;26398:81;;26429:44;:24;:11;:24;26454:2;26458:14;26429:44;:24;:44;:::i;:::-;26495:13;;;;26487:36;;;26483:133;;26531:13;;;;26598:11;;26531:79;;;;;:22;;;;;;;:79;;26554:10;;26566;;26578:2;;26582:14;;26531:79;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;26531:79:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26531:79:0;;;;26483:133;26647:10;26627:47;;26635:10;26627:47;;;26659:14;26627:47;;;;;;;;;;;;;;;25974:705;;;;;;:::o;28022:99::-;28101:15;28022:99;:::o;25280:689::-;25336:20;;:::i;:::-;-1:-1:-1;25370:20:0;;;;;;;;:8;:20;;;;;;;;;25363:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25399:19;:17;:19::i;:::-;:41;25395:570;;;25470:16;;25496:15;;25492:294;;25520:19;25542:44;25566:4;:19;;;25542;:17;:19::i;:::-;:23;:44;:23;:44;:::i;:::-;25520:66;;25593:14;25663:15;;25610:50;25644:4;:15;;;25610:29;25626:12;;25610:11;:15;;:29;;;;:::i;:::-;:33;:50;:33;:50;:::i;:::-;:68;;;;;;;-1:-1:-1;25710:69:0;25766:11;25738:25;25610:68;22598:6;25738:25;:10;:25;:::i;:::-;:39;;;;;25710:22;;;;;25738:39;;25710:69;:26;:69;:::i;:::-;25685:22;;;:94;-1:-1:-1;;25492:294:0;25813:19;:17;:19::i;:::-;25791;;;;:41;;;25838:20;;;;;;;;:8;:20;;;;;;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25876:83;;25838:20;;25876:83;;;;25838:27;25923:11;;25876:83;;;;;;;;;;25395:570;;25280:689;;;:::o;378:20::-;;;;;;:::o;22380:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24537:738::-;24618:15;24640:20;;:::i;:::-;-1:-1:-1;24663:20:0;;;;;;;;:8;:20;;;;;;;;;24640:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24688:20;;:::i;:::-;-1:-1:-1;24711:20:0;;;;;;;;:8;:20;;;;;;;;:27;;;;;;;;;;;;24688:50;;;;;;;;;;;;;;;;;;;;24771:22;;;;24820:16;;24867:19;;;;24688:50;;24771:22;;24845:19;:17;:19::i;:::-;:41;:61;;;;-1:-1:-1;24890:16:0;;;24845:61;24841:324;;;24914:19;24936:44;24960:4;:19;;;24936;:17;:19::i;:44::-;24914:66;;24986:14;25056:15;;25003:50;25037:4;:15;;;25003:29;25019:12;;25003:11;:15;;:29;;;;:::i;:50::-;:68;;;;;;;-1:-1:-1;25097:62:0;25147:11;25119:25;25003:68;22598:6;25119:25;:10;:25;:::i;:::-;:39;;;;;25097:17;;25119:39;;25097:62;:21;:62;:::i;:::-;25077:82;;24841:324;;;25242:15;;;;25186:11;;25179:91;;:79;;22598:6;;25186:34;;25202:17;25186:34;:15;:34;:::i;:::-;:50;;;;;;;25179:79;:62;:79;:::i;:91::-;25169:101;24537:738;-1:-1:-1;;;;;;;24537:738:0:o;425:27::-;;;;;;:::o;22306:36::-;;;:::o;4569:471::-;4627:7;4872:6;4868:47;;-1:-1:-1;4902:1:0;4895:8;;4868:47;4939:5;;;4943:1;4939;:5;:1;4963:5;;;;;:10;4955:56;;;;;;;;;;;;;;5031:1;-1:-1:-1;4569:471:0;;;;;:::o;6227:132::-;6285:7;6312:39;6316:1;6319;6312:39;;;;;;;;;;;;;;;;;:3;:39::i;12036:218::-;12092:6;12122:5;;;12147:6;;;;;;:16;;;12162:1;12157;:6;;12147:16;12146:38;;;;12173:1;12169;:5;:14;;;;;12182:1;12178;:5;12169:14;12138:87;;;;;;;;;;;;;10472:568;10528:6;10772;10768:47;;-1:-1:-1;10802:1:0;10795:8;;10768:47;10837:1;10842:2;10837:7;:27;;;;;10207:7;10848:1;:16;10837:27;10835:30;10827:82;;;;;;;;;;;;;;10933:5;;;10937:1;10933;:5;:1;10957:5;;;;;:10;10949:62;;;;;;;;;;;;;12499:215;12555:6;12585:5;;;12610:6;;;;;;:16;;;12625:1;12620;:6;;12610:16;12609:38;;;;12636:1;12632;:5;:14;;;;;12645:1;12641;:5;12632:14;12601:84;;;;;;;;;;;;;12722:138;12774:7;12807:1;12802;:6;;12794:30;;;;;;;;;;;;;;-1:-1:-1;12850:1:0;12722:138::o;3708:137::-;3766:7;3793:44;3797:1;3800;3793:44;;;;;;;;;;;;;;;;;:3;:44::i;2815:181::-;2873:7;2905:5;;;2929:6;;;;2921:46;;;;;;;;;;;;;9279:346;9431:12;9445:17;9466:5;:10;;9500;9512:2;9516:5;9477:45;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9477:45:0;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;9477:45:0;9466:57;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;9430:93:0;;;;9542:7;:57;;;;-1:-1:-1;9554:11:0;;:16;;:44;;;9585:4;9574:24;;;;;;;;;;;;;;9534:83;;;;;;;;;;;;;6847:345;6933:7;7035:12;7028:5;7020:28;;;;;;;;;;;;;;;;7059:9;7075:1;7071;:5;;;;;;;6847:345;-1:-1:-1;;;;;6847:345:0:o;4134:192::-;4220:7;4256:12;4248:6;;;;4240:29;;;;;;;;;;;;;;;-1:-1:-1;;;4292:5:0;;;4134:192::o;21935:6189::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;301:352:-1:-;;;431:3;424:4;416:6;412:17;408:27;398:2;;-1:-1;;439:12;398:2;-1:-1;469:20;;509:18;498:30;;495:2;;;-1:-1;;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;575:4;;610:6;606:17;567:6;592:32;;589:41;586:2;;;643:1;;633:12;586:2;391:262;;;;;;1547:241;;1651:2;1639:9;1630:7;1626:23;1622:32;1619:2;;;-1:-1;;1657:12;1619:2;85:6;72:20;97:33;124:5;97:33;;1795:366;;;1916:2;1904:9;1895:7;1891:23;1887:32;1884:2;;;-1:-1;;1922:12;1884:2;85:6;72:20;97:33;124:5;97:33;;;1974:63;-1:-1;2074:2;2113:22;;72:20;97:33;72:20;97:33;;;2082:63;;;;1878:283;;;;;;2168:479;;;;2300:2;2288:9;2279:7;2275:23;2271:32;2268:2;;;-1:-1;;2306:12;2268:2;85:6;72:20;97:33;124:5;97:33;;;2358:63;-1:-1;2458:2;2494:22;;725:20;750:30;725:20;750:30;;;2466:60;-1:-1;2563:2;2599:22;;725:20;750:30;725:20;750:30;;;2571:60;;;;2262:385;;;;;;2654:647;;;;;2824:3;2812:9;2803:7;2799:23;2795:33;2792:2;;;-1:-1;;2831:12;2792:2;85:6;72:20;97:33;124:5;97:33;;;2883:63;-1:-1;2983:2;3022:22;;1477:20;;-1:-1;3091:2;3148:22;;1183:20;1208:51;1183:20;1208:51;;;3099:81;-1:-1;3217:2;3253:22;;725:20;750:30;725:20;750:30;;;2786:515;;;;-1:-1;2786:515;;-1:-1;;2786:515;3308:491;;;;3446:2;3434:9;3425:7;3421:23;3417:32;3414:2;;;-1:-1;;3452:12;3414:2;85:6;72:20;97:33;124:5;97:33;;;3504:63;3604:2;3643:22;;1477:20;;-1:-1;3712:2;3751:22;;;1477:20;;3408:391;-1:-1;;;3408:391;3806:397;;;3945:2;3933:9;3924:7;3920:23;3916:32;3913:2;;;-1:-1;;3951:12;3913:2;4009:17;3996:31;4047:18;4039:6;4036:30;4033:2;;;-1:-1;;4069:12;4033:2;4107:80;4179:7;4170:6;4159:9;4155:22;4107:80;;;4097:90;;;;-1:-1;3907:296;-1:-1;;;;3907:296;4210:522;;;;4366:2;4354:9;4345:7;4341:23;4337:32;4334:2;;;-1:-1;;4372:12;4334:2;4430:17;4417:31;4468:18;4460:6;4457:30;4454:2;;;-1:-1;;4490:12;4454:2;4528:80;4600:7;4591:6;4580:9;4576:22;4528:80;;;4518:90;;-1:-1;4518:90;-1:-1;;4645:2;4684:22;;72:20;97:33;72:20;97:33;;4739:257;;4851:2;4839:9;4830:7;4826:23;4822:32;4819:2;;;-1:-1;;4857:12;4819:2;873:6;867:13;885:30;909:5;885:30;;5003:801;;;;;;5182:3;5170:9;5161:7;5157:23;5153:33;5150:2;;;-1:-1;;5189:12;5150:2;873:6;867:13;885:30;909:5;885:30;;;5349:2;5398:22;;1348:13;5241:71;;-1:-1;24714:8;24703:20;;26613:34;;26603:2;;-1:-1;;26651:12;26603:2;5467;5517:22;;220:13;5357:73;;-1:-1;238:33;220:13;238:33;;;5586:2;5636:22;;220:13;5475:74;;-1:-1;238:33;220:13;238:33;;;5705:3;5756:22;;220:13;5594:74;;-1:-1;238:33;220:13;238:33;;;5714:74;;;;5144:660;;;;;;;;;5811:807;;;;;;6015:3;6003:9;5994:7;5990:23;5986:33;5983:2;;;-1:-1;;6022:12;5983:2;1024:6;1011:20;1036:50;1080:5;1036:50;;;6074:80;-1:-1;6191:2;6230:22;;72:20;97:33;72:20;97:33;;;6199:63;-1:-1;6299:2;6338:22;;1477:20;;-1:-1;6407:2;6464:22;;1183:20;1208:51;1183:20;1208:51;;;6415:81;-1:-1;6533:3;6570:22;;725:20;750:30;725:20;750:30;;6625:241;;6729:2;6717:9;6708:7;6704:23;6700:32;6697:2;;;-1:-1;;6735:12;6697:2;-1:-1;1477:20;;6691:175;-1:-1;6691:175;13721:262;;7413:5;23520:12;7524:52;7569:6;7564:3;7557:4;7550:5;7546:16;7524:52;;;7588:16;;;;;13846:137;-1:-1;;13846:137;13990:213;24587:42;24576:54;;;;7093:37;;14108:2;14093:18;;14079:124;14210:675;24587:42;24576:54;;;7093:37;;24576:54;;;14621:2;14606:18;;6952:58;24576:54;;;;14704:2;14689:18;;7093:37;14787:2;14772:18;;8013:36;;;;14870:3;14855:19;;8013:36;;;;14448:3;14433:19;;14419:466;15574:324;24587:42;24576:54;;;;7093:37;;15884:2;15869:18;;8013:36;15720:2;15705:18;;15691:207;15905:301;;16043:2;16064:17;16057:47;8355:5;23520:12;23959:6;16043:2;16032:9;16028:18;23947:19;8449:52;8494:6;23987:14;16032:9;23987:14;16043:2;8475:5;8471:16;8449:52;;;25978:2;25958:14;25974:7;25954:28;8513:39;;;;23987:14;8513:39;;16014:192;-1:-1;;16014:192;16213:407;16404:2;16418:47;;;8789:2;16389:18;;;23947:19;8825:33;23987:14;;;8805:54;8878:12;;;16375:245;16627:407;16818:2;16832:47;;;9129:2;16803:18;;;23947:19;9165:13;23987:14;;;9145:34;9198:12;;;16789:245;17041:407;17232:2;17246:47;;;9449:2;17217:18;;;23947:19;9485:29;23987:14;;;9465:50;9534:12;;;17203:245;17455:407;17646:2;17660:47;;;9785:2;17631:18;;;23947:19;9821:34;23987:14;;;9801:55;9890:3;9876:12;;;9869:25;9913:12;;;17617:245;17869:407;18060:2;18074:47;;;10164:2;18045:18;;;23947:19;10200:23;23987:14;;;10180:44;10243:12;;;18031:245;18283:407;18474:2;18488:47;;;10494:2;18459:18;;;23947:19;10530:34;23987:14;;;10510:55;10599:3;10585:12;;;10578:25;10622:12;;;18445:245;18697:407;18888:2;18902:47;;;10873:2;18873:18;;;23947:19;10909:15;23987:14;;;10889:36;10944:12;;;18859:245;19111:407;19302:2;19316:47;;;19287:18;;;23947:19;11231:34;23987:14;;;11211:55;11285:12;;;19273:245;19525:407;19716:2;19730:47;;;11536:2;19701:18;;;23947:19;11572:34;23987:14;;;11552:55;11641:9;11627:12;;;11620:31;11670:12;;;19687:245;19939:407;20130:2;20144:47;;;20115:18;;;23947:19;11957:34;23987:14;;;11937:55;12011:12;;;20101:245;20353:407;20544:2;20558:47;;;12262:2;20529:18;;;23947:19;12298:34;23987:14;;;12278:55;12367:6;12353:12;;;12346:28;12393:12;;;20515:245;20767:318;;20937:3;20926:9;20922:19;20914:27;;12710:16;12704:23;8020:3;8013:36;12888:4;12881:5;12877:16;12871:23;12888:4;12952:3;12948:14;8013:36;13052:4;13045:5;13041:16;13035:23;13052:4;13116:3;13112:14;8013:36;13212:4;13205:5;13201:16;13195:23;13212:4;13276:3;13272:14;8013:36;24587:42;13370:4;13363:5;13359:16;13353:23;24576:54;13370:4;13452:3;13448:14;7695:68;20908:177;;;;;21092:213;8013:36;;;21210:2;21195:18;;21181:124;21312:312;8013:36;;;24179:13;24172:21;21610:2;21595:18;;7207:34;21452:2;21437:18;;21423:201;21631:320;8013:36;;;21937:2;21922:18;;8013:36;21775:2;21760:18;;21746:205;22289:435;8013:36;;;22627:2;22612:18;;8013:36;;;;22710:2;22695:18;;8013:36;22463:2;22448:18;;22434:290;22731:695;8013:36;;;23144:2;23129:18;;8013:36;;;;23227:2;23212:18;;8013:36;;;;23310:2;23295:18;;8013:36;24587:42;24576:54;23411:3;23396:19;;7695:68;22979:3;22964:19;;22950:476;25614:268;25679:1;25686:101;25700:6;25697:1;25694:13;25686:101;;;25767:11;;;25761:18;25748:11;;;25741:39;25722:2;25715:10;25686:101;;;25802:6;25799:1;25796:13;25793:2;;;-1:-1;;25679:1;25849:16;;25842:27;25663:219;25995:117;24587:42;26082:5;24576:54;26057:5;26054:35;26044:2;;26103:1;;26093:12;26044:2;26038:74;;26119:111;26200:5;24179:13;24172:21;26178:5;26175:32;26165:2;;26221:1;;26211:12
Swarm Source
ipfs://160226d2f61da554f5c11f953fd988a25bd4c14647955f7abf3b9013881f5927
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
POL | 100.00% | $0.000664 | 4,322.0157 | $2.87 |
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.