Overview
S Balance
0 S
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CurveTwocryptoSwapFactoryHandler
Compiler Version
vyper:0.3.10
Contract Source Code (Vyper language format)
# pragma version 0.3.10 # pragma evm-version paris """ @title CurveTwocryptoSwapFactoryHandler @custom:version 1.1.0 @author Curve.Fi @license Copyright (c) Curve.Fi, 2020-2024 - all rights reserved @notice TwocryptoSwap Factory Handler for the MetaRegistry """ version: public(constant(String[8])) = "1.1.0" 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 TricryptoNG: 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_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 ---- # MAX_COINS: constant(uint256) = 2 MAX_METAREGISTRY_COINS: constant(uint256) = 8 MAX_POOLS: constant(uint256) = 65536 N_COINS: constant(uint256) = 2 # ---- 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 _is_registered(_pool: address) -> bool: return self._get_coins(_pool)[0] != empty(address) @internal @view def _find_pool_for_coins(_from: address, _to: address, i: uint256) -> address: success: bool = False response: Bytes[32] = b"" success, response = raw_call( self.base_registry.address, concat( method_id("find_pool_for_coins(address,address,uint256)"), convert(_from, bytes32), convert(_to, bytes32), convert(i, bytes32) ), max_outsize=32, revert_on_failure=False, is_static_call=True ) if success: return convert(response, address) return empty(address) # ---- 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._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 = TricryptoNG(_pool).xcp_profit() xcp_profit_a: uint256 = TricryptoNG(_pool).xcp_profit_a() admin_fee: uint256 = TricryptoNG(_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 = TricryptoNG(_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] = [ TricryptoNG(_pool).fee(), TricryptoNG(_pool).ADMIN_FEE(), TricryptoNG(_pool).mid_fee(), TricryptoNG(_pool).out_fee(), ] for i in range(4): fees[i] = pool_fees[i] return fees @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 2 @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 """ return 2 @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._is_registered(_lp_token): 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] = TricryptoNG(_pool).A() pool_params[1] = TricryptoNG(_pool).D() pool_params[2] = TricryptoNG(_pool).gamma() pool_params[3] = TricryptoNG(_pool).allowed_extra_profit() pool_params[4] = TricryptoNG(_pool).fee_gamma() pool_params[5] = TricryptoNG(_pool).adjustment_step() pool_params[6] = TricryptoNG(_pool).ma_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 TricryptoNG(_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._is_registered(_pool) @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_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":"version","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"base_registry","inputs":[],"outputs":[{"name":"","type":"address"}]}]
Contract Creation Code
346100325760206110e56000396000518060a01c6100325760405260405160005561109961003761000039611099610000f35b600080fd60003560e01c60026018820660011b61106901601e39600051565b6354fd4d50811861009957346110645760208060805260056040527f312e312e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f35b63c11e45b88118610d7357602436103417611064576004358060a01c611064576103205261032051637ba1a74d610360526020610360600461037c845afa6100e6573d600060003e3d6000fd5b60203d10611064576103609050516103405261032051630b7b594b610380526020610380600461039c845afa610121573d600060003e3d6000fd5b60203d10611064576103809050516103605261032051634469ed146103a05260206103a060046103bc845afa61015c573d600060003e3d6000fd5b60203d10611064576103a090505161038052610100366103a037610360516103405111156103a557610340516103605180820382811161106457905090506103805180820281158383830414171561106457905090506404a817c800810490506104a0526104a051156103a55761032051630c46b72a6104e05260206104e060046104fc845afa6101f2573d600060003e3d6000fd5b60203d10611064576104e09050516104c0526104c051670de0b6b3a7640000810281670de0b6b3a76400008204186110645790506104c0516104a051808203828111611064579050905080156110645780820490509050670de0b6b3a764000081038181116110645790506104e052610320516318160ddd610520526020610520600461053c845afa61028a573d600060003e3d6000fd5b60203d106110645761052090505161050052610500516104e0518082028115838383041417156110645790509050670de0b6b3a76400008104905061052052610500516105205180820182811061106457905090506105005261052051670de0b6b3a7640000810281670de0b6b3a7640000820418611064579050610500518015611064578082049050905061054052610320516101a05261032d610660610dce565b6106606101006105606101008360045afa505060006008905b80610660526105405161066051600781116110645760051b61056001518082028115838383041417156110645790509050670de0b6b3a76400008104905061066051600781116110645760051b6103a001526001018181186103465750505b6101006103a0f3610d73565b63b229777c8118610d7357346110645760005460405260206040f3610d73565b63a87df06c8118610d73576044361034176110645760006102605261041256610d73565b636982eb0b81186104575760643610341761106457604435610260525b6004358060a01c61106457610220526024358060a01c61106457610240526020610220516040526102405160605261026051608052610452610280610f78565b610280f35b63bdf475c38118610d7357602436103417611064576004358060a01c611064576102e0526102e0516101c05261048e610300610f5b565b61030051156104a15760206102e06104ad565b60006103005260206103005bf3610d73565b6392e3cc2d81186104f257602436103417611064576004358060a01c6110645761032052610100610320516101a0526104ed610340610dce565b610340f35b63eb85226d8118610d7357606436103417611064576004358060a01c611064576040526024358060a01c611064576060526044358060a01c6110645760805260403660a03760005463eb85226d60e052604051610100526060516101205260805161014052604060e0606460fc845afa610571573d600060003e3d6000fd5b60403d106110645760e09050805160a052602081015160c0525060a05160e05260c05161010052600061012052606060e0f3610d73565b636f20d6dd8118610d7357602436103417611064576004358060a01c61106457604052600060605260206060f3610d73565b639ac90d3d811861061857602436103417611064576004358060a01c611064576101c0526101006101c0516040526106136101e0610e38565b6101e0f35b6352b515558118610d7357602436103417611064576004358060a01c6110645761032052610100610320516101a052610652610340610ef1565b610340f3610d73565b637cdb72b08118610d7357602436103417611064576004358060a01c611064576040526101403660603760405163ddca3f43610220526020610220600461023c845afa6106ad573d600060003e3d6000fd5b60203d10611064576102209050516101a052604051634469ed14610260526020610260600461027c845afa6106e7573d600060003e3d6000fd5b60203d10611064576102609050516101c0526040516392526c0c6102a05260206102a060046102bc845afa610721573d600060003e3d6000fd5b60203d10611064576102a09050516101e05260405163ee8de6756102e05260206102e060046102fc845afa61075b573d600060003e3d6000fd5b60203d10611064576102e09050516102005260006004905b806102205261022051600381116110645760051b6101a0015161022051600981116110645760051b606001526001018181186107735750506101406060f3610d73565b633795104981186107df57602436103417611064576004358060a01c6110645760405260206040f35b634cb088f18118610d7357602436103417611064576004358060a01c6110645761032052610100610320516101a052610819610340610ef1565b610340f3610d73565b63940494f1811861085057602436103417611064576004358060a01c61106457604052600260605260206060f35b635c911741811861095157602436103417611064576004358060a01c611064576040526020806101c05260005463977d9122606052604051608052602060606024607c845afa6108a5573d600060003e3d6000fd5b60203d10611064576060518060a01c6110645760a05260a09050516306fdde0360c052608060c0600460dc845afa6108e2573d600060003e3d6000fd5b60403d106110645760c05160c001604081511161106457602081510180610160828460045afa5050506101609050816101c00160208251018082828560045afa50508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506101c0f35b63e4d332a98118610d7357602436103417611064576004358060a01c61106457604052600060605260206060f3610d73565b630a700c088118610d7357602436103417611064576004358060a01c61106457604052600260605260206060f3610d73565b6366d3966c8118610d7357602436103417611064576004358060a01c61106457604052600360605260206060f3610d73565b63688532aa8118610ba957602436103417611064576004358060a01c611064576040526102803660603760405163f446c1d06102e05260206102e060046102fc845afa610a39573d600060003e3d6000fd5b60203d10611064576102e0905051606052604051630f529ba26102e05260206102e060046102fc845afa610a72573d600060003e3d6000fd5b60203d10611064576102e090505160805260405163b13739296102e05260206102e060046102fc845afa610aab573d600060003e3d6000fd5b60203d10611064576102e090505160a0526040516349fe9e776102e05260206102e060046102fc845afa610ae4573d600060003e3d6000fd5b60203d10611064576102e090505160c0526040516372d4f0e26102e05260206102e060046102fc845afa610b1d573d600060003e3d6000fd5b60203d10611064576102e090505160e05260405163083812e56102e05260206102e060046102fc845afa610b56573d600060003e3d6000fd5b60203d10611064576102e0905051610100526040516309c3da6a6102e05260206102e060046102fc845afa610b90573d600060003e3d6000fd5b60203d10611064576102e0905051610120526102806060f35b63956aae3a8118610d73573461106457602060005463956aae3a604052602060406004605c845afa610be0573d600060003e3d6000fd5b60203d106110645760409050f3610d73565b6359f4f3518118610d7357602436103417611064576004358060a01c6110645761032052610100610320516101a052610c2c610340610dce565b610340f3610d73565b63a77576ef8118610d7357602436103417611064576004358060a01c611064576101c0526101006101c051604052610c6e6101e0610e38565b6101e0f3610d73565b63c5b7074a8118610d7357602436103417611064576004358060a01c61106457604052602060405163bb7b8b80606052602060606004607c845afa610cc1573d600060003e3d6000fd5b60203d106110645760609050f3610d73565b63619ea8068118610d7357602436103417611064576004358060a01c611064576102e05260206102e0516101c052610d0c610300610f5b565b610300f3610d73565b633a1d5d8e8118610d7357602436103417611064576020600054633a1d5d8e604052600435606052602060406024605c845afa610d57573d600060003e3d6000fd5b60203d10611064576040518060a01c6110645760805260809050f35b60006000fd5b6101003660803760006002905b806101805261018051600181116110645760051b6040015161018051600781116110645760051b60800152600101818118610d8657505061010081610100608060045afa5050565b6000546392e3cc2d6101c0526101a0516101e05260406101c060246101dc845afa610dfe573d600060003e3d6000fd5b60403d10611064576101c090508051604052602081015160605250610e24610220610d79565b610220610100826101008360045afa505050565b600054639ac90d3d60a05260405160c052604060a0602460bc845afa610e63573d600060003e3d6000fd5b60403d106110645760a0518060a01c611064576101005260c0518060a01c6110645761012052610100905080516060526020810151608052506101003660a03760006002905b806101a0526101a051600181116110645760051b606001516101a051600781116110645760051b60a00152600101818118610ea95750506101008161010060a060045afa5050565b6000546352b515556101c0526101a0516101e05260406101c060246101dc845afa610f21573d600060003e3d6000fd5b60403d10611064576101c090508051604052602081015160605250610f47610220610d79565b610220610100826101008360045afa505050565b6101c051604052610f6d6101e0610e38565b6101e0511515815250565b60403660a0376000545a60006004610100527f6982eb0b0000000000000000000000000000000000000000000000000000000061012052610100805160208201836101600181518152505080830192505050604051816101600152602081019050606051816101600152602081019050608051816101600152602081019050806101405261014050506020610200610140516101608585fa9050905060a0523d602081183d60201002186101e0526101e0805160c052602081015160e0525060a0511561105c5760e05160c05160200360031b1c8060a01c61106457815250611062565b60008152505b565b600080fd065b08220c770d7309b505a80cd30d73001a0bf209e70d7303b104b30d730d73098307b60d7303f503d105da0d150c358419109981183000a16576797065728300030a00150000000000000000000000001a83348f9ccfd3fe1a8c0adba580ac4e267fe495
Deployed Bytecode
0x60003560e01c60026018820660011b61106901601e39600051565b6354fd4d50811861009957346110645760208060805260056040527f312e312e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f35b63c11e45b88118610d7357602436103417611064576004358060a01c611064576103205261032051637ba1a74d610360526020610360600461037c845afa6100e6573d600060003e3d6000fd5b60203d10611064576103609050516103405261032051630b7b594b610380526020610380600461039c845afa610121573d600060003e3d6000fd5b60203d10611064576103809050516103605261032051634469ed146103a05260206103a060046103bc845afa61015c573d600060003e3d6000fd5b60203d10611064576103a090505161038052610100366103a037610360516103405111156103a557610340516103605180820382811161106457905090506103805180820281158383830414171561106457905090506404a817c800810490506104a0526104a051156103a55761032051630c46b72a6104e05260206104e060046104fc845afa6101f2573d600060003e3d6000fd5b60203d10611064576104e09050516104c0526104c051670de0b6b3a7640000810281670de0b6b3a76400008204186110645790506104c0516104a051808203828111611064579050905080156110645780820490509050670de0b6b3a764000081038181116110645790506104e052610320516318160ddd610520526020610520600461053c845afa61028a573d600060003e3d6000fd5b60203d106110645761052090505161050052610500516104e0518082028115838383041417156110645790509050670de0b6b3a76400008104905061052052610500516105205180820182811061106457905090506105005261052051670de0b6b3a7640000810281670de0b6b3a7640000820418611064579050610500518015611064578082049050905061054052610320516101a05261032d610660610dce565b6106606101006105606101008360045afa505060006008905b80610660526105405161066051600781116110645760051b61056001518082028115838383041417156110645790509050670de0b6b3a76400008104905061066051600781116110645760051b6103a001526001018181186103465750505b6101006103a0f3610d73565b63b229777c8118610d7357346110645760005460405260206040f3610d73565b63a87df06c8118610d73576044361034176110645760006102605261041256610d73565b636982eb0b81186104575760643610341761106457604435610260525b6004358060a01c61106457610220526024358060a01c61106457610240526020610220516040526102405160605261026051608052610452610280610f78565b610280f35b63bdf475c38118610d7357602436103417611064576004358060a01c611064576102e0526102e0516101c05261048e610300610f5b565b61030051156104a15760206102e06104ad565b60006103005260206103005bf3610d73565b6392e3cc2d81186104f257602436103417611064576004358060a01c6110645761032052610100610320516101a0526104ed610340610dce565b610340f35b63eb85226d8118610d7357606436103417611064576004358060a01c611064576040526024358060a01c611064576060526044358060a01c6110645760805260403660a03760005463eb85226d60e052604051610100526060516101205260805161014052604060e0606460fc845afa610571573d600060003e3d6000fd5b60403d106110645760e09050805160a052602081015160c0525060a05160e05260c05161010052600061012052606060e0f3610d73565b636f20d6dd8118610d7357602436103417611064576004358060a01c61106457604052600060605260206060f3610d73565b639ac90d3d811861061857602436103417611064576004358060a01c611064576101c0526101006101c0516040526106136101e0610e38565b6101e0f35b6352b515558118610d7357602436103417611064576004358060a01c6110645761032052610100610320516101a052610652610340610ef1565b610340f3610d73565b637cdb72b08118610d7357602436103417611064576004358060a01c611064576040526101403660603760405163ddca3f43610220526020610220600461023c845afa6106ad573d600060003e3d6000fd5b60203d10611064576102209050516101a052604051634469ed14610260526020610260600461027c845afa6106e7573d600060003e3d6000fd5b60203d10611064576102609050516101c0526040516392526c0c6102a05260206102a060046102bc845afa610721573d600060003e3d6000fd5b60203d10611064576102a09050516101e05260405163ee8de6756102e05260206102e060046102fc845afa61075b573d600060003e3d6000fd5b60203d10611064576102e09050516102005260006004905b806102205261022051600381116110645760051b6101a0015161022051600981116110645760051b606001526001018181186107735750506101406060f3610d73565b633795104981186107df57602436103417611064576004358060a01c6110645760405260206040f35b634cb088f18118610d7357602436103417611064576004358060a01c6110645761032052610100610320516101a052610819610340610ef1565b610340f3610d73565b63940494f1811861085057602436103417611064576004358060a01c61106457604052600260605260206060f35b635c911741811861095157602436103417611064576004358060a01c611064576040526020806101c05260005463977d9122606052604051608052602060606024607c845afa6108a5573d600060003e3d6000fd5b60203d10611064576060518060a01c6110645760a05260a09050516306fdde0360c052608060c0600460dc845afa6108e2573d600060003e3d6000fd5b60403d106110645760c05160c001604081511161106457602081510180610160828460045afa5050506101609050816101c00160208251018082828560045afa50508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506101c0f35b63e4d332a98118610d7357602436103417611064576004358060a01c61106457604052600060605260206060f3610d73565b630a700c088118610d7357602436103417611064576004358060a01c61106457604052600260605260206060f3610d73565b6366d3966c8118610d7357602436103417611064576004358060a01c61106457604052600360605260206060f3610d73565b63688532aa8118610ba957602436103417611064576004358060a01c611064576040526102803660603760405163f446c1d06102e05260206102e060046102fc845afa610a39573d600060003e3d6000fd5b60203d10611064576102e0905051606052604051630f529ba26102e05260206102e060046102fc845afa610a72573d600060003e3d6000fd5b60203d10611064576102e090505160805260405163b13739296102e05260206102e060046102fc845afa610aab573d600060003e3d6000fd5b60203d10611064576102e090505160a0526040516349fe9e776102e05260206102e060046102fc845afa610ae4573d600060003e3d6000fd5b60203d10611064576102e090505160c0526040516372d4f0e26102e05260206102e060046102fc845afa610b1d573d600060003e3d6000fd5b60203d10611064576102e090505160e05260405163083812e56102e05260206102e060046102fc845afa610b56573d600060003e3d6000fd5b60203d10611064576102e0905051610100526040516309c3da6a6102e05260206102e060046102fc845afa610b90573d600060003e3d6000fd5b60203d10611064576102e0905051610120526102806060f35b63956aae3a8118610d73573461106457602060005463956aae3a604052602060406004605c845afa610be0573d600060003e3d6000fd5b60203d106110645760409050f3610d73565b6359f4f3518118610d7357602436103417611064576004358060a01c6110645761032052610100610320516101a052610c2c610340610dce565b610340f3610d73565b63a77576ef8118610d7357602436103417611064576004358060a01c611064576101c0526101006101c051604052610c6e6101e0610e38565b6101e0f3610d73565b63c5b7074a8118610d7357602436103417611064576004358060a01c61106457604052602060405163bb7b8b80606052602060606004607c845afa610cc1573d600060003e3d6000fd5b60203d106110645760609050f3610d73565b63619ea8068118610d7357602436103417611064576004358060a01c611064576102e05260206102e0516101c052610d0c610300610f5b565b610300f3610d73565b633a1d5d8e8118610d7357602436103417611064576020600054633a1d5d8e604052600435606052602060406024605c845afa610d57573d600060003e3d6000fd5b60203d10611064576040518060a01c6110645760805260809050f35b60006000fd5b6101003660803760006002905b806101805261018051600181116110645760051b6040015161018051600781116110645760051b60800152600101818118610d8657505061010081610100608060045afa5050565b6000546392e3cc2d6101c0526101a0516101e05260406101c060246101dc845afa610dfe573d600060003e3d6000fd5b60403d10611064576101c090508051604052602081015160605250610e24610220610d79565b610220610100826101008360045afa505050565b600054639ac90d3d60a05260405160c052604060a0602460bc845afa610e63573d600060003e3d6000fd5b60403d106110645760a0518060a01c611064576101005260c0518060a01c6110645761012052610100905080516060526020810151608052506101003660a03760006002905b806101a0526101a051600181116110645760051b606001516101a051600781116110645760051b60a00152600101818118610ea95750506101008161010060a060045afa5050565b6000546352b515556101c0526101a0516101e05260406101c060246101dc845afa610f21573d600060003e3d6000fd5b60403d10611064576101c090508051604052602081015160605250610f47610220610d79565b610220610100826101008360045afa505050565b6101c051604052610f6d6101e0610e38565b6101e0511515815250565b60403660a0376000545a60006004610100527f6982eb0b0000000000000000000000000000000000000000000000000000000061012052610100805160208201836101600181518152505080830192505050604051816101600152602081019050606051816101600152602081019050608051816101600152602081019050806101405261014050506020610200610140516101608585fa9050905060a0523d602081183d60201002186101e0526101e0805160c052602081015160e0525060a0511561105c5760e05160c05160200360031b1c8060a01c61106457815250611062565b60008152505b565b600080fd065b08220c770d7309b505a80cd30d73001a0bf209e70d7303b104b30d730d73098307b60d7303f503d105da0d150c35
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001a83348f9ccfd3fe1a8c0adba580ac4e267fe495
-----Decoded View---------------
Arg [0] : _registry_address (address): 0x1A83348F9cCFD3Fe1A8C0adBa580Ac4e267Fe495
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001a83348f9ccfd3fe1a8c0adba580ac4e267fe495
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 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.