Overview
S Balance
S Value
$0.00Cross-Chain Transactions
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
# pragma evm-version paris
"""
@title CurveMetaRegistry
@custom:version 1.1.0
@author Curve.Fi
@license Copyright (c) Curve.Fi, 2020-2024 - all rights reserved
"""
version: public(constant(String[8])) = "1.1.0"
# ---- 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)
deployer: immutable(address)
# ---- 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
deployer = msg.sender
@external
def set_owner(_owner: address):
assert msg.sender == deployer
assert self.admin == deployer
assert _owner != deployer
self.admin = _owner
log NewAdmin(_owner)
# ---- 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:
registry_length: uint256 = self.registry_length
for i in range(registry_length, bound=MAX_REGISTRIES):
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
registry_length: uint256 = self.registry_length
for i in range(registry_length, bound=MAX_REGISTRIES):
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)
registry_length: uint256 = self.registry_length
for registry_index in range(registry_length, bound=MAX_REGISTRIES):
registry = self.get_registry[registry_index]
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)
registry_length: uint256 = self.registry_length
for registry_index in range(registry_length, bound=MAX_REGISTRIES):
registry = self.get_registry[registry_index]
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
registry_length: uint256 = self.registry_length
for i in range(registry_length, bound=MAX_REGISTRIES):
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
registry_length: uint256 = self.registry_length
for i in range(registry_length, bound=MAX_REGISTRIES):
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
Contract ABI
API[{"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":"set_owner","inputs":[{"name":"_owner","type":"address"}],"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":"version","inputs":[],"outputs":[{"name":"","type":"string"}]},{"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
611d2a51503461005e576020611da36000396000518060a01c61005e576040526020611dc360003960005180600f0b811861005e576060523360005560405160045560605160055533611d2a52611d2a61006361000039611d4a610000f35b600080fd60003560e01c6002603b820660011b611cb401601e39600051565b6354fd4d508118611a765734611caf5760208060805260056040527f312e312e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f3611a76565b63f851a44081186100b95734611caf5760005460405260206040f35b633a1d5d8e8118611a7657602436103417611caf5760006040526003546060526000606051600a8111611caf5780156101dc57905b80608052600260805160205260005260406000205460a05260a05163956aae3a60e052602060e0600460fc845afa61012b573d600060003e3d6000fd5b60203d10611caf5760e090505160c05260c051600435604051808203828111611caf579050905010156101ba575050602060a051633a1d5d8e60e052600435604051808203828111611caf579050905061010052602060e0602460fc845afa610199573d600060003e3d6000fd5b60203d10611caf5760e0518060a01c611caf576101205261012090506101e8565b60405160c051808201828110611caf57905090506040526001018181186100ee575b50506000608052602060805bf3611a76565b6317f7182a811861020a5734611caf5760015460405260206040f35b63e8980c6e8118611a765734611caf5760045460405260206040f3611a76565b63913d9b4d811861025957602436103417611caf57600260043560205260005260406000205460405260206040f35b63c9c4f3ec8118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610280516040526102976102c0611b65565b6102c06102a05160098111611caf5760051b81019050511515610400526020610400f3611a76565b63083297d281186102db5734611caf5760035460405260206040f35b63eb85226d81186102fb57606436103417611caf5760006102e052610b63565b63e5ea47b88118611a765734611caf576001546040526040513318611caf57604051600055600060015500611a76565b6352b7e8a181186103475734611caf5760055460405260206040f35b6366d3966c8118611a7657602436103417611caf5760006102a0526116e256611a76565b637cb97b2b81186103f657602436103417611caf576004358060a01c611caf576040526020611d2a6000396000513318611caf576020611d2a60003960005160005418611caf576020611d2a60003960005160405114611caf576040516000556040517f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c60006060a2005b63688532aa8118611a7657602436103417611caf5760006102a05261177556611a76565b6322f595c8811861045c57602436103417611caf576004358060a01c611caf576080526000543318611caf5760035460405260805160605261045a611a7c565b005b636f20d6dd8118611a7657602436103417611caf5760006102a052610dcd56611a76565b630dbdc9ff81186104ce57604436103417611caf576024358060a01c611caf576080526000543318611caf576003546004351015611caf576004356040526080516060526104cc611a7c565b005b635c9117418118611a7657602436103417611caf5760006102a05261181756611a76565b63bbfbf4ac811861053c57604436103417611caf576004358060a01c611caf5760405260243580600f0b8118611caf576060526000543318611caf57604051600455606051600555005b6384e1710d81186105a257602436103417611caf576004358060a01c611caf57604052602060405163b229777c606052602060606004607c845afa610586573d600060003e3d6000fd5b60203d10611caf576060518060a01c611caf5760a05260a09050f35b63622d64f48118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610100610280516040526105e36102c0611b65565b6102c06102a05160098111611caf5760051b8101905051634cb088f1610400526102805161042052610100610400602461041c845afa610628573d600060003e3d6000fd5b6101003d10611caf576104009050f3611a76565b63308d1b6d8118611a7657602436103417611caf576004358060a01c611caf5761028052610140610280516040526106756102a0611b65565b6102a0f3611a76565b63a87df06c811861069d57604436103417611caf576000608052610760565b63a64485a18118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf57610280526020610280516040526106dd6102c0611b65565b6102c06102a05160098111611caf5760051b810190505163e4d332a96104005261028051610420526020610400602461041c845afa610721573d600060003e3d6000fd5b60203d10611caf57610400518060011c611caf57610440526104409050f3611a76565b636982eb0b811861087e57606436103417611caf576044356080525b6004358060a01c611caf576040526024358060a01c611caf5760605260603660a03760035461010052600061010051600a8111611caf57801561087557905b806101205260026101205160205260005260406000205460e052600062010000905b806101405260e051636982eb0b61016052604051610180526060516101a052610140516101c0526020610160606461017c845afa610804573d600060003e3d6000fd5b60203d10611caf57610160518060a01c611caf576101e0526101e090505160c05260c05161083157610868565b60a05160018101818110611caf57905060a05260805160a051111561085d5750505050602060c061087c565b6001018181186107c1575b505060010181811861079f575b5050602060c05bf35b634cb088f18118611a7657602436103417611caf5760006102a0526105bf56611a76565b63a064072b8118611a7657604436103417611caf576004358060a01c611caf576040526024358060a01c611caf5760605260006080526000617da0526000617dc052600354617de0526000617de051600a8111611caf5780156109cf57905b80617e00526002617e0051602052600052604060002054617dc052600062010000905b80617e2052617dc051636982eb0b617e4052604051617e6052606051617e8052617e2051617ea0526020617e406064617e5c845afa610968573d600060003e3d6000fd5b60203d10611caf57617e40518060a01c611caf57617ec052617ec0905051617da052617da051610997576109c2565b6080516103e78111611caf57617da0518160051b60a001526001810160805250600101818118610924575b5050600101818118610901575b5050602080617e005280617e000160006080518083528060051b6000826103e88111611caf578015610a1a57905b8060051b60a001518160051b6020880101526001018181186109fd575b50508201602001915050905081019050617e00f3611a76565b63c11e45b88118610a5357602436103417611caf5760006102a052610acd565b637c51db558118610a7857604436103417611caf57602435606052600060805261140c565b636b441a408118611a7657602436103417611caf576004358060a01c611caf576040526000543318611caf5760405160015500611a76565b63c0bf4cbf8118610b4657604436103417611caf576024356102a0525b6004358060a01c611caf576102805261010061028051604052610af16102c0611b65565b6102c06102a05160098111611caf5760051b810190505163c11e45b8610400526102805161042052610100610400602461041c845afa610b36573d600060003e3d6000fd5b6101003d10611caf576104009050f35b6363fb3ddb8118611a7657608436103417611caf576064356102e0525b6004358060a01c611caf57610280526024358060a01c611caf576102a0526044358060a01c611caf576102c052606061028051604052610ba4610300611b65565b6103006102e05160098111611caf5760051b810190505163eb85226d6104405261028051610460526102a051610480526102c0516104a0526060610440606461045c845afa610bf8573d600060003e3d6000fd5b60603d10611caf576104405180600f0b8118611caf576104c0526104605180600f0b8118611caf576104e052610480518060011c611caf57610500526104c09050f3611a76565b6392e3cc2d8118610c5f57602436103417611caf5760006102a052610ca0565b639ac90d3d8118611a7657602436103417611caf5760006102a052610e7056611a76565b63aa85169c8118610d1957604436103417611caf576024356102a0525b6004358060a01c611caf576102805261010061028051604052610cc46102c0611b65565b6102c06102a05160098111611caf5760051b81019050516392e3cc2d610400526102805161042052610100610400602461041c845afa610d09573d600060003e3d6000fd5b6101003d10611caf576104009050f35b6311d812798118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052602061028051604052610d596102c0611b65565b6102c06102a05160098111611caf5760051b810190505163940494f16104005261028051610420526020610400602461041c845afa610d9d573d600060003e3d6000fd5b60203d10611caf576104009050f3611a76565b63a54e3ade8118610e5357604436103417611caf576024356102a0525b6004358060a01c611caf5761028052602061028051604052610df06102c0611b65565b6102c06102a05160098111611caf5760051b8101905051636f20d6dd6104005261028051610420526020610400602461041c845afa610e34573d600060003e3d6000fd5b60203d10611caf57610400518060a01c611caf57610440526104409050f35b636ebe51fc8118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf576102805261010061028051604052610e946102c0611b65565b6102c06102a05160098111611caf5760051b8101905051639ac90d3d610400526102805161042052610100610400602461041c845afa610ed9573d600060003e3d6000fd5b6101003d10611caf57610400518060a01c611caf5761052052610420518060a01c611caf5761054052610440518060a01c611caf5761056052610460518060a01c611caf5761058052610480518060a01c611caf576105a0526104a0518060a01c611caf576105c0526104c0518060a01c611caf576105e0526104e0518060a01c611caf57610600526105209050f3611a76565b6352b515558118610f8d57602436103417611caf5760006102a052610fef565b63daf297b98118610fae57602436103417611caf576040366102a037611259565b63bdf475c38118611a7657602436103417611caf576000610160526111e456611a76565b63403f502f811861106857604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610100610280516040526110136102c0611b65565b6102c06102a05160098111611caf5760051b81019050516352b51555610400526102805161042052610100610400602461041c845afa611058573d600060003e3d6000fd5b6101003d10611caf576104009050f35b63956aae3a8118611a765734611caf5760006040526003546060526000606051600a8111611caf57801561110157905b80608052600260805160205260005260406000205460a05260405160a05163956aae3a60c052602060c0600460dc845afa6110d8573d600060003e3d6000fd5b60203d10611caf5760c0905051808201828110611caf5790509050604052600101818118611098575b505060206040f3611a76565b637cdb72b08118611a7657602436103417611caf5760006102a05261114e56611a76565b630ed5a42781186111c757604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610140610280516040526111726102c0611b65565b6102c06102a05160098111611caf5760051b8101905051637cdb72b0610400526102805161042052610140610400602461041c845afa6111b7573d600060003e3d6000fd5b6101403d10611caf576104009050f35b6336678b808118611a7657604436103417611caf57602435610160525b6004358060a01c611caf5761014052602061014051604052611207610180611abc565b610180f3611a76565b63e40812208118611a7657604436103417611caf576024356102a05260006102c05261125956611a76565b63773fb7e38118611a7657606436103417611caf57604060246102a0375b6004358060a01c611caf57610280526102805160405261127a610300611b65565b6103006102c05160098111611caf5760051b810190505163379510496104405261028051610460526020610440602461045c845afa6112be573d600060003e3d6000fd5b60203d10611caf57610440518060a01c611caf57610480526104809050516102e0526020600454635d95c65e610300526102e051610320526020610300602461031c845afa611312573d600060003e3d6000fd5b60203d10611caf57610300518060a01c611caf57610340526103409050f3611a76565b6325fa5d13811861135557602436103417611caf5760403660603761140c565b63876112e68118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610100610280516040526113966102c0611b65565b6102c06102a05160098111611caf5760051b81019050516359f4f351610400526102805161042052610100610400602461041c845afa6113db573d600060003e3d6000fd5b6101003d10611caf576104009050f3611a76565b63f8b661e28118611a7657606436103417611caf57604060246060375b6004358060a01c611caf5760405260055460a052602060a0f3611a76565b6337951049811861144a57602436103417611caf5760006102a052611540565b630a700c08811861146a57602436103417611caf5760006102a05261162b565b634460f66f8118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610280516040526114a86102e0611abc565b6102e0516102c0526102c0516040526114c2610300611b65565b6103006102a05160098111611caf5760051b81019050516102e05260206102e05163c5b7074a6103005261028051610320526020610300602461031c845afa611510573d600060003e3d6000fd5b60203d10611caf576103009050f3611a76565b630881715f8118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf57610280526020610280516040526115636102c0611b65565b6102c06102a05160098111611caf5760051b810190505163379510496104005261028051610420526020610400602461041c845afa6115a7573d600060003e3d6000fd5b60203d10611caf57610400518060a01c611caf57610440526104409050f3611a76565b63940494f181186115ea57602436103417611caf5760006102a052610d36565b63c5b7074a8118611a7657602436103417611caf5760006102a05261148756611a76565b63decdf68f81186116a157604436103417611caf576024356102a0525b6004358060a01c611caf576102805260206102805160405261164e6102c0611b65565b6102c06102a05160098111611caf5760051b8101905051630a700c086104005261028051610420526020610400602461041c845afa611692573d600060003e3d6000fd5b60203d10611caf576104009050f35b63a77576ef8118611a7657602436103417611caf5760006102a05261195956611a76565b6390d1dd2d811861175857604436103417611caf576024356102a0525b6004358060a01c611caf57610280526020610280516040526117056102c0611b65565b6102c06102a05160098111611caf5760051b81019050516366d3966c6104005261028051610420526020610400602461041c845afa611749573d600060003e3d6000fd5b60203d10611caf576104009050f35b637a65d2dd8118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610280516040526117966102e0611b65565b6102e06102a05160098111611caf5760051b81019050516102c0526102806102c05163688532aa6102e05261028051610300526102806102e060246102fc845afa6117e6573d600060003e3d6000fd5b6102803d10611caf576102e09050f3611a76565b6392234f458118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052602080610500526102805160405261183f6102c0611b65565b6102c06102a05160098111611caf5760051b8101905051635c9117416104005261028051610420526080610400602461041c845afa611883573d600060003e3d6000fd5b60403d10611caf5761040051610400016040815111611caf576020815101806104a0828460045afa5050506104a09050816105000160208251018082828560045afa50508051806020830101601f82600003163682375050601f19601f825160200101169050905081019050610500f3611a76565b6359f4f351811861191857602436103417611caf5760006102a052611372565b63619ea8068118611a7657602436103417611caf5760006102a05261027656611a76565b632fc90bcf8118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf57610280526101006102805160405261197d6102c0611b65565b6102c06102a05160098111611caf5760051b810190505163a77576ef610400526102805161042052610100610400602461041c845afa6119c2573d600060003e3d6000fd5b6101003d10611caf57610400518060a01c611caf5761052052610420518060a01c611caf5761054052610440518060a01c611caf5761056052610460518060a01c611caf5761058052610480518060a01c611caf576105a0526104a0518060a01c611caf576105c0526104c0518060a01c611caf576105e0526104e0518060a01c611caf57610600526105209050f3611a76565b63e4d332a98118611a7657602436103417611caf5760006102a0526106ba565b60006000fd5b60035460405111611caf5760035460405118611aa65760035460018101818110611caf5790506003555b6060516002604051602052600052604060002055565b6003546060526000606051600a8111611caf578015611b5b57905b80608052600260805160205260005260406000205460a05260a05163bdf475c360e05260405161010052602060e0602460fc845afa611b1b573d600060003e3d6000fd5b60203d10611caf5760e0518060a01c611caf576101205261012090505160c05260c05115611b505760c0518352505050611b63565b600101818118611ad7575b505060008152505b565b610160366060376003546101c05260006101c051600a8111611caf578015611c2f57905b806101e05260026101e051602052600052604060002054610200526102005163619ea80661022052604051610240526020610220602461023c845afa611bd4573d600060003e3d6000fd5b60203d10611caf57610220518060011c611caf576102605261026090505115611c2457610200516101a05160098111611caf5760051b606001526101a05160018101818110611caf5790506101a0525b600101818118611b89575b5050606051611c9e57600b6101e0527f6e6f207265676973747279000000000000000000000000000000000000000000610200526101e0506101e0518061020001601f826000031636823750506308c379a06101a05260206101c052601f19601f6101e05101166044016101bcfd5b61014081610140606060045afa5050565b600080fd0fd21a761a7616c501ee041a1a760db012101a7615ca1a761a76036b152304f21a761a76067e0f6d160e1a761a760a33063c022a1a76142a02bf07440c3f0480001a1a761a56123b1a7611310c831a761a76032b133513ef1a761a7618f81a760ab0193c17fa1a761a761a761a76110d009d1a7608a284191d2a8118761820a16576797065728300030a0016000000000000000000000000f3a431008396df8a8b2df492c913706bdb0874efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Deployed Bytecode
0x60003560e01c6002603b820660011b611cb401601e39600051565b6354fd4d508118611a765734611caf5760208060805260056040527f312e312e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f3611a76565b63f851a44081186100b95734611caf5760005460405260206040f35b633a1d5d8e8118611a7657602436103417611caf5760006040526003546060526000606051600a8111611caf5780156101dc57905b80608052600260805160205260005260406000205460a05260a05163956aae3a60e052602060e0600460fc845afa61012b573d600060003e3d6000fd5b60203d10611caf5760e090505160c05260c051600435604051808203828111611caf579050905010156101ba575050602060a051633a1d5d8e60e052600435604051808203828111611caf579050905061010052602060e0602460fc845afa610199573d600060003e3d6000fd5b60203d10611caf5760e0518060a01c611caf576101205261012090506101e8565b60405160c051808201828110611caf57905090506040526001018181186100ee575b50506000608052602060805bf3611a76565b6317f7182a811861020a5734611caf5760015460405260206040f35b63e8980c6e8118611a765734611caf5760045460405260206040f3611a76565b63913d9b4d811861025957602436103417611caf57600260043560205260005260406000205460405260206040f35b63c9c4f3ec8118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610280516040526102976102c0611b65565b6102c06102a05160098111611caf5760051b81019050511515610400526020610400f3611a76565b63083297d281186102db5734611caf5760035460405260206040f35b63eb85226d81186102fb57606436103417611caf5760006102e052610b63565b63e5ea47b88118611a765734611caf576001546040526040513318611caf57604051600055600060015500611a76565b6352b7e8a181186103475734611caf5760055460405260206040f35b6366d3966c8118611a7657602436103417611caf5760006102a0526116e256611a76565b637cb97b2b81186103f657602436103417611caf576004358060a01c611caf576040526020611d2a6000396000513318611caf576020611d2a60003960005160005418611caf576020611d2a60003960005160405114611caf576040516000556040517f71614071b88dee5e0b2ae578a9dd7b2ebbe9ae832ba419dc0242cd065a290b6c60006060a2005b63688532aa8118611a7657602436103417611caf5760006102a05261177556611a76565b6322f595c8811861045c57602436103417611caf576004358060a01c611caf576080526000543318611caf5760035460405260805160605261045a611a7c565b005b636f20d6dd8118611a7657602436103417611caf5760006102a052610dcd56611a76565b630dbdc9ff81186104ce57604436103417611caf576024358060a01c611caf576080526000543318611caf576003546004351015611caf576004356040526080516060526104cc611a7c565b005b635c9117418118611a7657602436103417611caf5760006102a05261181756611a76565b63bbfbf4ac811861053c57604436103417611caf576004358060a01c611caf5760405260243580600f0b8118611caf576060526000543318611caf57604051600455606051600555005b6384e1710d81186105a257602436103417611caf576004358060a01c611caf57604052602060405163b229777c606052602060606004607c845afa610586573d600060003e3d6000fd5b60203d10611caf576060518060a01c611caf5760a05260a09050f35b63622d64f48118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610100610280516040526105e36102c0611b65565b6102c06102a05160098111611caf5760051b8101905051634cb088f1610400526102805161042052610100610400602461041c845afa610628573d600060003e3d6000fd5b6101003d10611caf576104009050f3611a76565b63308d1b6d8118611a7657602436103417611caf576004358060a01c611caf5761028052610140610280516040526106756102a0611b65565b6102a0f3611a76565b63a87df06c811861069d57604436103417611caf576000608052610760565b63a64485a18118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf57610280526020610280516040526106dd6102c0611b65565b6102c06102a05160098111611caf5760051b810190505163e4d332a96104005261028051610420526020610400602461041c845afa610721573d600060003e3d6000fd5b60203d10611caf57610400518060011c611caf57610440526104409050f3611a76565b636982eb0b811861087e57606436103417611caf576044356080525b6004358060a01c611caf576040526024358060a01c611caf5760605260603660a03760035461010052600061010051600a8111611caf57801561087557905b806101205260026101205160205260005260406000205460e052600062010000905b806101405260e051636982eb0b61016052604051610180526060516101a052610140516101c0526020610160606461017c845afa610804573d600060003e3d6000fd5b60203d10611caf57610160518060a01c611caf576101e0526101e090505160c05260c05161083157610868565b60a05160018101818110611caf57905060a05260805160a051111561085d5750505050602060c061087c565b6001018181186107c1575b505060010181811861079f575b5050602060c05bf35b634cb088f18118611a7657602436103417611caf5760006102a0526105bf56611a76565b63a064072b8118611a7657604436103417611caf576004358060a01c611caf576040526024358060a01c611caf5760605260006080526000617da0526000617dc052600354617de0526000617de051600a8111611caf5780156109cf57905b80617e00526002617e0051602052600052604060002054617dc052600062010000905b80617e2052617dc051636982eb0b617e4052604051617e6052606051617e8052617e2051617ea0526020617e406064617e5c845afa610968573d600060003e3d6000fd5b60203d10611caf57617e40518060a01c611caf57617ec052617ec0905051617da052617da051610997576109c2565b6080516103e78111611caf57617da0518160051b60a001526001810160805250600101818118610924575b5050600101818118610901575b5050602080617e005280617e000160006080518083528060051b6000826103e88111611caf578015610a1a57905b8060051b60a001518160051b6020880101526001018181186109fd575b50508201602001915050905081019050617e00f3611a76565b63c11e45b88118610a5357602436103417611caf5760006102a052610acd565b637c51db558118610a7857604436103417611caf57602435606052600060805261140c565b636b441a408118611a7657602436103417611caf576004358060a01c611caf576040526000543318611caf5760405160015500611a76565b63c0bf4cbf8118610b4657604436103417611caf576024356102a0525b6004358060a01c611caf576102805261010061028051604052610af16102c0611b65565b6102c06102a05160098111611caf5760051b810190505163c11e45b8610400526102805161042052610100610400602461041c845afa610b36573d600060003e3d6000fd5b6101003d10611caf576104009050f35b6363fb3ddb8118611a7657608436103417611caf576064356102e0525b6004358060a01c611caf57610280526024358060a01c611caf576102a0526044358060a01c611caf576102c052606061028051604052610ba4610300611b65565b6103006102e05160098111611caf5760051b810190505163eb85226d6104405261028051610460526102a051610480526102c0516104a0526060610440606461045c845afa610bf8573d600060003e3d6000fd5b60603d10611caf576104405180600f0b8118611caf576104c0526104605180600f0b8118611caf576104e052610480518060011c611caf57610500526104c09050f3611a76565b6392e3cc2d8118610c5f57602436103417611caf5760006102a052610ca0565b639ac90d3d8118611a7657602436103417611caf5760006102a052610e7056611a76565b63aa85169c8118610d1957604436103417611caf576024356102a0525b6004358060a01c611caf576102805261010061028051604052610cc46102c0611b65565b6102c06102a05160098111611caf5760051b81019050516392e3cc2d610400526102805161042052610100610400602461041c845afa610d09573d600060003e3d6000fd5b6101003d10611caf576104009050f35b6311d812798118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052602061028051604052610d596102c0611b65565b6102c06102a05160098111611caf5760051b810190505163940494f16104005261028051610420526020610400602461041c845afa610d9d573d600060003e3d6000fd5b60203d10611caf576104009050f3611a76565b63a54e3ade8118610e5357604436103417611caf576024356102a0525b6004358060a01c611caf5761028052602061028051604052610df06102c0611b65565b6102c06102a05160098111611caf5760051b8101905051636f20d6dd6104005261028051610420526020610400602461041c845afa610e34573d600060003e3d6000fd5b60203d10611caf57610400518060a01c611caf57610440526104409050f35b636ebe51fc8118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf576102805261010061028051604052610e946102c0611b65565b6102c06102a05160098111611caf5760051b8101905051639ac90d3d610400526102805161042052610100610400602461041c845afa610ed9573d600060003e3d6000fd5b6101003d10611caf57610400518060a01c611caf5761052052610420518060a01c611caf5761054052610440518060a01c611caf5761056052610460518060a01c611caf5761058052610480518060a01c611caf576105a0526104a0518060a01c611caf576105c0526104c0518060a01c611caf576105e0526104e0518060a01c611caf57610600526105209050f3611a76565b6352b515558118610f8d57602436103417611caf5760006102a052610fef565b63daf297b98118610fae57602436103417611caf576040366102a037611259565b63bdf475c38118611a7657602436103417611caf576000610160526111e456611a76565b63403f502f811861106857604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610100610280516040526110136102c0611b65565b6102c06102a05160098111611caf5760051b81019050516352b51555610400526102805161042052610100610400602461041c845afa611058573d600060003e3d6000fd5b6101003d10611caf576104009050f35b63956aae3a8118611a765734611caf5760006040526003546060526000606051600a8111611caf57801561110157905b80608052600260805160205260005260406000205460a05260405160a05163956aae3a60c052602060c0600460dc845afa6110d8573d600060003e3d6000fd5b60203d10611caf5760c0905051808201828110611caf5790509050604052600101818118611098575b505060206040f3611a76565b637cdb72b08118611a7657602436103417611caf5760006102a05261114e56611a76565b630ed5a42781186111c757604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610140610280516040526111726102c0611b65565b6102c06102a05160098111611caf5760051b8101905051637cdb72b0610400526102805161042052610140610400602461041c845afa6111b7573d600060003e3d6000fd5b6101403d10611caf576104009050f35b6336678b808118611a7657604436103417611caf57602435610160525b6004358060a01c611caf5761014052602061014051604052611207610180611abc565b610180f3611a76565b63e40812208118611a7657604436103417611caf576024356102a05260006102c05261125956611a76565b63773fb7e38118611a7657606436103417611caf57604060246102a0375b6004358060a01c611caf57610280526102805160405261127a610300611b65565b6103006102c05160098111611caf5760051b810190505163379510496104405261028051610460526020610440602461045c845afa6112be573d600060003e3d6000fd5b60203d10611caf57610440518060a01c611caf57610480526104809050516102e0526020600454635d95c65e610300526102e051610320526020610300602461031c845afa611312573d600060003e3d6000fd5b60203d10611caf57610300518060a01c611caf57610340526103409050f3611a76565b6325fa5d13811861135557602436103417611caf5760403660603761140c565b63876112e68118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610100610280516040526113966102c0611b65565b6102c06102a05160098111611caf5760051b81019050516359f4f351610400526102805161042052610100610400602461041c845afa6113db573d600060003e3d6000fd5b6101003d10611caf576104009050f3611a76565b63f8b661e28118611a7657606436103417611caf57604060246060375b6004358060a01c611caf5760405260055460a052602060a0f3611a76565b6337951049811861144a57602436103417611caf5760006102a052611540565b630a700c08811861146a57602436103417611caf5760006102a05261162b565b634460f66f8118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610280516040526114a86102e0611abc565b6102e0516102c0526102c0516040526114c2610300611b65565b6103006102a05160098111611caf5760051b81019050516102e05260206102e05163c5b7074a6103005261028051610320526020610300602461031c845afa611510573d600060003e3d6000fd5b60203d10611caf576103009050f3611a76565b630881715f8118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf57610280526020610280516040526115636102c0611b65565b6102c06102a05160098111611caf5760051b810190505163379510496104005261028051610420526020610400602461041c845afa6115a7573d600060003e3d6000fd5b60203d10611caf57610400518060a01c611caf57610440526104409050f3611a76565b63940494f181186115ea57602436103417611caf5760006102a052610d36565b63c5b7074a8118611a7657602436103417611caf5760006102a05261148756611a76565b63decdf68f81186116a157604436103417611caf576024356102a0525b6004358060a01c611caf576102805260206102805160405261164e6102c0611b65565b6102c06102a05160098111611caf5760051b8101905051630a700c086104005261028051610420526020610400602461041c845afa611692573d600060003e3d6000fd5b60203d10611caf576104009050f35b63a77576ef8118611a7657602436103417611caf5760006102a05261195956611a76565b6390d1dd2d811861175857604436103417611caf576024356102a0525b6004358060a01c611caf57610280526020610280516040526117056102c0611b65565b6102c06102a05160098111611caf5760051b81019050516366d3966c6104005261028051610420526020610400602461041c845afa611749573d600060003e3d6000fd5b60203d10611caf576104009050f35b637a65d2dd8118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052610280516040526117966102e0611b65565b6102e06102a05160098111611caf5760051b81019050516102c0526102806102c05163688532aa6102e05261028051610300526102806102e060246102fc845afa6117e6573d600060003e3d6000fd5b6102803d10611caf576102e09050f3611a76565b6392234f458118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf5761028052602080610500526102805160405261183f6102c0611b65565b6102c06102a05160098111611caf5760051b8101905051635c9117416104005261028051610420526080610400602461041c845afa611883573d600060003e3d6000fd5b60403d10611caf5761040051610400016040815111611caf576020815101806104a0828460045afa5050506104a09050816105000160208251018082828560045afa50508051806020830101601f82600003163682375050601f19601f825160200101169050905081019050610500f3611a76565b6359f4f351811861191857602436103417611caf5760006102a052611372565b63619ea8068118611a7657602436103417611caf5760006102a05261027656611a76565b632fc90bcf8118611a7657604436103417611caf576024356102a0525b6004358060a01c611caf57610280526101006102805160405261197d6102c0611b65565b6102c06102a05160098111611caf5760051b810190505163a77576ef610400526102805161042052610100610400602461041c845afa6119c2573d600060003e3d6000fd5b6101003d10611caf57610400518060a01c611caf5761052052610420518060a01c611caf5761054052610440518060a01c611caf5761056052610460518060a01c611caf5761058052610480518060a01c611caf576105a0526104a0518060a01c611caf576105c0526104c0518060a01c611caf576105e0526104e0518060a01c611caf57610600526105209050f3611a76565b63e4d332a98118611a7657602436103417611caf5760006102a0526106ba565b60006000fd5b60035460405111611caf5760035460405118611aa65760035460018101818110611caf5790506003555b6060516002604051602052600052604060002055565b6003546060526000606051600a8111611caf578015611b5b57905b80608052600260805160205260005260406000205460a05260a05163bdf475c360e05260405161010052602060e0602460fc845afa611b1b573d600060003e3d6000fd5b60203d10611caf5760e0518060a01c611caf576101205261012090505160c05260c05115611b505760c0518352505050611b63565b600101818118611ad7575b505060008152505b565b610160366060376003546101c05260006101c051600a8111611caf578015611c2f57905b806101e05260026101e051602052600052604060002054610200526102005163619ea80661022052604051610240526020610220602461023c845afa611bd4573d600060003e3d6000fd5b60203d10611caf57610220518060011c611caf576102605261026090505115611c2457610200516101a05160098111611caf5760051b606001526101a05160018101818110611caf5790506101a0525b600101818118611b89575b5050606051611c9e57600b6101e0527f6e6f207265676973747279000000000000000000000000000000000000000000610200526101e0506101e0518061020001601f826000031636823750506308c379a06101a05260206101c052601f19601f6101e05101166044016101bcfd5b61014081610140606060045afa5050565b600080fd0fd21a761a7616c501ee041a1a760db012101a7615ca1a761a76036b152304f21a761a76067e0f6d160e1a761a760a33063c022a1a76142a02bf07440c3f0480001a1a761a56123b1a7611310c831a761a76032b133513ef1a761a7618f81a760ab0193c17fa1a761a761a761a76110d009d1a7608a20000000000000000000000002d12d0907a388811e3aa855a550f959501d303ee
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f3a431008396df8a8b2df492c913706bdb0874efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
-----Decoded View---------------
Arg [0] : _gauge_factory (address): 0xf3A431008396df8A8b2DF492C913706BDB0874ef
Arg [1] : _gauge_type (int128): -1
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f3a431008396df8a8b2df492c913706bdb0874ef
Arg [1] : ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.