Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60206113 | 17477462 | 439 days ago | IN | 0 ETH | 0.0160722 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CurveTricryptoFactoryHandler
Compiler Version
vyper:0.3.9
Contract Source Code (Vyper language format)
# @version 0.3.9 """ @title CurveTricryptoFactoryHandler @author Curve.Fi @license Copyright (c) Curve.Fi, 2020-2023 - all rights reserved @notice A Registry Handler for the MetaRegistry """ interface BaseRegistry: def find_pool_for_coins(_from: address, _to: address, i: uint256 = 0) -> address: view def get_coin_indices(_pool: address, _from: address, _to: address) -> (uint256, uint256): view def get_balances(_pool: address) -> uint256[MAX_COINS]: view def get_coins(_pool: address) -> address[MAX_COINS]: view def get_decimals(_pool: address) -> uint256[MAX_COINS]: view def get_gauge(_pool: address) -> address: view def get_n_coins(_pool: address) -> uint256: view def get_token(_pool: address) -> address: view def pool_count() -> uint256: view def pool_list(pool_id: uint256) -> address: view interface CurvePool: def adjustment_step() -> uint256: view def admin_fee() -> uint256: view def allowed_extra_profit() -> uint256: view def A() -> uint256: view def balances(i: uint256) -> uint256: view def D() -> uint256: view def fee() -> uint256: view def fee_gamma() -> uint256: view def gamma() -> uint256: view def get_virtual_price() -> uint256: view def ma_half_time() -> uint256: view def mid_fee() -> uint256: view def out_fee() -> uint256: view def virtual_price() -> uint256: view def xcp_profit() -> uint256: view def xcp_profit_a() -> uint256: view interface ERC20: def name() -> String[64]: view def balanceOf(_addr: address) -> uint256: view def totalSupply() -> uint256: view def decimals() -> uint256: view interface GaugeController: def gauge_types(gauge: address) -> int128: view def gauges(i: uint256) -> address: view interface Gauge: def is_killed() -> bool: view # ---- constants ---- # GAUGE_CONTROLLER: constant(address) = 0x2F50D538606Fa9EDD2B11E2446BEb18C9D5846bB MAX_COINS: constant(uint256) = 3 MAX_METAREGISTRY_COINS: constant(uint256) = 8 MAX_POOLS: constant(uint256) = 65536 N_COINS: constant(uint256) = 3 # ---- storage variables ---- # base_registry: public(BaseRegistry) # ---- constructor ---- # @external def __init__(_registry_address: address): self.base_registry = BaseRegistry(_registry_address) # ---- internal methods ---- # @internal @view def _pad_uint_array(_array: uint256[MAX_COINS]) -> uint256[MAX_METAREGISTRY_COINS]: _padded_array: uint256[MAX_METAREGISTRY_COINS] = empty(uint256[MAX_METAREGISTRY_COINS]) for i in range(MAX_COINS): _padded_array[i] = _array[i] return _padded_array @internal @view def _get_balances(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]: return self._pad_uint_array(self.base_registry.get_balances(_pool)) @internal @view def _get_coins(_pool: address) -> address[MAX_METAREGISTRY_COINS]: _coins: address[MAX_COINS] = self.base_registry.get_coins(_pool) _padded_coins: address[MAX_METAREGISTRY_COINS] = empty(address[MAX_METAREGISTRY_COINS]) for i in range(MAX_COINS): _padded_coins[i] = _coins[i] return _padded_coins @internal @view def _get_decimals(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]: return self._pad_uint_array(self.base_registry.get_decimals(_pool)) @internal @view def _get_n_coins(_pool: address) -> uint256: if (self.base_registry.get_coins(_pool)[0] != empty(address)): return N_COINS return 0 @internal @view def _get_gauge_type(_gauge: address) -> int128: # try to get gauge type registered in gauge controller success: bool = False response: Bytes[32] = b"" success, response = raw_call( GAUGE_CONTROLLER, concat( method_id("gauge_type(address)"), convert(_gauge, bytes32), ), max_outsize=32, revert_on_failure=False, is_static_call=True ) if success and not Gauge(_gauge).is_killed(): return convert(response, int128) # if we are here, the call to get gauge_type failed. # in such a case, return a default value. # ethereum: mainnet crypto pools have gauge type 5 return 5 @internal @view def _is_registered(_pool: address) -> bool: return self._get_n_coins(_pool) > 0 # ---- view methods (API) of the contract ---- # @external @view def find_pool_for_coins(_from: address, _to: address, i: uint256 = 0) -> address: """ @notice checks if either of the two coins are in a base pool and then checks if the basepool lp token and the other coin have a pool. This is done because the factory does not have `underlying` methods in pools that have a basepool lp token in them @param _from Address of the _from coin @param _to Address of the _to coin @param i Index of the pool to return @return Address of the pool """ return self.base_registry.find_pool_for_coins(_from, _to, i) @external @view def get_admin_balances(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]: """ @notice Returns the balances of the admin tokens of the given pool @dev Cryptoswap pools do not store admin fees in the form of admin token balances. Instead, the admin fees are computed at the time of claim iff sufficient profits have been made. These fees are allocated to the admin by minting LP tokens (dilution). The logic to calculate fees are derived from cryptopool._claim_admin_fees() method. @param _pool Address of the pool @return uint256[MAX_METAREGISTRY_COINS] Array of admin balances """ xcp_profit: uint256 = CurvePool(_pool).xcp_profit() xcp_profit_a: uint256 = CurvePool(_pool).xcp_profit_a() admin_fee: uint256 = CurvePool(_pool).admin_fee() admin_balances: uint256[MAX_METAREGISTRY_COINS] = empty(uint256[MAX_METAREGISTRY_COINS]) # admin balances are non zero if pool has made more than allowed profits: if xcp_profit > xcp_profit_a: # calculate admin fees in lp token amounts: fees: uint256 = (xcp_profit - xcp_profit_a) * admin_fee / (2 * 10**10) if fees > 0: vprice: uint256 = CurvePool(_pool).virtual_price() frac: uint256 = vprice * 10**18 / (vprice - fees) - 10**18 # the total supply of lp token is current supply + claimable: lp_token_total_supply: uint256 = ERC20(_pool).totalSupply() d_supply: uint256 = lp_token_total_supply * frac / 10**18 lp_token_total_supply += d_supply admin_lp_frac: uint256 = d_supply * 10 ** 18 / lp_token_total_supply # get admin balances in individual assets: reserves: uint256[MAX_METAREGISTRY_COINS] = self._get_balances(_pool) for i in range(MAX_METAREGISTRY_COINS): admin_balances[i] = admin_lp_frac * reserves[i] / 10 ** 18 return admin_balances @external @view def get_balances(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]: """ @notice Returns the balances of the tokens of the given pool @param _pool Address of the pool @return uint256[MAX_METAREGISTRY_COINS] Array of balances """ return self._get_balances(_pool) @external @view def get_base_pool(_pool: address) -> address: """ @notice Returns the base pool of the given pool @dev Returns empty(address) if the pool isn't a metapool @param _pool Address of the pool @return Address of the base pool """ return empty(address) @external @view def get_coin_indices(_pool: address, _from: address, _to: address) -> (uint256, uint256, bool): """ @notice Convert coin addresses to indices for use with pool methods @param _pool Address of the pool @param _from Address of the from coin @param _to Address of the to coin @return (uint256, uint256, bool) Tuple of indices of the coins in the pool, and whether the market is an underlying market or not. """ i: uint256 = 0 j: uint256 = 0 (i, j) = self.base_registry.get_coin_indices(_pool, _from, _to) return (i, j, False) @external @view def get_coins(_pool: address) -> address[MAX_METAREGISTRY_COINS]: """ @notice Returns the coins of the given pool @param _pool Address of the pool @return address[MAX_METAREGISTRY_COINS] Array of coins """ return self._get_coins(_pool) @external @view def get_decimals(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]: """ @notice Returns the decimals of the coins in a given pool @param _pool Address of the pool @return uint256[MAX_METAREGISTRY_COINS] Array of decimals """ return self._get_decimals(_pool) @external @view def get_fees(_pool: address) -> uint256[10]: """ @notice Returns the fees of the given pool @param _pool Address of the pool @return uint256[10] Array of fees. Fees are arranged as: 1. swap fee (or `fee`) 2. admin fee 3. mid fee (fee when cryptoswap pool is pegged) 4. out fee (fee when cryptoswap pool depegs) """ fees: uint256[10] = empty(uint256[10]) pool_fees: uint256[4] = [CurvePool(_pool).fee(), CurvePool(_pool).admin_fee(), CurvePool(_pool).mid_fee(), CurvePool(_pool).out_fee()] for i in range(4): fees[i] = pool_fees[i] return fees @external @view def get_gauges(_pool: address) -> (address[10], int128[10]): """ @notice Returns the gauges of the given pool @param _pool Address of the pool @return (address[10], int128[10]) Tuple of gauges. Gauges are arranged as: 1. gauge addresses 2. gauge types """ gauges: address[10] = empty(address[10]) types: int128[10] = empty(int128[10]) gauges[0] = self.base_registry.get_gauge(_pool) types[0] = self._get_gauge_type(gauges[0]) return (gauges, types) @external @view def get_lp_token(_pool: address) -> address: """ @notice Returns the Liquidity Provider token of the given pool @param _pool Address of the pool @return Address of the Liquidity Provider token """ return _pool @external @view def get_n_coins(_pool: address) -> uint256: """ @notice Returns the number of coins in the given pool @param _pool Address of the pool @return uint256 Number of coins """ return self._get_n_coins(_pool) @external @view def get_n_underlying_coins(_pool: address) -> uint256: """ @notice Get the number of underlying coins in a pool @param _pool Address of the pool @return uint256 Number of underlying coins """ _coins: address[MAX_METAREGISTRY_COINS] = self._get_coins(_pool) for i in range(MAX_METAREGISTRY_COINS): if _coins[i] == empty(address): return i raise @external @view def get_pool_asset_type(_pool: address) -> uint256: """ @notice Returns the asset type of the given pool @dev Returns 4: 0 = USD, 1 = ETH, 2 = BTC, 3 = Other @param _pool Address of the pool @return uint256 Asset type """ return 3 @external @view def get_pool_from_lp_token(_lp_token: address) -> address: """ @notice Returns the pool of the given Liquidity Provider token @param _lp_token Address of the Liquidity Provider token @return Address of the pool """ if self._get_n_coins(_lp_token) > 0: return _lp_token return empty(address) @external @view def get_pool_name(_pool: address) -> String[64]: """ @notice Returns the name of the given pool @param _pool Address of the pool @return String[64] Name of the pool """ return ERC20(self.base_registry.get_token(_pool)).name() @external @view def get_pool_params(_pool: address) -> uint256[20]: """ @notice returns pool params given a cryptopool address @dev contains all settable parameter that alter the pool's performance @dev only applicable for cryptopools @param _pool Address of the pool for which data is being queried. """ pool_params: uint256[20] = empty(uint256[20]) pool_params[0] = CurvePool(_pool).A() pool_params[1] = CurvePool(_pool).D() pool_params[2] = CurvePool(_pool).gamma() pool_params[3] = CurvePool(_pool).allowed_extra_profit() pool_params[4] = CurvePool(_pool).fee_gamma() pool_params[5] = CurvePool(_pool).adjustment_step() pool_params[6] = CurvePool(_pool).ma_half_time() return pool_params @external @view def get_underlying_balances(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]: """ @notice Returns the underlying balances of the given pool @param _pool Address of the pool @return uint256[MAX_METAREGISTRY_COINS] Array of underlying balances """ return self._get_balances(_pool) @external @view def get_underlying_coins(_pool: address) -> address[MAX_METAREGISTRY_COINS]: """ @notice Returns the underlying coins of the given pool @param _pool Address of the pool @return address[MAX_METAREGISTRY_COINS] Array of underlying coins """ return self._get_coins(_pool) @external @view def get_underlying_decimals(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]: """ @notice Returns the underlying decimals of the given pool @param _pool Address of the pool @return uint256[MAX_METAREGISTRY_COINS] Array of underlying decimals """ return self._get_decimals(_pool) @external @view def get_virtual_price_from_lp_token(_token: address) -> uint256: """ @notice Returns the virtual price of the given Liquidity Provider token @param _token Address of the Liquidity Provider token @return uint256 Virtual price """ return CurvePool(_token).get_virtual_price() @external @view def is_meta(_pool: address) -> bool: """ @notice Returns whether the given pool is a meta pool @param _pool Address of the pool @return bool Whether the pool is a meta pool """ return False @external @view def is_registered(_pool: address) -> bool: """ @notice Check if a pool belongs to the registry using get_n_coins @param _pool The address of the pool @return A bool corresponding to whether the pool belongs or not """ return self._get_n_coins(_pool) > 0 @external @view def pool_count() -> uint256: """ @notice Returns the number of pools in the registry @return uint256 Number of pools """ return self.base_registry.pool_count() @external @view def pool_list(_index: uint256) -> address: """ @notice Returns the address of the pool at the given index @param _index Index of the pool @return Address of the pool """ return self.base_registry.pool_list(_index)
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_registry_address","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"find_pool_for_coins","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"find_pool_for_coins","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"i","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_admin_balances","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[8]"}]},{"stateMutability":"view","type":"function","name":"get_balances","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[8]"}]},{"stateMutability":"view","type":"function","name":"get_base_pool","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_coin_indices","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"get_coins","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address[8]"}]},{"stateMutability":"view","type":"function","name":"get_decimals","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[8]"}]},{"stateMutability":"view","type":"function","name":"get_fees","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[10]"}]},{"stateMutability":"view","type":"function","name":"get_gauges","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address[10]"},{"name":"","type":"int128[10]"}]},{"stateMutability":"view","type":"function","name":"get_lp_token","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_n_coins","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_n_underlying_coins","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_pool_asset_type","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_pool_from_lp_token","inputs":[{"name":"_lp_token","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_pool_name","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"get_pool_params","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[20]"}]},{"stateMutability":"view","type":"function","name":"get_underlying_balances","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[8]"}]},{"stateMutability":"view","type":"function","name":"get_underlying_coins","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address[8]"}]},{"stateMutability":"view","type":"function","name":"get_underlying_decimals","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[8]"}]},{"stateMutability":"view","type":"function","name":"get_virtual_price_from_lp_token","inputs":[{"name":"_token","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"is_meta","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"is_registered","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"pool_count","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"pool_list","inputs":[{"name":"_index","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"base_registry","inputs":[],"outputs":[{"name":"","type":"address"}]}]
Contract Creation Code
602061134a5f395f518060a01c6113465760405234611346576040515f5561131661002f61000039611316610000f36003361161000c57610e79565b5f3560e01c346113055763b229777c811861002c575f5460405260206040f35b63a87df06c81186100485760443610611305575f608052610062565b636982eb0b81186100d25760643610611305576044356080525b6004358060a01c611305576040526024358060a01c6113055760605260205f54636982eb0b60a05260405160c05260605160e05260805161010052602060a0606460bc845afa6100b4573d5f5f3e3d5ffd5b60203d106113055760a0518060a01c61130557610120526101209050f35b63c11e45b8811861040a5760243610611305576004358060a01c611305576103605261036051637ba1a74d6103a05260206103a060046103bc845afa61011a573d5f5f3e3d5ffd5b60203d10611305576103a09050516103805261036051630b7b594b6103c05260206103c060046103dc845afa610152573d5f5f3e3d5ffd5b60203d10611305576103c09050516103a0526103605163fee3f7f96103e05260206103e060046103fc845afa61018a573d5f5f3e3d5ffd5b60203d10611305576103e09050516103c052610100366103e0376103a05161038051111561040257610380516103a05180820382811161130557905090506103c05180820281158383830414171561130557905090506404a817c800810490506104e0526104e051156104025761036051630c46b72a610520526020610520600461053c845afa61021d573d5f5f3e3d5ffd5b60203d10611305576105209050516105005261050051670de0b6b3a7640000810281670de0b6b3a7640000820418611305579050610500516104e051808203828111611305579050905080156113055780820490509050670de0b6b3a7640000810381811161130557905061052052610360516318160ddd610560526020610560600461057c845afa6102b2573d5f5f3e3d5ffd5b60203d10611305576105609050516105405261054051610520518082028115838383041417156113055790509050670de0b6b3a76400008104905061056052610540516105605180820182811061130557905090506105405261056051670de0b6b3a7640000810281670de0b6b3a7640000820418611305579050610540518015611305578082049050905061058052610360516101c0526103556106a0610f05565b6106a080516105a05260208101516105c05260408101516105e05260608101516106005260808101516106205260a08101516106405260c08101516106605260e081015161068052505f6008905b806106a052610580516106a051600781116113055760051b6105a001518082028115838383041417156113055790509050670de0b6b3a7640000810490506106a051600781116113055760051b6103e001526001018181186103a35750505b6101006103e0f35b6392e3cc2d81186104475760243610611305576004358060a01c6113055761036052610100610360516101c052610442610380610f05565b610380f35b636f20d6dd81186104725760243610611305576004358060a01c611305576040525f60605260206060f35b63eb85226d811861051d5760643610611305576004358060a01c611305576040526024358060a01c611305576060526044358060a01c6113055760805260403660a0375f5463eb85226d60e052604051610100526060516101205260805161014052604060e0606460fc845afa6104eb573d5f5f3e3d5ffd5b60403d106113055760e09050805160a052602081015160c0525060a05160e05260c051610100525f61012052606060e0f35b639ac90d3d81186105595760243610611305576004358060a01c611305576101e0526101006101e051604052610554610200610fb0565b610200f35b6352b5155581186105965760243610611305576004358060a01c6113055761036052610100610360516101c0526105916103806110b1565b610380f35b637cdb72b081186106de5760243610611305576004358060a01c611305576040526101403660603760405163ddca3f43610220526020610220600461023c845afa6105e3573d5f5f3e3d5ffd5b60203d10611305576102209050516101a05260405163fee3f7f9610260526020610260600461027c845afa61061a573d5f5f3e3d5ffd5b60203d10611305576102609050516101c0526040516392526c0c6102a05260206102a060046102bc845afa610651573d5f5f3e3d5ffd5b60203d10611305576102a09050516101e05260405163ee8de6756102e05260206102e060046102fc845afa610688573d5f5f3e3d5ffd5b60203d10611305576102e0905051610200525f6004905b806102205261022051600381116113055760051b6101a0015161022051600981116113055760051b6060015260010181811861069f5750506101406060f35b6356059ffb81186108185760243610611305576004358060a01c611305576101a052610280366101c0375f5463daf297b9610440526101a051610460526020610440602461045c845afa610734573d5f5f3e3d5ffd5b60203d1061130557610440518060a01c61130557610480526104809050516101c0526101c0516040526107686104406111d2565b61044051610300526101c051610440526101e051610460526102005161048052610220516104a052610240516104c052610260516104e05261028051610500526102a051610520526102c051610540526102e051610560526103005161058052610320516105a052610340516105c052610360516105e05261038051610600526103a051610620526103c051610640526103e051610660526104005161068052610420516106a052610280610440f35b6337951049811861083f5760243610611305576004358060a01c6113055760405260206040f35b63940494f1811861087a5760243610611305576004358060a01c611305576101405260206101405160405261087561016061115c565b610160f35b630a700c0881186109375760243610611305576004358060a01c611305576101e0526101e0516040526108ae610300610fb0565b61030080516102005260208101516102205260408101516102405260608101516102605260808101516102805260a08101516102a05260c08101516102c05260e08101516102e052505f6008905b806103005261030051600781116113055760051b61020001516109255750506020610300610935565b6001018181186108fc5750505f5ffd5bf35b6366d3966c81186109635760243610611305576004358060a01c61130557604052600360605260206060f35b63bdf475c381186109b75760243610611305576004358060a01c61130557610140526101405160405261099761016061115c565b61016051156109aa5760206101406109b5565b5f6101605260206101605bf35b635c9117418118610abf5760243610611305576004358060a01c611305576040526020806101c0525f5463977d9122606052604051608052602060606024607c845afa610a06573d5f5f3e3d5ffd5b60203d10611305576060518060a01c6113055760a05260a09050516306fdde0360c052608060c0600460dc845afa610a40573d5f5f3e3d5ffd5b60403d106113055760c05160c00160408151116113055780516020820181610180838360045afa5050806101605250506101609050816101c001815160208301602083018281848460045afa505050808252508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506101c0f35b63688532aa8118610c6a5760243610611305576004358060a01c611305576040526102803660603760405163f446c1d06102e05260206102e060046102fc845afa610b0c573d5f5f3e3d5ffd5b60203d10611305576102e0905051606052604051630f529ba26102e05260206102e060046102fc845afa610b42573d5f5f3e3d5ffd5b60203d10611305576102e090505160805260405163b13739296102e05260206102e060046102fc845afa610b78573d5f5f3e3d5ffd5b60203d10611305576102e090505160a0526040516349fe9e776102e05260206102e060046102fc845afa610bae573d5f5f3e3d5ffd5b60203d10611305576102e090505160c0526040516372d4f0e26102e05260206102e060046102fc845afa610be4573d5f5f3e3d5ffd5b60203d10611305576102e090505160e05260405163083812e56102e05260206102e060046102fc845afa610c1a573d5f5f3e3d5ffd5b60203d10611305576102e09050516101005260405163662b62746102e05260206102e060046102fc845afa610c51573d5f5f3e3d5ffd5b60203d10611305576102e0905051610120526102806060f35b6359f4f3518118610ca75760243610611305576004358060a01c6113055761036052610100610360516101c052610ca2610380610f05565b610380f35b63a77576ef8118610ce35760243610611305576004358060a01c611305576101e0526101006101e051604052610cde610200610fb0565b610200f35b634cb088f18118610d205760243610611305576004358060a01c6113055761036052610100610360516101c052610d1b6103806110b1565b610380f35b63c5b7074a8118610d735760243610611305576004358060a01c61130557604052602060405163bb7b8b80606052602060606004607c845afa610d65573d5f5f3e3d5ffd5b60203d106113055760609050f35b63e4d332a98118610d9e5760243610611305576004358060a01c611305576040525f60605260206060f35b63619ea8068118610de35760243610611305576004358060a01c611305576101405261014051604052610dd261016061115c565b610160511515610180526020610180f35b63956aae3a8118610e1f5760205f5463956aae3a604052602060406004605c845afa610e11573d5f5f3e3d5ffd5b60203d106113055760409050f35b633a1d5d8e8118610e7757602436106113055760205f54633a1d5d8e604052600435606052602060406024605c845afa610e5b573d5f5f3e3d5ffd5b60203d10611305576040518060a01c6113055760805260809050f35b505b5f5ffd5b6101003660a0375f6003905b806101a0526101a051600281116113055760051b604001516101a051600781116113055760051b60a00152600101818118610e8957505060a051815260c051602082015260e05160408201526101005160608201526101205160808201526101405160a08201526101605160c08201526101805160e082015250565b5f546392e3cc2d6101e0526101c0516102005260606101e060246101fc845afa610f31573d5f5f3e3d5ffd5b60603d10611305576101e0905080516040526020810151606052604081015160805250610f5f610260610e7d565b610260805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301525050565b5f54639ac90d3d60c05260405160e052606060c0602460dc845afa610fd7573d5f5f3e3d5ffd5b60603d106113055760c0518060a01c611305576101405260e0518060a01c6113055761016052610100518060a01c6113055761018052610140905080516060526020810151608052604081015160a052506101003660c0375f6003905b806101c0526101c051600281116113055760051b606001516101c051600781116113055760051b60c0015260010181811861103457505060c051815260e05160208201526101005160408201526101205160608201526101405160808201526101605160a08201526101805160c08201526101a05160e082015250565b5f546352b515556101e0526101c0516102005260606101e060246101fc845afa6110dd573d5f5f3e3d5ffd5b60603d10611305576101e090508051604052602081015160605260408101516080525061110b610260610e7d565b610260805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301525050565b5f54639ac90d3d606052604051608052606060606024607c845afa611183573d5f5f3e3d5ffd5b60603d10611305576060518060a01c6113055760e0526080518060a01c611305576101005260a0518060a01c611305576101205260e0905051156111cb5760038152506111d0565b5f8152505b565b5f6060525f60c05260c080518060805250505f600460c0527f1e4274770000000000000000000000000000000000000000000000000000000060e05260c080516020820183610120018151815250508083019250505060405181610120015260208101905080610100526101005050602061018061010051610120732f50d538606fa9edd2b11e2446beb18c9d5846bb5afa6060523d602081183d602010021861016052610160805160208201805160a05250806080525050606051611298575f6112d9565b604051639c868ac060c052602060c0600460dc845afa6112ba573d5f5f3e3d5ffd5b60203d106113055760c0518060011c6113055761010052610100905051155b156112fd5760a05160805160200360031b1d80600f0b811861130557815250611303565b60058152505b565b5f80fda165767970657283000309000b005b5f80fd0000000000000000000000000c0e5f2ff0ff18a3be9b835635039256dc4b4963
Deployed Bytecode
0x6003361161000c57610e79565b5f3560e01c346113055763b229777c811861002c575f5460405260206040f35b63a87df06c81186100485760443610611305575f608052610062565b636982eb0b81186100d25760643610611305576044356080525b6004358060a01c611305576040526024358060a01c6113055760605260205f54636982eb0b60a05260405160c05260605160e05260805161010052602060a0606460bc845afa6100b4573d5f5f3e3d5ffd5b60203d106113055760a0518060a01c61130557610120526101209050f35b63c11e45b8811861040a5760243610611305576004358060a01c611305576103605261036051637ba1a74d6103a05260206103a060046103bc845afa61011a573d5f5f3e3d5ffd5b60203d10611305576103a09050516103805261036051630b7b594b6103c05260206103c060046103dc845afa610152573d5f5f3e3d5ffd5b60203d10611305576103c09050516103a0526103605163fee3f7f96103e05260206103e060046103fc845afa61018a573d5f5f3e3d5ffd5b60203d10611305576103e09050516103c052610100366103e0376103a05161038051111561040257610380516103a05180820382811161130557905090506103c05180820281158383830414171561130557905090506404a817c800810490506104e0526104e051156104025761036051630c46b72a610520526020610520600461053c845afa61021d573d5f5f3e3d5ffd5b60203d10611305576105209050516105005261050051670de0b6b3a7640000810281670de0b6b3a7640000820418611305579050610500516104e051808203828111611305579050905080156113055780820490509050670de0b6b3a7640000810381811161130557905061052052610360516318160ddd610560526020610560600461057c845afa6102b2573d5f5f3e3d5ffd5b60203d10611305576105609050516105405261054051610520518082028115838383041417156113055790509050670de0b6b3a76400008104905061056052610540516105605180820182811061130557905090506105405261056051670de0b6b3a7640000810281670de0b6b3a7640000820418611305579050610540518015611305578082049050905061058052610360516101c0526103556106a0610f05565b6106a080516105a05260208101516105c05260408101516105e05260608101516106005260808101516106205260a08101516106405260c08101516106605260e081015161068052505f6008905b806106a052610580516106a051600781116113055760051b6105a001518082028115838383041417156113055790509050670de0b6b3a7640000810490506106a051600781116113055760051b6103e001526001018181186103a35750505b6101006103e0f35b6392e3cc2d81186104475760243610611305576004358060a01c6113055761036052610100610360516101c052610442610380610f05565b610380f35b636f20d6dd81186104725760243610611305576004358060a01c611305576040525f60605260206060f35b63eb85226d811861051d5760643610611305576004358060a01c611305576040526024358060a01c611305576060526044358060a01c6113055760805260403660a0375f5463eb85226d60e052604051610100526060516101205260805161014052604060e0606460fc845afa6104eb573d5f5f3e3d5ffd5b60403d106113055760e09050805160a052602081015160c0525060a05160e05260c051610100525f61012052606060e0f35b639ac90d3d81186105595760243610611305576004358060a01c611305576101e0526101006101e051604052610554610200610fb0565b610200f35b6352b5155581186105965760243610611305576004358060a01c6113055761036052610100610360516101c0526105916103806110b1565b610380f35b637cdb72b081186106de5760243610611305576004358060a01c611305576040526101403660603760405163ddca3f43610220526020610220600461023c845afa6105e3573d5f5f3e3d5ffd5b60203d10611305576102209050516101a05260405163fee3f7f9610260526020610260600461027c845afa61061a573d5f5f3e3d5ffd5b60203d10611305576102609050516101c0526040516392526c0c6102a05260206102a060046102bc845afa610651573d5f5f3e3d5ffd5b60203d10611305576102a09050516101e05260405163ee8de6756102e05260206102e060046102fc845afa610688573d5f5f3e3d5ffd5b60203d10611305576102e0905051610200525f6004905b806102205261022051600381116113055760051b6101a0015161022051600981116113055760051b6060015260010181811861069f5750506101406060f35b6356059ffb81186108185760243610611305576004358060a01c611305576101a052610280366101c0375f5463daf297b9610440526101a051610460526020610440602461045c845afa610734573d5f5f3e3d5ffd5b60203d1061130557610440518060a01c61130557610480526104809050516101c0526101c0516040526107686104406111d2565b61044051610300526101c051610440526101e051610460526102005161048052610220516104a052610240516104c052610260516104e05261028051610500526102a051610520526102c051610540526102e051610560526103005161058052610320516105a052610340516105c052610360516105e05261038051610600526103a051610620526103c051610640526103e051610660526104005161068052610420516106a052610280610440f35b6337951049811861083f5760243610611305576004358060a01c6113055760405260206040f35b63940494f1811861087a5760243610611305576004358060a01c611305576101405260206101405160405261087561016061115c565b610160f35b630a700c0881186109375760243610611305576004358060a01c611305576101e0526101e0516040526108ae610300610fb0565b61030080516102005260208101516102205260408101516102405260608101516102605260808101516102805260a08101516102a05260c08101516102c05260e08101516102e052505f6008905b806103005261030051600781116113055760051b61020001516109255750506020610300610935565b6001018181186108fc5750505f5ffd5bf35b6366d3966c81186109635760243610611305576004358060a01c61130557604052600360605260206060f35b63bdf475c381186109b75760243610611305576004358060a01c61130557610140526101405160405261099761016061115c565b61016051156109aa5760206101406109b5565b5f6101605260206101605bf35b635c9117418118610abf5760243610611305576004358060a01c611305576040526020806101c0525f5463977d9122606052604051608052602060606024607c845afa610a06573d5f5f3e3d5ffd5b60203d10611305576060518060a01c6113055760a05260a09050516306fdde0360c052608060c0600460dc845afa610a40573d5f5f3e3d5ffd5b60403d106113055760c05160c00160408151116113055780516020820181610180838360045afa5050806101605250506101609050816101c001815160208301602083018281848460045afa505050808252508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506101c0f35b63688532aa8118610c6a5760243610611305576004358060a01c611305576040526102803660603760405163f446c1d06102e05260206102e060046102fc845afa610b0c573d5f5f3e3d5ffd5b60203d10611305576102e0905051606052604051630f529ba26102e05260206102e060046102fc845afa610b42573d5f5f3e3d5ffd5b60203d10611305576102e090505160805260405163b13739296102e05260206102e060046102fc845afa610b78573d5f5f3e3d5ffd5b60203d10611305576102e090505160a0526040516349fe9e776102e05260206102e060046102fc845afa610bae573d5f5f3e3d5ffd5b60203d10611305576102e090505160c0526040516372d4f0e26102e05260206102e060046102fc845afa610be4573d5f5f3e3d5ffd5b60203d10611305576102e090505160e05260405163083812e56102e05260206102e060046102fc845afa610c1a573d5f5f3e3d5ffd5b60203d10611305576102e09050516101005260405163662b62746102e05260206102e060046102fc845afa610c51573d5f5f3e3d5ffd5b60203d10611305576102e0905051610120526102806060f35b6359f4f3518118610ca75760243610611305576004358060a01c6113055761036052610100610360516101c052610ca2610380610f05565b610380f35b63a77576ef8118610ce35760243610611305576004358060a01c611305576101e0526101006101e051604052610cde610200610fb0565b610200f35b634cb088f18118610d205760243610611305576004358060a01c6113055761036052610100610360516101c052610d1b6103806110b1565b610380f35b63c5b7074a8118610d735760243610611305576004358060a01c61130557604052602060405163bb7b8b80606052602060606004607c845afa610d65573d5f5f3e3d5ffd5b60203d106113055760609050f35b63e4d332a98118610d9e5760243610611305576004358060a01c611305576040525f60605260206060f35b63619ea8068118610de35760243610611305576004358060a01c611305576101405261014051604052610dd261016061115c565b610160511515610180526020610180f35b63956aae3a8118610e1f5760205f5463956aae3a604052602060406004605c845afa610e11573d5f5f3e3d5ffd5b60203d106113055760409050f35b633a1d5d8e8118610e7757602436106113055760205f54633a1d5d8e604052600435606052602060406024605c845afa610e5b573d5f5f3e3d5ffd5b60203d10611305576040518060a01c6113055760805260809050f35b505b5f5ffd5b6101003660a0375f6003905b806101a0526101a051600281116113055760051b604001516101a051600781116113055760051b60a00152600101818118610e8957505060a051815260c051602082015260e05160408201526101005160608201526101205160808201526101405160a08201526101605160c08201526101805160e082015250565b5f546392e3cc2d6101e0526101c0516102005260606101e060246101fc845afa610f31573d5f5f3e3d5ffd5b60603d10611305576101e0905080516040526020810151606052604081015160805250610f5f610260610e7d565b610260805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301525050565b5f54639ac90d3d60c05260405160e052606060c0602460dc845afa610fd7573d5f5f3e3d5ffd5b60603d106113055760c0518060a01c611305576101405260e0518060a01c6113055761016052610100518060a01c6113055761018052610140905080516060526020810151608052604081015160a052506101003660c0375f6003905b806101c0526101c051600281116113055760051b606001516101c051600781116113055760051b60c0015260010181811861103457505060c051815260e05160208201526101005160408201526101205160608201526101405160808201526101605160a08201526101805160c08201526101a05160e082015250565b5f546352b515556101e0526101c0516102005260606101e060246101fc845afa6110dd573d5f5f3e3d5ffd5b60603d10611305576101e090508051604052602081015160605260408101516080525061110b610260610e7d565b610260805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301525050565b5f54639ac90d3d606052604051608052606060606024607c845afa611183573d5f5f3e3d5ffd5b60603d10611305576060518060a01c6113055760e0526080518060a01c611305576101005260a0518060a01c611305576101205260e0905051156111cb5760038152506111d0565b5f8152505b565b5f6060525f60c05260c080518060805250505f600460c0527f1e4274770000000000000000000000000000000000000000000000000000000060e05260c080516020820183610120018151815250508083019250505060405181610120015260208101905080610100526101005050602061018061010051610120732f50d538606fa9edd2b11e2446beb18c9d5846bb5afa6060523d602081183d602010021861016052610160805160208201805160a05250806080525050606051611298575f6112d9565b604051639c868ac060c052602060c0600460dc845afa6112ba573d5f5f3e3d5ffd5b60203d106113055760c0518060011c6113055761010052610100905051155b156112fd5760a05160805160200360031b1d80600f0b811861130557815250611303565b60058152505b565b5f80fda165767970657283000309000b
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000c0e5f2ff0ff18a3be9b835635039256dc4b4963
-----Decoded View---------------
Arg [0] : _registry_address (address): 0x0c0e5f2fF0ff18a3be9b835635039256dC4B4963
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000c0e5f2ff0ff18a3be9b835635039256dc4b4963
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.