Overview
ETH Balance
ETH Value
$0.00Latest 17 from a total of 17 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Create Pool | 12005733 | 421 days ago | IN | 0 ETH | 0.00001139 | ||||
| Create Pool | 11735632 | 427 days ago | IN | 0 ETH | 0.00000547 | ||||
| Create Pool | 10656088 | 452 days ago | IN | 0 ETH | 0.00000911 | ||||
| Get Pool | 4473943 | 596 days ago | IN | 0 ETH | 0.00007368 | ||||
| Get Pool | 4473918 | 596 days ago | IN | 0 ETH | 0.00007367 | ||||
| Get Pool | 4473914 | 596 days ago | IN | 0 ETH | 0.00007367 | ||||
| Get Pool | 4473889 | 596 days ago | IN | 0 ETH | 0.00007367 | ||||
| Set Manager | 1724664 | 659 days ago | IN | 0 ETH | 0.00007408 | ||||
| Create Pool | 410983 | 690 days ago | IN | 0 ETH | 0.00058819 | ||||
| Create Pool | 230746 | 694 days ago | IN | 0 ETH | 0.0072199 | ||||
| Create Pool | 228831 | 694 days ago | IN | 0 ETH | 0.00721807 | ||||
| Create Pool | 228188 | 694 days ago | IN | 0 ETH | 0.00721292 | ||||
| Create Pool | 227302 | 694 days ago | IN | 0 ETH | 0.00723116 | ||||
| Create Pool | 223212 | 694 days ago | IN | 0 ETH | 0.00723317 | ||||
| Create Pool | 206461 | 694 days ago | IN | 0 ETH | 0.00012405 | ||||
| Set Owner | 158631 | 695 days ago | IN | 0 ETH | 0.00008857 | ||||
| Set Deployer | 158628 | 695 days ago | IN | 0 ETH | 0.00008859 |
View more zero value Internal Transactions in Advanced View mode
Cross-Chain Transactions
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
Contract ABI
API[{"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
Net Worth in USD
Net Worth in ETH
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.