ETH Price: $3,702.10 (+4.42%)

Contract

0x466c8fa3a6Cd4625517594786013262a6AbD3F96
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
136566482021-11-21 6:48:421105 days ago1637477322
0x466c8fa3...a6AbD3F96
2,365 ETH
136566482021-11-21 6:48:421105 days ago1637477322
0x466c8fa3...a6AbD3F96
2,365 ETH
136427982021-11-19 1:29:251107 days ago1637285365
0x466c8fa3...a6AbD3F96
0.00027941 ETH
136427982021-11-19 1:29:251107 days ago1637285365
0x466c8fa3...a6AbD3F96
0.00027941 ETH
136317552021-11-17 8:03:071108 days ago1637136187
0x466c8fa3...a6AbD3F96
0.1407066 ETH
136317552021-11-17 8:03:071108 days ago1637136187
0x466c8fa3...a6AbD3F96
0.1407066 ETH
136317552021-11-17 8:03:071108 days ago1637136187
0x466c8fa3...a6AbD3F96
9.20994814 ETH
136317552021-11-17 8:03:071108 days ago1637136187
0x466c8fa3...a6AbD3F96
9.20994814 ETH
136317552021-11-17 8:03:071108 days ago1637136187
0x466c8fa3...a6AbD3F96
3.51665784 ETH
136317552021-11-17 8:03:071108 days ago1637136187
0x466c8fa3...a6AbD3F96
3.51665784 ETH
136255382021-11-16 8:22:411109 days ago1637050961
0x466c8fa3...a6AbD3F96
692.53315199 ETH
136255382021-11-16 8:22:411109 days ago1637050961
0x466c8fa3...a6AbD3F96
692.53315199 ETH
135958292021-11-11 15:56:021114 days ago1636646162
0x466c8fa3...a6AbD3F96
1,679.76267147 ETH
135958292021-11-11 15:56:021114 days ago1636646162
0x466c8fa3...a6AbD3F96
1,679.76267147 ETH
135921572021-11-11 2:02:591115 days ago1636596179
0x466c8fa3...a6AbD3F96
4.97370236 ETH
135921572021-11-11 2:02:591115 days ago1636596179
0x466c8fa3...a6AbD3F96
4.97370236 ETH
135905102021-11-10 20:02:381115 days ago1636574558
0x466c8fa3...a6AbD3F96
2,965 ETH
135905102021-11-10 20:02:381115 days ago1636574558
0x466c8fa3...a6AbD3F96
2,965 ETH
135903172021-11-10 19:19:281115 days ago1636571968
0x466c8fa3...a6AbD3F96
0.22527332 ETH
135903172021-11-10 19:19:281115 days ago1636571968
0x466c8fa3...a6AbD3F96
0.22527332 ETH
135903172021-11-10 19:19:281115 days ago1636571968
0x466c8fa3...a6AbD3F96
0.25416861 ETH
135903172021-11-10 19:19:281115 days ago1636571968
0x466c8fa3...a6AbD3F96
0.25416861 ETH
135903172021-11-10 19:19:281115 days ago1636571968
0x466c8fa3...a6AbD3F96
14.59293359 ETH
135903172021-11-10 19:19:281115 days ago1636571968
0x466c8fa3...a6AbD3F96
14.59293359 ETH
135903172021-11-10 19:19:281115 days ago1636571968
0x466c8fa3...a6AbD3F96
3.16491326 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.16

Optimization Enabled:
N/A

Other Settings:
MIT license

Contract Source Code (Vyper language format)

# @version 0.2.16
"""
@title Curve Registry Exchange Contract
@license MIT
@author Curve.Fi
@notice Find pools, query exchange rates and perform swaps
"""

from vyper.interfaces import ERC20


interface AddressProvider:
    def admin() -> address: view
    def get_registry() -> address: view
    def get_address(idx: uint256) -> address: view

interface CurvePool:
    def exchange(i: int128, j: int128, dx: uint256, min_dy: uint256): payable
    def exchange_underlying(i: int128, j: int128, dx: uint256, min_dy: uint256): payable
    def get_dy(i: int128, j: int128, amount: uint256) -> uint256: view
    def get_dy_underlying(i: int128, j: int128, amount: uint256) -> uint256: view

interface Registry:
    def address_provider() -> address: view
    def get_A(_pool: address) -> uint256: view
    def get_fees(_pool: address) -> uint256[2]: view
    def get_coin_indices(_pool: address, _from: address, _to: address) -> (int128, int128, bool): view
    def get_n_coins(_pool: address) -> uint256[2]: view
    def get_balances(_pool: address) -> uint256[MAX_COINS]: view
    def get_underlying_balances(_pool: address) -> uint256[MAX_COINS]: view
    def get_rates(_pool: address) -> uint256[MAX_COINS]: view
    def get_decimals(_pool: address) -> uint256[MAX_COINS]: view
    def get_underlying_decimals(_pool: address) -> uint256[MAX_COINS]: view
    def find_pool_for_coins(_from: address, _to: address, i: uint256) -> address: view
    def get_lp_token(_pool: address) -> address: view
    def is_meta(_pool: address) -> bool: view

interface Calculator:
    def get_dx(n_coins: uint256, balances: uint256[MAX_COINS], amp: uint256, fee: uint256,
               rates: uint256[MAX_COINS], precisions: uint256[MAX_COINS],
               i: int128, j: int128, dx: uint256) -> uint256: view
    def get_dy(n_coins: uint256, balances: uint256[MAX_COINS], amp: uint256, fee: uint256,
               rates: uint256[MAX_COINS], precisions: uint256[MAX_COINS],
               i: int128, j: int128, dx: uint256[CALC_INPUT_SIZE]) -> uint256[CALC_INPUT_SIZE]: view


event TokenExchange:
    buyer: indexed(address)
    receiver: indexed(address)
    pool: indexed(address)
    token_sold: address
    token_bought: address
    amount_sold: uint256
    amount_bought: uint256


ETH_ADDRESS: constant(address) = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
MAX_COINS: constant(int128) = 8
CALC_INPUT_SIZE: constant(uint256) = 100
EMPTY_POOL_LIST: constant(address[8]) = [
    ZERO_ADDRESS,
    ZERO_ADDRESS,
    ZERO_ADDRESS,
    ZERO_ADDRESS,
    ZERO_ADDRESS,
    ZERO_ADDRESS,
    ZERO_ADDRESS,
    ZERO_ADDRESS,
]


address_provider: AddressProvider
registry: public(address)
factory_registry: public(address)

default_calculator: public(address)
is_killed: public(bool)
pool_calculator: HashMap[address, address]

is_approved: HashMap[address, HashMap[address, bool]]


@external
def __init__(_address_provider: address, _calculator: address):
    """
    @notice Constructor function
    """
    self.address_provider = AddressProvider(_address_provider)
    self.registry = AddressProvider(_address_provider).get_registry()
    self.factory_registry = AddressProvider(_address_provider).get_address(3)
    self.default_calculator = _calculator


@external
@payable
def __default__():
    pass


@view
@internal
def _get_exchange_amount(
    _registry: address,
    _pool: address,
    _from: address,
    _to: address,
    _amount: uint256
) -> uint256:
    """
    @notice Get the current number of coins received in an exchange
    @param _registry Registry address
    @param _pool Pool address
    @param _from Address of coin to be sent
    @param _to Address of coin to be received
    @param _amount Quantity of `_from` to be sent
    @return Quantity of `_to` to be received
    """
    i: int128 = 0
    j: int128 = 0
    is_underlying: bool = False
    i, j, is_underlying = Registry(_registry).get_coin_indices(_pool, _from, _to) # dev: no market

    if is_underlying and (_registry == self.registry or Registry(_registry).is_meta(_pool)):
        return CurvePool(_pool).get_dy_underlying(i, j, _amount)

    return CurvePool(_pool).get_dy(i, j, _amount)


@internal
def _exchange(
    _registry: address,
    _pool: address,
    _from: address,
    _to: address,
    _amount: uint256,
    _expected: uint256,
    _sender: address,
    _receiver: address,
) -> uint256:

    assert not self.is_killed

    initial_balance: uint256 = 0
    eth_amount: uint256 = 0
    received_amount: uint256 = 0

    i: int128 = 0
    j: int128 = 0
    is_underlying: bool = False
    i, j, is_underlying = Registry(_registry).get_coin_indices(_pool, _from, _to)  # dev: no market
    if is_underlying and _registry == self.factory_registry and Registry(_registry).is_meta(_pool):
        is_underlying = False

    # record initial balance
    if _to == ETH_ADDRESS:
        initial_balance = self.balance
    else:
        initial_balance = ERC20(_to).balanceOf(self)

    # perform / verify input transfer
    if _from == ETH_ADDRESS:
        eth_amount = _amount
    else:
        response: Bytes[32] = raw_call(
            _from,
            concat(
                method_id("transferFrom(address,address,uint256)"),
                convert(_sender, bytes32),
                convert(self, bytes32),
                convert(_amount, bytes32),
            ),
            max_outsize=32,
        )
        if len(response) != 0:
            assert convert(response, bool)

    # approve input token
    if not self.is_approved[_from][_pool]:
        response: Bytes[32] = raw_call(
            _from,
            concat(
                method_id("approve(address,uint256)"),
                convert(_pool, bytes32),
                convert(MAX_UINT256, bytes32),
            ),
            max_outsize=32,
        )
        if len(response) != 0:
            assert convert(response, bool)
        self.is_approved[_from][_pool] = True

    # perform coin exchange
    if is_underlying:
        CurvePool(_pool).exchange_underlying(i, j, _amount, _expected, value=eth_amount)
    else:
        CurvePool(_pool).exchange(i, j, _amount, _expected, value=eth_amount)

    # perform output transfer
    if _to == ETH_ADDRESS:
        received_amount = self.balance - initial_balance
        raw_call(_receiver, b"", value=received_amount)
    else:
        received_amount = ERC20(_to).balanceOf(self) - initial_balance
        response: Bytes[32] = raw_call(
            _to,
            concat(
                method_id("transfer(address,uint256)"),
                convert(_receiver, bytes32),
                convert(received_amount, bytes32),
            ),
            max_outsize=32,
        )
        if len(response) != 0:
            assert convert(response, bool)

    log TokenExchange(_sender, _receiver, _pool, _from, _to, _amount, received_amount)

    return received_amount


@payable
@external
@nonreentrant("lock")
def exchange_with_best_rate(
    _from: address,
    _to: address,
    _amount: uint256,
    _expected: uint256,
    _receiver: address = msg.sender,
) -> uint256:
    """
    @notice Perform an exchange using the pool that offers the best rate
    @dev Prior to calling this function, the caller must approve
         this contract to transfer `_amount` coins from `_from`
         Does NOT check rates in factory-deployed pools
    @param _from Address of coin being sent
    @param _to Address of coin being received
    @param _amount Quantity of `_from` being sent
    @param _expected Minimum quantity of `_from` received
           in order for the transaction to succeed
    @param _receiver Address to transfer the received tokens to
    @return uint256 Amount received
    """
    if _from == ETH_ADDRESS:
        assert _amount == msg.value, "Incorrect ETH amount"
    else:
        assert msg.value == 0, "Incorrect ETH amount"

    registry: address = self.registry
    best_pool: address = ZERO_ADDRESS
    max_dy: uint256 = 0
    for i in range(65536):
        pool: address = Registry(registry).find_pool_for_coins(_from, _to, i)
        if pool == ZERO_ADDRESS:
            break
        dy: uint256 = self._get_exchange_amount(registry, pool, _from, _to, _amount)
        if dy > max_dy:
            best_pool = pool
            max_dy = dy

    return self._exchange(registry, best_pool, _from, _to, _amount, _expected, msg.sender, _receiver)


@payable
@external
@nonreentrant("lock")
def exchange(
    _pool: address,
    _from: address,
    _to: address,
    _amount: uint256,
    _expected: uint256,
    _receiver: address = msg.sender,
) -> uint256:
    """
    @notice Perform an exchange using a specific pool
    @dev Prior to calling this function, the caller must approve
         this contract to transfer `_amount` coins from `_from`
         Works for both regular and factory-deployed pools
    @param _pool Address of the pool to use for the swap
    @param _from Address of coin being sent
    @param _to Address of coin being received
    @param _amount Quantity of `_from` being sent
    @param _expected Minimum quantity of `_from` received
           in order for the transaction to succeed
    @param _receiver Address to transfer the received tokens to
    @return uint256 Amount received
    """
    if _from == ETH_ADDRESS:
        assert _amount == msg.value, "Incorrect ETH amount"
    else:
        assert msg.value == 0, "Incorrect ETH amount"

    registry: address = self.registry
    if Registry(registry).get_lp_token(_pool) == ZERO_ADDRESS:
        registry = self.factory_registry
    return self._exchange(registry, _pool, _from, _to, _amount, _expected, msg.sender, _receiver)


@view
@external
def get_best_rate(
    _from: address, _to: address, _amount: uint256, _exclude_pools: address[8] = EMPTY_POOL_LIST
) -> (address, uint256):
    """
    @notice Find the pool offering the best rate for a given swap.
    @dev Checks rates for regular and factory pools
    @param _from Address of coin being sent
    @param _to Address of coin being received
    @param _amount Quantity of `_from` being sent
    @param _exclude_pools A list of up to 8 addresses which shouldn't be returned
    @return Pool address, amount received
    """
    best_pool: address = ZERO_ADDRESS
    max_dy: uint256 = 0

    registry: address = self.registry
    for i in range(65536):
        pool: address = Registry(registry).find_pool_for_coins(_from, _to, i)
        if pool == ZERO_ADDRESS:
            break
        elif pool in _exclude_pools:
            continue
        dy: uint256 = self._get_exchange_amount(registry, pool, _from, _to, _amount)
        if dy > max_dy:
            best_pool = pool
            max_dy = dy

    registry = self.factory_registry
    for i in range(65536):
        pool: address = Registry(registry).find_pool_for_coins(_from, _to, i)
        if pool == ZERO_ADDRESS:
            break
        elif pool in _exclude_pools:
            continue
        if ERC20(pool).totalSupply() == 0:
            # ignore pools without TVL as the call to `get_dy` will revert
            continue
        dy: uint256 = self._get_exchange_amount(registry, pool, _from, _to, _amount)
        if dy > max_dy:
            best_pool = pool
            max_dy = dy

    return best_pool, max_dy


@view
@external
def get_exchange_amount(_pool: address, _from: address, _to: address, _amount: uint256) -> uint256:
    """
    @notice Get the current number of coins received in an exchange
    @dev Works for both regular and factory-deployed pools
    @param _pool Pool address
    @param _from Address of coin to be sent
    @param _to Address of coin to be received
    @param _amount Quantity of `_from` to be sent
    @return Quantity of `_to` to be received
    """
    registry: address = self.registry
    if Registry(registry).get_lp_token(_pool) == ZERO_ADDRESS:
        registry = self.factory_registry
    return self._get_exchange_amount(registry, _pool, _from, _to, _amount)


@view
@external
def get_input_amount(_pool: address, _from: address, _to: address, _amount: uint256) -> uint256:
    """
    @notice Get the current number of coins required to receive the given amount in an exchange
    @param _pool Pool address
    @param _from Address of coin to be sent
    @param _to Address of coin to be received
    @param _amount Quantity of `_to` to be received
    @return Quantity of `_from` to be sent
    """
    registry: address = self.registry

    i: int128 = 0
    j: int128 = 0
    is_underlying: bool = False
    i, j, is_underlying = Registry(registry).get_coin_indices(_pool, _from, _to)
    amp: uint256 = Registry(registry).get_A(_pool)
    fee: uint256 = Registry(registry).get_fees(_pool)[0]

    balances: uint256[MAX_COINS] = empty(uint256[MAX_COINS])
    rates: uint256[MAX_COINS] = empty(uint256[MAX_COINS])
    decimals: uint256[MAX_COINS] = empty(uint256[MAX_COINS])
    n_coins: uint256 = Registry(registry).get_n_coins(_pool)[convert(is_underlying, uint256)]
    if is_underlying:
        balances = Registry(registry).get_underlying_balances(_pool)
        decimals = Registry(registry).get_underlying_decimals(_pool)
        for x in range(MAX_COINS):
            if x == n_coins:
                break
            rates[x] = 10**18
    else:
        balances = Registry(registry).get_balances(_pool)
        decimals = Registry(registry).get_decimals(_pool)
        rates = Registry(registry).get_rates(_pool)

    for x in range(MAX_COINS):
        if x == n_coins:
            break
        decimals[x] = 10 ** (18 - decimals[x])

    calculator: address = self.pool_calculator[_pool]
    if calculator == ZERO_ADDRESS:
        calculator = self.default_calculator
    return Calculator(calculator).get_dx(n_coins, balances, amp, fee, rates, decimals, i, j, _amount)


@view
@external
def get_exchange_amounts(
    _pool: address,
    _from: address,
    _to: address,
    _amounts: uint256[CALC_INPUT_SIZE]
) -> uint256[CALC_INPUT_SIZE]:
    """
    @notice Get the current number of coins required to receive the given amount in an exchange
    @param _pool Pool address
    @param _from Address of coin to be sent
    @param _to Address of coin to be received
    @param _amounts Quantity of `_to` to be received
    @return Quantity of `_from` to be sent
    """
    registry: address = self.registry

    i: int128 = 0
    j: int128 = 0
    is_underlying: bool = False
    balances: uint256[MAX_COINS] = empty(uint256[MAX_COINS])
    rates: uint256[MAX_COINS] = empty(uint256[MAX_COINS])
    decimals: uint256[MAX_COINS] = empty(uint256[MAX_COINS])

    amp: uint256 = Registry(registry).get_A(_pool)
    fee: uint256 = Registry(registry).get_fees(_pool)[0]
    i, j, is_underlying = Registry(registry).get_coin_indices(_pool, _from, _to)
    n_coins: uint256 = Registry(registry).get_n_coins(_pool)[convert(is_underlying, uint256)]

    if is_underlying:
        balances = Registry(registry).get_underlying_balances(_pool)
        decimals = Registry(registry).get_underlying_decimals(_pool)
        for x in range(MAX_COINS):
            if x == n_coins:
                break
            rates[x] = 10**18
    else:
        balances = Registry(registry).get_balances(_pool)
        decimals = Registry(registry).get_decimals(_pool)
        rates = Registry(registry).get_rates(_pool)

    for x in range(MAX_COINS):
        if x == n_coins:
            break
        decimals[x] = 10 ** (18 - decimals[x])

    calculator: address = self.pool_calculator[_pool]
    if calculator == ZERO_ADDRESS:
        calculator = self.default_calculator
    return Calculator(calculator).get_dy(n_coins, balances, amp, fee, rates, decimals, i, j, _amounts)


@view
@external
def get_calculator(_pool: address) -> address:
    """
    @notice Set calculator contract
    @dev Used to calculate `get_dy` for a pool
    @param _pool Pool address
    @return `CurveCalc` address
    """
    calculator: address = self.pool_calculator[_pool]
    if calculator == ZERO_ADDRESS:
        return self.default_calculator
    else:
        return calculator


@external
def update_registry_address() -> bool:
    """
    @notice Update registry address
    @dev The registry address is kept in storage to reduce gas costs.
         If a new registry is deployed this function should be called
         to update the local address from the address provider.
    @return bool success
    """
    address_provider: address = self.address_provider.address
    self.registry = AddressProvider(address_provider).get_registry()
    self.factory_registry = AddressProvider(address_provider).get_address(3)

    return True


@external
def set_calculator(_pool: address, _calculator: address) -> bool:
    """
    @notice Set calculator contract
    @dev Used to calculate `get_dy` for a pool
    @param _pool Pool address
    @param _calculator `CurveCalc` address
    @return bool success
    """
    assert msg.sender == self.address_provider.admin()  # dev: admin-only function

    self.pool_calculator[_pool] = _calculator

    return True


@external
def set_default_calculator(_calculator: address) -> bool:
    """
    @notice Set default calculator contract
    @dev Used to calculate `get_dy` for a pool
    @param _calculator `CurveCalc` address
    @return bool success
    """
    assert msg.sender == self.address_provider.admin()  # dev: admin-only function

    self.default_calculator = _calculator

    return True


@external
def claim_balance(_token: address) -> bool:
    """
    @notice Transfer an ERC20 or ETH balance held by this contract
    @dev The entire balance is transferred to the owner
    @param _token Token address
    @return bool success
    """
    assert msg.sender == self.address_provider.admin()  # dev: admin-only function

    if _token == ETH_ADDRESS:
        raw_call(msg.sender, b"", value=self.balance)
    else:
        amount: uint256 = ERC20(_token).balanceOf(self)
        response: Bytes[32] = raw_call(
            _token,
            concat(
                method_id("transfer(address,uint256)"),
                convert(msg.sender, bytes32),
                convert(amount, bytes32),
            ),
            max_outsize=32,
        )
        if len(response) != 0:
            assert convert(response, bool)

    return True


@external
def set_killed(_is_killed: bool) -> bool:
    """
    @notice Kill or unkill the contract
    @param _is_killed Killed status of the contract
    @return bool success
    """
    assert msg.sender == self.address_provider.admin()  # dev: admin-only function
    self.is_killed = _is_killed

    return True

Contract Security Audit

Contract ABI

[{"name":"TokenExchange","inputs":[{"name":"buyer","type":"address","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"pool","type":"address","indexed":true},{"name":"token_sold","type":"address","indexed":false},{"name":"token_bought","type":"address","indexed":false},{"name":"amount_sold","type":"uint256","indexed":false},{"name":"amount_bought","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_address_provider","type":"address"},{"name":"_calculator","type":"address"}],"outputs":[]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"function","name":"exchange_with_best_rate","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange_with_best_rate","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_best_rate","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_best_rate","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_exclude_pools","type":"address[8]"}],"outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_exchange_amount","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":20541},{"stateMutability":"view","type":"function","name":"get_input_amount","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":34456},{"stateMutability":"view","type":"function","name":"get_exchange_amounts","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amounts","type":"uint256[100]"}],"outputs":[{"name":"","type":"uint256[100]"}],"gas":37023},{"stateMutability":"view","type":"function","name":"get_calculator","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}],"gas":5029},{"stateMutability":"nonpayable","type":"function","name":"update_registry_address","inputs":[],"outputs":[{"name":"","type":"bool"}],"gas":77486},{"stateMutability":"nonpayable","type":"function","name":"set_calculator","inputs":[{"name":"_pool","type":"address"},{"name":"_calculator","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":40519},{"stateMutability":"nonpayable","type":"function","name":"set_default_calculator","inputs":[{"name":"_calculator","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":40334},{"stateMutability":"nonpayable","type":"function","name":"claim_balance","inputs":[{"name":"_token","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":43958},{"stateMutability":"nonpayable","type":"function","name":"set_killed","inputs":[{"name":"_is_killed","type":"bool"}],"outputs":[{"name":"","type":"bool"}],"gas":40394},{"stateMutability":"view","type":"function","name":"registry","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2838},{"stateMutability":"view","type":"function","name":"factory_registry","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2868},{"stateMutability":"view","type":"function","name":"default_calculator","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2898},{"stateMutability":"view","type":"function","name":"is_killed","inputs":[],"outputs":[{"name":"","type":"bool"}],"gas":2928}]

60406128b76101403960206128b760c03960c05160a01c6128b257602060206128b70160c03960c05160a01c6128b2576101405160025560206101e0600463a262904b6101805261019c610140515afa156128b257601f3d11156128b2576000506101e0516003556020610200602463493f4f746101805260036101a05261019c610140515afa156128b257601f3d11156128b257600050610200516004556101605160055561289a56600436101561000d57611eb0565b600035601c526000516310e5e30381141561002c573361014052610057565b639f69a6a68114156100525760843560a01c6127eb576020608461014037600050610057565b6102db565b6000546127eb57600160005560043560a01c6127eb5760243560a01c6127eb5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60043514156100e85734604435146100e3576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b610134565b3415610133576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b5b60035461016052604036610180376101c0600062010000818352015b60206102c06064636982eb0b6102005260406004610220376101c0516102605261021c610160515afa156127eb57601f3d11156127eb576000506102c0516101e0526101e05161019f57610255565b6101405161016051610180516101a0516101c0516101e0516102005161016051610220526101e0516102405260043561026052602435610280526044356102a0526102a0516102805161026051610240516102205160065801611eb2565b61030052610200526101e0526101c0526101a05261018052610160526101405261030051610200526101a051610200511115610244576101e05161018052610200516101a0525b5b8151600101808352811415610150575b50506101405161016051610180516101a051610160516101c052610180516101e05260806004610200373361028052610140516102a0526102a05161028051610260516102405161022051610200516101e0516101c05160065801612065565b610300526101a05261018052610160526101405261030051600052600060005560206000f35b634798ce5b8114156102f157336101405261031c565b631a4c1ca38114156103175760a43560a01c6127eb57602060a46101403760005061031c565b6104b7565b6001546127eb57600160015560043560a01c6127eb5760243560a01c6127eb5760443560a01c6127eb5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60243514156103b75734606435146103b2576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b610403565b3415610402576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b5b60035461016052602061020060246337951049610180526004356101a05261019c610160515afa156127eb57601f3d11156127eb576000506102005161044b57600454610160525b6101405161016051610160516101805260a060046101a03733610240526101405161026052610260516102405161022051610200516101e0516101c0516101a0516101805160065801612065565b6102c05261016052610140526102c051600052600060015560206000f35b634e21df758114156104f85760006101405260006101605260006101805260006101a05260006101c05260006101e05260006102005260006102205261054d565b63488de9af811415610548576000610120525b610120516064013560a01c6127eb5760206101205101610120526101006101205110156105375761050b565b61010060646101403760005061054d565b61091c565b346127eb5760043560a01c6127eb5760243560a01c6127eb5760403661024037600354610280526102a0600062010000818352015b60206103a06064636982eb0b6102e05260406004610300376102a051610340526102fc610280515afa156127eb57601f3d11156127eb576000506103a0516102c0526102c0516105d55761071a5661062c565b60006102e0526102e061012060006008818352015b6101205160200261014001516102c0511415610609576001835261061a565b5b81516001018083528114156105ea575b5050506102e0511561062b5761070a565b5b6101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161028051610300526102c05161032052600435610340526024356103605260443561038052610380516103605161034051610320516103005160065801611eb2565b6103e0526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103e0516102e052610260516102e0511115610709576102c051610240526102e051610260525b5b8151600101808352811415610582575b5050600454610280526102a0600062010000818352015b60206103a06064636982eb0b6102e05260406004610300376102a051610340526102fc610280515afa156127eb57601f3d11156127eb576000506103a0516102c0526102c05161078457610900566107db565b60006102e0526102e061012060006008818352015b6101205160200261014001516102c05114156107b857600183526107c9565b5b8151600101808352811415610799575b5050506102e051156107da576108f0565b5b602061034060046318160ddd6102e0526102fc6102c0515afa156127eb57601f3d11156127eb5760005061034051610812576108f0565b6101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161028051610300526102c05161032052600435610340526024356103605260443561038052610380516103605161034051610320516103005160065801611eb2565b6103e0526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103e0516102e052610260516102e05111156108ef576102c051610240526102e051610260525b5b8151600101808352811415610731575b50506102e06102405181526102605181602001525060406102e0f35b633973e8348114156109ed57346127eb5760043560a01c6127eb5760243560a01c6127eb5760443560a01c6127eb576003546101405260206101e060246337951049610160526004356101805261017c610140515afa156127eb57601f3d11156127eb576000506101e05161099357600454610140525b610140516101405161016052600435610180526024356101a0526044356101c0526064356101e0526101e0516101c0516101a051610180516101605160065801611eb2565b61024052610140526102405160005260206000f35b637fa5a65481141561101a57346127eb5760043560a01c6127eb5760243560a01c6127eb5760443560a01c6127eb5760035461014052606036610160376060610280606463eb85226d6101c052606060046101e0376101dc610140515afa156127eb57605f3d11156127eb5761028080808080516102e0525050602081019050808080516103005250506020810190508080805161032052505050506000506102e080516101605280602001516101805280604001516101a05250602061026060246355b30b196101e052600435610200526101fc610140515afa156127eb57601f3d11156127eb57600050610260516101c05260406102806024637cdb72b0610200526004356102205261021c610140515afa156127eb57603f3d11156127eb57600050610280516101e052610300366102003760406105a0602463940494f1610520526004356105405261053c610140515afa156127eb57603f3d11156127eb576000506105a06101a05160028110156127eb576020020151610500526101a05115610cc0576101006105a060246359f4f351610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a08051610200528060200151610220528060400151610240528060600151610260528060800151610280528060a001516102a0528060c001516102c0528060e001516102e052506101006105a06024634cb088f1610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a08051610400528060200151610420528060400151610440528060600151610460528060800151610480528060a001516104a0528060c001516104c0528060e001516104e0525061052060006008818352015b61050051610520511415610c8a57610cb9565b670de0b6b3a76400006103006105205160088110156127eb5760200201525b8151600101808352811415610c77575b5050610e32565b6101006105a060246392e3cc2d610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a08051610200528060200151610220528060400151610240528060600151610260528060800151610280528060a001516102a0528060c001516102c0528060e001516102e052506101006105a060246352b51555610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a08051610400528060200151610420528060400151610440528060600151610460528060800151610480528060a001516104a0528060c001516104c0528060e001516104e052506101006105a0602463ce99e45a610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a08051610300528060200151610320528060400151610340528060600151610360528060800151610380528060a001516103a0528060c001516103c0528060e001516103e052505b61052060006008818352015b61050051610520511415610e5157610ecc565b604e60126104006105205160088110156127eb5760200201518082106127eb578082039050905010156127eb5760126104006105205160088110156127eb5760200201518082106127eb5780820390509050600a0a6104006105205160088110156127eb5760200201525b8151600101808352811415610e3e575b5050600760043560e05260c052604060c020546105205261052051610ef357600554610520525b60206109606103c463ca3878906105405261050051610560526102005161058052610220516105a052610240516105c052610260516105e05261028051610600526102a051610620526102c051610640526102e051610660526101c051610680526101e0516106a052610300516106c052610320516106e0526103405161070052610360516107205261038051610740526103a051610760526103c051610780526103e0516107a052610400516107c052610420516107e0526104405161080052610460516108205261048051610840526104a051610860526104c051610880526104e0516108a052610160516108c052610180516108e0526064356109005261055c610520515afa156127eb57601f3d11156127eb576000506109605160005260206000f35b634be9ae42811415611a1657346127eb5760043560a01c6127eb5760243560a01c6127eb5760443560a01c6127eb57600354610140526103603661016037602061056060246355b30b196104e052600435610500526104fc610140515afa156127eb57601f3d11156127eb57600050610560516104c05260406105806024637cdb72b0610500526004356105205261051c610140515afa156127eb57603f3d11156127eb57600050610580516104e05260606105c0606463eb85226d61050052606060046105203761051c610140515afa156127eb57605f3d11156127eb576105c080808080516106205250506020810190508080805161064052505060208101905080808051610660525050505060005061062080516101605280602001516101805280604001516101a0525060406105a0602463940494f1610520526004356105405261053c610140515afa156127eb57603f3d11156127eb576000506105a06101a05160028110156127eb576020020151610500526101a051156112e6576101006105a060246359f4f351610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a080516101c05280602001516101e0528060400151610200528060600151610220528060800151610240528060a00151610260528060c00151610280528060e001516102a052506101006105a06024634cb088f1610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a080516103c05280602001516103e0528060400151610400528060600151610420528060800151610440528060a00151610460528060c00151610480528060e001516104a0525061052060006008818352015b610500516105205114156112b0576112df565b670de0b6b3a76400006102c06105205160088110156127eb5760200201525b815160010180835281141561129d575b5050611458565b6101006105a060246392e3cc2d610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a080516101c05280602001516101e0528060400151610200528060600151610220528060800151610240528060a00151610260528060c00151610280528060e001516102a052506101006105a060246352b51555610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a080516103c05280602001516103e0528060400151610400528060600151610420528060800151610440528060a00151610460528060c00151610480528060e001516104a052506101006105a0602463ce99e45a610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a080516102c05280602001516102e0528060400151610300528060600151610320528060800151610340528060a00151610360528060c00151610380528060e001516103a052505b61052060006008818352015b61050051610520511415611477576114f2565b604e60126103c06105205160088110156127eb5760200201518082106127eb578082039050905010156127eb5760126103c06105205160088110156127eb5760200201518082106127eb5780820390509050600a0a6103c06105205160088110156127eb5760200201525b8151600101808352811415611464575b5050600760043560e05260c052604060c02054610520526105205161151957600554610520525b610c80610c806115c061102463138f41f16105405261050051610560526101c051610580526101e0516105a052610200516105c052610220516105e0526102405161060052610260516106205261028051610640526102a051610660526104c051610680526104e0516106a0526102c0516106c0526102e0516106e052610300516107005261032051610720526103405161074052610360516107605261038051610780526103a0516107a0526103c0516107c0526103e0516107e052610400516108005261042051610820526104405161084052610460516108605261048051610880526104a0516108a052610160516108c052610180516108e05260648035610900528060200135610920528060400135610940528060600135610960528060800135610980528060a001356109a0528060c001356109c0528060e001356109e052806101000135610a0052806101200135610a2052806101400135610a4052806101600135610a6052806101800135610a8052806101a00135610aa052806101c00135610ac052806101e00135610ae052806102000135610b0052806102200135610b2052806102400135610b4052806102600135610b6052806102800135610b8052806102a00135610ba052806102c00135610bc052806102e00135610be052806103000135610c0052806103200135610c2052806103400135610c4052806103600135610c6052806103800135610c8052806103a00135610ca052806103c00135610cc052806103e00135610ce052806104000135610d0052806104200135610d2052806104400135610d4052806104600135610d6052806104800135610d8052806104a00135610da052806104c00135610dc052806104e00135610de052806105000135610e0052806105200135610e2052806105400135610e4052806105600135610e6052806105800135610e8052806105a00135610ea052806105c00135610ec052806105e00135610ee052806106000135610f0052806106200135610f2052806106400135610f4052806106600135610f6052806106800135610f8052806106a00135610fa052806106c00135610fc052806106e00135610fe0528061070001356110005280610720013561102052806107400135611040528061076001356110605280610780013561108052806107a001356110a052806107c001356110c052806107e001356110e0528061080001356111005280610820013561112052806108400135611140528061086001356111605280610880013561118052806108a001356111a052806108c001356111c052806108e001356111e0528061090001356112005280610920013561122052806109400135611240528061096001356112605280610980013561128052806109a001356112a052806109c001356112c052806109e001356112e05280610a0001356113005280610a2001356113205280610a4001356113405280610a6001356113605280610a8001356113805280610aa001356113a05280610ac001356113c05280610ae001356113e05280610b0001356114005280610b2001356114205280610b4001356114405280610b6001356114605280610b8001356114805280610ba001356114a05280610bc001356114c05280610be001356114e05280610c0001356115005280610c2001356115205280610c4001356115405280610c600135611560525061055c610520515afa156127eb57610c7f3d11156127eb576000506115c0f35b635d7dc825811415611a6d57346127eb5760043560a01c6127eb57600760043560e05260c052604060c020546101405261014051611a5e5760055460005260206000f3611a6b565b6101405160005260206000f35b005b634bbc5b1f811415611af857346127eb576002546101405260206101c0600463a262904b6101605261017c610140515afa156127eb57601f3d11156127eb576000506101c05160035560206101e0602463493f4f746101605260036101805261017c610140515afa156127eb57601f3d11156127eb576000506101e051600455600160005260206000f35b63188c7ee5811415611b7057346127eb5760043560a01c6127eb5760243560a01c6127eb5760206101a0600463f851a4406101405261015c6002545afa156127eb57601f3d11156127eb576000506101a0513314156127eb57602435600760043560e05260c052604060c02055600160005260206000f35b63da3fb2ab811415611bd057346127eb5760043560a01c6127eb5760206101a0600463f851a4406101405261015c6002545afa156127eb57601f3d11156127eb576000506101a0513314156127eb57600435600555600160005260206000f35b63752d53c6811415611dda57346127eb5760043560a01c6127eb5760206101a0600463f851a4406101405261015c6002545afa156127eb57601f3d11156127eb576000506101a0513314156127eb5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6004351415611c77576000610140526101408051602001806101808284600060045af1156127eb57505060006000610180516101a047335af1156127eb57611dcf565b60206101e060246370a0823161016052306101805261017c6004355afa156127eb57601f3d11156127eb576000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af15050805182019150503360208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af1156127eb57505060206103806102c0516102e060006004355af1156127eb5760203d80821115611d6a5780611d6c565b815b90509050610360526103608051602001806101608284600060045af1156127eb5750506000610160511815611dce5761016080602001516000825180602090136127eb57809190126127eb57806020036101000a8204905090509050156127eb575b5b600160005260206000f35b6390b22997811415611e3a57346127eb5760043560011c6127eb5760206101a0600463f851a4406101405261015c6002545afa156127eb57601f3d11156127eb576000506101a0513314156127eb57600435600655600160005260206000f35b637b103999811415611e5757346127eb5760035460005260206000f35b63f7cbf4c6811415611e7457346127eb5760045460005260206000f35b633b359fc8811415611e9157346127eb5760055460005260206000f35b639c868ac0811415611eae57346127eb5760065460005260206000f35b505b005b6101e0526101405261016052610180526101a0526101c052606036610200376060610320606463eb85226d610260526101605161028052610180516102a0526101a0516102c05261027c610140515afa156127eb57605f3d11156127eb576103208080808051610380525050602081019050808080516103a0525050602081019050808080516103c05250505050600050610380805161020052806020015161022052806040015161024052506102405115611fb957600354610140511415611f7c576001611fb3565b60206104c0602463e4d332a961044052610160516104605261045c610140515afa156127eb57601f3d11156127eb576000506104c0515b5b611fbc565b60005b156120135760206105a060646307211ef76104e052610200516105005261022051610520526101c051610540526104fc610160515afa156127eb57601f3d11156127eb576000506105a0516000526000516101e051565b60206103206064635e0d443f610260526102005161028052610220516102a0526101c0516102c05261027c610160515afa156127eb57601f3d11156127eb57600050610320516000526000516101e051565b610240526101405261016052610180526101a0526101c0526101e05261020052610220526006546127eb5760c0366102603760606103e0606463eb85226d61032052610160516103405261018051610360526101a0516103805261033c610140515afa156127eb57605f3d11156127eb576103e080808080516104405250506020810190508080805161046052505060208101905080808051610480525050505060005061044080516102c05280602001516102e05280604001516103005250610300511561217e57600454610140511415612176576020610440602463e4d332a96103c052610160516103e0526103dc610140515afa156127eb57601f3d11156127eb5760005061044051612179565b60005b612181565b60005b5b1561218e576000610300525b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101a05114156121b75747610260526121ef565b60206103a060246370a0823161032052306103405261033c6101a0515afa156127eb57601f3d11156127eb576000506103a051610260525b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61018051141561221b576101c05161028052612351565b60006004610380527f23b872dd000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610200516020826103e0010152602081019050306020826103e00101526020810190506101c0516020826103e0010152602081019050806103e0526103e090508051602001806104a08284600060045af1156127eb57505060206105806104a0516104c06000610180515af1156127eb5760203d808211156122ec57806122ee565b815b90509050610560526105608051602001806103208284600060045af1156127eb57505060006103205118156123505761032080602001516000825180602090136127eb57809190126127eb57806020036101000a8204905090509050156127eb575b5b60086101805160e05260c052604060c0206101605160e05260c052604060c020546124dc5760006004610380527f095ea7b3000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610160516020826103e00101526020810190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020826103e0010152602081019050806103e0526103e090508051602001806104808284600060045af1156127eb5750506020610540610480516104a06000610180515af1156127eb5760203d808211156124545780612456565b815b90509050610520526105208051602001806103208284600060045af1156127eb57505060006103205118156124b85761032080602001516000825180602090136127eb57809190126127eb57806020036101000a8204905090509050156127eb575b600160086101805160e05260c052604060c0206101605160e05260c052604060c020555b610300511561253557610160513b156127eb5760006000608463a6417ed6610320526102c051610340526102e051610360526101c051610380526101e0516103a05261033c61028051610160515af1156127eb57612581565b610160513b156127eb57600060006084633df02124610320526102c051610340526102e051610360526101c051610380526101e0516103a05261033c61028051610160515af1156127eb575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101a05114156125f75747610260518082106127eb57808203905090506102a0526000610320526103208051602001806103608284600060045af1156127eb57505060006000610360516103806102a051610220515af1156127eb57612766565b60206103a060246370a0823161032052306103405261033c6101a0515afa156127eb57601f3d11156127eb576000506103a051610260518082106127eb57808203905090506102a05260006004610380527fa9059cbb000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610220516020826103e00101526020810190506102a0516020826103e0010152602081019050806103e0526103e090508051602001806104808284600060045af1156127eb5750506020610540610480516104a060006101a0515af1156127eb5760203d808211156127015780612703565b815b90509050610520526105208051602001806103208284600060045af1156127eb57505060006103205118156127655761032080602001516000825180602090136127eb57809190126127eb57806020036101000a8204905090509050156127eb575b5b6101605161022051610200517fbd3eb7bcfdd1721a4eb4f00d0df3ed91bd6f17222f82b2d7bce519d8cab3fe46610320808080610180518152505060208101905080806101a0518152505060208101905080806101c0518152505060208101905080806102a05181525050608090509050610320a46102a05160005260005161024051565b600080fd5b6100aa61289a036100aa6000396100aa61289a036000f35b600080fd0000000000000000000000000000000022d53366457f9d5e68ec105046fc43830000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x600436101561000d57611eb0565b600035601c526000516310e5e30381141561002c573361014052610057565b639f69a6a68114156100525760843560a01c6127eb576020608461014037600050610057565b6102db565b6000546127eb57600160005560043560a01c6127eb5760243560a01c6127eb5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60043514156100e85734604435146100e3576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b610134565b3415610133576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b5b60035461016052604036610180376101c0600062010000818352015b60206102c06064636982eb0b6102005260406004610220376101c0516102605261021c610160515afa156127eb57601f3d11156127eb576000506102c0516101e0526101e05161019f57610255565b6101405161016051610180516101a0516101c0516101e0516102005161016051610220526101e0516102405260043561026052602435610280526044356102a0526102a0516102805161026051610240516102205160065801611eb2565b61030052610200526101e0526101c0526101a05261018052610160526101405261030051610200526101a051610200511115610244576101e05161018052610200516101a0525b5b8151600101808352811415610150575b50506101405161016051610180516101a051610160516101c052610180516101e05260806004610200373361028052610140516102a0526102a05161028051610260516102405161022051610200516101e0516101c05160065801612065565b610300526101a05261018052610160526101405261030051600052600060005560206000f35b634798ce5b8114156102f157336101405261031c565b631a4c1ca38114156103175760a43560a01c6127eb57602060a46101403760005061031c565b6104b7565b6001546127eb57600160015560043560a01c6127eb5760243560a01c6127eb5760443560a01c6127eb5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60243514156103b75734606435146103b2576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b610403565b3415610402576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b5b60035461016052602061020060246337951049610180526004356101a05261019c610160515afa156127eb57601f3d11156127eb576000506102005161044b57600454610160525b6101405161016051610160516101805260a060046101a03733610240526101405161026052610260516102405161022051610200516101e0516101c0516101a0516101805160065801612065565b6102c05261016052610140526102c051600052600060015560206000f35b634e21df758114156104f85760006101405260006101605260006101805260006101a05260006101c05260006101e05260006102005260006102205261054d565b63488de9af811415610548576000610120525b610120516064013560a01c6127eb5760206101205101610120526101006101205110156105375761050b565b61010060646101403760005061054d565b61091c565b346127eb5760043560a01c6127eb5760243560a01c6127eb5760403661024037600354610280526102a0600062010000818352015b60206103a06064636982eb0b6102e05260406004610300376102a051610340526102fc610280515afa156127eb57601f3d11156127eb576000506103a0516102c0526102c0516105d55761071a5661062c565b60006102e0526102e061012060006008818352015b6101205160200261014001516102c0511415610609576001835261061a565b5b81516001018083528114156105ea575b5050506102e0511561062b5761070a565b5b6101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161028051610300526102c05161032052600435610340526024356103605260443561038052610380516103605161034051610320516103005160065801611eb2565b6103e0526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103e0516102e052610260516102e0511115610709576102c051610240526102e051610260525b5b8151600101808352811415610582575b5050600454610280526102a0600062010000818352015b60206103a06064636982eb0b6102e05260406004610300376102a051610340526102fc610280515afa156127eb57601f3d11156127eb576000506103a0516102c0526102c05161078457610900566107db565b60006102e0526102e061012060006008818352015b6101205160200261014001516102c05114156107b857600183526107c9565b5b8151600101808352811415610799575b5050506102e051156107da576108f0565b5b602061034060046318160ddd6102e0526102fc6102c0515afa156127eb57601f3d11156127eb5760005061034051610812576108f0565b6101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161028051610300526102c05161032052600435610340526024356103605260443561038052610380516103605161034051610320516103005160065801611eb2565b6103e0526102e0526102c0526102a05261028052610260526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103e0516102e052610260516102e05111156108ef576102c051610240526102e051610260525b5b8151600101808352811415610731575b50506102e06102405181526102605181602001525060406102e0f35b633973e8348114156109ed57346127eb5760043560a01c6127eb5760243560a01c6127eb5760443560a01c6127eb576003546101405260206101e060246337951049610160526004356101805261017c610140515afa156127eb57601f3d11156127eb576000506101e05161099357600454610140525b610140516101405161016052600435610180526024356101a0526044356101c0526064356101e0526101e0516101c0516101a051610180516101605160065801611eb2565b61024052610140526102405160005260206000f35b637fa5a65481141561101a57346127eb5760043560a01c6127eb5760243560a01c6127eb5760443560a01c6127eb5760035461014052606036610160376060610280606463eb85226d6101c052606060046101e0376101dc610140515afa156127eb57605f3d11156127eb5761028080808080516102e0525050602081019050808080516103005250506020810190508080805161032052505050506000506102e080516101605280602001516101805280604001516101a05250602061026060246355b30b196101e052600435610200526101fc610140515afa156127eb57601f3d11156127eb57600050610260516101c05260406102806024637cdb72b0610200526004356102205261021c610140515afa156127eb57603f3d11156127eb57600050610280516101e052610300366102003760406105a0602463940494f1610520526004356105405261053c610140515afa156127eb57603f3d11156127eb576000506105a06101a05160028110156127eb576020020151610500526101a05115610cc0576101006105a060246359f4f351610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a08051610200528060200151610220528060400151610240528060600151610260528060800151610280528060a001516102a0528060c001516102c0528060e001516102e052506101006105a06024634cb088f1610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a08051610400528060200151610420528060400151610440528060600151610460528060800151610480528060a001516104a0528060c001516104c0528060e001516104e0525061052060006008818352015b61050051610520511415610c8a57610cb9565b670de0b6b3a76400006103006105205160088110156127eb5760200201525b8151600101808352811415610c77575b5050610e32565b6101006105a060246392e3cc2d610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a08051610200528060200151610220528060400151610240528060600151610260528060800151610280528060a001516102a0528060c001516102c0528060e001516102e052506101006105a060246352b51555610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a08051610400528060200151610420528060400151610440528060600151610460528060800151610480528060a001516104a0528060c001516104c0528060e001516104e052506101006105a0602463ce99e45a610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a08051610300528060200151610320528060400151610340528060600151610360528060800151610380528060a001516103a0528060c001516103c0528060e001516103e052505b61052060006008818352015b61050051610520511415610e5157610ecc565b604e60126104006105205160088110156127eb5760200201518082106127eb578082039050905010156127eb5760126104006105205160088110156127eb5760200201518082106127eb5780820390509050600a0a6104006105205160088110156127eb5760200201525b8151600101808352811415610e3e575b5050600760043560e05260c052604060c020546105205261052051610ef357600554610520525b60206109606103c463ca3878906105405261050051610560526102005161058052610220516105a052610240516105c052610260516105e05261028051610600526102a051610620526102c051610640526102e051610660526101c051610680526101e0516106a052610300516106c052610320516106e0526103405161070052610360516107205261038051610740526103a051610760526103c051610780526103e0516107a052610400516107c052610420516107e0526104405161080052610460516108205261048051610840526104a051610860526104c051610880526104e0516108a052610160516108c052610180516108e0526064356109005261055c610520515afa156127eb57601f3d11156127eb576000506109605160005260206000f35b634be9ae42811415611a1657346127eb5760043560a01c6127eb5760243560a01c6127eb5760443560a01c6127eb57600354610140526103603661016037602061056060246355b30b196104e052600435610500526104fc610140515afa156127eb57601f3d11156127eb57600050610560516104c05260406105806024637cdb72b0610500526004356105205261051c610140515afa156127eb57603f3d11156127eb57600050610580516104e05260606105c0606463eb85226d61050052606060046105203761051c610140515afa156127eb57605f3d11156127eb576105c080808080516106205250506020810190508080805161064052505060208101905080808051610660525050505060005061062080516101605280602001516101805280604001516101a0525060406105a0602463940494f1610520526004356105405261053c610140515afa156127eb57603f3d11156127eb576000506105a06101a05160028110156127eb576020020151610500526101a051156112e6576101006105a060246359f4f351610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a080516101c05280602001516101e0528060400151610200528060600151610220528060800151610240528060a00151610260528060c00151610280528060e001516102a052506101006105a06024634cb088f1610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a080516103c05280602001516103e0528060400151610400528060600151610420528060800151610440528060a00151610460528060c00151610480528060e001516104a0525061052060006008818352015b610500516105205114156112b0576112df565b670de0b6b3a76400006102c06105205160088110156127eb5760200201525b815160010180835281141561129d575b5050611458565b6101006105a060246392e3cc2d610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a080516101c05280602001516101e0528060400151610200528060600151610220528060800151610240528060a00151610260528060c00151610280528060e001516102a052506101006105a060246352b51555610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a080516103c05280602001516103e0528060400151610400528060600151610420528060800151610440528060a00151610460528060c00151610480528060e001516104a052506101006105a0602463ce99e45a610520526004356105405261053c610140515afa156127eb5760ff3d11156127eb576000506105a080516102c05280602001516102e0528060400151610300528060600151610320528060800151610340528060a00151610360528060c00151610380528060e001516103a052505b61052060006008818352015b61050051610520511415611477576114f2565b604e60126103c06105205160088110156127eb5760200201518082106127eb578082039050905010156127eb5760126103c06105205160088110156127eb5760200201518082106127eb5780820390509050600a0a6103c06105205160088110156127eb5760200201525b8151600101808352811415611464575b5050600760043560e05260c052604060c02054610520526105205161151957600554610520525b610c80610c806115c061102463138f41f16105405261050051610560526101c051610580526101e0516105a052610200516105c052610220516105e0526102405161060052610260516106205261028051610640526102a051610660526104c051610680526104e0516106a0526102c0516106c0526102e0516106e052610300516107005261032051610720526103405161074052610360516107605261038051610780526103a0516107a0526103c0516107c0526103e0516107e052610400516108005261042051610820526104405161084052610460516108605261048051610880526104a0516108a052610160516108c052610180516108e05260648035610900528060200135610920528060400135610940528060600135610960528060800135610980528060a001356109a0528060c001356109c0528060e001356109e052806101000135610a0052806101200135610a2052806101400135610a4052806101600135610a6052806101800135610a8052806101a00135610aa052806101c00135610ac052806101e00135610ae052806102000135610b0052806102200135610b2052806102400135610b4052806102600135610b6052806102800135610b8052806102a00135610ba052806102c00135610bc052806102e00135610be052806103000135610c0052806103200135610c2052806103400135610c4052806103600135610c6052806103800135610c8052806103a00135610ca052806103c00135610cc052806103e00135610ce052806104000135610d0052806104200135610d2052806104400135610d4052806104600135610d6052806104800135610d8052806104a00135610da052806104c00135610dc052806104e00135610de052806105000135610e0052806105200135610e2052806105400135610e4052806105600135610e6052806105800135610e8052806105a00135610ea052806105c00135610ec052806105e00135610ee052806106000135610f0052806106200135610f2052806106400135610f4052806106600135610f6052806106800135610f8052806106a00135610fa052806106c00135610fc052806106e00135610fe0528061070001356110005280610720013561102052806107400135611040528061076001356110605280610780013561108052806107a001356110a052806107c001356110c052806107e001356110e0528061080001356111005280610820013561112052806108400135611140528061086001356111605280610880013561118052806108a001356111a052806108c001356111c052806108e001356111e0528061090001356112005280610920013561122052806109400135611240528061096001356112605280610980013561128052806109a001356112a052806109c001356112c052806109e001356112e05280610a0001356113005280610a2001356113205280610a4001356113405280610a6001356113605280610a8001356113805280610aa001356113a05280610ac001356113c05280610ae001356113e05280610b0001356114005280610b2001356114205280610b4001356114405280610b6001356114605280610b8001356114805280610ba001356114a05280610bc001356114c05280610be001356114e05280610c0001356115005280610c2001356115205280610c4001356115405280610c600135611560525061055c610520515afa156127eb57610c7f3d11156127eb576000506115c0f35b635d7dc825811415611a6d57346127eb5760043560a01c6127eb57600760043560e05260c052604060c020546101405261014051611a5e5760055460005260206000f3611a6b565b6101405160005260206000f35b005b634bbc5b1f811415611af857346127eb576002546101405260206101c0600463a262904b6101605261017c610140515afa156127eb57601f3d11156127eb576000506101c05160035560206101e0602463493f4f746101605260036101805261017c610140515afa156127eb57601f3d11156127eb576000506101e051600455600160005260206000f35b63188c7ee5811415611b7057346127eb5760043560a01c6127eb5760243560a01c6127eb5760206101a0600463f851a4406101405261015c6002545afa156127eb57601f3d11156127eb576000506101a0513314156127eb57602435600760043560e05260c052604060c02055600160005260206000f35b63da3fb2ab811415611bd057346127eb5760043560a01c6127eb5760206101a0600463f851a4406101405261015c6002545afa156127eb57601f3d11156127eb576000506101a0513314156127eb57600435600555600160005260206000f35b63752d53c6811415611dda57346127eb5760043560a01c6127eb5760206101a0600463f851a4406101405261015c6002545afa156127eb57601f3d11156127eb576000506101a0513314156127eb5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6004351415611c77576000610140526101408051602001806101808284600060045af1156127eb57505060006000610180516101a047335af1156127eb57611dcf565b60206101e060246370a0823161016052306101805261017c6004355afa156127eb57601f3d11156127eb576000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af15050805182019150503360208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af1156127eb57505060206103806102c0516102e060006004355af1156127eb5760203d80821115611d6a5780611d6c565b815b90509050610360526103608051602001806101608284600060045af1156127eb5750506000610160511815611dce5761016080602001516000825180602090136127eb57809190126127eb57806020036101000a8204905090509050156127eb575b5b600160005260206000f35b6390b22997811415611e3a57346127eb5760043560011c6127eb5760206101a0600463f851a4406101405261015c6002545afa156127eb57601f3d11156127eb576000506101a0513314156127eb57600435600655600160005260206000f35b637b103999811415611e5757346127eb5760035460005260206000f35b63f7cbf4c6811415611e7457346127eb5760045460005260206000f35b633b359fc8811415611e9157346127eb5760055460005260206000f35b639c868ac0811415611eae57346127eb5760065460005260206000f35b505b005b6101e0526101405261016052610180526101a0526101c052606036610200376060610320606463eb85226d610260526101605161028052610180516102a0526101a0516102c05261027c610140515afa156127eb57605f3d11156127eb576103208080808051610380525050602081019050808080516103a0525050602081019050808080516103c05250505050600050610380805161020052806020015161022052806040015161024052506102405115611fb957600354610140511415611f7c576001611fb3565b60206104c0602463e4d332a961044052610160516104605261045c610140515afa156127eb57601f3d11156127eb576000506104c0515b5b611fbc565b60005b156120135760206105a060646307211ef76104e052610200516105005261022051610520526101c051610540526104fc610160515afa156127eb57601f3d11156127eb576000506105a0516000526000516101e051565b60206103206064635e0d443f610260526102005161028052610220516102a0526101c0516102c05261027c610160515afa156127eb57601f3d11156127eb57600050610320516000526000516101e051565b610240526101405261016052610180526101a0526101c0526101e05261020052610220526006546127eb5760c0366102603760606103e0606463eb85226d61032052610160516103405261018051610360526101a0516103805261033c610140515afa156127eb57605f3d11156127eb576103e080808080516104405250506020810190508080805161046052505060208101905080808051610480525050505060005061044080516102c05280602001516102e05280604001516103005250610300511561217e57600454610140511415612176576020610440602463e4d332a96103c052610160516103e0526103dc610140515afa156127eb57601f3d11156127eb5760005061044051612179565b60005b612181565b60005b5b1561218e576000610300525b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101a05114156121b75747610260526121ef565b60206103a060246370a0823161032052306103405261033c6101a0515afa156127eb57601f3d11156127eb576000506103a051610260525b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61018051141561221b576101c05161028052612351565b60006004610380527f23b872dd000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610200516020826103e0010152602081019050306020826103e00101526020810190506101c0516020826103e0010152602081019050806103e0526103e090508051602001806104a08284600060045af1156127eb57505060206105806104a0516104c06000610180515af1156127eb5760203d808211156122ec57806122ee565b815b90509050610560526105608051602001806103208284600060045af1156127eb57505060006103205118156123505761032080602001516000825180602090136127eb57809190126127eb57806020036101000a8204905090509050156127eb575b5b60086101805160e05260c052604060c0206101605160e05260c052604060c020546124dc5760006004610380527f095ea7b3000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610160516020826103e00101526020810190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020826103e0010152602081019050806103e0526103e090508051602001806104808284600060045af1156127eb5750506020610540610480516104a06000610180515af1156127eb5760203d808211156124545780612456565b815b90509050610520526105208051602001806103208284600060045af1156127eb57505060006103205118156124b85761032080602001516000825180602090136127eb57809190126127eb57806020036101000a8204905090509050156127eb575b600160086101805160e05260c052604060c0206101605160e05260c052604060c020555b610300511561253557610160513b156127eb5760006000608463a6417ed6610320526102c051610340526102e051610360526101c051610380526101e0516103a05261033c61028051610160515af1156127eb57612581565b610160513b156127eb57600060006084633df02124610320526102c051610340526102e051610360526101c051610380526101e0516103a05261033c61028051610160515af1156127eb575b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101a05114156125f75747610260518082106127eb57808203905090506102a0526000610320526103208051602001806103608284600060045af1156127eb57505060006000610360516103806102a051610220515af1156127eb57612766565b60206103a060246370a0823161032052306103405261033c6101a0515afa156127eb57601f3d11156127eb576000506103a051610260518082106127eb57808203905090506102a05260006004610380527fa9059cbb000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610220516020826103e00101526020810190506102a0516020826103e0010152602081019050806103e0526103e090508051602001806104808284600060045af1156127eb5750506020610540610480516104a060006101a0515af1156127eb5760203d808211156127015780612703565b815b90509050610520526105208051602001806103208284600060045af1156127eb57505060006103205118156127655761032080602001516000825180602090136127eb57809190126127eb57806020036101000a8204905090509050156127eb575b5b6101605161022051610200517fbd3eb7bcfdd1721a4eb4f00d0df3ed91bd6f17222f82b2d7bce519d8cab3fe46610320808080610180518152505060208101905080806101a0518152505060208101905080806101c0518152505060208101905080806102a05181525050608090509050610320a46102a05160005260005161024051565b600080fd

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

0000000000000000000000000000000022d53366457f9d5e68ec105046fc43830000000000000000000000000000000000000000000000000000000000000000

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

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


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.