More Info
Private Name Tags
ContractCreator
Latest 10 from a total of 10 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Earmark Rewards | 19818807 | 124 days ago | IN | 0 ETH | 0.01974943 | ||||
Earmark Rewards | 19818805 | 124 days ago | IN | 0 ETH | 0.01976105 | ||||
Earmark Rewards | 19594711 | 155 days ago | IN | 0 ETH | 0.00818986 | ||||
Earmark Rewards | 19582771 | 157 days ago | IN | 0 ETH | 0.02808916 | ||||
Earmark Rewards | 19501959 | 168 days ago | IN | 0 ETH | 0.01027094 | ||||
Earmark Rewards | 19436832 | 177 days ago | IN | 0 ETH | 0.03333709 | ||||
Set Stash Map | 19430054 | 178 days ago | IN | 0 ETH | 0.00295187 | ||||
Set Multi Stash ... | 19424040 | 179 days ago | IN | 0 ETH | 0.16347008 | ||||
Set Multi Stash ... | 19424011 | 179 days ago | IN | 0 ETH | 0.08660768 | ||||
0x60e06040 | 19419211 | 180 days ago | IN | 0 ETH | 0.06923798 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | ||||
---|---|---|---|---|---|---|---|
20707514 | 16 mins ago | 0 ETH | |||||
20707514 | 16 mins ago | 0 ETH | |||||
20707514 | 16 mins ago | 0 ETH | |||||
20707514 | 16 mins ago | 0 ETH | |||||
20707514 | 16 mins ago | 0 ETH | |||||
20707514 | 16 mins ago | 0 ETH | |||||
20707293 | 1 hr ago | 0 ETH | |||||
20707293 | 1 hr ago | 0 ETH | |||||
20707293 | 1 hr ago | 0 ETH | |||||
20707293 | 1 hr ago | 0 ETH | |||||
20707292 | 1 hr ago | 0 ETH | |||||
20707292 | 1 hr ago | 0 ETH | |||||
20707292 | 1 hr ago | 0 ETH | |||||
20707292 | 1 hr ago | 0 ETH | |||||
20707292 | 1 hr ago | 0 ETH | |||||
20707292 | 1 hr ago | 0 ETH | |||||
20707292 | 1 hr ago | 0 ETH | |||||
20707292 | 1 hr ago | 0 ETH | |||||
20707292 | 1 hr ago | 0 ETH | |||||
20707292 | 1 hr ago | 0 ETH | |||||
20707292 | 1 hr ago | 0 ETH | |||||
20707292 | 1 hr ago | 0 ETH | |||||
20707067 | 1 hr ago | 0 ETH | |||||
20707067 | 1 hr ago | 0 ETH | |||||
20707067 | 1 hr ago | 0 ETH |
Loading...
Loading
Contract Name:
PoolHarvestHook
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 200 runs
Other Settings:
istanbul EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; import "./interfaces/IBooster.sol"; import "./interfaces/IBoosterAdmin.sol"; import "./interfaces/IBoosterRewardManager.sol"; import "./interfaces/IRewards.sol"; import "./interfaces/IRewardHook.sol"; import "./interfaces/IPoolAddHook.sol"; import "./interfaces/IRewardHookExtended.sol"; import '@openzeppelin/contracts/token/ERC20/IERC20.sol'; /* A Hook that forces harvests to happen once period finish is complete */ contract PoolHarvestHook is IRewardHook, IPoolAddHook{ address public constant booster = address(0xF403C135812408BFbE8713b5A23a04b3D48AAE31); address public constant boosterOwner = address(0x256e1bbA846611C37CF89844a02435E6C098b86D); address public constant cvx = address(0x4e3FBD56CD56c3e72c1403e103b45Db9da5B9D2B); address public constant crv = address(0xD533a949740bb3306d119CC777fa900bA034cd52); address public immutable poolManager; address public immutable poolHook; address public immutable owner; mapping(address => bool) public operators; mapping(address => address) public stashMap; uint256 public timebuffer; bool private isOperator; event AddOperator(address indexed _op, bool _valid); event ChangeBuffer(uint256 _buffer); constructor(address _owner, address _poolManager, address _poolHook) public { owner = _owner; poolManager = _poolManager; poolHook = _poolHook; operators[msg.sender] = true; timebuffer = 1 hours; emit AddOperator(msg.sender, true); } modifier onlyOwner() { require(owner == msg.sender, "!owner"); _; } modifier onlyOperator() { require(operators[msg.sender] || owner == msg.sender, "!op"); _; } //set operator function setOperators(address _op, bool _valid) external onlyOwner{ operators[_op] = _valid; emit AddOperator(_op, _valid); } //set time buffer function setBuffer(uint256 _seconds) external onlyOwner{ timebuffer = _seconds; emit ChangeBuffer(_seconds); } //disable hook by removing all crv on this address function disable() external onlyOwner{ IERC20(crv).transfer(address(0x1389388d01708118b497f59521f6943Be2541bb7), IERC20(crv).balanceOf(address(this))); } function setStashMap(uint256 _pid) public{ //get stash address and crvrewards address (,,,address crvRewards, address stash,) = IBooster(booster).poolInfo(_pid); //add mapping stash -> rewards stashMap[stash] = crvRewards; } function setMultiStashMap(uint256[] calldata _pids) public{ uint256 l = _pids.length; for(uint256 p = 0; p < l; ++p){ //get stash address and crvrewards address (,,,address crvRewards, address stash,) = IBooster(booster).poolInfo(_pids[p]); //add mapping stash -> rewards stashMap[stash] = crvRewards; } } function poolAdded(address /*_gauge*/, uint256 /*_stashVersion*/, uint256 _poolId) external override{ //require called from pool manager require(msg.sender == poolManager, "!poolMng"); // set stash map setStashMap(_poolId); // tell booster owner reward manager to initialize pool (add cvx reward and stash hook) address rewardmanager = IBoosterAdmin(boosterOwner).stashRewardManager(); IBoosterRewardManager(rewardmanager).initializePool(_poolId); } function earmarkRewards(uint256 _pid) external onlyOperator returns(bool){ uint256 crvb = IERC20(crv).balanceOf(address(this)); isOperator = true; IBooster(booster).earmarkRewards(_pid); isOperator = false; IERC20(crv).transfer(msg.sender, IERC20(crv).balanceOf(address(this))-crvb); return true; } //hook from stash function onRewardClaim() external override{ //msg.sender is a proper stash if in the stash map _onHarvest(stashMap[msg.sender]); } //hook from PoolRewardHook function getReward(address _stash) public{ require(msg.sender == poolHook, "!hook"); //can trust the stash address given by PoolRewardHook _onHarvest(stashMap[_stash]); } function _onHarvest(address _crvRewards) internal{ //if not set or operator, return if(_crvRewards == address(0) || isOperator){ return; } //check period finish on crvrewards if (block.timestamp >= IRewards(_crvRewards).periodFinish()+timebuffer) { return; } // //check if there is more crv rewards waiting to be claimed than the current reward epoch uint256 currentRewards = IRewards(_crvRewards).currentRewards(); uint256 balanceOnBooster = IERC20(crv).balanceOf(booster); if(balanceOnBooster > currentRewards * 2){ return; } //if fail, send 1 wei of crv to booster IERC20(crv).transfer(booster, 1); } }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IRewards{ function stake(address, uint256) external; function stakeFor(address, uint256) external; function withdraw(address, uint256) external; function setWeight(address _pool, uint256 _amount) external returns(bool); function setWeights(address[] calldata _account, uint256[] calldata _amount) external; function setDistributor(address _distro, bool _valid) external; function getReward(address) external; function queueNewRewards(uint256) external; function addExtraReward(address) external; function setRewardHook(address) external; function user_checkpoint(address _account) external returns(bool); function periodFinish() external view returns(uint256); function currentRewards() external view returns(uint256); function rewardToken() external view returns(address); function rewardMap(address) external view returns(bool); function earned(address account) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IRewardHookExtended { function onRewardClaim() external; function poolRewardLength(address _pool) external view returns(uint256); function poolRewardList(address _pool, uint256 _index) external view returns(address _rewardContract); function addPoolReward(address _pool, address _rewardContract) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IRewardHook { function onRewardClaim() external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IPoolAddHook { function poolAdded(address _gauge, uint256 _stashVersion, uint256 _poolId) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IBoosterRewardManager { function defaultHook() external view returns(address); function initializePool(uint256 _pid) external; function setStashRewardManager(address _mng) external; function setStashExtraReward(uint256 _pid, address _token) external; function setStashRewardHook(uint256 _pid, address _hook) external; function setMultiStashRewardHook(uint256[] calldata _pids, address _hook) external; function setStashTokenIsValid(address stashToken, bool isValid) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IBoosterAdmin { function owner() external view returns(address); function stashRewardManager() external view returns(address); function setStashRewardManager(address _mng) external; function acceptStashRewardManager() external; function setStashExtraReward(uint256 _pid, address _token) external; function setStashRewardHook(uint256 _pid, address _hook) external; function setStashTokenIsValid(address stashToken, bool isValid) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.6.12; interface IBooster { function owner() external view returns(address); function feeToken() external view returns(address); function feeDistro() external view returns(address); function lockFees() external view returns(address); function stakerRewards() external view returns(address); function lockRewards() external view returns(address); function setVoteDelegate(address _voteDelegate) external; function vote(uint256 _voteId, address _votingAddress, bool _support) external returns(bool); function voteGaugeWeight(address[] calldata _gauge, uint256[] calldata _weight ) external returns(bool); function poolInfo(uint256 _pid) external view returns(address _lptoken, address _token, address _gauge, address _crvRewards, address _stash, bool _shutdown); function earmarkRewards(uint256 _pid) external returns(bool); function earmarkFees() external returns(bool); function isShutdown() external view returns(bool); function poolLength() external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "istanbul", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_poolManager","type":"address"},{"internalType":"address","name":"_poolHook","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_op","type":"address"},{"indexed":false,"internalType":"bool","name":"_valid","type":"bool"}],"name":"AddOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_buffer","type":"uint256"}],"name":"ChangeBuffer","type":"event"},{"inputs":[],"name":"booster","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"boosterOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"crv","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cvx","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"earmarkRewards","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stash","type":"address"}],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"onRewardClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"operators","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"_poolId","type":"uint256"}],"name":"poolAdded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"poolHook","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_seconds","type":"uint256"}],"name":"setBuffer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_pids","type":"uint256[]"}],"name":"setMultiStashMap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_op","type":"address"},{"internalType":"bool","name":"_valid","type":"bool"}],"name":"setOperators","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"setStashMap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stashMap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timebuffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60e060405234801561001057600080fd5b506040516111243803806111248339818101604052606081101561003357600080fd5b5080516020808301516040938401516001600160601b0319606085811b821660c05283811b821660805282901b1660a052336000818152808552869020805460ff19166001908117909155610e106002558651908152955194959294919390927fbadd5a134a60c76befc7e7d53706d47a82ac7037171f88c24a7f70faa2998ef1929081900390910190a250505060805160601c60a05160601c60c05160601c611010610114600039806104505280610764528061085852806108945280610ae45250806105cf52806109445250806106175280610d7152506110106000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637532ed2b116100ad578063c00007b011610071578063c00007b014610290578063c6def076146102b6578063c745ccbf146102be578063cc956f3f1461032e578063dc4c90d31461034b57610121565b80637532ed2b146102415780638da5cb5b14610249578063923c1d6114610251578063adc7ea3714610259578063b46b400d1461027657610121565b80633545c789116100f45780633545c7891461018f5780634a92b5fd146101b35780634b8843d5146101d95780635cfbfc6d1461020b5780636a4874a11461023957610121565b806313e7c9d8146101265780632663fcfc146101605780632e9e18541461016a5780632f2770db14610187575b600080fd5b61014c6004803603602081101561013c57600080fd5b50356001600160a01b0316610353565b604080519115158252519081900360200190f35b610168610368565b005b6101686004803603602081101561018057600080fd5b503561038c565b61016861044e565b6101976105cd565b604080516001600160a01b039092168252519081900360200190f35b610197600480360360208110156101c957600080fd5b50356001600160a01b03166105f1565b610168600480360360608110156101ef57600080fd5b506001600160a01b03813516906020810135906040013561060c565b6101686004803603604081101561022157600080fd5b506001600160a01b0381351690602001351515610762565b610197610826565b61019761083e565b610197610856565b61019761087a565b6101686004803603602081101561026f57600080fd5b5035610892565b61027e610933565b60408051918252519081900360200190f35b610168600480360360208110156102a657600080fd5b50356001600160a01b0316610939565b6101976109c5565b610168600480360360208110156102d457600080fd5b8101906020810181356401000000008111156102ef57600080fd5b82018360208201111561030157600080fd5b8035906020019184602083028401116401000000008311171561032357600080fd5b5090925090506109dd565b61014c6004803603602081101561034457600080fd5b5035610ac9565b610197610d6f565b60006020819052908152604090205460ff1681565b3360009081526001602052604090205461038a906001600160a01b0316610d93565b565b60008073f403c135812408bfbe8713b5a23a04b3d48aae316001600160a01b0316631526fe27846040518263ffffffff1660e01b81526004018082815260200191505060c06040518083038186803b1580156103e757600080fd5b505afa1580156103fb573d6000803e3d6000fd5b505050506040513d60c081101561041157600080fd5b5060608101516080909101516001600160a01b03908116600090815260016020526040902080546001600160a01b03191691909216179055505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146104b4576040805162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905173d533a949740bb3306d119cc777fa900ba034cd529163a9059cbb91731389388d01708118b497f59521f6943be2541bb79184916370a0823191602480820192602092909190829003018186803b15801561052457600080fd5b505afa158015610538573d6000803e3d6000fd5b505050506040513d602081101561054e57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561059f57600080fd5b505af11580156105b3573d6000803e3d6000fd5b505050506040513d60208110156105c957600080fd5b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001602052600090815260409020546001600160a01b031681565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610674576040805162461bcd60e51b815260206004820152600860248201526721706f6f6c4d6e6760c01b604482015290519081900360640190fd5b61067d8161038c565b600073256e1bba846611c37cf89844a02435e6c098b86d6001600160a01b03166304e020dd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106cc57600080fd5b505afa1580156106e0573d6000803e3d6000fd5b505050506040513d60208110156106f657600080fd5b5051604080516398881bc960e01b81526004810185905290519192506001600160a01b038316916398881bc99160248082019260009290919082900301818387803b15801561074457600080fd5b505af1158015610758573d6000803e3d6000fd5b5050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146107c8576040805162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b604482015290519081900360640190fd5b6001600160a01b03821660008181526020818152604091829020805460ff1916851515908117909155825190815291517fbadd5a134a60c76befc7e7d53706d47a82ac7037171f88c24a7f70faa2998ef19281900390910190a25050565b73d533a949740bb3306d119cc777fa900ba034cd5281565b73256e1bba846611c37cf89844a02435e6c098b86d81565b7f000000000000000000000000000000000000000000000000000000000000000081565b734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b81565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146108f8576040805162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b604482015290519081900360640190fd5b60028190556040805182815290517fb33211365ccf8563493d1b2ccf9a78aa626fb222777be9b474156c6fe18597f39181900360200190a150565b60025481565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461099e576040805162461bcd60e51b815260206004820152600560248201526421686f6f6b60d81b604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020546109c29116610d93565b50565b73f403c135812408bfbe8713b5a23a04b3d48aae3181565b8060005b81811015610ac35760008073f403c135812408bfbe8713b5a23a04b3d48aae31631526fe27878786818110610a1257fe5b905060200201356040518263ffffffff1660e01b81526004018082815260200191505060c06040518083038186803b158015610a4d57600080fd5b505afa158015610a61573d6000803e3d6000fd5b505050506040513d60c0811015610a7757600080fd5b5060608101516080909101516001600160a01b03908116600090815260016020819052604090912080546001600160a01b03191692909316919091179091559290920191506109e19050565b50505050565b3360009081526020819052604081205460ff1680610b0f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633145b610b46576040805162461bcd60e51b81526020600482015260036024820152620216f760ec1b604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905160009173d533a949740bb3306d119cc777fa900ba034cd52916370a0823191602480820192602092909190829003018186803b158015610b9b57600080fd5b505afa158015610baf573d6000803e3d6000fd5b505050506040513d6020811015610bc557600080fd5b50516003805460ff191660011790556040805163cc956f3f60e01b815260048101869052905191925073f403c135812408bfbe8713b5a23a04b3d48aae319163cc956f3f916024808201926020929091908290030181600087803b158015610c2c57600080fd5b505af1158015610c40573d6000803e3d6000fd5b505050506040513d6020811015610c5657600080fd5b50506003805460ff19169055604080516370a0823160e01b8152306004820152905173d533a949740bb3306d119cc777fa900ba034cd529163a9059cbb913391859185916370a08231916024808301926020929190829003018186803b158015610cbf57600080fd5b505afa158015610cd3573d6000803e3d6000fd5b505050506040513d6020811015610ce957600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b03909416600485015291900360248301525160448083019260209291908290030181600087803b158015610d3a57600080fd5b505af1158015610d4e573d6000803e3d6000fd5b505050506040513d6020811015610d6457600080fd5b506001949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381161580610dab575060035460ff165b15610db5576109c2565b600254816001600160a01b031663ebe2b12b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610df157600080fd5b505afa158015610e05573d6000803e3d6000fd5b505050506040513d6020811015610e1b57600080fd5b5051014210610e29576109c2565b6000816001600160a01b031663901a7d536040518163ffffffff1660e01b815260040160206040518083038186803b158015610e6457600080fd5b505afa158015610e78573d6000803e3d6000fd5b505050506040513d6020811015610e8e57600080fd5b5051604080516370a0823160e01b815273f403c135812408bfbe8713b5a23a04b3d48aae316004820152905191925060009173d533a949740bb3306d119cc777fa900ba034cd52916370a08231916024808301926020929190829003018186803b158015610efb57600080fd5b505afa158015610f0f573d6000803e3d6000fd5b505050506040513d6020811015610f2557600080fd5b5051905060028202811115610f3b5750506109c2565b6040805163a9059cbb60e01b815273f403c135812408bfbe8713b5a23a04b3d48aae31600482015260016024820152905173d533a949740bb3306d119cc777fa900ba034cd529163a9059cbb9160448083019260209291908290030181600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b505050506040513d6020811015610fd357600080fd5b505050505056fea264697066735822122009b0d975827601799a5e1845f97a07cc85caf0055a5053a626211681b47576fc64736f6c634300060c0033000000000000000000000000a3c5a1e09150b75ff251c1a7815a07182c3de2fb0000000000000000000000006d3a388e310aaa498430d1fe541d6d64ddb423de000000000000000000000000723f9aa67fdd9b0e375ef8553eb2afc28ecd4a96
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101215760003560e01c80637532ed2b116100ad578063c00007b011610071578063c00007b014610290578063c6def076146102b6578063c745ccbf146102be578063cc956f3f1461032e578063dc4c90d31461034b57610121565b80637532ed2b146102415780638da5cb5b14610249578063923c1d6114610251578063adc7ea3714610259578063b46b400d1461027657610121565b80633545c789116100f45780633545c7891461018f5780634a92b5fd146101b35780634b8843d5146101d95780635cfbfc6d1461020b5780636a4874a11461023957610121565b806313e7c9d8146101265780632663fcfc146101605780632e9e18541461016a5780632f2770db14610187575b600080fd5b61014c6004803603602081101561013c57600080fd5b50356001600160a01b0316610353565b604080519115158252519081900360200190f35b610168610368565b005b6101686004803603602081101561018057600080fd5b503561038c565b61016861044e565b6101976105cd565b604080516001600160a01b039092168252519081900360200190f35b610197600480360360208110156101c957600080fd5b50356001600160a01b03166105f1565b610168600480360360608110156101ef57600080fd5b506001600160a01b03813516906020810135906040013561060c565b6101686004803603604081101561022157600080fd5b506001600160a01b0381351690602001351515610762565b610197610826565b61019761083e565b610197610856565b61019761087a565b6101686004803603602081101561026f57600080fd5b5035610892565b61027e610933565b60408051918252519081900360200190f35b610168600480360360208110156102a657600080fd5b50356001600160a01b0316610939565b6101976109c5565b610168600480360360208110156102d457600080fd5b8101906020810181356401000000008111156102ef57600080fd5b82018360208201111561030157600080fd5b8035906020019184602083028401116401000000008311171561032357600080fd5b5090925090506109dd565b61014c6004803603602081101561034457600080fd5b5035610ac9565b610197610d6f565b60006020819052908152604090205460ff1681565b3360009081526001602052604090205461038a906001600160a01b0316610d93565b565b60008073f403c135812408bfbe8713b5a23a04b3d48aae316001600160a01b0316631526fe27846040518263ffffffff1660e01b81526004018082815260200191505060c06040518083038186803b1580156103e757600080fd5b505afa1580156103fb573d6000803e3d6000fd5b505050506040513d60c081101561041157600080fd5b5060608101516080909101516001600160a01b03908116600090815260016020526040902080546001600160a01b03191691909216179055505050565b7f000000000000000000000000a3c5a1e09150b75ff251c1a7815a07182c3de2fb6001600160a01b031633146104b4576040805162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905173d533a949740bb3306d119cc777fa900ba034cd529163a9059cbb91731389388d01708118b497f59521f6943be2541bb79184916370a0823191602480820192602092909190829003018186803b15801561052457600080fd5b505afa158015610538573d6000803e3d6000fd5b505050506040513d602081101561054e57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b15801561059f57600080fd5b505af11580156105b3573d6000803e3d6000fd5b505050506040513d60208110156105c957600080fd5b5050565b7f000000000000000000000000723f9aa67fdd9b0e375ef8553eb2afc28ecd4a9681565b6001602052600090815260409020546001600160a01b031681565b336001600160a01b037f0000000000000000000000006d3a388e310aaa498430d1fe541d6d64ddb423de1614610674576040805162461bcd60e51b815260206004820152600860248201526721706f6f6c4d6e6760c01b604482015290519081900360640190fd5b61067d8161038c565b600073256e1bba846611c37cf89844a02435e6c098b86d6001600160a01b03166304e020dd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106cc57600080fd5b505afa1580156106e0573d6000803e3d6000fd5b505050506040513d60208110156106f657600080fd5b5051604080516398881bc960e01b81526004810185905290519192506001600160a01b038316916398881bc99160248082019260009290919082900301818387803b15801561074457600080fd5b505af1158015610758573d6000803e3d6000fd5b5050505050505050565b7f000000000000000000000000a3c5a1e09150b75ff251c1a7815a07182c3de2fb6001600160a01b031633146107c8576040805162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b604482015290519081900360640190fd5b6001600160a01b03821660008181526020818152604091829020805460ff1916851515908117909155825190815291517fbadd5a134a60c76befc7e7d53706d47a82ac7037171f88c24a7f70faa2998ef19281900390910190a25050565b73d533a949740bb3306d119cc777fa900ba034cd5281565b73256e1bba846611c37cf89844a02435e6c098b86d81565b7f000000000000000000000000a3c5a1e09150b75ff251c1a7815a07182c3de2fb81565b734e3fbd56cd56c3e72c1403e103b45db9da5b9d2b81565b7f000000000000000000000000a3c5a1e09150b75ff251c1a7815a07182c3de2fb6001600160a01b031633146108f8576040805162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b604482015290519081900360640190fd5b60028190556040805182815290517fb33211365ccf8563493d1b2ccf9a78aa626fb222777be9b474156c6fe18597f39181900360200190a150565b60025481565b336001600160a01b037f000000000000000000000000723f9aa67fdd9b0e375ef8553eb2afc28ecd4a96161461099e576040805162461bcd60e51b815260206004820152600560248201526421686f6f6b60d81b604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020546109c29116610d93565b50565b73f403c135812408bfbe8713b5a23a04b3d48aae3181565b8060005b81811015610ac35760008073f403c135812408bfbe8713b5a23a04b3d48aae31631526fe27878786818110610a1257fe5b905060200201356040518263ffffffff1660e01b81526004018082815260200191505060c06040518083038186803b158015610a4d57600080fd5b505afa158015610a61573d6000803e3d6000fd5b505050506040513d60c0811015610a7757600080fd5b5060608101516080909101516001600160a01b03908116600090815260016020819052604090912080546001600160a01b03191692909316919091179091559290920191506109e19050565b50505050565b3360009081526020819052604081205460ff1680610b0f57507f000000000000000000000000a3c5a1e09150b75ff251c1a7815a07182c3de2fb6001600160a01b031633145b610b46576040805162461bcd60e51b81526020600482015260036024820152620216f760ec1b604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905160009173d533a949740bb3306d119cc777fa900ba034cd52916370a0823191602480820192602092909190829003018186803b158015610b9b57600080fd5b505afa158015610baf573d6000803e3d6000fd5b505050506040513d6020811015610bc557600080fd5b50516003805460ff191660011790556040805163cc956f3f60e01b815260048101869052905191925073f403c135812408bfbe8713b5a23a04b3d48aae319163cc956f3f916024808201926020929091908290030181600087803b158015610c2c57600080fd5b505af1158015610c40573d6000803e3d6000fd5b505050506040513d6020811015610c5657600080fd5b50506003805460ff19169055604080516370a0823160e01b8152306004820152905173d533a949740bb3306d119cc777fa900ba034cd529163a9059cbb913391859185916370a08231916024808301926020929190829003018186803b158015610cbf57600080fd5b505afa158015610cd3573d6000803e3d6000fd5b505050506040513d6020811015610ce957600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b03909416600485015291900360248301525160448083019260209291908290030181600087803b158015610d3a57600080fd5b505af1158015610d4e573d6000803e3d6000fd5b505050506040513d6020811015610d6457600080fd5b506001949350505050565b7f0000000000000000000000006d3a388e310aaa498430d1fe541d6d64ddb423de81565b6001600160a01b0381161580610dab575060035460ff165b15610db5576109c2565b600254816001600160a01b031663ebe2b12b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610df157600080fd5b505afa158015610e05573d6000803e3d6000fd5b505050506040513d6020811015610e1b57600080fd5b5051014210610e29576109c2565b6000816001600160a01b031663901a7d536040518163ffffffff1660e01b815260040160206040518083038186803b158015610e6457600080fd5b505afa158015610e78573d6000803e3d6000fd5b505050506040513d6020811015610e8e57600080fd5b5051604080516370a0823160e01b815273f403c135812408bfbe8713b5a23a04b3d48aae316004820152905191925060009173d533a949740bb3306d119cc777fa900ba034cd52916370a08231916024808301926020929190829003018186803b158015610efb57600080fd5b505afa158015610f0f573d6000803e3d6000fd5b505050506040513d6020811015610f2557600080fd5b5051905060028202811115610f3b5750506109c2565b6040805163a9059cbb60e01b815273f403c135812408bfbe8713b5a23a04b3d48aae31600482015260016024820152905173d533a949740bb3306d119cc777fa900ba034cd529163a9059cbb9160448083019260209291908290030181600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b505050506040513d6020811015610fd357600080fd5b505050505056fea264697066735822122009b0d975827601799a5e1845f97a07cc85caf0055a5053a626211681b47576fc64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a3c5a1e09150b75ff251c1a7815a07182c3de2fb0000000000000000000000006d3a388e310aaa498430d1fe541d6d64ddb423de000000000000000000000000723f9aa67fdd9b0e375ef8553eb2afc28ecd4a96
-----Decoded View---------------
Arg [0] : _owner (address): 0xa3C5A1e09150B75ff251c1a7815A07182c3de2FB
Arg [1] : _poolManager (address): 0x6D3a388e310aaA498430d1Fe541d6d64ddb423de
Arg [2] : _poolHook (address): 0x723f9Aa67FDD9B0e375eF8553eB2AFC28eCD4a96
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000a3c5a1e09150b75ff251c1a7815a07182c3de2fb
Arg [1] : 0000000000000000000000006d3a388e310aaa498430d1fe541d6d64ddb423de
Arg [2] : 000000000000000000000000723f9aa67fdd9b0e375ef8553eb2afc28ecd4a96
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 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.