ETH Price: $2,908.76 (-10.25%)
Gas: 16 Gwei

Contract

0xF98B45FA17DE75FB1aD0e7aFD971b0ca00e379fC
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
0x6020611e157320622022-10-12 12:34:23631 days ago1665578063IN
 Create: Vyper_contract
0 ETH0.0301084117.26592126

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.3.7

Optimization Enabled:
N/A

Other Settings:
MIT license

Contract Source Code (Vyper language format)

# @version 0.3.7
"""
@title Curve Meta Registry
@license MIT
"""

# ---- 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_gauges(_pool: address) -> (address[10], int128[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


# ---- 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 ---- #
address_provider: public(AddressProvider)
owner: public(address)

# get registry/registry_handler by index, index starts at 0:
get_registry: public(HashMap[uint256, address])
registry_length: public(uint256)


# ---- constructor ---- #
@external
def __init__(_address_provider: address):
    self.address_provider = AddressProvider(_address_provider)
    self.owner = AddressProvider(_address_provider).admin()


# ---- 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.owner  # dev: only owner

    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.owner  # dev: only owner
    assert _index < self.registry_length

    self._update_single_registry(_index, _registry_handler)


# ---- 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
    """
    registry_handler: RegistryHandler = RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id])
    handler_output: address[10] = registry_handler.get_gauges(_pool)[0]
    return handler_output[gauge_idx]


@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
    """
    registry_handler: RegistryHandler = RegistryHandler(self._get_registry_handlers_from_pool(_pool)[_handler_id])
    handler_output: int128[10] = registry_handler.get_gauges(_pool)[1]
    return handler_output[gauge_idx]


@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)

Contract Security Audit

Contract ABI

[{"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":"_address_provider","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":"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":"view","type":"function","name":"address_provider","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"owner","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"}]}]

6020611e276000396000518060a01c611e225760405234611e225760405160005560405163f851a440606052602060606004607c845afa610045573d600060003e3d6000fd5b60203d10611e22576060518060a01c611e225760a05260a0905051600155611dac61007561000039611dac610000f36003361161000c57611b27565b60003560e01c34611d9a576322f595c881186100575760243610611d9a576004358060a01c611d9a576080526001543318611d9a57600354604052608051606052610055611b2d565b005b630dbdc9ff81186100a35760443610611d9a576024358060a01c611d9a576080526001543318611d9a576003546004351015611d9a576004356040526080516060526100a1611b2d565b005b63308d1b6d81186100df5760243610611d9a576004358060a01c611d9a5761026052610140610260516040526100da610280611c10565b610280f35b6384e1710d81186101435760243610611d9a576004358060a01c611d9a57604052602060405163b229777c606052602060606004607c845afa610127573d600060003e3d6000fd5b60203d10611d9a576060518060a01c611d9a5760a05260a09050f35b63a87df06c81186101605760443610611d9a57600060805261017a565b636982eb0b811861028d5760643610611d9a576044356080525b6004358060a01c611d9a576040526024358060a01c611d9a5760605260603660a0376000600a905b806101005260026101005160205260005260406000205460e05260e0516101c857610284565b600062010000905b806101205260e051636982eb0b610140526040516101605260605161018052610120516101a0526020610140606461015c845afa610213573d600060003e3d6000fd5b60203d10611d9a57610140518060a01c611d9a576101c0526101c090505160c05260c05161024057610277565b60a05160018101818110611d9a57905060a05260805160a051111561026c5750505050602060c061028b565b6001018181186101d0575b50506001018181186101a2575b5050602060c05bf35b63a064072b811861040e5760443610611d9a576004358060a01c611d9a576040526024358060a01c611d9a5760605260006080526000617da0526000617dc0526000600a905b80617de0526002617de051602052600052604060002054617dc052617dc0516102fb576103ae565b600062010000905b80617e0052617dc051636982eb0b617e2052604051617e4052606051617e6052617e0051617e80526020617e206064617e3c845afa610347573d600060003e3d6000fd5b60203d10611d9a57617e20518060a01c611d9a57617ea052617ea0905051617da052617da051610376576103a1565b6080516103e78111611d9a5760018101608052617da0518160051b60a0015250600101818118610303575b50506001018181186102d3575b5050602080617de05280617de00160006080518083528060051b6000826103e88111611d9a5780156103f957905b8060051b60a001518160051b6020880101526001018181186103dc575b50508201602001915050905081019050617de0f35b63c11e45b8811861042c5760243610611d9a57600061028052610447565b63c0bf4cbf81186104c05760443610611d9a57602435610280525b6004358060a01c611d9a57610260526101006102605160405261046b6102a0611c10565b6102a06102805160098111611d9a5760051b810190505163c11e45b86103e05261026051610400526101006103e060246103fc845afa6104b0573d600060003e3d6000fd5b6101003d10611d9a576103e09050f35b6392e3cc2d81186104de5760243610611d9a576000610280526104f9565b63aa85169c81186105725760443610611d9a57602435610280525b6004358060a01c611d9a57610260526101006102605160405261051d6102a0611c10565b6102a06102805160098111611d9a5760051b81019050516392e3cc2d6103e05261026051610400526101006103e060246103fc845afa610562573d600060003e3d6000fd5b6101003d10611d9a576103e09050f35b636f20d6dd81186105905760243610611d9a576000610280526105ab565b63a54e3ade81186106315760443610611d9a57602435610280525b6004358060a01c611d9a57610260526020610260516040526105ce6102a0611c10565b6102a06102805160098111611d9a5760051b8101905051636f20d6dd6103e052610260516104005260206103e060246103fc845afa610612573d600060003e3d6000fd5b60203d10611d9a576103e0518060a01c611d9a57610420526104209050f35b63eb85226d811861064f5760643610611d9a5760006102c05261066a565b6363fb3ddb81186107425760843610611d9a576064356102c0525b6004358060a01c611d9a57610260526024358060a01c611d9a57610280526044358060a01c611d9a576102a0526060610260516040526106ab6102e0611c10565b6102e06102c05160098111611d9a5760051b810190505163eb85226d61042052610260516104405261028051610460526102a051610480526060610420606461043c845afa6106ff573d600060003e3d6000fd5b60603d10611d9a576104205180600f0b8118611d9a576104a0526104405180600f0b8118611d9a576104c052610460518060011c611d9a576104e0526104a09050f35b639ac90d3d81186107605760243610611d9a5760006102805261077b565b636ebe51fc81186108745760443610611d9a57602435610280525b6004358060a01c611d9a57610260526101006102605160405261079f6102a0611c10565b6102a06102805160098111611d9a5760051b8101905051639ac90d3d6103e05261026051610400526101006103e060246103fc845afa6107e4573d600060003e3d6000fd5b6101003d10611d9a576103e0518060a01c611d9a5761050052610400518060a01c611d9a5761052052610420518060a01c611d9a5761054052610440518060a01c611d9a5761056052610460518060a01c611d9a5761058052610480518060a01c611d9a576105a0526104a0518060a01c611d9a576105c0526104c0518060a01c611d9a576105e0526105009050f35b6352b5155581186108925760243610611d9a576000610280526108ad565b63403f502f81186109265760443610611d9a57602435610280525b6004358060a01c611d9a5761026052610100610260516040526108d16102a0611c10565b6102a06102805160098111611d9a5760051b81019050516352b515556103e05261026051610400526101006103e060246103fc845afa610916573d600060003e3d6000fd5b6101003d10611d9a576103e09050f35b637cdb72b081186109445760243610611d9a5760006102805261095f565b630ed5a42781186109d85760443610611d9a57602435610280525b6004358060a01c611d9a5761026052610140610260516040526109836102a0611c10565b6102a06102805160098111611d9a5760051b8101905051637cdb72b06103e05261026051610400526101406103e060246103fc845afa6109c8573d600060003e3d6000fd5b6101403d10611d9a576103e09050f35b63daf297b981186109f75760243610611d9a5760403661028037610a38565b63e40812208118610a1c5760443610611d9a576024356102805260006102a052610a38565b63773fb7e38118610c795760643610611d9a5760406024610280375b6004358060a01c611d9a576102605261026051604052610a596102e0611c10565b6102e06102a05160098111611d9a5760051b81019050516102c0526102c0516356059ffb610420526102605161044052610280610420602461043c845afa610aa6573d600060003e3d6000fd5b6102803d10611d9a57610420518060a01c611d9a576106c052610440518060a01c611d9a576106e052610460518060a01c611d9a5761070052610480518060a01c611d9a57610720526104a0518060a01c611d9a57610740526104c0518060a01c611d9a57610760526104e0518060a01c611d9a5761078052610500518060a01c611d9a576107a052610520518060a01c611d9a576107c052610540518060a01c611d9a576107e0526105605180600f0b8118611d9a57610800526105805180600f0b8118611d9a57610820526105a05180600f0b8118611d9a57610840526105c05180600f0b8118611d9a57610860526105e05180600f0b8118611d9a57610880526106005180600f0b8118611d9a576108a0526106205180600f0b8118611d9a576108c0526106405180600f0b8118611d9a576108e0526106605180600f0b8118611d9a57610900526106805180600f0b8118611d9a57610920526106c0905080516102e05260208101516103005260408101516103205260608101516103405260808101516103605260a08101516103805260c08101516103a05260e08101516103c0526101008101516103e052610120810151610400525060206102805160098111611d9a5760051b6102e001f35b6325fa5d138118610c985760243610611d9a5760403661028037610cd9565b637c51db558118610cbd5760443610611d9a576024356102805260006102a052610cd9565b63f8b661e28118610f215760643610611d9a5760406024610280375b6004358060a01c611d9a576102605261026051604052610cfa6102e0611c10565b6102e06102a05160098111611d9a5760051b81019050516102c0526102c0516356059ffb610420526102605161044052610280610420602461043c845afa610d47573d600060003e3d6000fd5b6102803d10611d9a57610420518060a01c611d9a576106c052610440518060a01c611d9a576106e052610460518060a01c611d9a5761070052610480518060a01c611d9a57610720526104a0518060a01c611d9a57610740526104c0518060a01c611d9a57610760526104e0518060a01c611d9a5761078052610500518060a01c611d9a576107a052610520518060a01c611d9a576107c052610540518060a01c611d9a576107e0526105605180600f0b8118611d9a57610800526105805180600f0b8118611d9a57610820526105a05180600f0b8118611d9a57610840526105c05180600f0b8118611d9a57610860526105e05180600f0b8118611d9a57610880526106005180600f0b8118611d9a576108a0526106205180600f0b8118611d9a576108c0526106405180600f0b8118611d9a576108e0526106605180600f0b8118611d9a57610900526106805180600f0b8118611d9a57610920526106c090506101408101905080516102e05260208101516103005260408101516103205260608101516103405260808101516103605260a08101516103805260c08101516103a05260e08101516103c0526101008101516103e052610120810151610400525060206102805160098111611d9a5760051b6102e001f35b63379510498118610f3f5760243610611d9a57600061028052610f5a565b630881715f8118610fe05760443610611d9a57602435610280525b6004358060a01c611d9a5761026052602061026051604052610f7d6102a0611c10565b6102a06102805160098111611d9a5760051b810190505163379510496103e052610260516104005260206103e060246103fc845afa610fc1573d600060003e3d6000fd5b60203d10611d9a576103e0518060a01c611d9a57610420526104209050f35b63940494f18118610ffe5760243610611d9a57600061028052611019565b6311d81279811861108f5760443610611d9a57602435610280525b6004358060a01c611d9a576102605260206102605160405261103c6102a0611c10565b6102a06102805160098111611d9a5760051b810190505163940494f16103e052610260516104005260206103e060246103fc845afa611080573d600060003e3d6000fd5b60203d10611d9a576103e09050f35b630a700c0881186110ad5760243610611d9a576000610280526110c8565b63decdf68f811861113e5760443610611d9a57602435610280525b6004358060a01c611d9a57610260526020610260516040526110eb6102a0611c10565b6102a06102805160098111611d9a5760051b8101905051630a700c086103e052610260516104005260206103e060246103fc845afa61112f573d600060003e3d6000fd5b60203d10611d9a576103e09050f35b6366d3966c811861115c5760243610611d9a57600061028052611177565b6390d1dd2d81186111ed5760443610611d9a57602435610280525b6004358060a01c611d9a576102605260206102605160405261119a6102a0611c10565b6102a06102805160098111611d9a5760051b81019050516366d3966c6103e052610260516104005260206103e060246103fc845afa6111de573d600060003e3d6000fd5b60203d10611d9a576103e09050f35b63bdf475c3811861120b5760243610611d9a57600061014052611226565b6336678b80811861124e5760443610611d9a57602435610140525b6004358060a01c611d9a5761012052602061012051604052611249610160611b6d565b610160f35b63688532aa811861126c5760243610611d9a57600061028052611287565b637a65d2dd81186113085760443610611d9a57602435610280525b6004358060a01c611d9a5761026052610260516040526112a86102c0611c10565b6102c06102805160098111611d9a5760051b81019050516102a0526102806102a05163688532aa6102c052610260516102e0526102806102c060246102dc845afa6112f8573d600060003e3d6000fd5b6102803d10611d9a576102c09050f35b635c91174181186113265760243610611d9a57600061028052611341565b6392234f45811861142f5760443610611d9a57602435610280525b6004358060a01c611d9a57610260526020806104e052610260516040526113696102a0611c10565b6102a06102805160098111611d9a5760051b8101905051635c9117416103e052610260516104005260806103e060246103fc845afa6113ad573d600060003e3d6000fd5b60403d10611d9a576103e0516103e0016040815111611d9a578051806104805260208201816104a0838360045afa505050506104809050816104e001815180825260208301602083018281848460045afa505050508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506104e0f35b6359f4f351811861144d5760243610611d9a57600061028052611468565b63876112e681186114e15760443610611d9a57602435610280525b6004358060a01c611d9a57610260526101006102605160405261148c6102a0611c10565b6102a06102805160098111611d9a5760051b81019050516359f4f3516103e05261026051610400526101006103e060246103fc845afa6114d1573d600060003e3d6000fd5b6101003d10611d9a576103e09050f35b63a77576ef81186114ff5760243610611d9a5760006102805261151a565b632fc90bcf81186116135760443610611d9a57602435610280525b6004358060a01c611d9a57610260526101006102605160405261153e6102a0611c10565b6102a06102805160098111611d9a5760051b810190505163a77576ef6103e05261026051610400526101006103e060246103fc845afa611583573d600060003e3d6000fd5b6101003d10611d9a576103e0518060a01c611d9a5761050052610400518060a01c611d9a5761052052610420518060a01c611d9a5761054052610440518060a01c611d9a5761056052610460518060a01c611d9a5761058052610480518060a01c611d9a576105a0526104a0518060a01c611d9a576105c0526104c0518060a01c611d9a576105e0526105009050f35b634cb088f181186116315760243610611d9a5760006102805261164c565b63622d64f481186116c55760443610611d9a57602435610280525b6004358060a01c611d9a5761026052610100610260516040526116706102a0611c10565b6102a06102805160098111611d9a5760051b8101905051634cb088f16103e05261026051610400526101006103e060246103fc845afa6116b5573d600060003e3d6000fd5b6101003d10611d9a576103e09050f35b63c5b7074a81186116e35760243610611d9a576000610280526116fe565b634460f66f81186117965760443610611d9a57602435610280525b6004358060a01c611d9a57610260526102605160405261171f6102c0611b6d565b6102c0516102a0526102a0516040526117396102e0611c10565b6102e06102805160098111611d9a5760051b81019050516102c05260206102c05163c5b7074a6102e052610260516103005260206102e060246102fc845afa611787573d600060003e3d6000fd5b60203d10611d9a576102e09050f35b63e4d332a981186117b45760243610611d9a576000610280526117cf565b63a64485a181186118555760443610611d9a57602435610280525b6004358060a01c611d9a57610260526020610260516040526117f26102a0611c10565b6102a06102805160098111611d9a5760051b810190505163e4d332a96103e052610260516104005260206103e060246103fc845afa611836573d600060003e3d6000fd5b60203d10611d9a576103e0518060011c611d9a57610420526104209050f35b63619ea80681186118735760243610611d9a5760006102805261188e565b63c9c4f3ec81186118d35760443610611d9a57602435610280525b6004358060a01c611d9a5761026052610260516040526118af6102a0611c10565b6102a06102805160098111611d9a5760051b810190505115156103e05260206103e0f35b63956aae3a81186119725760043610611d9a5760006040526000600a905b80606052600354606051186119055761196a565b600260605160205260005260406000205460805260405160805163956aae3a60a052602060a0600460bc845afa611941573d600060003e3d6000fd5b60203d10611d9a5760a0905051808201828110611d9a57905090506040526001018181186118f1575b505060206040f35b633a1d5d8e8118611a9b5760243610611d9a5760006040526000600a905b80606052600354606051186119a457611a8d565b600260605160205260005260406000205460805260805163956aae3a60c052602060c0600460dc845afa6119dd573d600060003e3d6000fd5b60203d10611d9a5760c090505160a05260a051600435604051808203828111611d9a57905090501015611a6b5750506020608051633a1d5d8e60c052600435604051808203828111611d9a579050905060e052602060c0602460dc845afa611a4a573d600060003e3d6000fd5b60203d10611d9a5760c0518060a01c611d9a57610100526101009050611a99565b60405160a051808201828110611d9a5790509050604052600101818118611990575b50506000606052602060605bf35b63ce50c2e78118611aba5760043610611d9a5760005460405260206040f35b638da5cb5b8118611ad95760043610611d9a5760015460405260206040f35b63913d9b4d8118611b065760243610611d9a57600260043560205260005260406000205460405260206040f35b63083297d28118611b255760043610611d9a5760035460405260206040f35b505b60006000fd5b60035460405111611d9a5760035460405118611b575760035460018101818110611d9a5790506003555b6060516002604051602052600052604060002055565b6000600a905b8060605260035460605118611b8757611c06565b600260605160205260005260406000205460805260805163bdf475c360c05260405160e052602060c0602460dc845afa611bc6573d600060003e3d6000fd5b60203d10611d9a5760c0518060a01c611d9a576101005261010090505160a05260a05115611bfb5760a0518352505050611c0e565b600101818118611b73575b505060008152505b565b610160366060376000600a905b806101c0526003546101c05118611c3357611cd4565b60026101c0516020526000526040600020546101e0526101e05163619ea80661020052604051610220526020610200602461021c845afa611c79573d600060003e3d6000fd5b60203d10611d9a57610200518060011c611d9a576102405261024090505115611cc9576101e0516101a05160098111611d9a5760051b606001526101a05160018101818110611d9a5790506101a0525b600101818118611c1d575b5050606051611d4357600b6101c0527f6e6f2072656769737472790000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b6060518152608051602082015260a051604082015260c051606082015260e05160808201526101005160a08201526101205160c08201526101405160e0820152610160516101008201526101805161012082015250565b600080fda165767970657283000307000b005b600080fd0000000000000000000000000000000022d53366457f9d5e68ec105046fc4383

Deployed Bytecode

0x6003361161000c57611b27565b60003560e01c34611d9a576322f595c881186100575760243610611d9a576004358060a01c611d9a576080526001543318611d9a57600354604052608051606052610055611b2d565b005b630dbdc9ff81186100a35760443610611d9a576024358060a01c611d9a576080526001543318611d9a576003546004351015611d9a576004356040526080516060526100a1611b2d565b005b63308d1b6d81186100df5760243610611d9a576004358060a01c611d9a5761026052610140610260516040526100da610280611c10565b610280f35b6384e1710d81186101435760243610611d9a576004358060a01c611d9a57604052602060405163b229777c606052602060606004607c845afa610127573d600060003e3d6000fd5b60203d10611d9a576060518060a01c611d9a5760a05260a09050f35b63a87df06c81186101605760443610611d9a57600060805261017a565b636982eb0b811861028d5760643610611d9a576044356080525b6004358060a01c611d9a576040526024358060a01c611d9a5760605260603660a0376000600a905b806101005260026101005160205260005260406000205460e05260e0516101c857610284565b600062010000905b806101205260e051636982eb0b610140526040516101605260605161018052610120516101a0526020610140606461015c845afa610213573d600060003e3d6000fd5b60203d10611d9a57610140518060a01c611d9a576101c0526101c090505160c05260c05161024057610277565b60a05160018101818110611d9a57905060a05260805160a051111561026c5750505050602060c061028b565b6001018181186101d0575b50506001018181186101a2575b5050602060c05bf35b63a064072b811861040e5760443610611d9a576004358060a01c611d9a576040526024358060a01c611d9a5760605260006080526000617da0526000617dc0526000600a905b80617de0526002617de051602052600052604060002054617dc052617dc0516102fb576103ae565b600062010000905b80617e0052617dc051636982eb0b617e2052604051617e4052606051617e6052617e0051617e80526020617e206064617e3c845afa610347573d600060003e3d6000fd5b60203d10611d9a57617e20518060a01c611d9a57617ea052617ea0905051617da052617da051610376576103a1565b6080516103e78111611d9a5760018101608052617da0518160051b60a0015250600101818118610303575b50506001018181186102d3575b5050602080617de05280617de00160006080518083528060051b6000826103e88111611d9a5780156103f957905b8060051b60a001518160051b6020880101526001018181186103dc575b50508201602001915050905081019050617de0f35b63c11e45b8811861042c5760243610611d9a57600061028052610447565b63c0bf4cbf81186104c05760443610611d9a57602435610280525b6004358060a01c611d9a57610260526101006102605160405261046b6102a0611c10565b6102a06102805160098111611d9a5760051b810190505163c11e45b86103e05261026051610400526101006103e060246103fc845afa6104b0573d600060003e3d6000fd5b6101003d10611d9a576103e09050f35b6392e3cc2d81186104de5760243610611d9a576000610280526104f9565b63aa85169c81186105725760443610611d9a57602435610280525b6004358060a01c611d9a57610260526101006102605160405261051d6102a0611c10565b6102a06102805160098111611d9a5760051b81019050516392e3cc2d6103e05261026051610400526101006103e060246103fc845afa610562573d600060003e3d6000fd5b6101003d10611d9a576103e09050f35b636f20d6dd81186105905760243610611d9a576000610280526105ab565b63a54e3ade81186106315760443610611d9a57602435610280525b6004358060a01c611d9a57610260526020610260516040526105ce6102a0611c10565b6102a06102805160098111611d9a5760051b8101905051636f20d6dd6103e052610260516104005260206103e060246103fc845afa610612573d600060003e3d6000fd5b60203d10611d9a576103e0518060a01c611d9a57610420526104209050f35b63eb85226d811861064f5760643610611d9a5760006102c05261066a565b6363fb3ddb81186107425760843610611d9a576064356102c0525b6004358060a01c611d9a57610260526024358060a01c611d9a57610280526044358060a01c611d9a576102a0526060610260516040526106ab6102e0611c10565b6102e06102c05160098111611d9a5760051b810190505163eb85226d61042052610260516104405261028051610460526102a051610480526060610420606461043c845afa6106ff573d600060003e3d6000fd5b60603d10611d9a576104205180600f0b8118611d9a576104a0526104405180600f0b8118611d9a576104c052610460518060011c611d9a576104e0526104a09050f35b639ac90d3d81186107605760243610611d9a5760006102805261077b565b636ebe51fc81186108745760443610611d9a57602435610280525b6004358060a01c611d9a57610260526101006102605160405261079f6102a0611c10565b6102a06102805160098111611d9a5760051b8101905051639ac90d3d6103e05261026051610400526101006103e060246103fc845afa6107e4573d600060003e3d6000fd5b6101003d10611d9a576103e0518060a01c611d9a5761050052610400518060a01c611d9a5761052052610420518060a01c611d9a5761054052610440518060a01c611d9a5761056052610460518060a01c611d9a5761058052610480518060a01c611d9a576105a0526104a0518060a01c611d9a576105c0526104c0518060a01c611d9a576105e0526105009050f35b6352b5155581186108925760243610611d9a576000610280526108ad565b63403f502f81186109265760443610611d9a57602435610280525b6004358060a01c611d9a5761026052610100610260516040526108d16102a0611c10565b6102a06102805160098111611d9a5760051b81019050516352b515556103e05261026051610400526101006103e060246103fc845afa610916573d600060003e3d6000fd5b6101003d10611d9a576103e09050f35b637cdb72b081186109445760243610611d9a5760006102805261095f565b630ed5a42781186109d85760443610611d9a57602435610280525b6004358060a01c611d9a5761026052610140610260516040526109836102a0611c10565b6102a06102805160098111611d9a5760051b8101905051637cdb72b06103e05261026051610400526101406103e060246103fc845afa6109c8573d600060003e3d6000fd5b6101403d10611d9a576103e09050f35b63daf297b981186109f75760243610611d9a5760403661028037610a38565b63e40812208118610a1c5760443610611d9a576024356102805260006102a052610a38565b63773fb7e38118610c795760643610611d9a5760406024610280375b6004358060a01c611d9a576102605261026051604052610a596102e0611c10565b6102e06102a05160098111611d9a5760051b81019050516102c0526102c0516356059ffb610420526102605161044052610280610420602461043c845afa610aa6573d600060003e3d6000fd5b6102803d10611d9a57610420518060a01c611d9a576106c052610440518060a01c611d9a576106e052610460518060a01c611d9a5761070052610480518060a01c611d9a57610720526104a0518060a01c611d9a57610740526104c0518060a01c611d9a57610760526104e0518060a01c611d9a5761078052610500518060a01c611d9a576107a052610520518060a01c611d9a576107c052610540518060a01c611d9a576107e0526105605180600f0b8118611d9a57610800526105805180600f0b8118611d9a57610820526105a05180600f0b8118611d9a57610840526105c05180600f0b8118611d9a57610860526105e05180600f0b8118611d9a57610880526106005180600f0b8118611d9a576108a0526106205180600f0b8118611d9a576108c0526106405180600f0b8118611d9a576108e0526106605180600f0b8118611d9a57610900526106805180600f0b8118611d9a57610920526106c0905080516102e05260208101516103005260408101516103205260608101516103405260808101516103605260a08101516103805260c08101516103a05260e08101516103c0526101008101516103e052610120810151610400525060206102805160098111611d9a5760051b6102e001f35b6325fa5d138118610c985760243610611d9a5760403661028037610cd9565b637c51db558118610cbd5760443610611d9a576024356102805260006102a052610cd9565b63f8b661e28118610f215760643610611d9a5760406024610280375b6004358060a01c611d9a576102605261026051604052610cfa6102e0611c10565b6102e06102a05160098111611d9a5760051b81019050516102c0526102c0516356059ffb610420526102605161044052610280610420602461043c845afa610d47573d600060003e3d6000fd5b6102803d10611d9a57610420518060a01c611d9a576106c052610440518060a01c611d9a576106e052610460518060a01c611d9a5761070052610480518060a01c611d9a57610720526104a0518060a01c611d9a57610740526104c0518060a01c611d9a57610760526104e0518060a01c611d9a5761078052610500518060a01c611d9a576107a052610520518060a01c611d9a576107c052610540518060a01c611d9a576107e0526105605180600f0b8118611d9a57610800526105805180600f0b8118611d9a57610820526105a05180600f0b8118611d9a57610840526105c05180600f0b8118611d9a57610860526105e05180600f0b8118611d9a57610880526106005180600f0b8118611d9a576108a0526106205180600f0b8118611d9a576108c0526106405180600f0b8118611d9a576108e0526106605180600f0b8118611d9a57610900526106805180600f0b8118611d9a57610920526106c090506101408101905080516102e05260208101516103005260408101516103205260608101516103405260808101516103605260a08101516103805260c08101516103a05260e08101516103c0526101008101516103e052610120810151610400525060206102805160098111611d9a5760051b6102e001f35b63379510498118610f3f5760243610611d9a57600061028052610f5a565b630881715f8118610fe05760443610611d9a57602435610280525b6004358060a01c611d9a5761026052602061026051604052610f7d6102a0611c10565b6102a06102805160098111611d9a5760051b810190505163379510496103e052610260516104005260206103e060246103fc845afa610fc1573d600060003e3d6000fd5b60203d10611d9a576103e0518060a01c611d9a57610420526104209050f35b63940494f18118610ffe5760243610611d9a57600061028052611019565b6311d81279811861108f5760443610611d9a57602435610280525b6004358060a01c611d9a576102605260206102605160405261103c6102a0611c10565b6102a06102805160098111611d9a5760051b810190505163940494f16103e052610260516104005260206103e060246103fc845afa611080573d600060003e3d6000fd5b60203d10611d9a576103e09050f35b630a700c0881186110ad5760243610611d9a576000610280526110c8565b63decdf68f811861113e5760443610611d9a57602435610280525b6004358060a01c611d9a57610260526020610260516040526110eb6102a0611c10565b6102a06102805160098111611d9a5760051b8101905051630a700c086103e052610260516104005260206103e060246103fc845afa61112f573d600060003e3d6000fd5b60203d10611d9a576103e09050f35b6366d3966c811861115c5760243610611d9a57600061028052611177565b6390d1dd2d81186111ed5760443610611d9a57602435610280525b6004358060a01c611d9a576102605260206102605160405261119a6102a0611c10565b6102a06102805160098111611d9a5760051b81019050516366d3966c6103e052610260516104005260206103e060246103fc845afa6111de573d600060003e3d6000fd5b60203d10611d9a576103e09050f35b63bdf475c3811861120b5760243610611d9a57600061014052611226565b6336678b80811861124e5760443610611d9a57602435610140525b6004358060a01c611d9a5761012052602061012051604052611249610160611b6d565b610160f35b63688532aa811861126c5760243610611d9a57600061028052611287565b637a65d2dd81186113085760443610611d9a57602435610280525b6004358060a01c611d9a5761026052610260516040526112a86102c0611c10565b6102c06102805160098111611d9a5760051b81019050516102a0526102806102a05163688532aa6102c052610260516102e0526102806102c060246102dc845afa6112f8573d600060003e3d6000fd5b6102803d10611d9a576102c09050f35b635c91174181186113265760243610611d9a57600061028052611341565b6392234f45811861142f5760443610611d9a57602435610280525b6004358060a01c611d9a57610260526020806104e052610260516040526113696102a0611c10565b6102a06102805160098111611d9a5760051b8101905051635c9117416103e052610260516104005260806103e060246103fc845afa6113ad573d600060003e3d6000fd5b60403d10611d9a576103e0516103e0016040815111611d9a578051806104805260208201816104a0838360045afa505050506104809050816104e001815180825260208301602083018281848460045afa505050508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506104e0f35b6359f4f351811861144d5760243610611d9a57600061028052611468565b63876112e681186114e15760443610611d9a57602435610280525b6004358060a01c611d9a57610260526101006102605160405261148c6102a0611c10565b6102a06102805160098111611d9a5760051b81019050516359f4f3516103e05261026051610400526101006103e060246103fc845afa6114d1573d600060003e3d6000fd5b6101003d10611d9a576103e09050f35b63a77576ef81186114ff5760243610611d9a5760006102805261151a565b632fc90bcf81186116135760443610611d9a57602435610280525b6004358060a01c611d9a57610260526101006102605160405261153e6102a0611c10565b6102a06102805160098111611d9a5760051b810190505163a77576ef6103e05261026051610400526101006103e060246103fc845afa611583573d600060003e3d6000fd5b6101003d10611d9a576103e0518060a01c611d9a5761050052610400518060a01c611d9a5761052052610420518060a01c611d9a5761054052610440518060a01c611d9a5761056052610460518060a01c611d9a5761058052610480518060a01c611d9a576105a0526104a0518060a01c611d9a576105c0526104c0518060a01c611d9a576105e0526105009050f35b634cb088f181186116315760243610611d9a5760006102805261164c565b63622d64f481186116c55760443610611d9a57602435610280525b6004358060a01c611d9a5761026052610100610260516040526116706102a0611c10565b6102a06102805160098111611d9a5760051b8101905051634cb088f16103e05261026051610400526101006103e060246103fc845afa6116b5573d600060003e3d6000fd5b6101003d10611d9a576103e09050f35b63c5b7074a81186116e35760243610611d9a576000610280526116fe565b634460f66f81186117965760443610611d9a57602435610280525b6004358060a01c611d9a57610260526102605160405261171f6102c0611b6d565b6102c0516102a0526102a0516040526117396102e0611c10565b6102e06102805160098111611d9a5760051b81019050516102c05260206102c05163c5b7074a6102e052610260516103005260206102e060246102fc845afa611787573d600060003e3d6000fd5b60203d10611d9a576102e09050f35b63e4d332a981186117b45760243610611d9a576000610280526117cf565b63a64485a181186118555760443610611d9a57602435610280525b6004358060a01c611d9a57610260526020610260516040526117f26102a0611c10565b6102a06102805160098111611d9a5760051b810190505163e4d332a96103e052610260516104005260206103e060246103fc845afa611836573d600060003e3d6000fd5b60203d10611d9a576103e0518060011c611d9a57610420526104209050f35b63619ea80681186118735760243610611d9a5760006102805261188e565b63c9c4f3ec81186118d35760443610611d9a57602435610280525b6004358060a01c611d9a5761026052610260516040526118af6102a0611c10565b6102a06102805160098111611d9a5760051b810190505115156103e05260206103e0f35b63956aae3a81186119725760043610611d9a5760006040526000600a905b80606052600354606051186119055761196a565b600260605160205260005260406000205460805260405160805163956aae3a60a052602060a0600460bc845afa611941573d600060003e3d6000fd5b60203d10611d9a5760a0905051808201828110611d9a57905090506040526001018181186118f1575b505060206040f35b633a1d5d8e8118611a9b5760243610611d9a5760006040526000600a905b80606052600354606051186119a457611a8d565b600260605160205260005260406000205460805260805163956aae3a60c052602060c0600460dc845afa6119dd573d600060003e3d6000fd5b60203d10611d9a5760c090505160a05260a051600435604051808203828111611d9a57905090501015611a6b5750506020608051633a1d5d8e60c052600435604051808203828111611d9a579050905060e052602060c0602460dc845afa611a4a573d600060003e3d6000fd5b60203d10611d9a5760c0518060a01c611d9a57610100526101009050611a99565b60405160a051808201828110611d9a5790509050604052600101818118611990575b50506000606052602060605bf35b63ce50c2e78118611aba5760043610611d9a5760005460405260206040f35b638da5cb5b8118611ad95760043610611d9a5760015460405260206040f35b63913d9b4d8118611b065760243610611d9a57600260043560205260005260406000205460405260206040f35b63083297d28118611b255760043610611d9a5760035460405260206040f35b505b60006000fd5b60035460405111611d9a5760035460405118611b575760035460018101818110611d9a5790506003555b6060516002604051602052600052604060002055565b6000600a905b8060605260035460605118611b8757611c06565b600260605160205260005260406000205460805260805163bdf475c360c05260405160e052602060c0602460dc845afa611bc6573d600060003e3d6000fd5b60203d10611d9a5760c0518060a01c611d9a576101005261010090505160a05260a05115611bfb5760a0518352505050611c0e565b600101818118611b73575b505060008152505b565b610160366060376000600a905b806101c0526003546101c05118611c3357611cd4565b60026101c0516020526000526040600020546101e0526101e05163619ea80661020052604051610220526020610200602461021c845afa611c79573d600060003e3d6000fd5b60203d10611d9a57610200518060011c611d9a576102405261024090505115611cc9576101e0516101a05160098111611d9a5760051b606001526101a05160018101818110611d9a5790506101a0525b600101818118611c1d575b5050606051611d4357600b6101c0527f6e6f2072656769737472790000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b6060518152608051602082015260a051604082015260c051606082015260e05160808201526101005160a08201526101205160c08201526101405160e0820152610160516101008201526101805161012082015250565b600080fda165767970657283000307000b

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000022d53366457f9d5e68ec105046fc4383

-----Decoded View---------------
Arg [0] : _address_provider (address): 0x0000000022D53366457F9d5E68Ec105046FC4383

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000022d53366457f9d5e68ec105046fc4383


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.