More Info
Private Name Tags
ContractCreator
Latest 8 from a total of 8 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Add_registry_han... | 58595374 | 162 days ago | IN | 0 POL | 0.00154006 | ||||
Add_registry_han... | 58595321 | 162 days ago | IN | 0 POL | 0.00154007 | ||||
Add_registry_han... | 58595316 | 162 days ago | IN | 0 POL | 0.0015401 | ||||
Add_registry_han... | 58595311 | 162 days ago | IN | 0 POL | 0.00154007 | ||||
Update_registry_... | 57227375 | 197 days ago | IN | 0 POL | 0.00114616 | ||||
Add_registry_han... | 57080208 | 201 days ago | IN | 0 POL | 0.0015396 | ||||
Add_registry_han... | 57080205 | 201 days ago | IN | 0 POL | 0.0015396 | ||||
Add_registry_han... | 57080202 | 201 days ago | IN | 0 POL | 0.0020526 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CurveMetaRegistry
Compiler Version
vyper:0.3.10
Contract Source Code (Vyper language format)
# pragma version 0.3.10 """ @title CurveMetaRegistry """ # ---- interfaces ---- # interface AddressProvider: def admin() -> address: view # registry and registry handlers are considered to be the same here. # registry handlers are just wrapper contracts that simplify/fix underlying registries # for integrating it into the Metaregistry. interface RegistryHandler: def find_pool_for_coins(_from: address, _to: address, i: uint256 = 0) -> address: view def get_admin_balances(_pool: address) -> uint256[MAX_COINS]: view def get_balances(_pool: address) -> uint256[MAX_COINS]: view def get_base_pool(_pool: address) -> address: view def get_coins(_pool: address) -> address[MAX_COINS]: view def get_coin_indices(_pool: address, _from: address, _to: address) -> (int128, int128, bool): view def get_decimals(_pool: address) -> uint256[MAX_COINS]: view def get_fees(_pool: address) -> uint256[10]: view def get_lp_token(_pool: address) -> address: view def get_n_coins(_pool: address) -> uint256: view def get_n_underlying_coins(_pool: address) -> uint256: view def get_pool_asset_type(_pool: address) -> uint256: view def get_pool_from_lp_token(_lp_token: address) -> address: view def get_pool_name(_pool: address) -> String[64]: view def get_pool_params(_pool: address) -> uint256[20]: view def get_underlying_balances(_pool: address) -> uint256[MAX_COINS]: view def get_underlying_coins(_pool: address) -> address[MAX_COINS]: view def get_underlying_decimals(_pool: address) -> uint256[MAX_COINS]: view def is_meta(_pool: address) -> bool: view def is_registered(_pool: address) -> bool: view def pool_count() -> uint256: view def pool_list(_index: uint256) -> address: view def get_virtual_price_from_lp_token(_addr: address) -> uint256: view def base_registry() -> address: view interface GaugeFactory: def get_gauge_from_lp_token(_lp_token: address) -> address: view # ---- events ---- # event CommitNewAdmin: deadline: indexed(uint256) admin: indexed(address) event NewAdmin: admin: indexed(address) # ---- constants ---- # MAX_REGISTRIES: constant(uint256) = 10 MAX_COINS: constant(uint256) = 8 MAX_POOL_PARAMS: constant(uint256) = 20 ADMIN_ACTIONS_DELAY: constant(uint256) = 3 * 86400 # ---- storage variables ---- # admin: public(address) future_admin: public(address) # get registry/registry_handler by index, index starts at 0: get_registry: public(HashMap[uint256, address]) registry_length: public(uint256) gauge_factory: public(GaugeFactory) gauge_type: public(int128) # ---- constructor ---- # @external def __init__(_gauge_factory: address, _gauge_type: int128): self.admin = msg.sender self.gauge_factory = GaugeFactory(_gauge_factory) self.gauge_type = _gauge_type # ---- internal methods ---- # @internal def _update_single_registry(_index: uint256, _registry_handler: address): assert _index <= self.registry_length if _index == self.registry_length: self.registry_length += 1 self.get_registry[_index] = _registry_handler @internal @view def _get_pool_from_lp_token(_token: address) -> address: for i in range(MAX_REGISTRIES): if i == self.registry_length: break handler: address = self.get_registry[i] pool: address = RegistryHandler(handler).get_pool_from_lp_token(_token) if pool != empty(address): return pool return empty(address) @internal @view def _get_registry_handlers_from_pool(_pool: address) -> address[MAX_REGISTRIES]: """ @notice Get registry handler that handles the registry api for a pool @dev sometimes a factory pool can be registered in a manual registry because of this, we always take the last registry a pool is registered in and not the first, as manual registries are first and factories come later @param _pool address of the pool @return registry_handlers: address[MAX_REGISTRIES] """ pool_registry_handler: address[MAX_REGISTRIES] = empty(address[MAX_REGISTRIES]) c: uint256 = 0 for i in range(MAX_REGISTRIES): if i == self.registry_length: break handler: address = self.get_registry[i] if RegistryHandler(handler).is_registered(_pool): pool_registry_handler[c] = handler c += 1 if pool_registry_handler[0] == empty(address): raise "no registry" return pool_registry_handler # ---- most used methods: Admin / DAO privileged methods ---- # @external def add_registry_handler(_registry_handler: address): """ @notice Adds a registry from the address provider entry @param _registry_handler Address of the handler contract """ assert msg.sender == self.admin # dev: only admin self._update_single_registry(self.registry_length, _registry_handler) @external def update_registry_handler(_index: uint256, _registry_handler: address): """ @notice Updates the contract used to handle a registry @param _index The index of the registry in get_registry @param _registry_handler Address of the new handler contract """ assert msg.sender == self.admin # dev: only admin assert _index < self.registry_length self._update_single_registry(_index, _registry_handler) @external def update_gauge_data(_gauge_factory: address, _gauge_type: int128): assert msg.sender == self.admin self.gauge_factory = GaugeFactory(_gauge_factory) self.gauge_type = _gauge_type # ---- view methods (API) of the contract ---- # @external @view def get_registry_handlers_from_pool(_pool: address) -> address[MAX_REGISTRIES]: """ @notice Get the registry handlers associated with a pool @param _pool Pool address @return List of registry handlers """ return self._get_registry_handlers_from_pool(_pool) @external @view def get_base_registry(registry_handler: address) -> address: """ @notice Get the registry associated with a registry handler @param registry_handler Registry Handler address @return Address of base registry """ return RegistryHandler(registry_handler).base_registry() @view @external def find_pool_for_coins( _from: address, _to: address, i: uint256 = 0 ) -> address: """ @notice Find the ith available pool containing the input pair @param _from Address of coin to be sent @param _to Address of coin to be received @param i Index of the pool to return @return Pool address """ pools_found: uint256 = 0 pool: address = empty(address) registry: address = empty(address) for registry_index in range(MAX_REGISTRIES): registry = self.get_registry[registry_index] if registry == empty(address): break for j in range(0, 65536): pool = RegistryHandler(registry).find_pool_for_coins(_from, _to, j) if pool == empty(address): break pools_found += 1 if pools_found > i: return pool return pool @view @external def find_pools_for_coins(_from: address, _to: address) -> DynArray[address, 1000]: """ @notice Find all pools that contain the input pair @param _from Address of coin to be sent @param _to Address of coin to be received @return Pool addresses """ pools_found: DynArray[address, 1000]= empty(DynArray[address, 1000]) pool: address = empty(address) registry: address = empty(address) for registry_index in range(MAX_REGISTRIES): registry = self.get_registry[registry_index] if registry == empty(address): break for j in range(0, 65536): pool = RegistryHandler(registry).find_pool_for_coins(_from, _to, j) if pool == empty(address): break pools_found.append(pool) return pools_found @external @view def get_admin_balances(_pool: address, _handler_id: uint256 = 0) -> uint256[MAX_COINS]: """ @notice Get the current admin balances (uncollected fees) for a pool @dev _handler_id < 1 if pool is registry in one handler, more than 0 otherwise @param _pool Pool address @param _handler_id id of registry handler @return List of uint256 admin balances """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_admin_balances(_pool) @external @view def get_balances(_pool: address, _handler_id: uint256 = 0) -> uint256[MAX_COINS]: """ @notice Get balances for each coin within a pool @dev For metapools, these are the wrapped coin balances @param _pool Pool address @param _handler_id id of registry handler @return uint256 list of balances """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_balances(_pool) @external @view def get_base_pool(_pool: address, _handler_id: uint256 = 0) -> address: """ @notice Get the base pool for a given factory metapool @dev Will return empty(address) if pool is not a metapool @param _pool Metapool address @param _handler_id id of registry handler @return Address of base pool """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_base_pool(_pool) @view @external def get_coin_indices(_pool: address, _from: address, _to: address, _handler_id: uint256 = 0) -> (int128, int128, bool): """ @notice Convert coin addresses to indices for use with pool methods @param _pool Pool address @param _from Coin address to be used as `i` within a pool @param _to Coin address to be used as `j` within a pool @param _handler_id id of registry handler @return from index, to index, is the market underlying ? """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_coin_indices(_pool, _from, _to) @external @view def get_coins(_pool: address, _handler_id: uint256 = 0) -> address[MAX_COINS]: """ @notice Get the coins within a pool @dev For metapools, these are the wrapped coin addresses @param _pool Pool address @param _handler_id id of registry handler @return List of coin addresses """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_coins(_pool) @external @view def get_decimals(_pool: address, _handler_id: uint256 = 0) -> uint256[MAX_COINS]: """ @notice Get decimal places for each coin within a pool @dev For metapools, these are the wrapped coin decimal places @param _pool Pool address @param _handler_id id of registry handler @return uint256 list of decimals """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_decimals(_pool) @external @view def get_fees(_pool: address, _handler_id: uint256 = 0) -> uint256[10]: """ @notice Get pool fees @dev Fees are expressed as integers @param _pool Pool address @param _handler_id id of registry handler @return Pool fee as uint256 with 1e10 precision Admin fee as 1e10 percentage of pool fee Mid fee Out fee 6 blank spots for future use cases """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_fees(_pool) @external @view def get_gauge(_pool: address, gauge_idx: uint256 = 0, _handler_id: uint256 = 0) -> address: """ @notice Get a single liquidity gauge contract associated with a pool @param _pool Pool address @param gauge_idx Index of gauge to return @param _handler_id id of registry handler @return Address of gauge """ lp_token: address = RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_lp_token(_pool) return self.gauge_factory.get_gauge_from_lp_token(lp_token) @external @view def get_gauge_type(_pool: address, gauge_idx: uint256 = 0, _handler_id: uint256 = 0) -> int128: """ @notice Get gauge_type of a single liquidity gauge contract associated with a pool @param _pool Pool address @param gauge_idx Index of gauge to return @param _handler_id id of registry handler @return Address of gauge """ return self.gauge_type @external @view def get_lp_token(_pool: address, _handler_id: uint256 = 0) -> address: """ @notice Get the address of the LP token of a pool @param _pool Pool address @param _handler_id id of registry handler @return Address of the LP token """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_lp_token(_pool) @external @view def get_n_coins(_pool: address, _handler_id: uint256 = 0) -> uint256: """ @notice Get the number of coins in a pool @dev For metapools, it is tokens + wrapping/lending token (no underlying) @param _pool Pool address @return Number of coins """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_n_coins(_pool) @external @view def get_n_underlying_coins(_pool: address, _handler_id: uint256 = 0) -> uint256: """ @notice Get the number of underlying coins in a pool @dev For non metapools, returns the same as get_n_coins @param _pool Pool address @return Number of coins """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_n_underlying_coins(_pool) @external @view def get_pool_asset_type(_pool: address, _handler_id: uint256 = 0) -> uint256: """ @notice Query the asset type of `_pool` @param _pool Pool Address @return The asset type as an unstripped string @dev 0 : USD, 1: ETH, 2: BTC, 3: Other, 4: CryptoSwap """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_pool_asset_type(_pool) @external @view def get_pool_from_lp_token(_token: address, _handler_id: uint256 = 0) -> address: """ @notice Get the pool associated with an LP token @param _token LP token address @return Pool address """ return self._get_pool_from_lp_token(_token) @external @view def get_pool_params(_pool: address, _handler_id: uint256 = 0) -> uint256[MAX_POOL_PARAMS]: """ @notice Get the parameters of a pool @param _pool Pool address @param _handler_id id of registry handler @return Pool parameters """ registry_handler: address = self._get_registry_handlers_from_pool(_pool)[_handler_id] return RegistryHandler(registry_handler).get_pool_params(_pool) @external @view def get_pool_name(_pool: address, _handler_id: uint256 = 0) -> String[64]: """ @notice Get the given name for a pool @param _pool Pool address @return The name of a pool """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_pool_name(_pool) @external @view def get_underlying_balances(_pool: address, _handler_id: uint256 = 0) -> uint256[MAX_COINS]: """ @notice Get balances for each underlying coin within a pool @dev For non metapools, returns the same value as `get_balances` @param _pool Pool address @param _handler_id id of registry handler @return uint256 List of underlyingbalances """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_underlying_balances(_pool) @external @view def get_underlying_coins(_pool: address, _handler_id: uint256 = 0) -> address[MAX_COINS]: """ @notice Get the underlying coins within a pool @dev For non metapools, returns the same value as `get_coins` @param _pool Pool address @param _handler_id id of registry handler @return List of coin addresses """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_underlying_coins(_pool) @external @view def get_underlying_decimals(_pool: address, _handler_id: uint256 = 0) -> uint256[MAX_COINS]: """ @notice Get decimal places for each underlying coin within a pool @dev For non metapools, returns the same value as `get_decimals` @param _pool Pool address @param _handler_id id of registry handler @return uint256 list of decimals """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).get_underlying_decimals(_pool) @external @view def get_virtual_price_from_lp_token(_token: address, _handler_id: uint256 = 0) -> uint256: """ @notice Get the virtual price of a pool LP token @param _token LP token address @param _handler_id id of registry handler @return uint256 Virtual price """ pool: address = self._get_pool_from_lp_token(_token) registry_handler: address = self._get_registry_handlers_from_pool(pool)[_handler_id] return RegistryHandler(registry_handler).get_virtual_price_from_lp_token(_token) @external @view def is_meta(_pool: address, _handler_id: uint256 = 0) -> bool: """ @notice Verify `_pool` is a metapool @param _pool Pool address @param _handler_id id of registry handler @return True if `_pool` is a metapool """ return RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id]).is_meta(_pool) @external @view def is_registered(_pool: address, _handler_id: uint256 = 0) -> bool: """ @notice Check if a pool is in the metaregistry using get_n_coins @param _pool The address of the pool @param _handler_id id of registry handler @return A bool corresponding to whether the pool belongs or not """ return self._get_registry_handlers_from_pool(_pool)[_handler_id] != empty(address) @external @view def pool_count() -> uint256: """ @notice Return the total number of pools tracked by the metaregistry @return uint256 The number of pools in the metaregistry """ total_pools: uint256 = 0 for i in range(MAX_REGISTRIES): if i == self.registry_length: break handler: address = self.get_registry[i] total_pools += RegistryHandler(handler).pool_count() return total_pools @external @view def pool_list(_index: uint256) -> address: """ @notice Return the pool at a given index in the metaregistry @param _index The index of the pool in the metaregistry @return The address of the pool at the given index """ pools_skip: uint256 = 0 for i in range(MAX_REGISTRIES): if i == self.registry_length: break handler: address = self.get_registry[i] count: uint256 = RegistryHandler(handler).pool_count() if _index - pools_skip < count: return RegistryHandler(handler).pool_list(_index - pools_skip) pools_skip += count return empty(address) @external def commit_transfer_ownership(_addr: address): """ @notice Transfer ownership of this contract to `addr` @param _addr Address of the new owner """ assert msg.sender == self.admin # dev: admin only self.future_admin = _addr @external def accept_transfer_ownership(): """ @notice Accept a pending ownership transfer @dev Only callable by the new owner """ _admin: address = self.future_admin assert msg.sender == _admin # dev: future admin only self.admin = _admin self.future_admin = empty(address)
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"CommitNewAdmin","inputs":[{"name":"deadline","type":"uint256","indexed":true},{"name":"admin","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"NewAdmin","inputs":[{"name":"admin","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_gauge_factory","type":"address"},{"name":"_gauge_type","type":"int128"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"add_registry_handler","inputs":[{"name":"_registry_handler","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"update_registry_handler","inputs":[{"name":"_index","type":"uint256"},{"name":"_registry_handler","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"update_gauge_data","inputs":[{"name":"_gauge_factory","type":"address"},{"name":"_gauge_type","type":"int128"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"get_registry_handlers_from_pool","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address[10]"}]},{"stateMutability":"view","type":"function","name":"get_base_registry","inputs":[{"name":"registry_handler","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"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":"find_pools_for_coins","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"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_admin_balances","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"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_balances","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"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_base_pool","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"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":"int128"},{"name":"","type":"int128"},{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"get_coin_indices","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_handler_id","type":"uint256"}],"outputs":[{"name":"","type":"int128"},{"name":"","type":"int128"},{"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_coins","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"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_decimals","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"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_fees","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"outputs":[{"name":"","type":"uint256[10]"}]},{"stateMutability":"view","type":"function","name":"get_gauge","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_gauge","inputs":[{"name":"_pool","type":"address"},{"name":"gauge_idx","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_gauge","inputs":[{"name":"_pool","type":"address"},{"name":"gauge_idx","type":"uint256"},{"name":"_handler_id","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_gauge_type","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"int128"}]},{"stateMutability":"view","type":"function","name":"get_gauge_type","inputs":[{"name":"_pool","type":"address"},{"name":"gauge_idx","type":"uint256"}],"outputs":[{"name":"","type":"int128"}]},{"stateMutability":"view","type":"function","name":"get_gauge_type","inputs":[{"name":"_pool","type":"address"},{"name":"gauge_idx","type":"uint256"},{"name":"_handler_id","type":"uint256"}],"outputs":[{"name":"","type":"int128"}]},{"stateMutability":"view","type":"function","name":"get_lp_token","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_lp_token","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"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_coins","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"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_n_underlying_coins","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"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_asset_type","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_pool_from_lp_token","inputs":[{"name":"_token","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_pool_from_lp_token","inputs":[{"name":"_token","type":"address"},{"name":"_handler_id","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_pool_params","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[20]"}]},{"stateMutability":"view","type":"function","name":"get_pool_params","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"outputs":[{"name":"","type":"uint256[20]"}]},{"stateMutability":"view","type":"function","name":"get_pool_name","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"get_pool_name","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"outputs":[{"name":"","type":"string"}]},{"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_balances","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"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_coins","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"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_underlying_decimals","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"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":"get_virtual_price_from_lp_token","inputs":[{"name":"_token","type":"address"},{"name":"_handler_id","type":"uint256"}],"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_meta","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"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":"is_registered","inputs":[{"name":"_pool","type":"address"},{"name":"_handler_id","type":"uint256"}],"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":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"_addr","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"future_admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_registry","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"registry_length","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"gauge_factory","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"gauge_type","inputs":[],"outputs":[{"name":"","type":"int128"}]}]
Contract Creation Code
3461004f576020611bbe5f395f518060a01c61004f576040526020611bde5f395f5180600f0b811861004f57606052335f55604051600455606051600555611b5661005361000039611b56610000f35b5f80fd5f3560e01c6002603b820660011b611ae001601e395f51565b63f851a44081186100335734611adc575f5460405260206040f35b633a1d5d8e81186118c157602436103417611adc575f6040525f600a905b806060526003546060511861006557610146565b60026060516020525f5260405f205460805260805163956aae3a60c052602060c0600460dc845afa610099573d5f5f3e3d5ffd5b60203d10611adc5760c090505160a05260a051600435604051808203828111611adc579050905010156101245750506020608051633a1d5d8e60c052600435604051808203828111611adc579050905060e052602060c0602460dc845afa610103573d5f5f3e3d5ffd5b60203d10611adc5760c0518060a01c611adc57610100526101009050610151565b60405160a051808201828110611adc5790509050604052600101818118610051575b50505f606052602060605bf36118c1565b6317f7182a81186101735734611adc5760015460405260206040f35b63e8980c6e81186118c15734611adc5760045460405260206040f36118c1565b63913d9b4d81186101c057602436103417611adc5760026004356020525f5260405f205460405260206040f35b63c9c4f3ec81186118c157604436103417611adc57602435610280525b6004358060a01c611adc5761026052610260516040526101fe6102a061199f565b6102a06102805160098111611adc5760051b810190505115156103e05260206103e0f36118c1565b63083297d281186102425734611adc5760035460405260206040f35b63eb85226d811861026157606436103417611adc575f6102c0526109d9565b63e5ea47b881186118c15734611adc576001546040526040513318611adc576040515f555f600155006118c1565b6352b7e8a181186102ab5734611adc5760055460405260206040f35b6366d3966c81186118c157602436103417611adc575f6102805261151a566118c1565b6322f595c8811861030f57602436103417611adc576004358060a01c611adc576080525f543318611adc5760035460405260805160605261030d6118c5565b005b636f20d6dd81186118c157602436103417611adc575f61028052610c38566118c1565b630dbdc9ff811861037f57604436103417611adc576024358060a01c611adc576080525f543318611adc576003546004351015611adc5760043560405260805160605261037d6118c5565b005b635c91174181186118c157602436103417611adc575f6102805261166c566118c1565b63bbfbf4ac81186103eb57604436103417611adc576004358060a01c611adc5760405260243580600f0b8118611adc576060525f543318611adc57604051600455606051600555005b6384e1710d811861044e57602436103417611adc576004358060a01c611adc57604052602060405163b229777c606052602060606004607c845afa610432573d5f5f3e3d5ffd5b60203d10611adc576060518060a01c611adc5760a05260a09050f35b63622d64f481186118c157604436103417611adc57602435610280525b6004358060a01c611adc57610260526101006102605160405261048f6102a061199f565b6102a06102805160098111611adc5760051b8101905051634cb088f16103e05261026051610400526101006103e060246103fc845afa6104d1573d5f5f3e3d5ffd5b6101003d10611adc576103e09050f36118c1565b63308d1b6d81186118c157602436103417611adc576004358060a01c611adc57610260526101406102605160405261051e61028061199f565b610280f36118c1565b63a87df06c811861054557604436103417611adc575f608052610605565b63a64485a181186118c157604436103417611adc57602435610280525b6004358060a01c611adc57610260526020610260516040526105856102a061199f565b6102a06102805160098111611adc5760051b810190505163e4d332a96103e052610260516104005260206103e060246103fc845afa6105c6573d5f5f3e3d5ffd5b60203d10611adc576103e0518060011c611adc57610420526104209050f36118c1565b636982eb0b811861071157606436103417611adc576044356080525b6004358060a01c611adc576040526024358060a01c611adc5760605260603660a0375f600a905b80610100526002610100516020525f5260405f205460e05260e05161065057610708565b5f62010000905b806101205260e051636982eb0b610140526040516101605260605161018052610120516101a0526020610140606461015c845afa610697573d5f5f3e3d5ffd5b60203d10611adc57610140518060a01c611adc576101c0526101c090505160c05260c0516106c4576106fb565b60a05160018101818110611adc57905060a05260805160a05111156106f05750505050602060c061070f565b600101818118610657575b505060010181811861062c575b5050602060c05bf35b634cb088f181186118c157602436103417611adc575f6102805261046b566118c1565b63a064072b81186118c157604436103417611adc576004358060a01c611adc576040526024358060a01c611adc576060525f6080525f617da0525f617dc0525f600a905b80617de0526002617de0516020525f5260405f2054617dc052617dc05161079e5761084d565b5f62010000905b80617e0052617dc051636982eb0b617e2052604051617e4052606051617e6052617e0051617e80526020617e206064617e3c845afa6107e6573d5f5f3e3d5ffd5b60203d10611adc57617e20518060a01c611adc57617ea052617ea0905051617da052617da05161081557610840565b6080516103e78111611adc57617da0518160051b60a0015260018101608052506001018181186107a5575b5050600101818118610778575b5050602080617de05280617de0015f6080518083528060051b5f826103e88111611adc57801561089657905b8060051b60a001518160051b602088010152600101818118610879575b50508201602001915050905081019050617de0f36118c1565b63c11e45b881186108ce57602436103417611adc575f61028052610946565b637c51db5581186108f257604436103417611adc576024356060525f608052611252565b636b441a4081186118c157602436103417611adc576004358060a01c611adc576040525f543318611adc57604051600155006118c1565b63c0bf4cbf81186109bc57604436103417611adc57602435610280525b6004358060a01c611adc57610260526101006102605160405261096a6102a061199f565b6102a06102805160098111611adc5760051b810190505163c11e45b86103e05261026051610400526101006103e060246103fc845afa6109ac573d5f5f3e3d5ffd5b6101003d10611adc576103e09050f35b6363fb3ddb81186118c157608436103417611adc576064356102c0525b6004358060a01c611adc57610260526024358060a01c611adc57610280526044358060a01c611adc576102a052606061026051604052610a1a6102e061199f565b6102e06102c05160098111611adc5760051b810190505163eb85226d61042052610260516104405261028051610460526102a051610480526060610420606461043c845afa610a6b573d5f5f3e3d5ffd5b60603d10611adc576104205180600f0b8118611adc576104a0526104405180600f0b8118611adc576104c052610460518060011c611adc576104e0526104a09050f36118c1565b6392e3cc2d8118610ad157602436103417611adc575f61028052610b11565b639ac90d3d81186118c157602436103417611adc575f61028052610cd8566118c1565b63aa85169c8118610b8757604436103417611adc57602435610280525b6004358060a01c611adc576102605261010061026051604052610b356102a061199f565b6102a06102805160098111611adc5760051b81019050516392e3cc2d6103e05261026051610400526101006103e060246103fc845afa610b77573d5f5f3e3d5ffd5b6101003d10611adc576103e09050f35b6311d8127981186118c157604436103417611adc57602435610280525b6004358060a01c611adc5761026052602061026051604052610bc76102a061199f565b6102a06102805160098111611adc5760051b810190505163940494f16103e052610260516104005260206103e060246103fc845afa610c08573d5f5f3e3d5ffd5b60203d10611adc576103e09050f36118c1565b63a54e3ade8118610cbb57604436103417611adc57602435610280525b6004358060a01c611adc5761026052602061026051604052610c5b6102a061199f565b6102a06102805160098111611adc5760051b8101905051636f20d6dd6103e052610260516104005260206103e060246103fc845afa610c9c573d5f5f3e3d5ffd5b60203d10611adc576103e0518060a01c611adc57610420526104209050f35b636ebe51fc81186118c157604436103417611adc57602435610280525b6004358060a01c611adc576102605261010061026051604052610cfc6102a061199f565b6102a06102805160098111611adc5760051b8101905051639ac90d3d6103e05261026051610400526101006103e060246103fc845afa610d3e573d5f5f3e3d5ffd5b6101003d10611adc576103e0518060a01c611adc5761050052610400518060a01c611adc5761052052610420518060a01c611adc5761054052610440518060a01c611adc5761056052610460518060a01c611adc5761058052610480518060a01c611adc576105a0526104a0518060a01c611adc576105c0526104c0518060a01c611adc576105e0526105009050f36118c1565b6352b515558118610df157602436103417611adc575f61028052610e52565b63daf297b98118610e1257602436103417611adc57604036610280376110a8565b63bdf475c381186118c157602436103417611adc575f61014052611034566118c1565b63403f502f8118610ec857604436103417611adc57602435610280525b6004358060a01c611adc576102605261010061026051604052610e766102a061199f565b6102a06102805160098111611adc5760051b81019050516352b515556103e05261026051610400526101006103e060246103fc845afa610eb8573d5f5f3e3d5ffd5b6101003d10611adc576103e09050f35b63956aae3a81186118c15734611adc575f6040525f600a905b8060605260035460605118610ef557610f55565b60026060516020525f5260405f205460805260405160805163956aae3a60a052602060a0600460bc845afa610f2c573d5f5f3e3d5ffd5b60203d10611adc5760a0905051808201828110611adc5790509050604052600101818118610ee1575b505060206040f36118c1565b637cdb72b081186118c157602436103417611adc575f61028052610fa1566118c1565b630ed5a427811861101757604436103417611adc57602435610280525b6004358060a01c611adc576102605261014061026051604052610fc56102a061199f565b6102a06102805160098111611adc5760051b8101905051637cdb72b06103e05261026051610400526101406103e060246103fc845afa611007573d5f5f3e3d5ffd5b6101403d10611adc576103e09050f35b6336678b8081186118c157604436103417611adc57602435610140525b6004358060a01c611adc5761012052602061012051604052611057610160611903565b610160f36118c1565b63e408122081186118c157604436103417611adc57602435610280525f6102a0526110a8566118c1565b63773fb7e381186118c157606436103417611adc5760406024610280375b6004358060a01c611adc5761026052610260516040526110c96102e061199f565b6102e06102a05160098111611adc5760051b810190505163379510496104205261026051610440526020610420602461043c845afa61110a573d5f5f3e3d5ffd5b60203d10611adc57610420518060a01c611adc57610460526104609050516102c0526020600454635d95c65e6102e0526102c0516103005260206102e060246102fc845afa61115b573d5f5f3e3d5ffd5b60203d10611adc576102e0518060a01c611adc57610320526103209050f36118c1565b6325fa5d13811861119e57602436103417611adc57604036606037611252565b63876112e681186118c157604436103417611adc57602435610280525b6004358060a01c611adc5761026052610100610260516040526111df6102a061199f565b6102a06102805160098111611adc5760051b81019050516359f4f3516103e05261026051610400526101006103e060246103fc845afa611221573d5f5f3e3d5ffd5b6101003d10611adc576103e09050f36118c1565b63f8b661e281186118c157606436103417611adc57604060246060375b6004358060a01c611adc5760405260055460a052602060a0f36118c1565b6337951049811861128f57602436103417611adc575f61028052611381565b630a700c0881186112ae57602436103417611adc575f61028052611467565b634460f66f81186118c157604436103417611adc57602435610280525b6004358060a01c611adc5761026052610260516040526112ec6102c0611903565b6102c0516102a0526102a0516040526113066102e061199f565b6102e06102805160098111611adc5760051b81019050516102c05260206102c05163c5b7074a6102e052610260516103005260206102e060246102fc845afa611351573d5f5f3e3d5ffd5b60203d10611adc576102e09050f36118c1565b630881715f81186118c157604436103417611adc57602435610280525b6004358060a01c611adc57610260526020610260516040526113a46102a061199f565b6102a06102805160098111611adc5760051b810190505163379510496103e052610260516104005260206103e060246103fc845afa6113e5573d5f5f3e3d5ffd5b60203d10611adc576103e0518060a01c611adc57610420526104209050f36118c1565b63940494f1811861142757602436103417611adc575f61028052610ba4565b63c5b7074a81186118c157602436103417611adc575f610280526112cb566118c1565b63decdf68f81186114da57604436103417611adc57602435610280525b6004358060a01c611adc576102605260206102605160405261148a6102a061199f565b6102a06102805160098111611adc5760051b8101905051630a700c086103e052610260516104005260206103e060246103fc845afa6114cb573d5f5f3e3d5ffd5b60203d10611adc576103e09050f35b63a77576ef81186118c157602436103417611adc575f610280526117a8566118c1565b6390d1dd2d811861158d57604436103417611adc57602435610280525b6004358060a01c611adc576102605260206102605160405261153d6102a061199f565b6102a06102805160098111611adc5760051b81019050516366d3966c6103e052610260516104005260206103e060246103fc845afa61157e573d5f5f3e3d5ffd5b60203d10611adc576103e09050f35b637a65d2dd81186118c157604436103417611adc57602435610280525b6004358060a01c611adc5761026052610260516040526115cb6102c061199f565b6102c06102805160098111611adc5760051b81019050516102a0526102806102a05163688532aa6102c052610260516102e0526102806102c060246102dc845afa611618573d5f5f3e3d5ffd5b6102803d10611adc576102c09050f36118c1565b63688532aa81186118c157602436103417611adc575f610280526115aa566118c1565b6392234f4581186118c157604436103417611adc57602435610280525b6004358060a01c611adc57610260526020806104e052610260516040526116946102a061199f565b6102a06102805160098111611adc5760051b8101905051635c9117416103e052610260516104005260806103e060246103fc845afa6116d5573d5f5f3e3d5ffd5b60403d10611adc576103e0516103e0016040815111611adc57602081510180610480828460045afa5050506104809050816104e00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506104e0f36118c1565b6359f4f351811861176857602436103417611adc575f610280526111bb565b63619ea80681186118c157602436103417611adc575f610280526101dd566118c1565b632fc90bcf81186118c157604436103417611adc57602435610280525b6004358060a01c611adc5761026052610100610260516040526117cc6102a061199f565b6102a06102805160098111611adc5760051b810190505163a77576ef6103e05261026051610400526101006103e060246103fc845afa61180e573d5f5f3e3d5ffd5b6101003d10611adc576103e0518060a01c611adc5761050052610400518060a01c611adc5761052052610420518060a01c611adc5761054052610440518060a01c611adc5761056052610460518060a01c611adc5761058052610480518060a01c611adc576105a0526104a0518060a01c611adc576105c0526104c0518060a01c611adc576105e0526105009050f36118c1565b63e4d332a981186118c157602436103417611adc575f61028052610562565b5f5ffd5b60035460405111611adc57600354604051186118ef5760035460018101818110611adc5790506003555b60605160026040516020525f5260405f2055565b5f600a905b806060526003546060511861191c57611996565b60026060516020525f5260405f205460805260805163bdf475c360c05260405160e052602060c0602460dc845afa611956573d5f5f3e3d5ffd5b60203d10611adc5760c0518060a01c611adc576101005261010090505160a05260a0511561198b5760a051835250505061199d565b600101818118611908575b50505f8152505b565b610160366060375f600a905b806101c0526003546101c051186119c157611a5d565b60026101c0516020525f5260405f20546101e0526101e05163619ea80661020052604051610220526020610200602461021c845afa611a02573d5f5f3e3d5ffd5b60203d10611adc57610200518060011c611adc576102405261024090505115611a52576101e0516101a05160098111611adc5760051b606001526101a05160018101818110611adc5790506101a0525b6001018181186119ab575b5050606051611acb57600b6101c0527f6e6f2072656769737472790000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f825f031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b61014081610140606060045afa5050565b5f80fd0e3518c118c114fd015702ce18c10c1b106018c1140818c118c1162c136403a218c118c105270dd2144a18c118c108af04e5019318c11270022605e90ab2033218c118c118a2108a18c10f840af418c118c1028f117e123518c118c1174918c10929178b164f18c118c118c118c10f61001818c1073484191b5681187600a16576797065728300030a0015000000000000000000000000abc000d88f23bb45525e447528dbf656a9d55bf50000000000000000000000000000000000000000000000000000000000000002
Deployed Bytecode
0x5f3560e01c6002603b820660011b611ae001601e395f51565b63f851a44081186100335734611adc575f5460405260206040f35b633a1d5d8e81186118c157602436103417611adc575f6040525f600a905b806060526003546060511861006557610146565b60026060516020525f5260405f205460805260805163956aae3a60c052602060c0600460dc845afa610099573d5f5f3e3d5ffd5b60203d10611adc5760c090505160a05260a051600435604051808203828111611adc579050905010156101245750506020608051633a1d5d8e60c052600435604051808203828111611adc579050905060e052602060c0602460dc845afa610103573d5f5f3e3d5ffd5b60203d10611adc5760c0518060a01c611adc57610100526101009050610151565b60405160a051808201828110611adc5790509050604052600101818118610051575b50505f606052602060605bf36118c1565b6317f7182a81186101735734611adc5760015460405260206040f35b63e8980c6e81186118c15734611adc5760045460405260206040f36118c1565b63913d9b4d81186101c057602436103417611adc5760026004356020525f5260405f205460405260206040f35b63c9c4f3ec81186118c157604436103417611adc57602435610280525b6004358060a01c611adc5761026052610260516040526101fe6102a061199f565b6102a06102805160098111611adc5760051b810190505115156103e05260206103e0f36118c1565b63083297d281186102425734611adc5760035460405260206040f35b63eb85226d811861026157606436103417611adc575f6102c0526109d9565b63e5ea47b881186118c15734611adc576001546040526040513318611adc576040515f555f600155006118c1565b6352b7e8a181186102ab5734611adc5760055460405260206040f35b6366d3966c81186118c157602436103417611adc575f6102805261151a566118c1565b6322f595c8811861030f57602436103417611adc576004358060a01c611adc576080525f543318611adc5760035460405260805160605261030d6118c5565b005b636f20d6dd81186118c157602436103417611adc575f61028052610c38566118c1565b630dbdc9ff811861037f57604436103417611adc576024358060a01c611adc576080525f543318611adc576003546004351015611adc5760043560405260805160605261037d6118c5565b005b635c91174181186118c157602436103417611adc575f6102805261166c566118c1565b63bbfbf4ac81186103eb57604436103417611adc576004358060a01c611adc5760405260243580600f0b8118611adc576060525f543318611adc57604051600455606051600555005b6384e1710d811861044e57602436103417611adc576004358060a01c611adc57604052602060405163b229777c606052602060606004607c845afa610432573d5f5f3e3d5ffd5b60203d10611adc576060518060a01c611adc5760a05260a09050f35b63622d64f481186118c157604436103417611adc57602435610280525b6004358060a01c611adc57610260526101006102605160405261048f6102a061199f565b6102a06102805160098111611adc5760051b8101905051634cb088f16103e05261026051610400526101006103e060246103fc845afa6104d1573d5f5f3e3d5ffd5b6101003d10611adc576103e09050f36118c1565b63308d1b6d81186118c157602436103417611adc576004358060a01c611adc57610260526101406102605160405261051e61028061199f565b610280f36118c1565b63a87df06c811861054557604436103417611adc575f608052610605565b63a64485a181186118c157604436103417611adc57602435610280525b6004358060a01c611adc57610260526020610260516040526105856102a061199f565b6102a06102805160098111611adc5760051b810190505163e4d332a96103e052610260516104005260206103e060246103fc845afa6105c6573d5f5f3e3d5ffd5b60203d10611adc576103e0518060011c611adc57610420526104209050f36118c1565b636982eb0b811861071157606436103417611adc576044356080525b6004358060a01c611adc576040526024358060a01c611adc5760605260603660a0375f600a905b80610100526002610100516020525f5260405f205460e05260e05161065057610708565b5f62010000905b806101205260e051636982eb0b610140526040516101605260605161018052610120516101a0526020610140606461015c845afa610697573d5f5f3e3d5ffd5b60203d10611adc57610140518060a01c611adc576101c0526101c090505160c05260c0516106c4576106fb565b60a05160018101818110611adc57905060a05260805160a05111156106f05750505050602060c061070f565b600101818118610657575b505060010181811861062c575b5050602060c05bf35b634cb088f181186118c157602436103417611adc575f6102805261046b566118c1565b63a064072b81186118c157604436103417611adc576004358060a01c611adc576040526024358060a01c611adc576060525f6080525f617da0525f617dc0525f600a905b80617de0526002617de0516020525f5260405f2054617dc052617dc05161079e5761084d565b5f62010000905b80617e0052617dc051636982eb0b617e2052604051617e4052606051617e6052617e0051617e80526020617e206064617e3c845afa6107e6573d5f5f3e3d5ffd5b60203d10611adc57617e20518060a01c611adc57617ea052617ea0905051617da052617da05161081557610840565b6080516103e78111611adc57617da0518160051b60a0015260018101608052506001018181186107a5575b5050600101818118610778575b5050602080617de05280617de0015f6080518083528060051b5f826103e88111611adc57801561089657905b8060051b60a001518160051b602088010152600101818118610879575b50508201602001915050905081019050617de0f36118c1565b63c11e45b881186108ce57602436103417611adc575f61028052610946565b637c51db5581186108f257604436103417611adc576024356060525f608052611252565b636b441a4081186118c157602436103417611adc576004358060a01c611adc576040525f543318611adc57604051600155006118c1565b63c0bf4cbf81186109bc57604436103417611adc57602435610280525b6004358060a01c611adc57610260526101006102605160405261096a6102a061199f565b6102a06102805160098111611adc5760051b810190505163c11e45b86103e05261026051610400526101006103e060246103fc845afa6109ac573d5f5f3e3d5ffd5b6101003d10611adc576103e09050f35b6363fb3ddb81186118c157608436103417611adc576064356102c0525b6004358060a01c611adc57610260526024358060a01c611adc57610280526044358060a01c611adc576102a052606061026051604052610a1a6102e061199f565b6102e06102c05160098111611adc5760051b810190505163eb85226d61042052610260516104405261028051610460526102a051610480526060610420606461043c845afa610a6b573d5f5f3e3d5ffd5b60603d10611adc576104205180600f0b8118611adc576104a0526104405180600f0b8118611adc576104c052610460518060011c611adc576104e0526104a09050f36118c1565b6392e3cc2d8118610ad157602436103417611adc575f61028052610b11565b639ac90d3d81186118c157602436103417611adc575f61028052610cd8566118c1565b63aa85169c8118610b8757604436103417611adc57602435610280525b6004358060a01c611adc576102605261010061026051604052610b356102a061199f565b6102a06102805160098111611adc5760051b81019050516392e3cc2d6103e05261026051610400526101006103e060246103fc845afa610b77573d5f5f3e3d5ffd5b6101003d10611adc576103e09050f35b6311d8127981186118c157604436103417611adc57602435610280525b6004358060a01c611adc5761026052602061026051604052610bc76102a061199f565b6102a06102805160098111611adc5760051b810190505163940494f16103e052610260516104005260206103e060246103fc845afa610c08573d5f5f3e3d5ffd5b60203d10611adc576103e09050f36118c1565b63a54e3ade8118610cbb57604436103417611adc57602435610280525b6004358060a01c611adc5761026052602061026051604052610c5b6102a061199f565b6102a06102805160098111611adc5760051b8101905051636f20d6dd6103e052610260516104005260206103e060246103fc845afa610c9c573d5f5f3e3d5ffd5b60203d10611adc576103e0518060a01c611adc57610420526104209050f35b636ebe51fc81186118c157604436103417611adc57602435610280525b6004358060a01c611adc576102605261010061026051604052610cfc6102a061199f565b6102a06102805160098111611adc5760051b8101905051639ac90d3d6103e05261026051610400526101006103e060246103fc845afa610d3e573d5f5f3e3d5ffd5b6101003d10611adc576103e0518060a01c611adc5761050052610400518060a01c611adc5761052052610420518060a01c611adc5761054052610440518060a01c611adc5761056052610460518060a01c611adc5761058052610480518060a01c611adc576105a0526104a0518060a01c611adc576105c0526104c0518060a01c611adc576105e0526105009050f36118c1565b6352b515558118610df157602436103417611adc575f61028052610e52565b63daf297b98118610e1257602436103417611adc57604036610280376110a8565b63bdf475c381186118c157602436103417611adc575f61014052611034566118c1565b63403f502f8118610ec857604436103417611adc57602435610280525b6004358060a01c611adc576102605261010061026051604052610e766102a061199f565b6102a06102805160098111611adc5760051b81019050516352b515556103e05261026051610400526101006103e060246103fc845afa610eb8573d5f5f3e3d5ffd5b6101003d10611adc576103e09050f35b63956aae3a81186118c15734611adc575f6040525f600a905b8060605260035460605118610ef557610f55565b60026060516020525f5260405f205460805260405160805163956aae3a60a052602060a0600460bc845afa610f2c573d5f5f3e3d5ffd5b60203d10611adc5760a0905051808201828110611adc5790509050604052600101818118610ee1575b505060206040f36118c1565b637cdb72b081186118c157602436103417611adc575f61028052610fa1566118c1565b630ed5a427811861101757604436103417611adc57602435610280525b6004358060a01c611adc576102605261014061026051604052610fc56102a061199f565b6102a06102805160098111611adc5760051b8101905051637cdb72b06103e05261026051610400526101406103e060246103fc845afa611007573d5f5f3e3d5ffd5b6101403d10611adc576103e09050f35b6336678b8081186118c157604436103417611adc57602435610140525b6004358060a01c611adc5761012052602061012051604052611057610160611903565b610160f36118c1565b63e408122081186118c157604436103417611adc57602435610280525f6102a0526110a8566118c1565b63773fb7e381186118c157606436103417611adc5760406024610280375b6004358060a01c611adc5761026052610260516040526110c96102e061199f565b6102e06102a05160098111611adc5760051b810190505163379510496104205261026051610440526020610420602461043c845afa61110a573d5f5f3e3d5ffd5b60203d10611adc57610420518060a01c611adc57610460526104609050516102c0526020600454635d95c65e6102e0526102c0516103005260206102e060246102fc845afa61115b573d5f5f3e3d5ffd5b60203d10611adc576102e0518060a01c611adc57610320526103209050f36118c1565b6325fa5d13811861119e57602436103417611adc57604036606037611252565b63876112e681186118c157604436103417611adc57602435610280525b6004358060a01c611adc5761026052610100610260516040526111df6102a061199f565b6102a06102805160098111611adc5760051b81019050516359f4f3516103e05261026051610400526101006103e060246103fc845afa611221573d5f5f3e3d5ffd5b6101003d10611adc576103e09050f36118c1565b63f8b661e281186118c157606436103417611adc57604060246060375b6004358060a01c611adc5760405260055460a052602060a0f36118c1565b6337951049811861128f57602436103417611adc575f61028052611381565b630a700c0881186112ae57602436103417611adc575f61028052611467565b634460f66f81186118c157604436103417611adc57602435610280525b6004358060a01c611adc5761026052610260516040526112ec6102c0611903565b6102c0516102a0526102a0516040526113066102e061199f565b6102e06102805160098111611adc5760051b81019050516102c05260206102c05163c5b7074a6102e052610260516103005260206102e060246102fc845afa611351573d5f5f3e3d5ffd5b60203d10611adc576102e09050f36118c1565b630881715f81186118c157604436103417611adc57602435610280525b6004358060a01c611adc57610260526020610260516040526113a46102a061199f565b6102a06102805160098111611adc5760051b810190505163379510496103e052610260516104005260206103e060246103fc845afa6113e5573d5f5f3e3d5ffd5b60203d10611adc576103e0518060a01c611adc57610420526104209050f36118c1565b63940494f1811861142757602436103417611adc575f61028052610ba4565b63c5b7074a81186118c157602436103417611adc575f610280526112cb566118c1565b63decdf68f81186114da57604436103417611adc57602435610280525b6004358060a01c611adc576102605260206102605160405261148a6102a061199f565b6102a06102805160098111611adc5760051b8101905051630a700c086103e052610260516104005260206103e060246103fc845afa6114cb573d5f5f3e3d5ffd5b60203d10611adc576103e09050f35b63a77576ef81186118c157602436103417611adc575f610280526117a8566118c1565b6390d1dd2d811861158d57604436103417611adc57602435610280525b6004358060a01c611adc576102605260206102605160405261153d6102a061199f565b6102a06102805160098111611adc5760051b81019050516366d3966c6103e052610260516104005260206103e060246103fc845afa61157e573d5f5f3e3d5ffd5b60203d10611adc576103e09050f35b637a65d2dd81186118c157604436103417611adc57602435610280525b6004358060a01c611adc5761026052610260516040526115cb6102c061199f565b6102c06102805160098111611adc5760051b81019050516102a0526102806102a05163688532aa6102c052610260516102e0526102806102c060246102dc845afa611618573d5f5f3e3d5ffd5b6102803d10611adc576102c09050f36118c1565b63688532aa81186118c157602436103417611adc575f610280526115aa566118c1565b6392234f4581186118c157604436103417611adc57602435610280525b6004358060a01c611adc57610260526020806104e052610260516040526116946102a061199f565b6102a06102805160098111611adc5760051b8101905051635c9117416103e052610260516104005260806103e060246103fc845afa6116d5573d5f5f3e3d5ffd5b60403d10611adc576103e0516103e0016040815111611adc57602081510180610480828460045afa5050506104809050816104e00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506104e0f36118c1565b6359f4f351811861176857602436103417611adc575f610280526111bb565b63619ea80681186118c157602436103417611adc575f610280526101dd566118c1565b632fc90bcf81186118c157604436103417611adc57602435610280525b6004358060a01c611adc5761026052610100610260516040526117cc6102a061199f565b6102a06102805160098111611adc5760051b810190505163a77576ef6103e05261026051610400526101006103e060246103fc845afa61180e573d5f5f3e3d5ffd5b6101003d10611adc576103e0518060a01c611adc5761050052610400518060a01c611adc5761052052610420518060a01c611adc5761054052610440518060a01c611adc5761056052610460518060a01c611adc5761058052610480518060a01c611adc576105a0526104a0518060a01c611adc576105c0526104c0518060a01c611adc576105e0526105009050f36118c1565b63e4d332a981186118c157602436103417611adc575f61028052610562565b5f5ffd5b60035460405111611adc57600354604051186118ef5760035460018101818110611adc5790506003555b60605160026040516020525f5260405f2055565b5f600a905b806060526003546060511861191c57611996565b60026060516020525f5260405f205460805260805163bdf475c360c05260405160e052602060c0602460dc845afa611956573d5f5f3e3d5ffd5b60203d10611adc5760c0518060a01c611adc576101005261010090505160a05260a0511561198b5760a051835250505061199d565b600101818118611908575b50505f8152505b565b610160366060375f600a905b806101c0526003546101c051186119c157611a5d565b60026101c0516020525f5260405f20546101e0526101e05163619ea80661020052604051610220526020610200602461021c845afa611a02573d5f5f3e3d5ffd5b60203d10611adc57610200518060011c611adc576102405261024090505115611a52576101e0516101a05160098111611adc5760051b606001526101a05160018101818110611adc5790506101a0525b6001018181186119ab575b5050606051611acb57600b6101c0527f6e6f2072656769737472790000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f825f031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b61014081610140606060045afa5050565b5f80fd0e3518c118c114fd015702ce18c10c1b106018c1140818c118c1162c136403a218c118c105270dd2144a18c118c108af04e5019318c11270022605e90ab2033218c118c118a2108a18c10f840af418c118c1028f117e123518c118c1174918c10929178b164f18c118c118c118c10f61001818c10734
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000abc000d88f23bb45525e447528dbf656a9d55bf50000000000000000000000000000000000000000000000000000000000000002
-----Decoded View---------------
Arg [0] : _gauge_factory (address): 0xabC000d88f23Bb45525E447528DBF656A9D55bf5
Arg [1] : _gauge_type (int128): 2
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000abc000d88f23bb45525e447528dbf656a9d55bf5
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000002
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.