Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
PriceGetterUniV3
Compiler Version
v0.8.16+commit.07a7930e
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.8.16;import "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol";import "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol";import "@uniswap/v3-core/contracts/libraries/TickMath.sol";import "./interfaces/IUniswapV3PoolStateSlot0.sol";import "../IPriceGetterProtocol.sol";import "../../IPriceGetter.sol";import "../../lib/UtilityLibrary.sol";contract PriceGetterUniV3 is IPriceGetterProtocol {// ========== Get Token Prices ==========function getTokenPrice(address token,address factory,PriceGetterParams memory params) public view override returns (uint256 price) {IUniswapV3Factory factoryUniV3 = IUniswapV3Factory(factory);uint256 nativePrice = params.mainPriceGetter.getNativePrice(IPriceGetter.Protocol.UniV3, address(factoryUniV3));if (token == params.wrappedNative.tokenAddress) {return nativePrice;}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title The interface for the Uniswap V3 Factory/// @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol feesinterface IUniswapV3Factory {/// @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 changedevent 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 poolevent 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
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;import {IUniswapV3PoolImmutables} from './pool/IUniswapV3PoolImmutables.sol';import {IUniswapV3PoolState} from './pool/IUniswapV3PoolState.sol';import {IUniswapV3PoolDerivedState} from './pool/IUniswapV3PoolDerivedState.sol';import {IUniswapV3PoolActions} from './pool/IUniswapV3PoolActions.sol';import {IUniswapV3PoolOwnerActions} from './pool/IUniswapV3PoolOwnerActions.sol';import {IUniswapV3PoolErrors} from './pool/IUniswapV3PoolErrors.sol';import {IUniswapV3PoolEvents} from './pool/IUniswapV3PoolEvents.sol';/// @title The interface for a Uniswap V3 Pool/// @notice A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform/// to the ERC20 specification/// @dev The pool interface is broken up into many smaller piecesinterface IUniswapV3Pool isIUniswapV3PoolImmutables,IUniswapV3PoolState,IUniswapV3PoolDerivedState,IUniswapV3PoolActions,IUniswapV3PoolOwnerActions,IUniswapV3PoolErrors,IUniswapV3PoolEvents{}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Permissionless pool actions/// @notice Contains pool methods that can be called by anyoneinterface IUniswapV3PoolActions {/// @notice Sets the initial price for the pool/// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value/// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96function initialize(uint160 sqrtPriceX96) external;/// @notice Adds liquidity for the given recipient/tickLower/tickUpper position/// @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback/// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends/// on tickLower, tickUpper, the amount of liquidity, and the current price./// @param recipient The address for which the liquidity will be created/// @param tickLower The lower tick of the position in which to add liquidity/// @param tickUpper The upper tick of the position in which to add liquidity/// @param amount The amount of liquidity to mint/// @param data Any data that should be passed through to the callback/// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback/// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callbackfunction mint(address recipient,int24 tickLower,int24 tickUpper,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Pool state that is not stored/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the/// blockchain. The functions here may have variable gas costs.interface IUniswapV3PoolDerivedState {/// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp/// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing/// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,/// you must call it with secondsAgos = [3600, 0]./// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in/// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio./// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned/// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp/// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block/// timestampfunction observe(uint32[] calldata secondsAgos)externalviewreturns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);/// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range/// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed./// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first/// snapshot is taken and the second snapshot is taken.
12345678910111213141516171819// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Errors emitted by a pool/// @notice Contains all events emitted by the poolinterface IUniswapV3PoolErrors {error LOK();error TLU();error TLM();error TUM();error AI();error M0();error M1();error AS();error IIA();error L();error F0();error F1();}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Events emitted by a pool/// @notice Contains all events emitted by the poolinterface IUniswapV3PoolEvents {/// @notice Emitted exactly once by a pool when #initialize is first called on the pool/// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize/// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96/// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the poolevent Initialize(uint160 sqrtPriceX96, int24 tick);/// @notice Emitted when liquidity is minted for a given position/// @param sender The address that minted the liquidity/// @param owner The owner of the position and recipient of any minted liquidity/// @param tickLower The lower tick of the position/// @param tickUpper The upper tick of the position/// @param amount The amount of liquidity minted to the position range/// @param amount0 How much token0 was required for the minted liquidity/// @param amount1 How much token1 was required for the minted liquidityevent Mint(address sender,address indexed owner,int24 indexed tickLower,int24 indexed tickUpper,uint128 amount,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Pool state that never changes/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same valuesinterface IUniswapV3PoolImmutables {/// @notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface/// @return The contract addressfunction factory() external view returns (address);/// @notice The first of the two tokens of the pool, sorted by address/// @return The token contract addressfunction token0() external view returns (address);/// @notice The second of the two tokens of the pool, sorted by address/// @return The token contract addressfunction token1() external view returns (address);/// @notice The pool's fee in hundredths of a bip, i.e. 1e-6/// @return The feefunction fee() external view returns (uint24);/// @notice The pool tick spacing/// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive/// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, .../// This value is an int24 to avoid casting even though it is always positive.
1234567891011121314151617181920212223// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Permissioned pool actions/// @notice Contains pool methods that may only be called by the factory ownerinterface IUniswapV3PoolOwnerActions {/// @notice Set the denominator of the protocol's % share of the fees/// @param feeProtocol0 new protocol fee for token0 of the pool/// @param feeProtocol1 new protocol fee for token1 of the poolfunction setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;/// @notice Collect the protocol fee accrued to the pool/// @param recipient The address to which collected protocol fees should be sent/// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1/// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0/// @return amount0 The protocol fee collected in token0/// @return amount1 The protocol fee collected in token1function collectProtocol(address recipient,uint128 amount0Requested,uint128 amount1Requested) external returns (uint128 amount0, uint128 amount1);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Pool state that can change/// @notice These methods compose the pool's state, and can change with any frequency including multiple times/// per transactioninterface IUniswapV3PoolState {/// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas/// when accessed externally./// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value/// @return tick The current tick of the pool, i.e. according to the last tick transition that was run./// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick/// boundary./// @return observationIndex The index of the last oracle observation that was written,/// @return observationCardinality The current maximum number of observations stored in the pool,/// @return observationCardinalityNext The next maximum number of observations, to be updated when the observation./// @return feeProtocol The protocol fee for both tokens of the pool./// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0/// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee./// unlocked Whether the pool is currently locked to reentrancyfunction slot0()externalviewreturns (uint160 sqrtPriceX96,int24 tick,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity ^0.8.0;/// @title Math library for computing sqrt prices from ticks and vice versa/// @notice Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports/// prices between 2**-128 and 2**128library TickMath {error T();error R();/// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128int24 internal constant MIN_TICK = -887272;/// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128int24 internal constant MAX_TICK = -MIN_TICK;/// @dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)uint160 internal constant MIN_SQRT_RATIO = 4295128739;/// @dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;/// @notice Calculates sqrt(1.0001^tick) * 2^96/// @dev Throws if |tick| > max tick/// @param tick The input tick for the above formula/// @return sqrtPriceX96 A Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)/// at the given tickfunction getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.8.16;import "../IPriceGetter.sol";interface IPriceGetterProtocol {struct PriceGetterParams {IPriceGetter mainPriceGetter;IPriceGetter.TokenAndDecimals wrappedNative;IPriceGetter.TokenAndDecimals[] stableUsdTokens;uint256 nativeLiquidityThreshold;}/*** @dev Returns the price of a token.* @param token The address of the token to get the price for.* @return price The current price of the token.*/function getTokenPrice(address token,address factory,PriceGetterParams memory params) external view returns (uint256 price);/*** @dev Returns the price of an LP token.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-2.0-or-laterpragma solidity >=0.5.0;/// @title Pool state that can change/// @notice These methods compose the pool's state, and can change with any frequency including multiple times/// per transactioninterface IUniswapV3PoolStateSlot0 {/// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas/// when accessed externally./// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value/// @return tick The current tick of the pool, i.e. according to the last tick transition that was run./// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick/// boundary./// @return observationIndex The index of the last oracle observation that was written,/// @return observationCardinality The current maximum number of observations stored in the pool,/// @return observationCardinalityNext The next maximum number of observations, to be updated when the observation./// @return feeProtocol The protocol fee for both tokens of the pool./// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0/// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee./// unlocked Whether the pool is currently locked to reentrancyfunction slot0()externalviewreturns (uint160 sqrtPriceX96,int24 tick,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.8.16;interface IPriceGetter {enum Protocol {__,___,UniV2,UniV3,Algebra,_Gamma, // outdated_Steer, // outdatedSolidly,Xfai,Curve,AlgebraIntegral}enum Wrappers {Gamma,Ichi,Steer}struct TokenAndDecimals {address tokenAddress;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: GPL-3.0-onlypragma solidity 0.8.16;import "../token-lib/IERC20.sol";library UtilityLibrary {function _isSorted(address tokenA, address tokenB) internal pure returns (bool isSorted) {// (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);isSorted = tokenA < tokenB ? true : false;}function _getTokenDecimals(address token) internal view returns (uint8 decimals) {try IERC20(token).decimals() returns (uint8 dec) {decimals = dec;} catch {decimals = 18;}}/// @notice Normalize the amount of a token to wei or 1e18function _normalizeToken(uint256 amount, address token) internal view returns (uint256) {return _normalize(amount, _getTokenDecimals(token));}/// @notice Normalize the amount of a token to wei or 1e18function _normalizeToken112(uint112 amount, address token) internal view returns (uint112) {
12345678910111213141516171819202122232425// SPDX-License-Identifier: GPL-3.0-onlypragma solidity >=0.5.0;interface IERC20 {event Approval(address indexed owner, address indexed spender, uint value);event Transfer(address indexed from, address indexed to, uint value);function name() external view returns (string memory);function symbol() external view returns (string memory);function decimals() external view returns (uint8);function totalSupply() external view returns (uint);function balanceOf(address owner) external view returns (uint);function allowance(address owner, address spender) external view returns (uint);function approve(address spender, uint value) external returns (bool);function transfer(address to, uint value) external returns (bool);function transferFrom(address from, address to, uint value) external returns (bool);}
12345678910111213141516171819{"optimizer": {"enabled": true,"runs": 200},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}},"libraries": {}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"address","name":"factory","type":"address"},{"components":[{"internalType":"contract IPriceGetter","name":"mainPriceGetter","type":"address"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct IPriceGetter.TokenAndDecimals","name":"wrappedNative","type":"tuple"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct IPriceGetter.TokenAndDecimals[]","name":"stableUsdTokens","type":"tuple[]"},{"internalType":"uint256","name":"nativeLiquidityThreshold","type":"uint256"}],"internalType":"struct IPriceGetterProtocol.PriceGetterParams","name":"params","type":"tuple"}],"name":"getLPPrice","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"},{"components":[{"internalType":"contract IPriceGetter","name":"mainPriceGetter","type":"address"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct IPriceGetter.TokenAndDecimals","name":"wrappedNative","type":"tuple"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct IPriceGetter.TokenAndDecimals[]","name":"stableUsdTokens","type":"tuple[]"},{"internalType":"uint256","name":"nativeLiquidityThreshold","type":"uint256"}],"internalType":"struct IPriceGetterProtocol.PriceGetterParams","name":"params","type":"tuple"}],"name":"getNativePrice","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"factory","type":"address"},{"components":[{"internalType":"contract IPriceGetter","name":"mainPriceGetter","type":"address"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct IPriceGetter.TokenAndDecimals","name":"wrappedNative","type":"tuple"},{"components":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct IPriceGetter.TokenAndDecimals[]","name":"stableUsdTokens","type":"tuple[]"},{"internalType":"uint256","name":"nativeLiquidityThreshold","type":"uint256"}],"internalType":"struct IPriceGetterProtocol.PriceGetterParams","name":"params","type":"tuple"}],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061144c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80635a51a2a0146100465780639bbcae161461006b578063e98765641461007e575b600080fd5b610059610054366004611004565b610091565b60405190815260200160405180910390f35b610059610079366004611004565b6101e9565b61005961008c366004611066565b610616565b60008083905060008590506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010091906110b6565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016691906110b6565b90506000836001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101cc91906110d3565b90506101da8584848461085f565b955050505050505b9392505050565b805160405160016246908760e11b03198152600091849183916001600160a01b03169063ff72def2906102239060039086906004016110f8565b602060405180830381865afa158015610240573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102649190611132565b90508360200151600001516001600160a01b0316866001600160a01b0316036102905791506101e29050565b60408051600580825260c08201909252600091829182918291906020820160a0803683370190505090506064816000815181106102cf576102cf61114b565b602002602001019062ffffff16908162ffffff16815250506101f4816001815181106102fd576102fd61114b565b602002602001019062ffffff16908162ffffff16815250506109c48160028151811061032b5761032b61114b565b602002602001019062ffffff16908162ffffff1681525050610bb8816003815181106103595761035961114b565b602002602001019062ffffff16908162ffffff1681525050612710816004815181106103875761038761114b565b602002602001019062ffffff16908162ffffff168152505060005b60058162ffffff1610156105e6576000828262ffffff16815181106103c9576103c961114b565b602002602001015190506103e7888d8c60200151600001518461085f565b955085156105a4576000886001600160a01b0316631698ee828e8d6020015160000151856040518463ffffffff1660e01b815260040161042993929190611161565b602060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906110b6565b6040516370a0823160e01b81526001600160a01b0380831660048301529192506000918f16906370a0823190602401602060405180830381865afa1580156104b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104da9190611132565b60208d0151516040516370a0823160e01b81526001600160a01b038581166004830152929350600092909116906370a0823190602401602060405180830381865afa15801561052d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105519190611132565b90508c606001518111156105a05781670de0b6b3a76400006105738c8c61119f565b61057d91906111be565b610587919061119f565b61059190896111e0565b975061059d82886111e0565b96505b5050505b6000806105b38a8f858f610aac565b90925090506105c282886111e0565b96506105ce81876111e0565b955050505080806105de906111f3565b9150506103a2565b50816000036105fe57600096505050505050506101e2565b61060882846111be565b9a9950505050505050505050565b6000828180805b856040015151811015610834576000866040015182815181106106425761064261114b565b60200260200101516000015190506106668588602001516000015183610bb861085f565b875160405163427d626760e11b81526001600160a01b038481166004830152929850600092909116906384fac4ce90602401602060405180830381865afa1580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190611132565b9050801561070157670de0b6b3a76400006106f4828961119f565b6106fe91906111be565b96505b861561081f57602088015151604051630b4c774160e11b81526000916001600160a01b03891691631698ee8291610740918790610bb890600401611161565b602060405180830381865afa15801561075d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078191906110b6565b60208a0151516040516370a0823160e01b81526001600160a01b038084166004830152929350600092909116906370a0823190602401602060405180830381865afa1580156107d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f89190611132565b9050610804818a61119f565b61080e90886111e0565b965061081a81876111e0565b955050505b5050808061082c90611215565b91505061061d565b50806000036108495760009350505050610859565b61085381836111be565b93505050505b92915050565b600080856001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040161089293929190611161565b602060405180830381865afa1580156108af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d391906110b6565b90506001600160a01b0381166108ed576000915050610aa4565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa15801561092d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109519190611240565b50506001600160a01b039094169450600093506109739250899150610dad9050565b60ff169050600061098387610dad565b60ff1690508260000361099d576000945050505050610aa4565b60006001600160801b0384106109c0576109b96103e8856111be565b9350600690505b6001600160801b0384106109dc57600095505050505050610aa4565b886001600160a01b0316886001600160a01b03161015610a4c578082610a038560126111e0565b610a0d91906112e7565b610a1791906112e7565b610a2290600a6113de565b610a2d6002866113ea565b610a3791906111be565b610a4590600160c01b6111be565b9550610a9e565b8082610a598560126111e0565b610a6391906112e7565b610a6d91906112e7565b610a7890600a6113de565b610a8690600160c01b6111be565b610a916002866113ea565b610a9b91906111be565b95505b50505050505b949350505050565b60008060005b836040015151811015610da357600084604001518281518110610ad757610ad761114b565b60200260200101516000015190506000610af38989848a61085f565b90508015610d8e57604051630b4c774160e11b81526000906001600160a01b038b1690631698ee8290610b2e908c9087908d90600401611161565b602060405180830381865afa158015610b4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6f91906110b6565b6040516370a0823160e01b81526001600160a01b0380831660048301529192506000918b16906370a0823190602401602060405180830381865afa158015610bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdf9190611132565b6040516370a0823160e01b81526001600160a01b0384811660048301529192506000918616906370a0823190602401602060405180830381865afa158015610c2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4f9190611132565b9050846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb391906113f9565b610cbe90600a6113ea565b610cc990600a61119f565b811115610d8a57885160405163427d626760e11b81526001600160a01b03878116600483015260009216906384fac4ce90602401602060405180830381865afa158015610d1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3e9190611132565b90508015610d6657670de0b6b3a7640000610d59828761119f565b610d6391906111be565b94505b610d70838661119f565b610d7a908a6111e0565b9850610d8683896111e0565b9750505b5050505b50508080610d9b90611215565b915050610ab2565b5094509492505050565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e09575060408051601f3d908101601f19168201909252610e06918101906113f9565b60015b610e1557506012919050565b90505b919050565b6001600160a01b0381168114610e3257600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610e6e57610e6e610e35565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e9d57610e9d610e35565b604052919050565b60ff81168114610e3257600080fd5b600060408284031215610ec657600080fd5b6040516040810181811067ffffffffffffffff82111715610ee957610ee9610e35565b6040529050808235610efa81610e1d565b81526020830135610f0a81610ea5565b6020919091015292915050565b600060a08284031215610f2957600080fd5b610f31610e4b565b90508135610f3e81610e1d565b81526020610f4e84848301610eb4565b81830152606083013567ffffffffffffffff80821115610f6d57600080fd5b818501915085601f830112610f8157600080fd5b813581811115610f9357610f93610e35565b610fa1848260051b01610e74565b818152848101925060069190911b830184019087821115610fc157600080fd5b928401925b81841015610fea57610fd88885610eb4565b83528483019250604084019350610fc6565b604086015250505050608091909101356060820152919050565b60008060006060848603121561101957600080fd5b833561102481610e1d565b9250602084013561103481610e1d565b9150604084013567ffffffffffffffff81111561105057600080fd5b61105c86828701610f17565b9150509250925092565b6000806040838503121561107957600080fd5b823561108481610e1d565b9150602083013567ffffffffffffffff8111156110a057600080fd5b6110ac85828601610f17565b9150509250929050565b6000602082840312156110c857600080fd5b81516101e281610e1d565b6000602082840312156110e557600080fd5b815162ffffff811681146101e257600080fd5b60408101600b841061111a57634e487b7160e01b600052602160045260246000fd5b9281526001600160a01b039190911660209091015290565b60006020828403121561114457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03938416815291909216602082015262ffffff909116604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156111b9576111b9611189565b500290565b6000826111db57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561085957610859611189565b600062ffffff80831681810361120b5761120b611189565b6001019392505050565b60006001820161122757611227611189565b5060010190565b805161ffff81168114610e1857600080fd5b600080600080600080600060e0888a03121561125b57600080fd5b875161126681610e1d565b8097505060208801518060020b811461127e57600080fd5b955061128c6040890161122e565b945061129a6060890161122e565b93506112a86080890161122e565b925060a088015163ffffffff811681146112c157600080fd5b60c089015190925080151581146112d757600080fd5b8091505092959891949750929550565b8181038181111561085957610859611189565b600181815b8085111561133557816000190482111561131b5761131b611189565b8085161561132857918102915b93841c93908002906112ff565b509250929050565b60008261134c57506001610859565b8161135957506000610859565b816001811461136f576002811461137957611395565b6001915050610859565b60ff84111561138a5761138a611189565b50506001821b610859565b5060208310610133831016604e8410600b84101617156113b8575081810a610859565b6113c283836112fa565b80600019048211156113d6576113d6611189565b029392505050565b60006101e2838361133d565b60006101e260ff84168361133d565b60006020828403121561140b57600080fd5b81516101e281610ea556fea264697066735822122053084eb626b7cae93468004ae6f7672350bd3d9a10788a91b52cdecc1c7003c664736f6c63430008100033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100415760003560e01c80635a51a2a0146100465780639bbcae161461006b578063e98765641461007e575b600080fd5b610059610054366004611004565b610091565b60405190815260200160405180910390f35b610059610079366004611004565b6101e9565b61005961008c366004611066565b610616565b60008083905060008590506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010091906110b6565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610142573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061016691906110b6565b90506000836001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101cc91906110d3565b90506101da8584848461085f565b955050505050505b9392505050565b805160405160016246908760e11b03198152600091849183916001600160a01b03169063ff72def2906102239060039086906004016110f8565b602060405180830381865afa158015610240573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102649190611132565b90508360200151600001516001600160a01b0316866001600160a01b0316036102905791506101e29050565b60408051600580825260c08201909252600091829182918291906020820160a0803683370190505090506064816000815181106102cf576102cf61114b565b602002602001019062ffffff16908162ffffff16815250506101f4816001815181106102fd576102fd61114b565b602002602001019062ffffff16908162ffffff16815250506109c48160028151811061032b5761032b61114b565b602002602001019062ffffff16908162ffffff1681525050610bb8816003815181106103595761035961114b565b602002602001019062ffffff16908162ffffff1681525050612710816004815181106103875761038761114b565b602002602001019062ffffff16908162ffffff168152505060005b60058162ffffff1610156105e6576000828262ffffff16815181106103c9576103c961114b565b602002602001015190506103e7888d8c60200151600001518461085f565b955085156105a4576000886001600160a01b0316631698ee828e8d6020015160000151856040518463ffffffff1660e01b815260040161042993929190611161565b602060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906110b6565b6040516370a0823160e01b81526001600160a01b0380831660048301529192506000918f16906370a0823190602401602060405180830381865afa1580156104b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104da9190611132565b60208d0151516040516370a0823160e01b81526001600160a01b038581166004830152929350600092909116906370a0823190602401602060405180830381865afa15801561052d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105519190611132565b90508c606001518111156105a05781670de0b6b3a76400006105738c8c61119f565b61057d91906111be565b610587919061119f565b61059190896111e0565b975061059d82886111e0565b96505b5050505b6000806105b38a8f858f610aac565b90925090506105c282886111e0565b96506105ce81876111e0565b955050505080806105de906111f3565b9150506103a2565b50816000036105fe57600096505050505050506101e2565b61060882846111be565b9a9950505050505050505050565b6000828180805b856040015151811015610834576000866040015182815181106106425761064261114b565b60200260200101516000015190506106668588602001516000015183610bb861085f565b875160405163427d626760e11b81526001600160a01b038481166004830152929850600092909116906384fac4ce90602401602060405180830381865afa1580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190611132565b9050801561070157670de0b6b3a76400006106f4828961119f565b6106fe91906111be565b96505b861561081f57602088015151604051630b4c774160e11b81526000916001600160a01b03891691631698ee8291610740918790610bb890600401611161565b602060405180830381865afa15801561075d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078191906110b6565b60208a0151516040516370a0823160e01b81526001600160a01b038084166004830152929350600092909116906370a0823190602401602060405180830381865afa1580156107d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f89190611132565b9050610804818a61119f565b61080e90886111e0565b965061081a81876111e0565b955050505b5050808061082c90611215565b91505061061d565b50806000036108495760009350505050610859565b61085381836111be565b93505050505b92915050565b600080856001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040161089293929190611161565b602060405180830381865afa1580156108af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d391906110b6565b90506001600160a01b0381166108ed576000915050610aa4565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa15801561092d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109519190611240565b50506001600160a01b039094169450600093506109739250899150610dad9050565b60ff169050600061098387610dad565b60ff1690508260000361099d576000945050505050610aa4565b60006001600160801b0384106109c0576109b96103e8856111be565b9350600690505b6001600160801b0384106109dc57600095505050505050610aa4565b886001600160a01b0316886001600160a01b03161015610a4c578082610a038560126111e0565b610a0d91906112e7565b610a1791906112e7565b610a2290600a6113de565b610a2d6002866113ea565b610a3791906111be565b610a4590600160c01b6111be565b9550610a9e565b8082610a598560126111e0565b610a6391906112e7565b610a6d91906112e7565b610a7890600a6113de565b610a8690600160c01b6111be565b610a916002866113ea565b610a9b91906111be565b95505b50505050505b949350505050565b60008060005b836040015151811015610da357600084604001518281518110610ad757610ad761114b565b60200260200101516000015190506000610af38989848a61085f565b90508015610d8e57604051630b4c774160e11b81526000906001600160a01b038b1690631698ee8290610b2e908c9087908d90600401611161565b602060405180830381865afa158015610b4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6f91906110b6565b6040516370a0823160e01b81526001600160a01b0380831660048301529192506000918b16906370a0823190602401602060405180830381865afa158015610bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdf9190611132565b6040516370a0823160e01b81526001600160a01b0384811660048301529192506000918616906370a0823190602401602060405180830381865afa158015610c2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4f9190611132565b9050846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb391906113f9565b610cbe90600a6113ea565b610cc990600a61119f565b811115610d8a57885160405163427d626760e11b81526001600160a01b03878116600483015260009216906384fac4ce90602401602060405180830381865afa158015610d1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3e9190611132565b90508015610d6657670de0b6b3a7640000610d59828761119f565b610d6391906111be565b94505b610d70838661119f565b610d7a908a6111e0565b9850610d8683896111e0565b9750505b5050505b50508080610d9b90611215565b915050610ab2565b5094509492505050565b6000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e09575060408051601f3d908101601f19168201909252610e06918101906113f9565b60015b610e1557506012919050565b90505b919050565b6001600160a01b0381168114610e3257600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610e6e57610e6e610e35565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610e9d57610e9d610e35565b604052919050565b60ff81168114610e3257600080fd5b600060408284031215610ec657600080fd5b6040516040810181811067ffffffffffffffff82111715610ee957610ee9610e35565b6040529050808235610efa81610e1d565b81526020830135610f0a81610ea5565b6020919091015292915050565b600060a08284031215610f2957600080fd5b610f31610e4b565b90508135610f3e81610e1d565b81526020610f4e84848301610eb4565b81830152606083013567ffffffffffffffff80821115610f6d57600080fd5b818501915085601f830112610f8157600080fd5b813581811115610f9357610f93610e35565b610fa1848260051b01610e74565b818152848101925060069190911b830184019087821115610fc157600080fd5b928401925b81841015610fea57610fd88885610eb4565b83528483019250604084019350610fc6565b604086015250505050608091909101356060820152919050565b60008060006060848603121561101957600080fd5b833561102481610e1d565b9250602084013561103481610e1d565b9150604084013567ffffffffffffffff81111561105057600080fd5b61105c86828701610f17565b9150509250925092565b6000806040838503121561107957600080fd5b823561108481610e1d565b9150602083013567ffffffffffffffff8111156110a057600080fd5b6110ac85828601610f17565b9150509250929050565b6000602082840312156110c857600080fd5b81516101e281610e1d565b6000602082840312156110e557600080fd5b815162ffffff811681146101e257600080fd5b60408101600b841061111a57634e487b7160e01b600052602160045260246000fd5b9281526001600160a01b039190911660209091015290565b60006020828403121561114457600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03938416815291909216602082015262ffffff909116604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156111b9576111b9611189565b500290565b6000826111db57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561085957610859611189565b600062ffffff80831681810361120b5761120b611189565b6001019392505050565b60006001820161122757611227611189565b5060010190565b805161ffff81168114610e1857600080fd5b600080600080600080600060e0888a03121561125b57600080fd5b875161126681610e1d565b8097505060208801518060020b811461127e57600080fd5b955061128c6040890161122e565b945061129a6060890161122e565b93506112a86080890161122e565b925060a088015163ffffffff811681146112c157600080fd5b60c089015190925080151581146112d757600080fd5b8091505092959891949750929550565b8181038181111561085957610859611189565b600181815b8085111561133557816000190482111561131b5761131b611189565b8085161561132857918102915b93841c93908002906112ff565b509250929050565b60008261134c57506001610859565b8161135957506000610859565b816001811461136f576002811461137957611395565b6001915050610859565b60ff84111561138a5761138a611189565b50506001821b610859565b5060208310610133831016604e8410600b84101617156113b8575081810a610859565b6113c283836112fa565b80600019048211156113d6576113d6611189565b029392505050565b60006101e2838361133d565b60006101e260ff84168361133d565b60006020828403121561140b57600080fd5b81516101e281610ea556fea264697066735822122053084eb626b7cae93468004ae6f7672350bd3d9a10788a91b52cdecc1c7003c664736f6c63430008100033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
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.