S Price: $0.710781 (-8.87%)

Contract

0xC1b393EfEF38140662b91441C6710Aa704973228

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CurveTwocryptoSwapFactoryHandler

Compiler Version
vyper:0.3.10

Optimization Enabled:
N/A

Other Settings:
default evmVersion, None license

Contract Source Code (Vyper language format)

# pragma version 0.3.10
# pragma evm-version paris
"""
@title CurveTwocryptoSwapFactoryHandler
@custom:version 1.1.0
@author Curve.Fi
@license Copyright (c) Curve.Fi, 2020-2024 - all rights reserved
@notice TwocryptoSwap Factory Handler for the MetaRegistry
"""

version: public(constant(String[8])) = "1.1.0"


interface BaseRegistry:
    def find_pool_for_coins(_from: address, _to: address, i: uint256 = 0) -> address: view
    def get_coin_indices(_pool: address, _from: address, _to: address) -> (uint256, uint256): view
    def get_balances(_pool: address) -> uint256[MAX_COINS]: view
    def get_coins(_pool: address) -> address[MAX_COINS]: view
    def get_decimals(_pool: address) -> uint256[MAX_COINS]: view
    def get_gauge(_pool: address) -> address: view
    def get_n_coins(_pool: address) -> uint256: view
    def get_token(_pool: address) -> address: view
    def pool_count() -> uint256: view
    def pool_list(pool_id: uint256) -> address: view

interface TricryptoNG:
    def adjustment_step() -> uint256: view
    def ADMIN_FEE() -> uint256: view
    def allowed_extra_profit() -> uint256: view
    def A() -> uint256: view
    def balances(i: uint256) -> uint256: view
    def D() -> uint256: view
    def fee() -> uint256: view
    def fee_gamma() -> uint256: view
    def gamma() -> uint256: view
    def get_virtual_price() -> uint256: view
    def ma_time() -> uint256: view
    def mid_fee() -> uint256: view
    def out_fee() -> uint256: view
    def virtual_price() -> uint256: view
    def xcp_profit() -> uint256: view
    def xcp_profit_a() -> uint256: view

interface ERC20:
    def name() -> String[64]: view
    def balanceOf(_addr: address) -> uint256: view
    def totalSupply() -> uint256: view
    def decimals() -> uint256: view

interface GaugeController:
    def gauge_types(gauge: address) -> int128: view
    def gauges(i: uint256) -> address: view

interface Gauge:
    def is_killed() -> bool: view


# ---- constants ---- #
MAX_COINS: constant(uint256) = 2
MAX_METAREGISTRY_COINS: constant(uint256) = 8
MAX_POOLS: constant(uint256) = 65536
N_COINS: constant(uint256) = 2


# ---- storage variables ---- #
base_registry: public(BaseRegistry)


# ---- constructor ---- #
@external
def __init__(_registry_address: address):
    self.base_registry = BaseRegistry(_registry_address)


# ---- internal methods ---- #
@internal
@view
def _pad_uint_array(_array: uint256[MAX_COINS]) -> uint256[MAX_METAREGISTRY_COINS]:
    _padded_array: uint256[MAX_METAREGISTRY_COINS] = empty(uint256[MAX_METAREGISTRY_COINS])
    for i in range(MAX_COINS):
        _padded_array[i] = _array[i]
    return _padded_array


@internal
@view
def _get_balances(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]:
    return self._pad_uint_array(self.base_registry.get_balances(_pool))


@internal
@view
def _get_coins(_pool: address) -> address[MAX_METAREGISTRY_COINS]:
    _coins: address[MAX_COINS] = self.base_registry.get_coins(_pool)
    _padded_coins: address[MAX_METAREGISTRY_COINS] = empty(address[MAX_METAREGISTRY_COINS])
    for i in range(MAX_COINS):
        _padded_coins[i] = _coins[i]
    return _padded_coins


@internal
@view
def _get_decimals(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]:
    return self._pad_uint_array(self.base_registry.get_decimals(_pool))


@internal
@view
def _is_registered(_pool: address) -> bool:
    return self._get_coins(_pool)[0] != empty(address)


@internal
@view
def _find_pool_for_coins(_from: address, _to: address, i: uint256) -> address:

    success: bool = False
    response: Bytes[32] = b""
    success, response = raw_call(
        self.base_registry.address,
        concat(
            method_id("find_pool_for_coins(address,address,uint256)"),
            convert(_from, bytes32),
            convert(_to, bytes32),
            convert(i, bytes32)
        ),
        max_outsize=32,
        revert_on_failure=False,
        is_static_call=True
    )

    if success:
        return convert(response, address)

    return empty(address)


# ---- view methods (API) of the contract ---- #
@external
@view
def find_pool_for_coins(_from: address, _to: address, i: uint256 = 0) -> address:
    """
    @notice checks if either of the two coins are in a base pool and then checks
            if the basepool lp token and the other coin have a pool.
            This is done because the factory does not have `underlying` methods in
            pools that have a basepool lp token in them
    @param _from Address of the _from coin
    @param _to Address of the _to coin
    @param i Index of the pool to return
    @return Address of the pool
    """
    return self._find_pool_for_coins(_from, _to, i)


@external
@view
def get_admin_balances(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]:
    """
    @notice Returns the balances of the admin tokens of the given pool
    @dev Cryptoswap pools do not store admin fees in the form of
         admin token balances. Instead, the admin fees are computed
         at the time of claim iff sufficient profits have been made.
         These fees are allocated to the admin by minting LP tokens
         (dilution). The logic to calculate fees are derived from
         cryptopool._claim_admin_fees() method.
    @param _pool Address of the pool
    @return uint256[MAX_METAREGISTRY_COINS] Array of admin balances
    """

    xcp_profit: uint256 = TricryptoNG(_pool).xcp_profit()
    xcp_profit_a: uint256 = TricryptoNG(_pool).xcp_profit_a()
    admin_fee: uint256 = TricryptoNG(_pool).ADMIN_FEE()
    admin_balances: uint256[MAX_METAREGISTRY_COINS] = empty(uint256[MAX_METAREGISTRY_COINS])

    # admin balances are non zero if pool has made more than allowed profits:
    if xcp_profit > xcp_profit_a:

        # calculate admin fees in lp token amounts:
        fees: uint256 = (xcp_profit - xcp_profit_a) * admin_fee / (2 * 10**10)
        if fees > 0:
            vprice: uint256 = TricryptoNG(_pool).virtual_price()
            frac: uint256 = vprice * 10**18 / (vprice - fees) - 10**18

            # the total supply of lp token is current supply + claimable:
            lp_token_total_supply: uint256 = ERC20(_pool).totalSupply()
            d_supply: uint256 = lp_token_total_supply * frac / 10**18
            lp_token_total_supply += d_supply
            admin_lp_frac: uint256 = d_supply * 10 ** 18 / lp_token_total_supply

            # get admin balances in individual assets:
            reserves: uint256[MAX_METAREGISTRY_COINS] = self._get_balances(_pool)
            for i in range(MAX_METAREGISTRY_COINS):
                admin_balances[i] = admin_lp_frac * reserves[i] / 10 ** 18

    return admin_balances


@external
@view
def get_balances(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]:
    """
    @notice Returns the balances of the tokens of the given pool
    @param _pool Address of the pool
    @return uint256[MAX_METAREGISTRY_COINS] Array of balances
    """
    return self._get_balances(_pool)


@external
@view
def get_base_pool(_pool: address) -> address:
    """
    @notice Returns the base pool of the given pool
    @dev Returns empty(address) if the pool isn't a metapool
    @param _pool Address of the pool
    @return Address of the base pool
    """
    return empty(address)


@external
@view
def get_coin_indices(_pool: address, _from: address, _to: address) -> (uint256, uint256, bool):
    """
    @notice Convert coin addresses to indices for use with pool methods
    @param _pool Address of the pool
    @param _from Address of the from coin
    @param _to Address of the to coin
    @return (uint256, uint256, bool) Tuple of indices of the coins in the pool,
            and whether the market is an underlying market or not.
    """
    i: uint256 = 0
    j: uint256 = 0

    (i, j) = self.base_registry.get_coin_indices(_pool, _from, _to)

    return (i, j, False)


@external
@view
def get_coins(_pool: address) -> address[MAX_METAREGISTRY_COINS]:
    """
    @notice Returns the coins of the given pool
    @param _pool Address of the pool
    @return address[MAX_METAREGISTRY_COINS] Array of coins
    """
    return self._get_coins(_pool)


@external
@view
def get_decimals(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]:
    """
    @notice Returns the decimals of the coins in a given pool
    @param _pool Address of the pool
    @return uint256[MAX_METAREGISTRY_COINS] Array of decimals
    """
    return self._get_decimals(_pool)


@external
@view
def get_fees(_pool: address) -> uint256[10]:
    """
    @notice Returns the fees of the given pool
    @param _pool Address of the pool
    @return uint256[10] Array of fees. Fees are arranged as:
            1. swap fee (or `fee`)
            2. admin fee
            3. mid fee (fee when cryptoswap pool is pegged)
            4. out fee (fee when cryptoswap pool depegs)
    """
    fees: uint256[10] = empty(uint256[10])
    pool_fees: uint256[4] = [
        TricryptoNG(_pool).fee(),
        TricryptoNG(_pool).ADMIN_FEE(),
        TricryptoNG(_pool).mid_fee(),
        TricryptoNG(_pool).out_fee(),
    ]
    for i in range(4):
        fees[i] = pool_fees[i]
    return fees


@external
@view
def get_lp_token(_pool: address) -> address:
    """
    @notice Returns the Liquidity Provider token of the given pool
    @param _pool Address of the pool
    @return Address of the Liquidity Provider token
    """
    return _pool


@external
@view
def get_n_coins(_pool: address) -> uint256:
    """
    @notice Returns the number of coins in the given pool
    @param _pool Address of the pool
    @return uint256 Number of coins
    """
    return 2


@external
@view
def get_n_underlying_coins(_pool: address) -> uint256:
    """
    @notice Get the number of underlying coins in a pool
    @param _pool Address of the pool
    @return uint256 Number of underlying coins
    """
    return 2


@external
@view
def get_pool_asset_type(_pool: address) -> uint256:
    """
    @notice Returns the asset type of the given pool
    @dev Returns 4: 0 = USD, 1 = ETH, 2 = BTC, 3 = Other
    @param _pool Address of the pool
    @return uint256 Asset type
    """
    return 3


@external
@view
def get_pool_from_lp_token(_lp_token: address) -> address:
    """
    @notice Returns the pool of the given Liquidity Provider token
    @param _lp_token Address of the Liquidity Provider token
    @return Address of the pool
    """
    if self._is_registered(_lp_token):
        return _lp_token
    return empty(address)


@external
@view
def get_pool_name(_pool: address) -> String[64]:
    """
    @notice Returns the name of the given pool
    @param _pool Address of the pool
    @return String[64] Name of the pool
    """
    return ERC20(self.base_registry.get_token(_pool)).name()

@external
@view
def get_pool_params(_pool: address) -> uint256[20]:
    """
    @notice returns pool params given a cryptopool address
    @dev contains all settable parameter that alter the pool's performance
    @dev only applicable for cryptopools
    @param _pool Address of the pool for which data is being queried.
    """
    pool_params: uint256[20] = empty(uint256[20])
    pool_params[0] = TricryptoNG(_pool).A()
    pool_params[1] = TricryptoNG(_pool).D()
    pool_params[2] = TricryptoNG(_pool).gamma()
    pool_params[3] = TricryptoNG(_pool).allowed_extra_profit()
    pool_params[4] = TricryptoNG(_pool).fee_gamma()
    pool_params[5] = TricryptoNG(_pool).adjustment_step()
    pool_params[6] = TricryptoNG(_pool).ma_time()
    return pool_params


@external
@view
def get_underlying_balances(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]:
    """
    @notice Returns the underlying balances of the given pool
    @param _pool Address of the pool
    @return uint256[MAX_METAREGISTRY_COINS] Array of underlying balances
    """
    return self._get_balances(_pool)


@external
@view
def get_underlying_coins(_pool: address) -> address[MAX_METAREGISTRY_COINS]:
    """
    @notice Returns the underlying coins of the given pool
    @param _pool Address of the pool
    @return address[MAX_METAREGISTRY_COINS] Array of underlying coins
    """
    return self._get_coins(_pool)


@external
@view
def get_underlying_decimals(_pool: address) -> uint256[MAX_METAREGISTRY_COINS]:
    """
    @notice Returns the underlying decimals of the given pool
    @param _pool Address of the pool
    @return uint256[MAX_METAREGISTRY_COINS] Array of underlying decimals
    """
    return self._get_decimals(_pool)


@external
@view
def get_virtual_price_from_lp_token(_token: address) -> uint256:
    """
    @notice Returns the virtual price of the given Liquidity Provider token
    @param _token Address of the Liquidity Provider token
    @return uint256 Virtual price
    """
    return TricryptoNG(_token).get_virtual_price()


@external
@view
def is_meta(_pool: address) -> bool:
    """
    @notice Returns whether the given pool is a meta pool
    @param _pool Address of the pool
    @return bool Whether the pool is a meta pool
    """
    return False


@external
@view
def is_registered(_pool: address) -> bool:
    """
    @notice Check if a pool belongs to the registry using get_n_coins
    @param _pool The address of the pool
    @return A bool corresponding to whether the pool belongs or not
    """
    return self._is_registered(_pool)


@external
@view
def pool_count() -> uint256:
    """
    @notice Returns the number of pools in the registry
    @return uint256 Number of pools
    """
    return self.base_registry.pool_count()


@external
@view
def pool_list(_index: uint256) -> address:
    """
    @notice Returns the address of the pool at the given index
    @param _index Index of the pool
    @return Address of the pool
    """
    return self.base_registry.pool_list(_index)

Contract Security Audit

Contract ABI

[{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_registry_address","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"find_pool_for_coins","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"find_pool_for_coins","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"i","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_admin_balances","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[8]"}]},{"stateMutability":"view","type":"function","name":"get_balances","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[8]"}]},{"stateMutability":"view","type":"function","name":"get_base_pool","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_coin_indices","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"}],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"get_coins","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address[8]"}]},{"stateMutability":"view","type":"function","name":"get_decimals","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[8]"}]},{"stateMutability":"view","type":"function","name":"get_fees","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[10]"}]},{"stateMutability":"view","type":"function","name":"get_lp_token","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_n_coins","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_n_underlying_coins","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_pool_asset_type","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_pool_from_lp_token","inputs":[{"name":"_lp_token","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"get_pool_name","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"get_pool_params","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[20]"}]},{"stateMutability":"view","type":"function","name":"get_underlying_balances","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[8]"}]},{"stateMutability":"view","type":"function","name":"get_underlying_coins","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address[8]"}]},{"stateMutability":"view","type":"function","name":"get_underlying_decimals","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256[8]"}]},{"stateMutability":"view","type":"function","name":"get_virtual_price_from_lp_token","inputs":[{"name":"_token","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"is_meta","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"is_registered","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"pool_count","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"pool_list","inputs":[{"name":"_index","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"base_registry","inputs":[],"outputs":[{"name":"","type":"address"}]}]

346100325760206110e56000396000518060a01c6100325760405260405160005561109961003761000039611099610000f35b600080fd60003560e01c60026018820660011b61106901601e39600051565b6354fd4d50811861009957346110645760208060805260056040527f312e312e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f35b63c11e45b88118610d7357602436103417611064576004358060a01c611064576103205261032051637ba1a74d610360526020610360600461037c845afa6100e6573d600060003e3d6000fd5b60203d10611064576103609050516103405261032051630b7b594b610380526020610380600461039c845afa610121573d600060003e3d6000fd5b60203d10611064576103809050516103605261032051634469ed146103a05260206103a060046103bc845afa61015c573d600060003e3d6000fd5b60203d10611064576103a090505161038052610100366103a037610360516103405111156103a557610340516103605180820382811161106457905090506103805180820281158383830414171561106457905090506404a817c800810490506104a0526104a051156103a55761032051630c46b72a6104e05260206104e060046104fc845afa6101f2573d600060003e3d6000fd5b60203d10611064576104e09050516104c0526104c051670de0b6b3a7640000810281670de0b6b3a76400008204186110645790506104c0516104a051808203828111611064579050905080156110645780820490509050670de0b6b3a764000081038181116110645790506104e052610320516318160ddd610520526020610520600461053c845afa61028a573d600060003e3d6000fd5b60203d106110645761052090505161050052610500516104e0518082028115838383041417156110645790509050670de0b6b3a76400008104905061052052610500516105205180820182811061106457905090506105005261052051670de0b6b3a7640000810281670de0b6b3a7640000820418611064579050610500518015611064578082049050905061054052610320516101a05261032d610660610dce565b6106606101006105606101008360045afa505060006008905b80610660526105405161066051600781116110645760051b61056001518082028115838383041417156110645790509050670de0b6b3a76400008104905061066051600781116110645760051b6103a001526001018181186103465750505b6101006103a0f3610d73565b63b229777c8118610d7357346110645760005460405260206040f3610d73565b63a87df06c8118610d73576044361034176110645760006102605261041256610d73565b636982eb0b81186104575760643610341761106457604435610260525b6004358060a01c61106457610220526024358060a01c61106457610240526020610220516040526102405160605261026051608052610452610280610f78565b610280f35b63bdf475c38118610d7357602436103417611064576004358060a01c611064576102e0526102e0516101c05261048e610300610f5b565b61030051156104a15760206102e06104ad565b60006103005260206103005bf3610d73565b6392e3cc2d81186104f257602436103417611064576004358060a01c6110645761032052610100610320516101a0526104ed610340610dce565b610340f35b63eb85226d8118610d7357606436103417611064576004358060a01c611064576040526024358060a01c611064576060526044358060a01c6110645760805260403660a03760005463eb85226d60e052604051610100526060516101205260805161014052604060e0606460fc845afa610571573d600060003e3d6000fd5b60403d106110645760e09050805160a052602081015160c0525060a05160e05260c05161010052600061012052606060e0f3610d73565b636f20d6dd8118610d7357602436103417611064576004358060a01c61106457604052600060605260206060f3610d73565b639ac90d3d811861061857602436103417611064576004358060a01c611064576101c0526101006101c0516040526106136101e0610e38565b6101e0f35b6352b515558118610d7357602436103417611064576004358060a01c6110645761032052610100610320516101a052610652610340610ef1565b610340f3610d73565b637cdb72b08118610d7357602436103417611064576004358060a01c611064576040526101403660603760405163ddca3f43610220526020610220600461023c845afa6106ad573d600060003e3d6000fd5b60203d10611064576102209050516101a052604051634469ed14610260526020610260600461027c845afa6106e7573d600060003e3d6000fd5b60203d10611064576102609050516101c0526040516392526c0c6102a05260206102a060046102bc845afa610721573d600060003e3d6000fd5b60203d10611064576102a09050516101e05260405163ee8de6756102e05260206102e060046102fc845afa61075b573d600060003e3d6000fd5b60203d10611064576102e09050516102005260006004905b806102205261022051600381116110645760051b6101a0015161022051600981116110645760051b606001526001018181186107735750506101406060f3610d73565b633795104981186107df57602436103417611064576004358060a01c6110645760405260206040f35b634cb088f18118610d7357602436103417611064576004358060a01c6110645761032052610100610320516101a052610819610340610ef1565b610340f3610d73565b63940494f1811861085057602436103417611064576004358060a01c61106457604052600260605260206060f35b635c911741811861095157602436103417611064576004358060a01c611064576040526020806101c05260005463977d9122606052604051608052602060606024607c845afa6108a5573d600060003e3d6000fd5b60203d10611064576060518060a01c6110645760a05260a09050516306fdde0360c052608060c0600460dc845afa6108e2573d600060003e3d6000fd5b60403d106110645760c05160c001604081511161106457602081510180610160828460045afa5050506101609050816101c00160208251018082828560045afa50508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506101c0f35b63e4d332a98118610d7357602436103417611064576004358060a01c61106457604052600060605260206060f3610d73565b630a700c088118610d7357602436103417611064576004358060a01c61106457604052600260605260206060f3610d73565b6366d3966c8118610d7357602436103417611064576004358060a01c61106457604052600360605260206060f3610d73565b63688532aa8118610ba957602436103417611064576004358060a01c611064576040526102803660603760405163f446c1d06102e05260206102e060046102fc845afa610a39573d600060003e3d6000fd5b60203d10611064576102e0905051606052604051630f529ba26102e05260206102e060046102fc845afa610a72573d600060003e3d6000fd5b60203d10611064576102e090505160805260405163b13739296102e05260206102e060046102fc845afa610aab573d600060003e3d6000fd5b60203d10611064576102e090505160a0526040516349fe9e776102e05260206102e060046102fc845afa610ae4573d600060003e3d6000fd5b60203d10611064576102e090505160c0526040516372d4f0e26102e05260206102e060046102fc845afa610b1d573d600060003e3d6000fd5b60203d10611064576102e090505160e05260405163083812e56102e05260206102e060046102fc845afa610b56573d600060003e3d6000fd5b60203d10611064576102e0905051610100526040516309c3da6a6102e05260206102e060046102fc845afa610b90573d600060003e3d6000fd5b60203d10611064576102e0905051610120526102806060f35b63956aae3a8118610d73573461106457602060005463956aae3a604052602060406004605c845afa610be0573d600060003e3d6000fd5b60203d106110645760409050f3610d73565b6359f4f3518118610d7357602436103417611064576004358060a01c6110645761032052610100610320516101a052610c2c610340610dce565b610340f3610d73565b63a77576ef8118610d7357602436103417611064576004358060a01c611064576101c0526101006101c051604052610c6e6101e0610e38565b6101e0f3610d73565b63c5b7074a8118610d7357602436103417611064576004358060a01c61106457604052602060405163bb7b8b80606052602060606004607c845afa610cc1573d600060003e3d6000fd5b60203d106110645760609050f3610d73565b63619ea8068118610d7357602436103417611064576004358060a01c611064576102e05260206102e0516101c052610d0c610300610f5b565b610300f3610d73565b633a1d5d8e8118610d7357602436103417611064576020600054633a1d5d8e604052600435606052602060406024605c845afa610d57573d600060003e3d6000fd5b60203d10611064576040518060a01c6110645760805260809050f35b60006000fd5b6101003660803760006002905b806101805261018051600181116110645760051b6040015161018051600781116110645760051b60800152600101818118610d8657505061010081610100608060045afa5050565b6000546392e3cc2d6101c0526101a0516101e05260406101c060246101dc845afa610dfe573d600060003e3d6000fd5b60403d10611064576101c090508051604052602081015160605250610e24610220610d79565b610220610100826101008360045afa505050565b600054639ac90d3d60a05260405160c052604060a0602460bc845afa610e63573d600060003e3d6000fd5b60403d106110645760a0518060a01c611064576101005260c0518060a01c6110645761012052610100905080516060526020810151608052506101003660a03760006002905b806101a0526101a051600181116110645760051b606001516101a051600781116110645760051b60a00152600101818118610ea95750506101008161010060a060045afa5050565b6000546352b515556101c0526101a0516101e05260406101c060246101dc845afa610f21573d600060003e3d6000fd5b60403d10611064576101c090508051604052602081015160605250610f47610220610d79565b610220610100826101008360045afa505050565b6101c051604052610f6d6101e0610e38565b6101e0511515815250565b60403660a0376000545a60006004610100527f6982eb0b0000000000000000000000000000000000000000000000000000000061012052610100805160208201836101600181518152505080830192505050604051816101600152602081019050606051816101600152602081019050608051816101600152602081019050806101405261014050506020610200610140516101608585fa9050905060a0523d602081183d60201002186101e0526101e0805160c052602081015160e0525060a0511561105c5760e05160c05160200360031b1c8060a01c61106457815250611062565b60008152505b565b600080fd065b08220c770d7309b505a80cd30d73001a0bf209e70d7303b104b30d730d73098307b60d7303f503d105da0d150c358419109981183000a16576797065728300030a00150000000000000000000000001a83348f9ccfd3fe1a8c0adba580ac4e267fe495

Deployed Bytecode

0x60003560e01c60026018820660011b61106901601e39600051565b6354fd4d50811861009957346110645760208060805260056040527f312e312e3000000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f35b63c11e45b88118610d7357602436103417611064576004358060a01c611064576103205261032051637ba1a74d610360526020610360600461037c845afa6100e6573d600060003e3d6000fd5b60203d10611064576103609050516103405261032051630b7b594b610380526020610380600461039c845afa610121573d600060003e3d6000fd5b60203d10611064576103809050516103605261032051634469ed146103a05260206103a060046103bc845afa61015c573d600060003e3d6000fd5b60203d10611064576103a090505161038052610100366103a037610360516103405111156103a557610340516103605180820382811161106457905090506103805180820281158383830414171561106457905090506404a817c800810490506104a0526104a051156103a55761032051630c46b72a6104e05260206104e060046104fc845afa6101f2573d600060003e3d6000fd5b60203d10611064576104e09050516104c0526104c051670de0b6b3a7640000810281670de0b6b3a76400008204186110645790506104c0516104a051808203828111611064579050905080156110645780820490509050670de0b6b3a764000081038181116110645790506104e052610320516318160ddd610520526020610520600461053c845afa61028a573d600060003e3d6000fd5b60203d106110645761052090505161050052610500516104e0518082028115838383041417156110645790509050670de0b6b3a76400008104905061052052610500516105205180820182811061106457905090506105005261052051670de0b6b3a7640000810281670de0b6b3a7640000820418611064579050610500518015611064578082049050905061054052610320516101a05261032d610660610dce565b6106606101006105606101008360045afa505060006008905b80610660526105405161066051600781116110645760051b61056001518082028115838383041417156110645790509050670de0b6b3a76400008104905061066051600781116110645760051b6103a001526001018181186103465750505b6101006103a0f3610d73565b63b229777c8118610d7357346110645760005460405260206040f3610d73565b63a87df06c8118610d73576044361034176110645760006102605261041256610d73565b636982eb0b81186104575760643610341761106457604435610260525b6004358060a01c61106457610220526024358060a01c61106457610240526020610220516040526102405160605261026051608052610452610280610f78565b610280f35b63bdf475c38118610d7357602436103417611064576004358060a01c611064576102e0526102e0516101c05261048e610300610f5b565b61030051156104a15760206102e06104ad565b60006103005260206103005bf3610d73565b6392e3cc2d81186104f257602436103417611064576004358060a01c6110645761032052610100610320516101a0526104ed610340610dce565b610340f35b63eb85226d8118610d7357606436103417611064576004358060a01c611064576040526024358060a01c611064576060526044358060a01c6110645760805260403660a03760005463eb85226d60e052604051610100526060516101205260805161014052604060e0606460fc845afa610571573d600060003e3d6000fd5b60403d106110645760e09050805160a052602081015160c0525060a05160e05260c05161010052600061012052606060e0f3610d73565b636f20d6dd8118610d7357602436103417611064576004358060a01c61106457604052600060605260206060f3610d73565b639ac90d3d811861061857602436103417611064576004358060a01c611064576101c0526101006101c0516040526106136101e0610e38565b6101e0f35b6352b515558118610d7357602436103417611064576004358060a01c6110645761032052610100610320516101a052610652610340610ef1565b610340f3610d73565b637cdb72b08118610d7357602436103417611064576004358060a01c611064576040526101403660603760405163ddca3f43610220526020610220600461023c845afa6106ad573d600060003e3d6000fd5b60203d10611064576102209050516101a052604051634469ed14610260526020610260600461027c845afa6106e7573d600060003e3d6000fd5b60203d10611064576102609050516101c0526040516392526c0c6102a05260206102a060046102bc845afa610721573d600060003e3d6000fd5b60203d10611064576102a09050516101e05260405163ee8de6756102e05260206102e060046102fc845afa61075b573d600060003e3d6000fd5b60203d10611064576102e09050516102005260006004905b806102205261022051600381116110645760051b6101a0015161022051600981116110645760051b606001526001018181186107735750506101406060f3610d73565b633795104981186107df57602436103417611064576004358060a01c6110645760405260206040f35b634cb088f18118610d7357602436103417611064576004358060a01c6110645761032052610100610320516101a052610819610340610ef1565b610340f3610d73565b63940494f1811861085057602436103417611064576004358060a01c61106457604052600260605260206060f35b635c911741811861095157602436103417611064576004358060a01c611064576040526020806101c05260005463977d9122606052604051608052602060606024607c845afa6108a5573d600060003e3d6000fd5b60203d10611064576060518060a01c6110645760a05260a09050516306fdde0360c052608060c0600460dc845afa6108e2573d600060003e3d6000fd5b60403d106110645760c05160c001604081511161106457602081510180610160828460045afa5050506101609050816101c00160208251018082828560045afa50508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506101c0f35b63e4d332a98118610d7357602436103417611064576004358060a01c61106457604052600060605260206060f3610d73565b630a700c088118610d7357602436103417611064576004358060a01c61106457604052600260605260206060f3610d73565b6366d3966c8118610d7357602436103417611064576004358060a01c61106457604052600360605260206060f3610d73565b63688532aa8118610ba957602436103417611064576004358060a01c611064576040526102803660603760405163f446c1d06102e05260206102e060046102fc845afa610a39573d600060003e3d6000fd5b60203d10611064576102e0905051606052604051630f529ba26102e05260206102e060046102fc845afa610a72573d600060003e3d6000fd5b60203d10611064576102e090505160805260405163b13739296102e05260206102e060046102fc845afa610aab573d600060003e3d6000fd5b60203d10611064576102e090505160a0526040516349fe9e776102e05260206102e060046102fc845afa610ae4573d600060003e3d6000fd5b60203d10611064576102e090505160c0526040516372d4f0e26102e05260206102e060046102fc845afa610b1d573d600060003e3d6000fd5b60203d10611064576102e090505160e05260405163083812e56102e05260206102e060046102fc845afa610b56573d600060003e3d6000fd5b60203d10611064576102e0905051610100526040516309c3da6a6102e05260206102e060046102fc845afa610b90573d600060003e3d6000fd5b60203d10611064576102e0905051610120526102806060f35b63956aae3a8118610d73573461106457602060005463956aae3a604052602060406004605c845afa610be0573d600060003e3d6000fd5b60203d106110645760409050f3610d73565b6359f4f3518118610d7357602436103417611064576004358060a01c6110645761032052610100610320516101a052610c2c610340610dce565b610340f3610d73565b63a77576ef8118610d7357602436103417611064576004358060a01c611064576101c0526101006101c051604052610c6e6101e0610e38565b6101e0f3610d73565b63c5b7074a8118610d7357602436103417611064576004358060a01c61106457604052602060405163bb7b8b80606052602060606004607c845afa610cc1573d600060003e3d6000fd5b60203d106110645760609050f3610d73565b63619ea8068118610d7357602436103417611064576004358060a01c611064576102e05260206102e0516101c052610d0c610300610f5b565b610300f3610d73565b633a1d5d8e8118610d7357602436103417611064576020600054633a1d5d8e604052600435606052602060406024605c845afa610d57573d600060003e3d6000fd5b60203d10611064576040518060a01c6110645760805260809050f35b60006000fd5b6101003660803760006002905b806101805261018051600181116110645760051b6040015161018051600781116110645760051b60800152600101818118610d8657505061010081610100608060045afa5050565b6000546392e3cc2d6101c0526101a0516101e05260406101c060246101dc845afa610dfe573d600060003e3d6000fd5b60403d10611064576101c090508051604052602081015160605250610e24610220610d79565b610220610100826101008360045afa505050565b600054639ac90d3d60a05260405160c052604060a0602460bc845afa610e63573d600060003e3d6000fd5b60403d106110645760a0518060a01c611064576101005260c0518060a01c6110645761012052610100905080516060526020810151608052506101003660a03760006002905b806101a0526101a051600181116110645760051b606001516101a051600781116110645760051b60a00152600101818118610ea95750506101008161010060a060045afa5050565b6000546352b515556101c0526101a0516101e05260406101c060246101dc845afa610f21573d600060003e3d6000fd5b60403d10611064576101c090508051604052602081015160605250610f47610220610d79565b610220610100826101008360045afa505050565b6101c051604052610f6d6101e0610e38565b6101e0511515815250565b60403660a0376000545a60006004610100527f6982eb0b0000000000000000000000000000000000000000000000000000000061012052610100805160208201836101600181518152505080830192505050604051816101600152602081019050606051816101600152602081019050608051816101600152602081019050806101405261014050506020610200610140516101608585fa9050905060a0523d602081183d60201002186101e0526101e0805160c052602081015160e0525060a0511561105c5760e05160c05160200360031b1c8060a01c61106457815250611062565b60008152505b565b600080fd065b08220c770d7309b505a80cd30d73001a0bf209e70d7303b104b30d730d73098307b60d7303f503d105da0d150c35

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

0000000000000000000000001a83348f9ccfd3fe1a8c0adba580ac4e267fe495

-----Decoded View---------------
Arg [0] : _registry_address (address): 0x1A83348F9cCFD3Fe1A8C0adBa580Ac4e267Fe495

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001a83348f9ccfd3fe1a8c0adba580ac4e267fe495


Block Transaction 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

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.