More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 32 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Unstake And Clai... | 18924064 | 370 days ago | IN | 0 ETH | 0.00178482 | ||||
Unstake And Clai... | 18924022 | 370 days ago | IN | 0 ETH | 0.0020243 | ||||
Unstake And Clai... | 18923966 | 370 days ago | IN | 0 ETH | 0.00200307 | ||||
Unstake And Clai... | 18923953 | 370 days ago | IN | 0 ETH | 0.00218077 | ||||
Unstake | 18483767 | 431 days ago | IN | 0 ETH | 0.00191242 | ||||
Stake | 18174091 | 475 days ago | IN | 0 ETH | 0.00071788 | ||||
Set Owner | 18018597 | 497 days ago | IN | 0 ETH | 0.00039977 | ||||
Claim | 17860889 | 519 days ago | IN | 0 ETH | 0.00212241 | ||||
Unstake | 17860880 | 519 days ago | IN | 0 ETH | 0.00137796 | ||||
Stake | 17515576 | 567 days ago | IN | 0 ETH | 0.00298869 | ||||
Unstake | 17514841 | 567 days ago | IN | 0 ETH | 0.00271314 | ||||
Set Pool Allocat... | 17510103 | 568 days ago | IN | 0 ETH | 0.00268521 | ||||
Set Pool Allocat... | 17510093 | 568 days ago | IN | 0 ETH | 0.00095571 | ||||
Set Pool Allocat... | 17510090 | 568 days ago | IN | 0 ETH | 0.00270008 | ||||
Set Pool Allocat... | 17510087 | 568 days ago | IN | 0 ETH | 0.00289604 | ||||
Stake | 17340661 | 592 days ago | IN | 0 ETH | 0.00369085 | ||||
Stake | 17340654 | 592 days ago | IN | 0 ETH | 0.00369627 | ||||
Stake | 17340642 | 592 days ago | IN | 0 ETH | 0.00279265 | ||||
Set Pool Allocat... | 17339422 | 592 days ago | IN | 0 ETH | 0.00537902 | ||||
Stake | 17339369 | 592 days ago | IN | 0 ETH | 0.00302398 | ||||
Stake | 17339367 | 592 days ago | IN | 0 ETH | 0.00305038 | ||||
Add Pool | 17339352 | 592 days ago | IN | 0 ETH | 0.0063027 | ||||
Add Pool | 17339339 | 592 days ago | IN | 0 ETH | 0.00295938 | ||||
Add Pool | 17339337 | 592 days ago | IN | 0 ETH | 0.00305033 | ||||
Add Pool | 17339332 | 592 days ago | IN | 0 ETH | 0.00300634 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
TwapLPTokenRewarderL1
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later // Deployed with donations via Gitcoin GR9 pragma solidity 0.7.6; pragma abicoder v2; import './abstracts/TwapLPTokenRewarder.sol'; contract TwapLPTokenRewarderL1 is TwapLPTokenRewarder { using SafeMath for uint256; using SafeMath for int256; using TransferHelper for address; constructor(address _itgr) TwapLPTokenRewarder(_itgr) {} function sendReward(uint256 amount, address to) internal override { IIntegralToken(itgr).mint(to, amount); } }
// SPDX-License-Identifier: GPL-3.0-or-later // Deployed with donations via Gitcoin GR9 pragma solidity 0.7.6; pragma abicoder v2; import '../libraries/SafeMath.sol'; import '../libraries/TransferHelper.sol'; import '../interfaces/ITwapLPTokenRewarder.sol'; import '../interfaces/IERC20.sol'; import '../interfaces/IIntegralToken.sol'; abstract contract TwapLPTokenRewarder is ITwapLPTokenRewarder { using SafeMath for uint256; using SafeMath for int256; using TransferHelper for address; uint256 private locked; uint256 internal constant ACCUMULATED_ITGR_PRECISION = 1e12; address public immutable itgr; address public owner; uint256 public totalAllocationPoints; uint256 public itgrPerSecond; bool public stakeDisabled; PoolInfo[] public pools; address[] public lpTokens; mapping(uint256 => mapping(address => UserInfo)) public users; mapping(address => bool) public addedLpTokens; constructor(address _itgr) { itgr = _itgr; owner = msg.sender; emit OwnerSet(msg.sender); } modifier lock() { require(locked == 0, 'LR06'); locked = 1; _; locked = 0; } /** * @notice Set the owner of the contract. * @param _owner New owner of the contract. */ function setOwner(address _owner) external override { require(msg.sender == owner, 'LR00'); require(_owner != address(0), 'LR02'); require(_owner != owner, 'LR01'); owner = _owner; emit OwnerSet(_owner); } /** * @notice Set the amount of ITGR per second. * @param _itgrPerSecond Amount of ITGR per second. */ function setItgrPerSecond(uint256 _itgrPerSecond, bool withPoolsUpdate) external override { require(msg.sender == owner, 'LR00'); require(_itgrPerSecond != itgrPerSecond, 'LR01'); if (withPoolsUpdate) { updateAllPools(); } itgrPerSecond = _itgrPerSecond; emit ItgrPerSecondSet(_itgrPerSecond); } /** * @notice Set a flag for disabling new staking. * @param _stakeDisabled Flag if new staking will not be accepted. */ function setStakeDisabled(bool _stakeDisabled) external override { require(msg.sender == owner, 'LR00'); require(_stakeDisabled != stakeDisabled, 'LR01'); stakeDisabled = _stakeDisabled; emit StakeDisabledSet(stakeDisabled); } /** * @notice View function to see the number of pools. */ function poolCount() external view override returns (uint256 length) { length = pools.length; } /** * @notice Add a new LP pool. * @param token Staked LP token. * @param allocationPoints Allocation points of the new pool. * @dev Call `updatePools` or `updateAllPools` function before adding a new pool to update all active pools. */ function addPool( address token, uint256 allocationPoints, bool withPoolsUpdate ) external override { require(msg.sender == owner, 'LR00'); require(addedLpTokens[token] == false, 'LR69'); if (withPoolsUpdate) { updateAllPools(); } totalAllocationPoints = totalAllocationPoints.add(allocationPoints); lpTokens.push(token); pools.push( PoolInfo({ accumulatedItgrPerShare: 0, allocationPoints: allocationPoints.toUint64(), lastRewardTimestamp: block.timestamp.toUint64() }) ); addedLpTokens[token] = true; emit PoolAdded(pools.length.sub(1), token, allocationPoints); } /** * @notice Update allocationPoints of the given LP pool. * @param pid ID of the LP pool. * @param allocationPoints New allocation points of the pool. * @dev Call `updatePools` or `updateAllPools` function before setting allocation points to update all active pools. */ function setPoolAllocationPoints( uint256 pid, uint256 allocationPoints, bool withPoolsUpdate ) external override { require(msg.sender == owner, 'LR00'); if (withPoolsUpdate) { updateAllPools(); } totalAllocationPoints = totalAllocationPoints.sub(pools[pid].allocationPoints).add(allocationPoints); pools[pid].allocationPoints = allocationPoints.toUint64(); emit PoolSet(pid, allocationPoints); } /** * @notice Stake LP tokens for ITGR rewards. * @param pid ID of the LP pool. * @param amount Amount of LP token to stake. * @param to Receiver of staked LP token `amount` profit. */ function stake( uint256 pid, uint256 amount, address to ) external override lock { require(!stakeDisabled, 'LR70'); PoolInfo memory pool = updatePool(pid); UserInfo storage user = users[pid][to]; lpTokens[pid].safeTransferFrom(msg.sender, address(this), amount); user.lpAmount = user.lpAmount.add(amount); user.rewardDebt = user.rewardDebt.add( (amount.mul(pool.accumulatedItgrPerShare) / ACCUMULATED_ITGR_PRECISION).toInt256() ); emit Staked(msg.sender, pid, amount, to); } /** * @notice Remove staked LP tokens WITHOUT CLAIMING REWARDS. Using this function will NOT cause losing accrued rewards for the amount of unstaked LP token. * @param pid ID of the LP pool. * @param amount Amount of staked LP toked to unstake. * @param to LP tokens receiver. */ function unstake( uint256 pid, uint256 amount, address to ) external override lock { PoolInfo memory pool = updatePool(pid); UserInfo storage user = users[pid][msg.sender]; user.lpAmount = user.lpAmount.sub(amount); user.rewardDebt = user.rewardDebt.sub( (amount.mul(pool.accumulatedItgrPerShare) / ACCUMULATED_ITGR_PRECISION).toInt256() ); lpTokens[pid].safeTransfer(to, amount); emit Unstaked(msg.sender, pid, amount, to); } /** * @notice Remove ALL staked LP tokens WITHOUT CLAIMING REWARDS. Using this function will cause losing accrued rewards. * @param pid ID of the LP pool. * @param to LP tokens receiver. */ function emergencyUnstake(uint256 pid, address to) external override lock { UserInfo storage user = users[pid][msg.sender]; uint256 amount = user.lpAmount; user.lpAmount = 0; user.rewardDebt = 0; lpTokens[pid].safeTransfer(to, amount); emit EmergencyUnstaked(msg.sender, pid, amount, to); } /** * @notice Remove staked LP token and claim ITGR rewards for a given LP token. * @param pid ID of the LP pool. * @param amount Amount of staked LP token to unstake. * @param to Reward and LP tokens receiver. */ function unstakeAndClaim( uint256 pid, uint256 amount, address to ) external override lock { PoolInfo memory pool = updatePool(pid); UserInfo storage user = users[pid][msg.sender]; int256 accumulatedItgr = (user.lpAmount.mul(pool.accumulatedItgrPerShare) / ACCUMULATED_ITGR_PRECISION) .toInt256(); uint256 _claimable = uint256(accumulatedItgr.sub(user.rewardDebt)); user.lpAmount = user.lpAmount.sub(amount); user.rewardDebt = accumulatedItgr.sub( (amount.mul(pool.accumulatedItgrPerShare) / ACCUMULATED_ITGR_PRECISION).toInt256() ); if (_claimable > 0) { sendReward(_claimable, to); } lpTokens[pid].safeTransfer(to, amount); emit Unstaked(msg.sender, pid, amount, to); emit Claimed(msg.sender, pid, _claimable, to); } /** * @notice Claim ITGR reward for given LP token. * @param pid ID of the LP pool. * @param to Reward tokens receiver. */ function claim(uint256 pid, address to) external override lock { PoolInfo memory pool = updatePool(pid); UserInfo storage user = users[pid][msg.sender]; int256 accumulatedItgr = (user.lpAmount.mul(pool.accumulatedItgrPerShare) / ACCUMULATED_ITGR_PRECISION) .toInt256(); uint256 _claimable = uint256(accumulatedItgr.sub(user.rewardDebt)); user.rewardDebt = accumulatedItgr; if (_claimable > 0) { sendReward(_claimable, to); } emit Claimed(msg.sender, pid, _claimable, to); } /** * @notice View function to see claimable ITGR rewards for a user that is staking LP tokens. * @param pid ID of the LP pool. * @param userAddress User address that is staking LP tokens. */ function claimable(uint256 pid, address userAddress) external view override returns (uint256 _claimable) { PoolInfo memory pool = pools[pid]; UserInfo storage user = users[pid][userAddress]; uint256 accumulatedItgrPerShare = pool.accumulatedItgrPerShare; uint256 lpSupply = IERC20(lpTokens[pid]).balanceOf(address(this)); if (block.timestamp > pool.lastRewardTimestamp && lpSupply != 0) { uint256 time = block.timestamp.sub(pool.lastRewardTimestamp); uint256 itgrReward = time.mul(itgrPerSecond).mul(pool.allocationPoints).div(totalAllocationPoints); accumulatedItgrPerShare = accumulatedItgrPerShare.add( itgrReward.mul(ACCUMULATED_ITGR_PRECISION) / lpSupply ); } _claimable = uint256( (user.lpAmount.mul(accumulatedItgrPerShare) / ACCUMULATED_ITGR_PRECISION).toInt256().sub(user.rewardDebt) ); } /** * @notice Withdraw all ITGR tokens from the contract. * @param to Receiver of the ITGR tokens. */ function withdraw(address to) external lock { require(msg.sender == owner, 'LR00'); uint256 balance = IERC20(itgr).balanceOf(address(this)); if (balance > 0) { itgr.safeTransfer(to, balance); } } /** * @notice Update reward variables of the given LP pools. * @param pids IDs of the LP pools to be updated. */ function updatePools(uint256[] calldata pids) external override { uint256 pidsLength = pids.length; for (uint256 i; i < pidsLength; ++i) { updatePool(pids[i]); } } /** * @notice Update reward variables of all LP pools. */ function updateAllPools() public override { uint256 poolLength = pools.length; for (uint256 i; i < poolLength; ++i) { updatePool(i); } } /** * @notice Update reward variables of the given LP pool. * @param pid ID of the LP pool. * @dev This function does not require a lock. Consider adding a lock in case of future modifications. */ function updatePool(uint256 pid) public override returns (PoolInfo memory pool) { pool = pools[pid]; if (block.timestamp > pool.lastRewardTimestamp) { uint256 lpSupply = IERC20(lpTokens[pid]).balanceOf(address(this)); if (lpSupply > 0) { uint256 time = block.timestamp.sub(pool.lastRewardTimestamp); uint256 itgrReward = time.mul(itgrPerSecond).mul(pool.allocationPoints).div(totalAllocationPoints); pool.accumulatedItgrPerShare = pool.accumulatedItgrPerShare.add( (itgrReward.mul(ACCUMULATED_ITGR_PRECISION) / lpSupply) ); } pool.lastRewardTimestamp = block.timestamp.toUint64(); pools[pid] = pool; emit PoolUpdated(pid, pool.lastRewardTimestamp, lpSupply, pool.accumulatedItgrPerShare); } } function sendReward(uint256 amount, address to) internal virtual; }
// SPDX-License-Identifier: GPL-3.0-or-later // Deployed with donations via Gitcoin GR9 pragma solidity 0.7.6; interface IERC20 { event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); }
// SPDX-License-Identifier: GPL-3.0-or-later // Deployed with donations via Gitcoin GR9 pragma solidity 0.7.6; interface IIntegralToken { function mint(address to, uint256 amount) external; }
// SPDX-License-Identifier: GPL-3.0-or-later // Deployed with donations via Gitcoin GR9 pragma solidity 0.7.6; pragma abicoder v2; interface ITwapLPTokenRewarder { struct UserInfo { uint256 lpAmount; int256 rewardDebt; } struct PoolInfo { uint256 accumulatedItgrPerShare; uint64 lastRewardTimestamp; uint64 allocationPoints; } event Staked(address indexed user, uint256 indexed pid, uint256 amount, address indexed to); event Unstaked(address indexed user, uint256 indexed pid, uint256 amount, address indexed to); event EmergencyUnstaked(address indexed user, uint256 indexed pid, uint256 amount, address indexed to); event Claimed(address indexed user, uint256 indexed pid, uint256 amount, address indexed to); event PoolAdded(uint256 indexed pid, address indexed lpToken, uint256 allocationPoints); event PoolSet(uint256 indexed pid, uint256 allocationPoints); event PoolUpdated( uint256 indexed pid, uint64 lastRewardTimestamp, uint256 lpSupply, uint256 accumulatedItgrPerShare ); event ItgrPerSecondSet(uint256 itgrPerSecond); event StakeDisabledSet(bool stakeDisabled); event OwnerSet(address owner); function setOwner(address _owner) external; function setItgrPerSecond(uint256 _itgrPerSecond, bool withPoolsUpdate) external; function setStakeDisabled(bool _disabled) external; function poolCount() external view returns (uint256 length); function addPool( address token, uint256 allocationPoints, bool withPoolsUpdate ) external; function setPoolAllocationPoints( uint256 pid, uint256 allocationPoints, bool withPoolsUpdate ) external; function updatePool(uint256 pid) external returns (PoolInfo memory pool); function updatePools(uint256[] calldata pids) external; function updateAllPools() external; function stake( uint256 pid, uint256 amount, address to ) external; function unstake( uint256 pid, uint256 amount, address to ) external; function emergencyUnstake(uint256 pid, address to) external; function claim(uint256 pid, address to) external; function unstakeAndClaim( uint256 pid, uint256 amount, address to ) external; function claimable(uint256 pid, address userAddress) external view returns (uint256 _claimable); }
// SPDX-License-Identifier: GPL-3.0-or-later // Deployed with donations via Gitcoin GR9 pragma solidity 0.7.6; // a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math) library SafeMath { int256 private constant _INT256_MIN = -2**255; function add(uint256 x, uint256 y) internal pure returns (uint256 z) { require((z = x + y) >= x, 'SM4E'); } function sub(uint256 x, uint256 y) internal pure returns (uint256 z) { z = sub(x, y, 'SM12'); } function sub( uint256 x, uint256 y, string memory message ) internal pure returns (uint256 z) { require((z = x - y) <= x, message); } function mul(uint256 x, uint256 y) internal pure returns (uint256 z) { require(y == 0 || (z = x * y) / y == x, 'SM2A'); } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, 'SM43'); return a / b; } function ceil_div(uint256 a, uint256 b) internal pure returns (uint256 c) { c = div(a, b); if (a != mul(b, c)) { return add(c, 1); } } function toUint32(uint256 n) internal pure returns (uint32) { require(n <= type(uint32).max, 'SM50'); return uint32(n); } function toUint64(uint256 n) internal pure returns (uint64) { require(n <= type(uint64).max, 'SM54'); return uint64(n); } function toUint112(uint256 n) internal pure returns (uint112) { require(n <= type(uint112).max, 'SM51'); return uint112(n); } function toInt256(uint256 unsigned) internal pure returns (int256 signed) { require(unsigned <= uint256(type(int256).max), 'SM34'); signed = int256(unsigned); } // int256 function add(int256 a, int256 b) internal pure returns (int256 c) { c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a), 'SM4D'); } function sub(int256 a, int256 b) internal pure returns (int256 c) { c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a), 'SM11'); } function mul(int256 a, int256 b) internal pure returns (int256 c) { // 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), 'SM29'); c = a * b; require(c / a == b, 'SM29'); } function div(int256 a, int256 b) internal pure returns (int256) { require(b != 0, 'SM43'); require(!(b == -1 && a == _INT256_MIN), 'SM42'); return a / b; } function neg_floor_div(int256 a, int256 b) internal pure returns (int256 c) { c = div(a, b); if ((a < 0 && b > 0) || (a >= 0 && b < 0)) { if (a != mul(b, c)) { c = sub(c, 1); } } } }
// SPDX-License-Identifier: GPL-3.0-or-later // Deployed with donations via Gitcoin GR9 pragma solidity 0.7.6; // helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false library TransferHelper { 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))), 'TH4B'); } 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))), 'TH05'); } 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))), 'TH0E'); } function safeTransferETH( address to, uint256 value, uint256 gasLimit ) internal { (bool success, ) = to.call{ value: value, gas: gasLimit }(''); require(success, 'TH3F'); } function transferETH( address to, uint256 value, uint256 gasLimit ) internal returns (bool success) { (success, ) = to.call{ value: value, gas: gasLimit }(''); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_itgr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"EmergencyUnstaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"itgrPerSecond","type":"uint256"}],"name":"ItgrPerSecondSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":true,"internalType":"address","name":"lpToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"allocationPoints","type":"uint256"}],"name":"PoolAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allocationPoints","type":"uint256"}],"name":"PoolSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"lastRewardTimestamp","type":"uint64"},{"indexed":false,"internalType":"uint256","name":"lpSupply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accumulatedItgrPerShare","type":"uint256"}],"name":"PoolUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"stakeDisabled","type":"bool"}],"name":"StakeDisabledSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Unstaked","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"allocationPoints","type":"uint256"},{"internalType":"bool","name":"withPoolsUpdate","type":"bool"}],"name":"addPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addedLpTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"address","name":"userAddress","type":"address"}],"name":"claimable","outputs":[{"internalType":"uint256","name":"_claimable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"emergencyUnstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"itgr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"itgrPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lpTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolCount","outputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pools","outputs":[{"internalType":"uint256","name":"accumulatedItgrPerShare","type":"uint256"},{"internalType":"uint64","name":"lastRewardTimestamp","type":"uint64"},{"internalType":"uint64","name":"allocationPoints","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_itgrPerSecond","type":"uint256"},{"internalType":"bool","name":"withPoolsUpdate","type":"bool"}],"name":"setItgrPerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"allocationPoints","type":"uint256"},{"internalType":"bool","name":"withPoolsUpdate","type":"bool"}],"name":"setPoolAllocationPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_stakeDisabled","type":"bool"}],"name":"setStakeDisabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakeDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocationPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"unstakeAndClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateAllPools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"}],"name":"updatePool","outputs":[{"components":[{"internalType":"uint256","name":"accumulatedItgrPerShare","type":"uint256"},{"internalType":"uint64","name":"lastRewardTimestamp","type":"uint64"},{"internalType":"uint64","name":"allocationPoints","type":"uint64"}],"internalType":"struct ITwapLPTokenRewarder.PoolInfo","name":"pool","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pids","type":"uint256[]"}],"name":"updatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"lpAmount","type":"uint256"},{"internalType":"int256","name":"rewardDebt","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162001f6238038062001f6283398101604081905262000034916200009e565b6001600160601b0319606082901b16608052600180546001600160a01b0319163390811790915560405182917f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe2916200008e9190620000ce565b60405180910390a15050620000e2565b600060208284031215620000b0578081fd5b81516001600160a01b0381168114620000c7578182fd5b9392505050565b6001600160a01b0391909116815260200190565b60805160601c611e536200010f6000398061047152806105de528061067852806119b65250611e536000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80639416c7cd116100de578063b9d02df411610097578063db6afd1811610071578063db6afd181461032c578063ddd5e1b21461033f578063e7f3fbde14610352578063f525cb681461035a57610173565b8063b9d02df4146102f0578063b9ec7d7414610311578063d5dcae421461031957610173565b80639416c7cd1461027a578063a0c7f71c1461028d578063a28f5d75146102a0578063a49a3b4f146102b3578063ac4afa38146102c6578063b42d7c3c146102e857610173565b80634970289e116101305780634970289e1461020657806351cff8d91461021957806351eb05a61461022c5780637628a37d1461024c5780638da5cb5b1461025f57806393d4f2c91461026757610173565b806313af4035146101785780631bb5e2dc1461018d5780631f6dc2a9146101b657806320acae97146101cb57806322a0e5d8146101d357806344780994146101f3575b600080fd5b61018b610186366004611afa565b610362565b005b6101a061019b366004611bd7565b61043f565b6040516101ad9190611caa565b60405180910390f35b6101be610469565b6040516101ad9190611dc6565b6101a061046f565b6101e66101e1366004611afa565b610493565b6040516101ad9190611cd7565b61018b610201366004611b4f565b6104a8565b61018b610214366004611bbd565b6104de565b61018b610227366004611afa565b610575565b61023f61023a366004611bd7565b6106a7565b6040516101ad9190611d96565b61018b61025a366004611c54565b610901565b6101a0610a49565b61018b610275366004611c54565b610a58565b61018b610288366004611b14565b610b54565b6101be61029b366004611c07565b610d29565b61018b6102ae366004611c07565b610f0e565b61018b6102c1366004611c7f565b610fc8565b6102d96102d4366004611bd7565b6110d1565b6040516101ad93929190611ddd565b6101e6611113565b6103036102fe366004611c07565b61111c565b6040516101ad929190611dcf565b61018b611140565b61018b610327366004611c32565b611164565b61018b61033a366004611c54565b6111ff565b61018b61034d366004611c07565b611380565b6101be611472565b6101be611478565b6001546001600160a01b031633146103955760405162461bcd60e51b815260040161038c90611d5a565b60405180910390fd5b6001600160a01b0381166103bb5760405162461bcd60e51b815260040161038c90611d1e565b6001546001600160a01b03828116911614156103e95760405162461bcd60e51b815260040161038c90611d78565b600180546001600160a01b0319166001600160a01b0383161790556040517f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe290610434908390611caa565b60405180910390a150565b6006818154811061044f57600080fd5b6000918252602090912001546001600160a01b0316905081565b60035481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60086020526000908152604090205460ff1681565b8060005b818110156104d8576104cf8484838181106104c357fe5b905060200201356106a7565b506001016104ac565b50505050565b6001546001600160a01b031633146105085760405162461bcd60e51b815260040161038c90611d5a565b60045460ff16151581151514156105315760405162461bcd60e51b815260040161038c90611d78565b6004805460ff191682151517908190556040517f517004c585dea46fea38e4dc683219f67a9e64a6ed8bf2b2cb4ac791b556f87a916104349160ff90911690611cd7565b600054156105955760405162461bcd60e51b815260040161038c90611d3c565b60016000819055546001600160a01b031633146105c45760405162461bcd60e51b815260040161038c90611d5a565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610613903090600401611caa565b60206040518083038186803b15801561062b57600080fd5b505afa15801561063f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106639190611bef565b9050801561069f5761069f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016838361147e565b505060008055565b6106af611ab3565b600582815481106106bc57fe5b600091825260209182902060408051606081018252600290930290910180548352600101546001600160401b03808216948401859052600160401b909104169082015291504211156108fc5760006006838154811061071757fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610750903090600401611caa565b60206040518083038186803b15801561076857600080fd5b505afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a09190611bef565b905080156108315760006107ca83602001516001600160401b0316426115d090919063ffffffff16565b9050600061080660025461080086604001516001600160401b03166107fa6003548761160090919063ffffffff16565b90611600565b9061165b565b905061082c8361081b8364e8d4a51000611600565b8161082257fe5b86519190046116ab565b845250505b61083a426116ec565b6001600160401b03166020830152600580548391908590811061085957fe5b6000918252602091829020835160029092020190815582820151600190910180546040948501516001600160401b03908116600160401b0267ffffffffffffffff60401b199190941667ffffffffffffffff1990921691909117169190911790558301518351915185927f3d00d4448d3ce5b16e77ac7d5d04fe27dc4a73229d80411a99d9bd827a922e3c926108f29290918691611dfc565b60405180910390a2505b919050565b600054156109215760405162461bcd60e51b815260040161038c90611d3c565b600160005560045460ff16156109495760405162461bcd60e51b815260040161038c90611d00565b6000610954846106a7565b60008581526007602090815260408083206001600160a01b038716845290915290206006805492935090916109b0913391309188918a90811061099357fe5b6000918252602090912001546001600160a01b0316929190611737565b80546109bc90856116ab565b815581516109f2906109e79064e8d4a51000906109da908890611600565b816109e157fe5b04611892565b6001830154906118d9565b60018201556040516001600160a01b03841690869033907f5ae77307cc03bbda7560de83c96d2f4af38c75edfc362603be8fd0b66a57dba790610a36908990611dc6565b60405180910390a4505060008055505050565b6001546001600160a01b031681565b60005415610a785760405162461bcd60e51b815260040161038c90611d3c565b60016000908155610a88846106a7565b60008581526007602090815260408083203384529091529020805491925090610ab190856115d0565b81558151610ada90610acf9064e8d4a51000906109da908890611600565b60018301549061193c565b8160010181905550610b10838560068881548110610af457fe5b6000918252602090912001546001600160a01b0316919061147e565b826001600160a01b031685336001600160a01b03167f2b097553e8e31a74f4b562b2f35f1d03910bddaa43e090cc0e46f205eb79e45b87604051610a369190611dc6565b6001546001600160a01b03163314610b7e5760405162461bcd60e51b815260040161038c90611d5a565b6001600160a01b03831660009081526008602052604090205460ff1615610bb75760405162461bcd60e51b815260040161038c90611ce2565b8015610bc557610bc5611140565b600254610bd290836116ab565b6002556006805460018101825560009182527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038616179055604080516060810190915290815260059060208101610c3d426116ec565b6001600160401b03168152602001610c54856116ec565b6001600160401b039081169091528254600181810185556000948552602080862085516002909402019283558085015192820180546040968701518616600160401b0267ffffffffffffffff60401b199590961667ffffffffffffffff199091161793909316939093179091556001600160a01b038716808552600890925291909220805460ff191682179055600554610ced916115d0565b7f6c5d0ef1d0199b6de41ecbce95f59643be4d723ca363faf92d756e61e82fb13e84604051610d1c9190611dc6565b60405180910390a3505050565b60008060058481548110610d3957fe5b6000918252602080832060408051606081018252600290940290910180548452600101546001600160401b0380821685850152600160401b9091041683820152878452600782528084206001600160a01b038816855290915282208151600680549395509193909290919088908110610dae57fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610de7903090600401611caa565b60206040518083038186803b158015610dff57600080fd5b505afa158015610e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e379190611bef565b905083602001516001600160401b031642118015610e5457508015155b15610ed5576000610e7b85602001516001600160401b0316426115d090919063ffffffff16565b90506000610eab60025461080088604001516001600160401b03166107fa6003548761160090919063ffffffff16565b9050610ed083610ec08364e8d4a51000611600565b81610ec757fe5b869190046116ab565b935050505b610f038360010154610efd64e8d4a510006109da86886000015461160090919063ffffffff16565b9061193c565b979650505050505050565b60005415610f2e5760405162461bcd60e51b815260040161038c90611d3c565b60016000818155838152600760209081526040808320338452909152812080548282559281019190915560068054919291610f7291859184919088908110610af457fe5b826001600160a01b031684336001600160a01b03167f7faad5ec789dc92de511d11241b64377b929d8b02f373d788bada7b9de500f3184604051610fb69190611dc6565b60405180910390a45050600080555050565b6001546001600160a01b03163314610ff25760405162461bcd60e51b815260040161038c90611d5a565b801561100057611000611140565b611046826110406005868154811061101457fe5b6000918252602090912060029182020160010154905490600160401b90046001600160401b03166115d0565b906116ab565b600255611052826116ec565b6005848154811061105f57fe5b906000526020600020906002020160010160086101000a8154816001600160401b0302191690836001600160401b03160217905550827fd88f859573973e938da5bf3e5100c16eee2090fa720e05ae3d452b4cd05cdcfd836040516110c49190611dc6565b60405180910390a2505050565b600581815481106110e157600080fd5b6000918252602090912060029091020180546001909101549091506001600160401b0380821691600160401b90041683565b60045460ff1681565b60076020908152600092835260408084209091529082529020805460019091015482565b60055460005b8181101561116057611157816106a7565b50600101611146565b5050565b6001546001600160a01b0316331461118e5760405162461bcd60e51b815260040161038c90611d5a565b6003548214156111b05760405162461bcd60e51b815260040161038c90611d78565b80156111be576111be611140565b60038290556040517f135e538c47c59e6f0feb77d40430ffa356d3ce07e1a72929fcd0e66a30d513ae906111f3908490611dc6565b60405180910390a15050565b6000541561121f5760405162461bcd60e51b815260040161038c90611d3c565b6001600090815561122f846106a7565b600085815260076020908152604080832033845290915281208251815493945090926112659164e8d4a51000916109da91611600565b9050600061128083600101548361193c90919063ffffffff16565b835490915061128f90876115d0565b835583516112b4906112ad9064e8d4a51000906109da908a90611600565b839061193c565b600184015580156112c9576112c9818661199f565b6112db858760068a81548110610af457fe5b846001600160a01b031687336001600160a01b03167f2b097553e8e31a74f4b562b2f35f1d03910bddaa43e090cc0e46f205eb79e45b8960405161131f9190611dc6565b60405180910390a4846001600160a01b031687336001600160a01b03167fca8bf70624ec0ecfc925e5746a0e4625afe01129043c1c7201c7ce01075ea3ac8460405161136b9190611dc6565b60405180910390a45050600080555050505050565b600054156113a05760405162461bcd60e51b815260040161038c90611d3c565b600160009081556113b0836106a7565b600084815260076020908152604080832033845290915281208251815493945090926113e69164e8d4a51000916109da91611600565b9050600061140183600101548361193c90919063ffffffff16565b600184018390559050801561141a5761141a818661199f565b846001600160a01b031686336001600160a01b03167fca8bf70624ec0ecfc925e5746a0e4625afe01129043c1c7201c7ce01075ea3ac8460405161145e9190611dc6565b60405180910390a450506000805550505050565b60025481565b60055490565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106114fa5780518252601f1990920191602091820191016114db565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461155c576040519150601f19603f3d011682016040523d82523d6000602084013e611561565b606091505b509150915081801561158f57508051158061158f575080806020019051602081101561158c57600080fd5b50515b6115c9576040805162461bcd60e51b815260206004808301919091526024820152635448303560e01b604482015290519081900360640190fd5b5050505050565b60006115f983836040518060400160405280600481526020016329a6989960e11b815250611a1b565b9392505050565b600081158061161b5750508082028282828161161857fe5b04145b611655576040805162461bcd60e51b81526020600480830191909152602482015263534d324160e01b604482015290519081900360640190fd5b92915050565b600080821161169a576040805162461bcd60e51b81526020600480830191909152602482015263534d343360e01b604482015290519081900360640190fd5b8183816116a357fe5b049392505050565b80820182811015611655576040805162461bcd60e51b81526020600480830191909152602482015263534d344560e01b604482015290519081900360640190fd5b60006001600160401b03821115611733576040805162461bcd60e51b8152602060048083019190915260248201526314d34d4d60e21b604482015290519081900360640190fd5b5090565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000948594938a169392918291908083835b602083106117bb5780518252601f19909201916020918201910161179c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461181d576040519150601f19603f3d011682016040523d82523d6000602084013e611822565b606091505b5091509150818015611850575080511580611850575080806020019051602081101561184d57600080fd5b50515b61188a576040805162461bcd60e51b815260206004808301919091526024820152635448304560e01b604482015290519081900360640190fd5b505050505050565b60006001600160ff1b03821115611733576040805162461bcd60e51b8152602060048083019190915260248201526314d34ccd60e21b604482015290519081900360640190fd5b818101600082128015906118ed5750828112155b80611902575060008212801561190257508281125b611655576040805162461bcd60e51b8152602060048083019190915260248201526314d34d1160e21b604482015290519081900360640190fd5b808203600082128015906119505750828113155b80611965575060008212801561196557508281135b611655576040805162461bcd60e51b81526020600480830191909152602482015263534d313160e01b604482015290519081900360640190fd5b6040516340c10f1960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906119ed9084908690600401611cbe565b600060405180830381600087803b158015611a0757600080fd5b505af115801561188a573d6000803e3d6000fd5b8183038184821115611aab5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a70578181015183820152602001611a58565b50505050905090810190601f168015611a9d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509392505050565b604080516060810182526000808252602082018190529181019190915290565b80356001600160a01b03811681146108fc57600080fd5b803580151581146108fc57600080fd5b600060208284031215611b0b578081fd5b6115f982611ad3565b600080600060608486031215611b28578182fd5b611b3184611ad3565b925060208401359150611b4660408501611aea565b90509250925092565b60008060208385031215611b61578182fd5b82356001600160401b0380821115611b77578384fd5b818501915085601f830112611b8a578384fd5b813581811115611b98578485fd5b8660208083028501011115611bab578485fd5b60209290920196919550909350505050565b600060208284031215611bce578081fd5b6115f982611aea565b600060208284031215611be8578081fd5b5035919050565b600060208284031215611c00578081fd5b5051919050565b60008060408385031215611c19578182fd5b82359150611c2960208401611ad3565b90509250929050565b60008060408385031215611c44578182fd5b82359150611c2960208401611aea565b600080600060608486031215611c68578283fd5b8335925060208401359150611b4660408501611ad3565b600080600060608486031215611c93578283fd5b8335925060208401359150611b4660408501611aea565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6020808252600490820152634c52363960e01b604082015260600190565b60208082526004908201526304c5237360e41b604082015260600190565b6020808252600490820152632629181960e11b604082015260600190565b6020808252600490820152632629181b60e11b604082015260600190565b60208082526004908201526304c5230360e41b604082015260600190565b6020808252600490820152634c52303160e01b604082015260600190565b815181526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b90815260200190565b918252602082015260400190565b9283526001600160401b03918216602084015216604082015260600190565b6001600160401b03939093168352602083019190915260408201526060019056fea26469706673582212201e19d4ea4f2d2c5e8d795acc4f4adbf9e7f15e03c597eaa9c6e9494e209c962a64736f6c63430007060033000000000000000000000000d502f487e1841fdc805130e13eae80c61186bc98
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c80639416c7cd116100de578063b9d02df411610097578063db6afd1811610071578063db6afd181461032c578063ddd5e1b21461033f578063e7f3fbde14610352578063f525cb681461035a57610173565b8063b9d02df4146102f0578063b9ec7d7414610311578063d5dcae421461031957610173565b80639416c7cd1461027a578063a0c7f71c1461028d578063a28f5d75146102a0578063a49a3b4f146102b3578063ac4afa38146102c6578063b42d7c3c146102e857610173565b80634970289e116101305780634970289e1461020657806351cff8d91461021957806351eb05a61461022c5780637628a37d1461024c5780638da5cb5b1461025f57806393d4f2c91461026757610173565b806313af4035146101785780631bb5e2dc1461018d5780631f6dc2a9146101b657806320acae97146101cb57806322a0e5d8146101d357806344780994146101f3575b600080fd5b61018b610186366004611afa565b610362565b005b6101a061019b366004611bd7565b61043f565b6040516101ad9190611caa565b60405180910390f35b6101be610469565b6040516101ad9190611dc6565b6101a061046f565b6101e66101e1366004611afa565b610493565b6040516101ad9190611cd7565b61018b610201366004611b4f565b6104a8565b61018b610214366004611bbd565b6104de565b61018b610227366004611afa565b610575565b61023f61023a366004611bd7565b6106a7565b6040516101ad9190611d96565b61018b61025a366004611c54565b610901565b6101a0610a49565b61018b610275366004611c54565b610a58565b61018b610288366004611b14565b610b54565b6101be61029b366004611c07565b610d29565b61018b6102ae366004611c07565b610f0e565b61018b6102c1366004611c7f565b610fc8565b6102d96102d4366004611bd7565b6110d1565b6040516101ad93929190611ddd565b6101e6611113565b6103036102fe366004611c07565b61111c565b6040516101ad929190611dcf565b61018b611140565b61018b610327366004611c32565b611164565b61018b61033a366004611c54565b6111ff565b61018b61034d366004611c07565b611380565b6101be611472565b6101be611478565b6001546001600160a01b031633146103955760405162461bcd60e51b815260040161038c90611d5a565b60405180910390fd5b6001600160a01b0381166103bb5760405162461bcd60e51b815260040161038c90611d1e565b6001546001600160a01b03828116911614156103e95760405162461bcd60e51b815260040161038c90611d78565b600180546001600160a01b0319166001600160a01b0383161790556040517f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe290610434908390611caa565b60405180910390a150565b6006818154811061044f57600080fd5b6000918252602090912001546001600160a01b0316905081565b60035481565b7f000000000000000000000000d502f487e1841fdc805130e13eae80c61186bc9881565b60086020526000908152604090205460ff1681565b8060005b818110156104d8576104cf8484838181106104c357fe5b905060200201356106a7565b506001016104ac565b50505050565b6001546001600160a01b031633146105085760405162461bcd60e51b815260040161038c90611d5a565b60045460ff16151581151514156105315760405162461bcd60e51b815260040161038c90611d78565b6004805460ff191682151517908190556040517f517004c585dea46fea38e4dc683219f67a9e64a6ed8bf2b2cb4ac791b556f87a916104349160ff90911690611cd7565b600054156105955760405162461bcd60e51b815260040161038c90611d3c565b60016000819055546001600160a01b031633146105c45760405162461bcd60e51b815260040161038c90611d5a565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000d502f487e1841fdc805130e13eae80c61186bc9816906370a0823190610613903090600401611caa565b60206040518083038186803b15801561062b57600080fd5b505afa15801561063f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106639190611bef565b9050801561069f5761069f6001600160a01b037f000000000000000000000000d502f487e1841fdc805130e13eae80c61186bc9816838361147e565b505060008055565b6106af611ab3565b600582815481106106bc57fe5b600091825260209182902060408051606081018252600290930290910180548352600101546001600160401b03808216948401859052600160401b909104169082015291504211156108fc5760006006838154811061071757fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610750903090600401611caa565b60206040518083038186803b15801561076857600080fd5b505afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a09190611bef565b905080156108315760006107ca83602001516001600160401b0316426115d090919063ffffffff16565b9050600061080660025461080086604001516001600160401b03166107fa6003548761160090919063ffffffff16565b90611600565b9061165b565b905061082c8361081b8364e8d4a51000611600565b8161082257fe5b86519190046116ab565b845250505b61083a426116ec565b6001600160401b03166020830152600580548391908590811061085957fe5b6000918252602091829020835160029092020190815582820151600190910180546040948501516001600160401b03908116600160401b0267ffffffffffffffff60401b199190941667ffffffffffffffff1990921691909117169190911790558301518351915185927f3d00d4448d3ce5b16e77ac7d5d04fe27dc4a73229d80411a99d9bd827a922e3c926108f29290918691611dfc565b60405180910390a2505b919050565b600054156109215760405162461bcd60e51b815260040161038c90611d3c565b600160005560045460ff16156109495760405162461bcd60e51b815260040161038c90611d00565b6000610954846106a7565b60008581526007602090815260408083206001600160a01b038716845290915290206006805492935090916109b0913391309188918a90811061099357fe5b6000918252602090912001546001600160a01b0316929190611737565b80546109bc90856116ab565b815581516109f2906109e79064e8d4a51000906109da908890611600565b816109e157fe5b04611892565b6001830154906118d9565b60018201556040516001600160a01b03841690869033907f5ae77307cc03bbda7560de83c96d2f4af38c75edfc362603be8fd0b66a57dba790610a36908990611dc6565b60405180910390a4505060008055505050565b6001546001600160a01b031681565b60005415610a785760405162461bcd60e51b815260040161038c90611d3c565b60016000908155610a88846106a7565b60008581526007602090815260408083203384529091529020805491925090610ab190856115d0565b81558151610ada90610acf9064e8d4a51000906109da908890611600565b60018301549061193c565b8160010181905550610b10838560068881548110610af457fe5b6000918252602090912001546001600160a01b0316919061147e565b826001600160a01b031685336001600160a01b03167f2b097553e8e31a74f4b562b2f35f1d03910bddaa43e090cc0e46f205eb79e45b87604051610a369190611dc6565b6001546001600160a01b03163314610b7e5760405162461bcd60e51b815260040161038c90611d5a565b6001600160a01b03831660009081526008602052604090205460ff1615610bb75760405162461bcd60e51b815260040161038c90611ce2565b8015610bc557610bc5611140565b600254610bd290836116ab565b6002556006805460018101825560009182527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038616179055604080516060810190915290815260059060208101610c3d426116ec565b6001600160401b03168152602001610c54856116ec565b6001600160401b039081169091528254600181810185556000948552602080862085516002909402019283558085015192820180546040968701518616600160401b0267ffffffffffffffff60401b199590961667ffffffffffffffff199091161793909316939093179091556001600160a01b038716808552600890925291909220805460ff191682179055600554610ced916115d0565b7f6c5d0ef1d0199b6de41ecbce95f59643be4d723ca363faf92d756e61e82fb13e84604051610d1c9190611dc6565b60405180910390a3505050565b60008060058481548110610d3957fe5b6000918252602080832060408051606081018252600290940290910180548452600101546001600160401b0380821685850152600160401b9091041683820152878452600782528084206001600160a01b038816855290915282208151600680549395509193909290919088908110610dae57fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610de7903090600401611caa565b60206040518083038186803b158015610dff57600080fd5b505afa158015610e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e379190611bef565b905083602001516001600160401b031642118015610e5457508015155b15610ed5576000610e7b85602001516001600160401b0316426115d090919063ffffffff16565b90506000610eab60025461080088604001516001600160401b03166107fa6003548761160090919063ffffffff16565b9050610ed083610ec08364e8d4a51000611600565b81610ec757fe5b869190046116ab565b935050505b610f038360010154610efd64e8d4a510006109da86886000015461160090919063ffffffff16565b9061193c565b979650505050505050565b60005415610f2e5760405162461bcd60e51b815260040161038c90611d3c565b60016000818155838152600760209081526040808320338452909152812080548282559281019190915560068054919291610f7291859184919088908110610af457fe5b826001600160a01b031684336001600160a01b03167f7faad5ec789dc92de511d11241b64377b929d8b02f373d788bada7b9de500f3184604051610fb69190611dc6565b60405180910390a45050600080555050565b6001546001600160a01b03163314610ff25760405162461bcd60e51b815260040161038c90611d5a565b801561100057611000611140565b611046826110406005868154811061101457fe5b6000918252602090912060029182020160010154905490600160401b90046001600160401b03166115d0565b906116ab565b600255611052826116ec565b6005848154811061105f57fe5b906000526020600020906002020160010160086101000a8154816001600160401b0302191690836001600160401b03160217905550827fd88f859573973e938da5bf3e5100c16eee2090fa720e05ae3d452b4cd05cdcfd836040516110c49190611dc6565b60405180910390a2505050565b600581815481106110e157600080fd5b6000918252602090912060029091020180546001909101549091506001600160401b0380821691600160401b90041683565b60045460ff1681565b60076020908152600092835260408084209091529082529020805460019091015482565b60055460005b8181101561116057611157816106a7565b50600101611146565b5050565b6001546001600160a01b0316331461118e5760405162461bcd60e51b815260040161038c90611d5a565b6003548214156111b05760405162461bcd60e51b815260040161038c90611d78565b80156111be576111be611140565b60038290556040517f135e538c47c59e6f0feb77d40430ffa356d3ce07e1a72929fcd0e66a30d513ae906111f3908490611dc6565b60405180910390a15050565b6000541561121f5760405162461bcd60e51b815260040161038c90611d3c565b6001600090815561122f846106a7565b600085815260076020908152604080832033845290915281208251815493945090926112659164e8d4a51000916109da91611600565b9050600061128083600101548361193c90919063ffffffff16565b835490915061128f90876115d0565b835583516112b4906112ad9064e8d4a51000906109da908a90611600565b839061193c565b600184015580156112c9576112c9818661199f565b6112db858760068a81548110610af457fe5b846001600160a01b031687336001600160a01b03167f2b097553e8e31a74f4b562b2f35f1d03910bddaa43e090cc0e46f205eb79e45b8960405161131f9190611dc6565b60405180910390a4846001600160a01b031687336001600160a01b03167fca8bf70624ec0ecfc925e5746a0e4625afe01129043c1c7201c7ce01075ea3ac8460405161136b9190611dc6565b60405180910390a45050600080555050505050565b600054156113a05760405162461bcd60e51b815260040161038c90611d3c565b600160009081556113b0836106a7565b600084815260076020908152604080832033845290915281208251815493945090926113e69164e8d4a51000916109da91611600565b9050600061140183600101548361193c90919063ffffffff16565b600184018390559050801561141a5761141a818661199f565b846001600160a01b031686336001600160a01b03167fca8bf70624ec0ecfc925e5746a0e4625afe01129043c1c7201c7ce01075ea3ac8460405161145e9190611dc6565b60405180910390a450506000805550505050565b60025481565b60055490565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106114fa5780518252601f1990920191602091820191016114db565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461155c576040519150601f19603f3d011682016040523d82523d6000602084013e611561565b606091505b509150915081801561158f57508051158061158f575080806020019051602081101561158c57600080fd5b50515b6115c9576040805162461bcd60e51b815260206004808301919091526024820152635448303560e01b604482015290519081900360640190fd5b5050505050565b60006115f983836040518060400160405280600481526020016329a6989960e11b815250611a1b565b9392505050565b600081158061161b5750508082028282828161161857fe5b04145b611655576040805162461bcd60e51b81526020600480830191909152602482015263534d324160e01b604482015290519081900360640190fd5b92915050565b600080821161169a576040805162461bcd60e51b81526020600480830191909152602482015263534d343360e01b604482015290519081900360640190fd5b8183816116a357fe5b049392505050565b80820182811015611655576040805162461bcd60e51b81526020600480830191909152602482015263534d344560e01b604482015290519081900360640190fd5b60006001600160401b03821115611733576040805162461bcd60e51b8152602060048083019190915260248201526314d34d4d60e21b604482015290519081900360640190fd5b5090565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000948594938a169392918291908083835b602083106117bb5780518252601f19909201916020918201910161179c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461181d576040519150601f19603f3d011682016040523d82523d6000602084013e611822565b606091505b5091509150818015611850575080511580611850575080806020019051602081101561184d57600080fd5b50515b61188a576040805162461bcd60e51b815260206004808301919091526024820152635448304560e01b604482015290519081900360640190fd5b505050505050565b60006001600160ff1b03821115611733576040805162461bcd60e51b8152602060048083019190915260248201526314d34ccd60e21b604482015290519081900360640190fd5b818101600082128015906118ed5750828112155b80611902575060008212801561190257508281125b611655576040805162461bcd60e51b8152602060048083019190915260248201526314d34d1160e21b604482015290519081900360640190fd5b808203600082128015906119505750828113155b80611965575060008212801561196557508281135b611655576040805162461bcd60e51b81526020600480830191909152602482015263534d313160e01b604482015290519081900360640190fd5b6040516340c10f1960e01b81526001600160a01b037f000000000000000000000000d502f487e1841fdc805130e13eae80c61186bc9816906340c10f19906119ed9084908690600401611cbe565b600060405180830381600087803b158015611a0757600080fd5b505af115801561188a573d6000803e3d6000fd5b8183038184821115611aab5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a70578181015183820152602001611a58565b50505050905090810190601f168015611a9d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b509392505050565b604080516060810182526000808252602082018190529181019190915290565b80356001600160a01b03811681146108fc57600080fd5b803580151581146108fc57600080fd5b600060208284031215611b0b578081fd5b6115f982611ad3565b600080600060608486031215611b28578182fd5b611b3184611ad3565b925060208401359150611b4660408501611aea565b90509250925092565b60008060208385031215611b61578182fd5b82356001600160401b0380821115611b77578384fd5b818501915085601f830112611b8a578384fd5b813581811115611b98578485fd5b8660208083028501011115611bab578485fd5b60209290920196919550909350505050565b600060208284031215611bce578081fd5b6115f982611aea565b600060208284031215611be8578081fd5b5035919050565b600060208284031215611c00578081fd5b5051919050565b60008060408385031215611c19578182fd5b82359150611c2960208401611ad3565b90509250929050565b60008060408385031215611c44578182fd5b82359150611c2960208401611aea565b600080600060608486031215611c68578283fd5b8335925060208401359150611b4660408501611ad3565b600080600060608486031215611c93578283fd5b8335925060208401359150611b4660408501611aea565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6020808252600490820152634c52363960e01b604082015260600190565b60208082526004908201526304c5237360e41b604082015260600190565b6020808252600490820152632629181960e11b604082015260600190565b6020808252600490820152632629181b60e11b604082015260600190565b60208082526004908201526304c5230360e41b604082015260600190565b6020808252600490820152634c52303160e01b604082015260600190565b815181526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b90815260200190565b918252602082015260400190565b9283526001600160401b03918216602084015216604082015260600190565b6001600160401b03939093168352602083019190915260408201526060019056fea26469706673582212201e19d4ea4f2d2c5e8d795acc4f4adbf9e7f15e03c597eaa9c6e9494e209c962a64736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d502f487e1841fdc805130e13eae80c61186bc98
-----Decoded View---------------
Arg [0] : _itgr (address): 0xD502F487e1841Fdc805130e13eae80c61186Bc98
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d502f487e1841fdc805130e13eae80c61186bc98
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.