Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 17 from a total of 17 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create Pool | 12005733 | 51 days ago | IN | 0 ETH | 0.00000139 | ||||
Create Pool | 11735632 | 57 days ago | IN | 0 ETH | 0.00000534 | ||||
Create Pool | 10656088 | 82 days ago | IN | 0 ETH | 0.00000908 | ||||
Get Pool | 4473943 | 225 days ago | IN | 0 ETH | 0.00007365 | ||||
Get Pool | 4473918 | 225 days ago | IN | 0 ETH | 0.00007365 | ||||
Get Pool | 4473914 | 225 days ago | IN | 0 ETH | 0.00007365 | ||||
Get Pool | 4473889 | 225 days ago | IN | 0 ETH | 0.00007365 | ||||
Set Manager | 1724664 | 289 days ago | IN | 0 ETH | 0.00000002 | ||||
Create Pool | 410983 | 319 days ago | IN | 0 ETH | 0.0004804 | ||||
Create Pool | 230746 | 324 days ago | IN | 0 ETH | 0.00713469 | ||||
Create Pool | 228831 | 324 days ago | IN | 0 ETH | 0.0071347 | ||||
Create Pool | 228188 | 324 days ago | IN | 0 ETH | 0.00713469 | ||||
Create Pool | 227302 | 324 days ago | IN | 0 ETH | 0.00713469 | ||||
Create Pool | 223212 | 324 days ago | IN | 0 ETH | 0.00713469 | ||||
Create Pool | 206461 | 324 days ago | IN | 0 ETH | 0.00000475 | ||||
Set Owner | 158631 | 325 days ago | IN | 0 ETH | 0.00000002 | ||||
Set Deployer | 158628 | 325 days ago | IN | 0 ETH | 0.00000004 |
Loading...
Loading
Contract Name:
ThrusterPoolFactory
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 200 runs
Other Settings:
istanbul EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity =0.7.6; import "interfaces/IBlastPoints.sol"; import "interfaces/IThrusterPoolFactory.sol"; import "interfaces/IThrusterPoolDeployer.sol"; import "contracts/NoDelegateCall.sol"; import "contracts/ThrusterGas.sol"; /// @title Canonical Thruster CLMM factory /// @notice Deploys Thruster CLMM pools and manages ownership and control over pool protocol fees contract ThrusterPoolFactory is IThrusterPoolFactory, NoDelegateCall, ThrusterGas { /// @inheritdoc IThrusterPoolFactory address public override owner; /// Points adminf or Blast points address public override pointsAdmin; /// @inheritdoc IThrusterPoolFactory address public override deployer; /// @inheritdoc IThrusterPoolFactory mapping(uint24 => int24) public override feeAmountTickSpacing; /// @inheritdoc IThrusterPoolFactory mapping(address => mapping(address => mapping(uint24 => address))) public override getPool; mapping(address => bool) public poolExists; address private constant BLAST_POINTS = 0x2536FE9ab3F511540F2f9e2eC2A805005C3Dd800; constructor(address _owner, address _pointsAdmin) ThrusterGas(_owner) { owner = _owner; emit OwnerChanged(address(0), _owner); pointsAdmin = _pointsAdmin; IBlastPoints(BLAST_POINTS).configurePointsOperator(_pointsAdmin); feeAmountTickSpacing[500] = 10; emit FeeAmountEnabled(500, 10); feeAmountTickSpacing[3000] = 60; emit FeeAmountEnabled(3000, 60); feeAmountTickSpacing[10000] = 200; emit FeeAmountEnabled(10000, 200); } /// @inheritdoc IThrusterPoolFactory function createPool(address tokenA, address tokenB, uint24 fee) public override noDelegateCall returns (address pool) { require(tokenA != tokenB); (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); require(token0 != address(0)); int24 tickSpacing = feeAmountTickSpacing[fee]; require(tickSpacing != 0); require(getPool[token0][token1][fee] == address(0)); pool = IThrusterPoolDeployer(deployer).deploy(address(this), token0, token1, fee, tickSpacing); getPool[token0][token1][fee] = pool; // populate mapping in the reverse direction, deliberate choice to avoid the cost of comparing addresses getPool[token1][token0][fee] = pool; poolExists[pool] = true; emit PoolCreated(token0, token1, fee, tickSpacing, pool); } /// @inheritdoc IThrusterPoolFactory function setOwner(address _owner) external override { require(msg.sender == owner); require(_owner != address(0)); emit OwnerChanged(owner, _owner); owner = _owner; } function setDeployer(address _deployer) external { require(msg.sender == owner && deployer == address(0), "INVALID"); deployer = _deployer; } /// @inheritdoc IThrusterPoolFactory function enableFeeAmount(uint24 fee, int24 tickSpacing) public override { require(msg.sender == owner); require(fee < 1000000); // tick spacing is capped at 16384 to prevent the situation where tickSpacing is so large that // TickBitmap#nextInitializedTickWithinOneWord overflows int24 container from a valid tick // 16384 ticks represents a >5x price change with ticks of 1 bips require(tickSpacing > 0 && tickSpacing < 16384); require(feeAmountTickSpacing[fee] == 0); feeAmountTickSpacing[fee] = tickSpacing; emit FeeAmountEnabled(fee, tickSpacing); } function claimDeployerGas(address _recipient) external { require(msg.sender == owner); IThrusterPoolDeployer(deployer).claimGas(_recipient); } function emitSwap( address sender, address recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick ) external override { require(poolExists[msg.sender], "INVALID_POOL"); emit Swap(msg.sender, sender, recipient, amount0, amount1, sqrtPriceX96, liquidity, tick); } function updatePointsAdmin(address _pointsAdmin) external { require(msg.sender == owner); pointsAdmin = _pointsAdmin; } }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.5.0; interface IBlastPoints { function configurePointsOperator(address operator) external; }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.5.0; /// @title The interface for the Thruster CLMM Factory /// @notice The Thruster CLMM Factory facilitates creation of Thruster CLMM pools and control over the protocol fees interface IThrusterPoolFactory { /// @notice Emitted when the owner of the factory is changed /// @param oldOwner The owner before the owner was changed /// @param newOwner The owner after the owner was changed event OwnerChanged(address indexed oldOwner, address indexed newOwner); /// @notice Emitted when a pool is created /// @param token0 The first token of the pool by address sort order /// @param token1 The second token of the pool by address sort order /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip /// @param tickSpacing The minimum number of ticks between initialized ticks /// @param pool The address of the created pool event PoolCreated( address indexed token0, address indexed token1, uint24 indexed fee, int24 tickSpacing, address pool ); /// @notice Emitted when a new fee amount is enabled for pool creation via the factory /// @param fee The enabled fee, denominated in hundredths of a bip /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing); event Swap( address indexed pool, address indexed sender, address indexed recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick ); /// @notice Returns the current owner of the factory /// @dev Can be changed by the current owner via setOwner /// @return The address of the factory owner function owner() external view returns (address); /// @notice Returns the current points admin of the factory /// @return The address of the points admin function pointsAdmin() external view returns (address); /// @notice Returns the current deployer of the factory /// @return The address of the pool deployer function deployer() external view returns (address); /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee /// @return The tick spacing function feeAmountTickSpacing(uint24 fee) external view returns (int24); /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order /// @param tokenA The contract address of either token0 or token1 /// @param tokenB The contract address of the other token /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip /// @return pool The pool address function getPool(address tokenA, address tokenB, uint24 fee) external view returns (address pool); /// @notice Creates a pool for the given two tokens and fee /// @param tokenA One of the two tokens in the desired pool /// @param tokenB The other of the two tokens in the desired pool /// @param fee The desired fee for the pool /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments /// are invalid. /// @return pool The address of the newly created pool function createPool(address tokenA, address tokenB, uint24 fee) external returns (address pool); /// @notice Updates the owner of the factory /// @dev Must be called by the current owner /// @param _owner The new owner of the factory function setOwner(address _owner) external; /// @notice Enables a fee amount with the given tickSpacing /// @dev Fee amounts may never be removed once enabled /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6) /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount function enableFeeAmount(uint24 fee, int24 tickSpacing) external; function emitSwap( address sender, address recipient, int256 amount0, int256 amount1, uint160 sqrtPriceX96, uint128 liquidity, int24 tick ) external; }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.5.0; /// @title An interface for a contract that is capable of deploying Thruster CLMM Pools /// @notice A contract that constructs a pool must implement this to pass arguments to the pool /// @dev This is used to avoid having constructor arguments in the pool contract, which results in the init code hash /// of the pool being constant allowing the CREATE2 address of the pool to be cheaply computed on-chain interface IThrusterPoolDeployer { /// @notice Get the parameters to be used in constructing the pool, set transiently during pool creation. /// @dev Called by the pool constructor to fetch the parameters of the pool /// Returns factory The factory address /// Returns token0 The first token of the pool by address sort order /// Returns token1 The second token of the pool by address sort order /// Returns fee The fee collected upon every swap in the pool, denominated in hundredths of a bip /// Returns tickSpacing The minimum number of ticks between initialized ticks function parameters() external view returns (address _factory, address token0, address token1, uint24 fee, int24 tickSpacing); /// @dev Deploys a pool with the given parameters by transiently setting the parameters storage slot and then /// clearing it after deploying the pool. /// @param _factory The factory address /// @param token0 The first token of the pool by address sort order /// @param token1 The second token of the pool by address sort order /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip /// @param tickSpacing The spacing between usable ticks function deploy(address _factory, address token0, address token1, uint24 fee, int24 tickSpacing) external returns (address pool); /// @notice Claim the accumulated BLAST gas for the factory function claimGas(address _recipient) external returns (uint256 amount); /// @notice Get the address of the factory that deployed the pool function factory() external view returns (address); }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity =0.7.6; /// @title Prevents delegatecall to a contract /// @notice Base contract that provides a modifier for preventing delegatecall to methods in a child contract abstract contract NoDelegateCall { /// @dev The original address of this contract address private immutable original; constructor() { // Immutables are computed in the init code of the contract, and then inlined into the deployed bytecode. // In other words, this variable won't change when it's checked at runtime. original = address(this); } /// @dev Private method is used instead of inlining into modifier because modifiers are copied into each method, /// and the use of immutable means the address bytes are copied in every place the modifier is used. function checkNotDelegateCall() private view { require(address(this) == original); } /// @notice Prevents delegatecall into the modified method modifier noDelegateCall() { checkNotDelegateCall(); _; } }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity =0.7.6; import "interfaces/IBlast.sol"; import "interfaces/IThrusterGas.sol"; contract ThrusterGas is IThrusterGas { IBlast public constant BLAST = IBlast(0x4300000000000000000000000000000000000002); address public manager; modifier onlyManager() { require(msg.sender == manager, "FORBIDDEN"); _; } constructor(address _manager) { BLAST.configureClaimableGas(); manager = _manager; } function claimGas(address _recipient, uint256 _minClaimRateBips) external override onlyManager returns (uint256 amount) { if (_minClaimRateBips == 0) { amount = BLAST.claimMaxGas(address(this), _recipient); } else { amount = BLAST.claimGasAtMinClaimRate(address(this), _recipient, _minClaimRateBips); } emit ClaimGas(_recipient, amount); } function setManager(address _manager) external override onlyManager { manager = _manager; } }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.5.0; interface IBlast { enum YieldMode { AUTOMATIC, VOID, CLAIMABLE } enum GasMode { VOID, CLAIMABLE } // configure function configureContract(address contractAddress, YieldMode _yield, GasMode gasMode, address governor) external; function configure(YieldMode _yield, GasMode gasMode, address governor) external; // base configuration options function configureClaimableYield() external; function configureClaimableYieldOnBehalf(address contractAddress) external; function configureAutomaticYield() external; function configureAutomaticYieldOnBehalf(address contractAddress) external; function configureVoidYield() external; function configureVoidYieldOnBehalf(address contractAddress) external; function configureClaimableGas() external; function configureClaimableGasOnBehalf(address contractAddress) external; function configureVoidGas() external; function configureVoidGasOnBehalf(address contractAddress) external; function configureGovernor(address _governor) external; function configureGovernorOnBehalf(address _newGovernor, address contractAddress) external; // claim yield function claimYield(address contractAddress, address recipientOfYield, uint256 amount) external returns (uint256); function claimAllYield(address contractAddress, address recipientOfYield) external returns (uint256); // claim gas function claimAllGas(address contractAddress, address recipientOfGas) external returns (uint256); function claimGasAtMinClaimRate(address contractAddress, address recipientOfGas, uint256 minClaimRateBips) external returns (uint256); function claimMaxGas(address contractAddress, address recipientOfGas) external returns (uint256); function claimGas(address contractAddress, address recipientOfGas, uint256 gasToClaim, uint256 gasSecondsToConsume) external returns (uint256); // read functions function readClaimableYield(address contractAddress) external view returns (uint256); function readYieldConfiguration(address contractAddress) external view returns (uint8); function readGasParams(address contractAddress) external view returns (uint256 etherSeconds, uint256 etherBalance, uint256 lastUpdated, GasMode); }
// SPDX-License-Identifier: GPL-2.0-or-later pragma solidity >=0.5.0; interface IThrusterGas { event ClaimGas(address indexed recipient, uint256 amount); function claimGas(address _recipient, uint256 _minClaimRateBips) external returns (uint256 amount); function setManager(address _manager) external; }
{ "remappings": [ "@openzeppelin/=lib/openzeppelin-contracts/", "@uniswap/lib/=lib/solidity-lib/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", "solidity-lib/=lib/solidity-lib/contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "istanbul", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_pointsAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimGas","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint24","name":"fee","type":"uint24"},{"indexed":true,"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"FeeAmountEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":true,"internalType":"uint24","name":"fee","type":"uint24"},{"indexed":false,"internalType":"int24","name":"tickSpacing","type":"int24"},{"indexed":false,"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"int256","name":"amount0","type":"int256"},{"indexed":false,"internalType":"int256","name":"amount1","type":"int256"},{"indexed":false,"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"indexed":false,"internalType":"uint128","name":"liquidity","type":"uint128"},{"indexed":false,"internalType":"int24","name":"tick","type":"int24"}],"name":"Swap","type":"event"},{"inputs":[],"name":"BLAST","outputs":[{"internalType":"contract IBlast","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"claimDeployerGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_minClaimRateBips","type":"uint256"}],"name":"claimGas","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"createPool","outputs":[{"internalType":"address","name":"pool","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"int256","name":"amount0","type":"int256"},{"internalType":"int256","name":"amount1","type":"int256"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"int24","name":"tick","type":"int24"}],"name":"emitSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"}],"name":"enableFeeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint24","name":"","type":"uint24"}],"name":"feeAmountTickSpacing","outputs":[{"internalType":"int24","name":"","type":"int24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint24","name":"","type":"uint24"}],"name":"getPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","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":"pointsAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_deployer","type":"address"}],"name":"setDeployer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pointsAdmin","type":"address"}],"name":"updatePointsAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b50604051610f47380380610f478339818101604052604081101561003357600080fd5b5080516020909101513060601b60805260408051634e606c4760e01b81529051839173430000000000000000000000000000000000000291634e606c479160048082019260009290919082900301818387803b15801561009257600080fd5b505af11580156100a6573d6000803e3d6000fd5b5050600080546001600160a01b039485166001600160a01b03199182161782556001805495881695909116851790556040519092507fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91508290a3600280546001600160a01b0319166001600160a01b038316908117909155604080516336b91f2b60e01b8152600481019290925251732536fe9ab3f511540f2f9e2ec2a805005c3dd800916336b91f2b91602480830192600092919082900301818387803b15801561017257600080fd5b505af1158015610186573d6000803e3d6000fd5b50506101f4600081815260046020527ffb8cf1d12598d1a039dd1d106665851a96aadf67d0d9ed76fceea282119208b7805462ffffff1916600a908117909155604051909450919250600080516020610f2783398151915291a3610bb8600081815260046020527f72dffa9b822156d9cf4b0090fa0b656bcb9cc2b2c60eb6acfc20a34f54b31743805462ffffff1916603c908117909155604051909291600080516020610f2783398151915291a3612710600081815260046020527f8cc740d51daa94ff54f33bd779c2d20149f524c340519b49181be5a08615f829805462ffffff191660c8908117909155604051909291600080516020610f2783398151915291a3505060805160601c610c7e6102a960003980610c1c5250610c7e6000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80638a7c195f116100a2578063a10a0d2c11610071578063a10a0d2c146102f6578063a167129514610350578063bd454fae1461038c578063d0ebdbe714610394578063d5f39488146103ba5761010b565b80638a7c195f146102955780638da5cb5b146102c057806396214735146102c857806397d75776146102ee5761010b565b80631e1c6a07116100de5780631e1c6a07146101f457806322afcccb1461022e5780632a0f358814610267578063481c6a751461028d5761010b565b806305bafd921461011057806313af40351461014e57806313e62e8f146101765780631698ee821461019c575b600080fd5b61013c6004803603604081101561012657600080fd5b506001600160a01b0381351690602001356103c2565b60408051918252519081900360200190f35b6101746004803603602081101561016457600080fd5b50356001600160a01b031661056b565b005b6101746004803603602081101561018c57600080fd5b50356001600160a01b03166105f1565b6101d8600480360360608110156101b257600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610686565b604080516001600160a01b039092168252519081900360200190f35b61021a6004803603602081101561020a57600080fd5b50356001600160a01b03166106b2565b604080519115158252519081900360200190f35b6102506004803603602081101561024457600080fd5b503562ffffff166106c7565b6040805160029290920b8252519081900360200190f35b6101746004803603602081101561027d57600080fd5b50356001600160a01b03166106dc565b6101d8610715565b610174600480360360408110156102ab57600080fd5b5062ffffff813516906020013560020b610724565b6101d86107e7565b610174600480360360208110156102de57600080fd5b50356001600160a01b03166107f6565b6101d8610876565b610174600480360360e081101561030c57600080fd5b506001600160a01b0381358116916020810135821691604082013591606081013591608082013516906001600160801b0360a0820135169060c0013560020b610881565b6101d86004803603606081101561036657600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610948565b6101d8610b86565b610174600480360360208110156103aa57600080fd5b50356001600160a01b0316610b95565b6101d8610c02565b600080546001600160a01b0316331461040e576040805162461bcd60e51b81526020600482015260096024820152682327a92124a22222a760b91b604482015290519081900360640190fd5b8161049b576040805163662aa11d60e01b81523060048201526001600160a01b038516602482015290516002604360981b019163662aa11d9160448083019260209291908290030181600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050506040513d602081101561049257600080fd5b50519050610526565b60408051630951888f60e01b81523060048201526001600160a01b03851660248201526044810184905290516002604360981b0191630951888f9160648083019260209291908290030181600087803b1580156104f757600080fd5b505af115801561050b573d6000803e3d6000fd5b505050506040513d602081101561052157600080fd5b505190505b6040805182815290516001600160a01b038516917f5eadc4013530f38d8b7709b47915d0cef30eee941dad69669a5b45e0686879fa919081900360200190a292915050565b6001546001600160a01b0316331461058257600080fd5b6001600160a01b03811661059557600080fd5b6001546040516001600160a01b038084169216907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331461060857600080fd5b60035460408051635b19fe5d60e11b81526001600160a01b0384811660048301529151919092169163b633fcba9160248083019260209291908290030181600087803b15801561065757600080fd5b505af115801561066b573d6000803e3d6000fd5b505050506040513d602081101561068157600080fd5b505050565b60056020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b60066020526000908152604090205460ff1681565b60046020526000908152604090205460020b81565b6001546001600160a01b031633146106f357600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031681565b6001546001600160a01b0316331461073b57600080fd5b620f42408262ffffff161061074f57600080fd5b60008160020b13801561076657506140008160020b125b61076f57600080fd5b62ffffff8216600090815260046020526040902054600290810b900b1561079557600080fd5b62ffffff828116600081815260046020526040808220805462ffffff1916600287900b958616179055517fc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc9190a35050565b6001546001600160a01b031681565b6001546001600160a01b03163314801561081957506003546001600160a01b0316155b610854576040805162461bcd60e51b81526020600482015260076024820152661253959053125160ca1b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6002604360981b0181565b3360009081526006602052604090205460ff166108d4576040805162461bcd60e51b815260206004820152600c60248201526b1253959053125117d413d3d360a21b604482015290519081900360640190fd5b60408051868152602081018690526001600160a01b03858116828401526001600160801b0385166060830152600284900b60808301529151828916928a169133917fcdbb3606a8844e31da62a3d26550f61be1e020b98631f8163496c703a063053f9181900360a00190a450505050505050565b6000610952610c11565b826001600160a01b0316846001600160a01b0316141561097157600080fd5b600080846001600160a01b0316866001600160a01b031610610994578486610997565b85855b90925090506001600160a01b0382166109af57600080fd5b62ffffff8416600090815260046020526040902054600290810b9081900b6109d657600080fd5b6001600160a01b0383811660009081526005602090815260408083208685168452825280832062ffffff8a1684529091529020541615610a1557600080fd5b6003546040805163fad5359f60e01b81523060048201526001600160a01b038681166024830152858116604483015262ffffff89166064830152600285900b60848301529151919092169163fad5359f9160a48083019260209291908290030181600087803b158015610a8757600080fd5b505af1158015610a9b573d6000803e3d6000fd5b505050506040513d6020811015610ab157600080fd5b50516001600160a01b03848116600081815260056020818152604080842089871680865290835281852062ffffff8e1680875290845282862080546001600160a01b0319908116998b16998a1790915582875294845282862087875284528286208187528452828620805490951688179094558685526006835293819020805460ff191660011790558051600289900b8152918201959095528451959950909491937f783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b711892918290030190a45050509392505050565b6002546001600160a01b031681565b6000546001600160a01b03163314610be0576040805162461bcd60e51b81526020600482015260096024820152682327a92124a22222a760b91b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031681565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c4657600080fd5b56fea26469706673582212209e1d19a6c9a8ffbeac0a6d3962b941dd7824ca8ee7158afab3ede47913a4de4b64736f6c63430007060033c66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc000000000000000000000000d6b64e44aae0938118ad0dae251b859d85351c22000000000000000000000000d6b64e44aae0938118ad0dae251b859d85351c22
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80638a7c195f116100a2578063a10a0d2c11610071578063a10a0d2c146102f6578063a167129514610350578063bd454fae1461038c578063d0ebdbe714610394578063d5f39488146103ba5761010b565b80638a7c195f146102955780638da5cb5b146102c057806396214735146102c857806397d75776146102ee5761010b565b80631e1c6a07116100de5780631e1c6a07146101f457806322afcccb1461022e5780632a0f358814610267578063481c6a751461028d5761010b565b806305bafd921461011057806313af40351461014e57806313e62e8f146101765780631698ee821461019c575b600080fd5b61013c6004803603604081101561012657600080fd5b506001600160a01b0381351690602001356103c2565b60408051918252519081900360200190f35b6101746004803603602081101561016457600080fd5b50356001600160a01b031661056b565b005b6101746004803603602081101561018c57600080fd5b50356001600160a01b03166105f1565b6101d8600480360360608110156101b257600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610686565b604080516001600160a01b039092168252519081900360200190f35b61021a6004803603602081101561020a57600080fd5b50356001600160a01b03166106b2565b604080519115158252519081900360200190f35b6102506004803603602081101561024457600080fd5b503562ffffff166106c7565b6040805160029290920b8252519081900360200190f35b6101746004803603602081101561027d57600080fd5b50356001600160a01b03166106dc565b6101d8610715565b610174600480360360408110156102ab57600080fd5b5062ffffff813516906020013560020b610724565b6101d86107e7565b610174600480360360208110156102de57600080fd5b50356001600160a01b03166107f6565b6101d8610876565b610174600480360360e081101561030c57600080fd5b506001600160a01b0381358116916020810135821691604082013591606081013591608082013516906001600160801b0360a0820135169060c0013560020b610881565b6101d86004803603606081101561036657600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610948565b6101d8610b86565b610174600480360360208110156103aa57600080fd5b50356001600160a01b0316610b95565b6101d8610c02565b600080546001600160a01b0316331461040e576040805162461bcd60e51b81526020600482015260096024820152682327a92124a22222a760b91b604482015290519081900360640190fd5b8161049b576040805163662aa11d60e01b81523060048201526001600160a01b038516602482015290516002604360981b019163662aa11d9160448083019260209291908290030181600087803b15801561046857600080fd5b505af115801561047c573d6000803e3d6000fd5b505050506040513d602081101561049257600080fd5b50519050610526565b60408051630951888f60e01b81523060048201526001600160a01b03851660248201526044810184905290516002604360981b0191630951888f9160648083019260209291908290030181600087803b1580156104f757600080fd5b505af115801561050b573d6000803e3d6000fd5b505050506040513d602081101561052157600080fd5b505190505b6040805182815290516001600160a01b038516917f5eadc4013530f38d8b7709b47915d0cef30eee941dad69669a5b45e0686879fa919081900360200190a292915050565b6001546001600160a01b0316331461058257600080fd5b6001600160a01b03811661059557600080fd5b6001546040516001600160a01b038084169216907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331461060857600080fd5b60035460408051635b19fe5d60e11b81526001600160a01b0384811660048301529151919092169163b633fcba9160248083019260209291908290030181600087803b15801561065757600080fd5b505af115801561066b573d6000803e3d6000fd5b505050506040513d602081101561068157600080fd5b505050565b60056020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b60066020526000908152604090205460ff1681565b60046020526000908152604090205460020b81565b6001546001600160a01b031633146106f357600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031681565b6001546001600160a01b0316331461073b57600080fd5b620f42408262ffffff161061074f57600080fd5b60008160020b13801561076657506140008160020b125b61076f57600080fd5b62ffffff8216600090815260046020526040902054600290810b900b1561079557600080fd5b62ffffff828116600081815260046020526040808220805462ffffff1916600287900b958616179055517fc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc9190a35050565b6001546001600160a01b031681565b6001546001600160a01b03163314801561081957506003546001600160a01b0316155b610854576040805162461bcd60e51b81526020600482015260076024820152661253959053125160ca1b604482015290519081900360640190fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6002604360981b0181565b3360009081526006602052604090205460ff166108d4576040805162461bcd60e51b815260206004820152600c60248201526b1253959053125117d413d3d360a21b604482015290519081900360640190fd5b60408051868152602081018690526001600160a01b03858116828401526001600160801b0385166060830152600284900b60808301529151828916928a169133917fcdbb3606a8844e31da62a3d26550f61be1e020b98631f8163496c703a063053f9181900360a00190a450505050505050565b6000610952610c11565b826001600160a01b0316846001600160a01b0316141561097157600080fd5b600080846001600160a01b0316866001600160a01b031610610994578486610997565b85855b90925090506001600160a01b0382166109af57600080fd5b62ffffff8416600090815260046020526040902054600290810b9081900b6109d657600080fd5b6001600160a01b0383811660009081526005602090815260408083208685168452825280832062ffffff8a1684529091529020541615610a1557600080fd5b6003546040805163fad5359f60e01b81523060048201526001600160a01b038681166024830152858116604483015262ffffff89166064830152600285900b60848301529151919092169163fad5359f9160a48083019260209291908290030181600087803b158015610a8757600080fd5b505af1158015610a9b573d6000803e3d6000fd5b505050506040513d6020811015610ab157600080fd5b50516001600160a01b03848116600081815260056020818152604080842089871680865290835281852062ffffff8e1680875290845282862080546001600160a01b0319908116998b16998a1790915582875294845282862087875284528286208187528452828620805490951688179094558685526006835293819020805460ff191660011790558051600289900b8152918201959095528451959950909491937f783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b711892918290030190a45050509392505050565b6002546001600160a01b031681565b6000546001600160a01b03163314610be0576040805162461bcd60e51b81526020600482015260096024820152682327a92124a22222a760b91b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031681565b306001600160a01b037f00000000000000000000000071b08f13b3c3af35aadeb3949afeb1ded10161271614610c4657600080fd5b56fea26469706673582212209e1d19a6c9a8ffbeac0a6d3962b941dd7824ca8ee7158afab3ede47913a4de4b64736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d6b64e44aae0938118ad0dae251b859d85351c22000000000000000000000000d6b64e44aae0938118ad0dae251b859d85351c22
-----Decoded View---------------
Arg [0] : _owner (address): 0xd6b64E44aae0938118aD0dAE251b859D85351c22
Arg [1] : _pointsAdmin (address): 0xd6b64E44aae0938118aD0dAE251b859D85351c22
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000d6b64e44aae0938118ad0dae251b859d85351c22
Arg [1] : 000000000000000000000000d6b64e44aae0938118ad0dae251b859d85351c22
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.