ETH Price: $3,668.28 (+0.76%)
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Exchange131688372021-09-05 23:57:371218 days ago1630886257IN
0x2393c368...C9C548011
0 ETH0.0361658386.29404334
Exchange131684302021-09-05 22:33:341218 days ago1630881214IN
0x2393c368...C9C548011
0 ETH0.0386990982.25798385
Exchange131126132021-08-28 7:45:331226 days ago1630136733IN
0x2393c368...C9C548011
0 ETH0.0010167745.7926452
Update_registry_...130184212021-08-13 18:18:121241 days ago1628878692IN
0x2393c368...C9C548011
0 ETH0.0014516237.95308491
Update_registry_...125897382021-06-07 21:07:351308 days ago1623100055IN
0x2393c368...C9C548011
0 ETH0.0010259226.82291294
Exchange123330812021-04-29 3:56:041347 days ago1619668564IN
0x2393c368...C9C548011
0 ETH0.0191775640

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
132348882021-09-16 5:33:141207 days ago1631770394
0x2393c368...C9C548011
15 ETH
132348882021-09-16 5:33:141207 days ago1631770394
0x2393c368...C9C548011
15 ETH
132307192021-09-15 13:58:441208 days ago1631714324
0x2393c368...C9C548011
14.86779557 ETH
132307192021-09-15 13:58:441208 days ago1631714324
0x2393c368...C9C548011
14.86779557 ETH
132265262021-09-14 22:27:141209 days ago1631658434
0x2393c368...C9C548011
0.10585768 ETH
132265262021-09-14 22:27:141209 days ago1631658434
0x2393c368...C9C548011
0.10585768 ETH
132265162021-09-14 22:24:251209 days ago1631658265
0x2393c368...C9C548011
0.12314979 ETH
132265162021-09-14 22:24:251209 days ago1631658265
0x2393c368...C9C548011
0.12314979 ETH
132265162021-09-14 22:24:251209 days ago1631658265
0x2393c368...C9C548011
54.41949192 ETH
132265162021-09-14 22:24:251209 days ago1631658265
0x2393c368...C9C548011
54.41949192 ETH
132265162021-09-14 22:24:251209 days ago1631658265
0x2393c368...C9C548011
11.37258541 ETH
132265162021-09-14 22:24:251209 days ago1631658265
0x2393c368...C9C548011
11.37258541 ETH
132223572021-09-14 7:00:581209 days ago1631602858
0x2393c368...C9C548011
90 ETH
132223572021-09-14 7:00:581209 days ago1631602858
0x2393c368...C9C548011
90 ETH
132223392021-09-14 6:57:161209 days ago1631602636
0x2393c368...C9C548011
32.07994786 ETH
132223392021-09-14 6:57:161209 days ago1631602636
0x2393c368...C9C548011
32.07994786 ETH
132189692021-09-13 18:25:471210 days ago1631557547
0x2393c368...C9C548011
309.05278784 ETH
132189692021-09-13 18:25:471210 days ago1631557547
0x2393c368...C9C548011
309.05278784 ETH
132187862021-09-13 17:42:571210 days ago1631554977
0x2393c368...C9C548011
14.43080987 ETH
132187862021-09-13 17:42:571210 days ago1631554977
0x2393c368...C9C548011
14.43080987 ETH
132117362021-09-12 15:20:201211 days ago1631460020
0x2393c368...C9C548011
813.57917033 ETH
132117362021-09-12 15:20:201211 days ago1631460020
0x2393c368...C9C548011
813.57917033 ETH
132039282021-09-11 10:30:581212 days ago1631356258
0x2393c368...C9C548011
0.65617453 ETH
132039282021-09-11 10:30:581212 days ago1631356258
0x2393c368...C9C548011
0.65617453 ETH
132037912021-09-11 9:58:061212 days ago1631354286
0x2393c368...C9C548011
17.21817166 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.11

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# @version 0.2.11
"""
@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

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


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:
        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

    # 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) -> (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
    @return Pool address, amount received
    """
    best_pool: address = ZERO_ADDRESS
    max_dy: uint256 = 0
    for registry in [self.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

            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"}],"gas":395840312},{"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":5104},{"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":15358},{"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":17925},{"stateMutability":"view","type":"function","name":"get_calculator","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}],"gas":2429},{"stateMutability":"nonpayable","type":"function","name":"update_registry_address","inputs":[],"outputs":[{"name":"","type":"bool"}],"gas":72066},{"stateMutability":"nonpayable","type":"function","name":"set_calculator","inputs":[{"name":"_pool","type":"address"},{"name":"_calculator","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":37159},{"stateMutability":"nonpayable","type":"function","name":"set_default_calculator","inputs":[{"name":"_calculator","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":36974},{"stateMutability":"nonpayable","type":"function","name":"claim_balance","inputs":[{"name":"_token","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":37798},{"stateMutability":"nonpayable","type":"function","name":"set_killed","inputs":[{"name":"_is_killed","type":"bool"}],"outputs":[{"name":"","type":"bool"}],"gas":37034},{"stateMutability":"view","type":"function","name":"registry","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":1538},{"stateMutability":"view","type":"function","name":"factory_registry","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":1568},{"stateMutability":"view","type":"function","name":"default_calculator","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":1598},{"stateMutability":"view","type":"function","name":"is_killed","inputs":[],"outputs":[{"name":"","type":"bool"}],"gas":1628}]

60406128b86101403960206128b860c03960c05160a01c1561002057600080fd5b602060206128b80160c03960c05160a01c1561003b57600080fd5b6101405160005560206101e0600463a262904b6101805261019c610140515afa61006457600080fd5b601f3d1161007157600080fd5b6000506101e0516001556020610200602463493f4f746101805260036101a05261019c610140515afa6100a357600080fd5b601f3d116100b057600080fd5b60005061020051600255610160516003556128a056600436101561000d57611ed3565b600035601c526000516310e5e30381141561002c57336101405261005d565b639f69a6a68114156100585760843560a01c1561004857600080fd5b602060846101403760005061005d565b610319565b6007541561006a57600080fd5b600160075560043560a01c1561007f57600080fd5b60243560a01c1561008f57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600435141561010257346044351415156100fd576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b61014f565b3415151561014f576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b60015461016052604036610180376101c0600062010000818352015b60206102c06064636982eb0b6102005260043561022052602435610240526101c0516102605261021c610160515afa6101a357600080fd5b601f3d116101b057600080fd5b6000506102c0516101e0526101e05115156101ca5761027f565b6101405161016051610180516101a0516101c0516101e0516102005161016051610220526101e0516102405260043561026052602435610280526044356102a0526102a0516102805161026051610240516102205160065801611ed5565b61030052610200526101e0526101c0526101a05261018052610160526101405261030051610200526101a05161020051111561026f576101e05161018052610200516101a0525b815160010180835281141561016b575b50506101405161016051610180516101a051610160516101c052610180516101e052600435610200526024356102205260443561024052606435610260523361028052610140516102a0526102a05161028051610260516102405161022051610200516101e0516101c05160065801612047565b610300526101a05261018052610160526101405261030051600052600060075560206000f35b634798ce5b81141561032f573361014052610360565b631a4c1ca381141561035b5760a43560a01c1561034b57600080fd5b602060a461014037600050610360565b61053b565b6007541561036d57600080fd5b600160075560043560a01c1561038257600080fd5b60243560a01c1561039257600080fd5b60443560a01c156103a257600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60243514156104155734606435141515610410576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b610462565b34151515610462576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b60015461016052602061020060246337951049610180526004356101a05261019c610160515afa61049257600080fd5b601f3d1161049f57600080fd5b6000506102005115156104b457600254610160525b610140516101605161016051610180526004356101a0526024356101c0526044356101e052606435610200526084356102205233610240526101405161026052610260516102405161022051610200516101e0516101c0516101a0516101805160065801612047565b6102c05261016052610140526102c051600052600060075560206000f35b634e21df7581141561071957341561055257600080fd5b60043560a01c1561056257600080fd5b60243560a01c1561057257600080fd5b604036610140376001546101c0526002546101e0526101a060006002818352015b60206101a051026101c0015161018052610200600062010000818352015b60206103006064636982eb0b610240526004356102605260243561028052610200516102a05261025c610180515afa6105e957600080fd5b601f3d116105f657600080fd5b6000506103005161022052610220511515610610576106d5565b6101405161016051610180516101a0516101c0516101e051610200516102205161024051610180516102605261022051610280526004356102a0526024356102c0526044356102e0526102e0516102c0516102a051610280516102605160065801611ed5565b610340526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103405161024052610160516102405111156106c557610220516101405261024051610160525b81516001018083528114156105b1575b50505b8151600101808352811415610593575b505061018080808061014051815250506020810190508080610160518152505060409050905060c05260c051610180f35b633973e83481141561080c57341561073057600080fd5b60043560a01c1561074057600080fd5b60243560a01c1561075057600080fd5b60443560a01c1561076057600080fd5b6001546101405260206101e060246337951049610160526004356101805261017c610140515afa61079057600080fd5b601f3d1161079d57600080fd5b6000506101e05115156107b257600254610140525b610140516101405161016052600435610180526024356101a0526044356101c0526064356101e0526101e0516101c0516101a051610180516101605160065801611ed5565b61024052610140526102405160005260206000f35b637fa5a654811415610ed457341561082357600080fd5b60043560a01c1561083357600080fd5b60243560a01c1561084357600080fd5b60443560a01c1561085357600080fd5b60015461014052606036610160376060610280606463eb85226d6101c0526004356101e05260243561020052604435610220526101dc610140515afa61089857600080fd5b605f3d116108a557600080fd5b61028080808080516102e0525050602081019050808080516103005250506020810190508080805161032052505050506000506102e080516101605280602001516101805280604001516101a05250602061026060246355b30b196101e052600435610200526101fc610140515afa61091d57600080fd5b601f3d1161092a57600080fd5b600050610260516101c05260406102806024637cdb72b0610200526004356102205261021c610140515afa61095e57600080fd5b603f3d1161096b57600080fd5b600050610280516101e052610300366102003760406105a0602463940494f1610520526004356105405261053c610140515afa6109a757600080fd5b603f3d116109b457600080fd5b6000506105a06101a051600281106109cb57600080fd5b6020020151610500526101a05115610b3c576101006105a060246359f4f351610520526004356105405261053c610140515afa610a0757600080fd5b60ff3d11610a1457600080fd5b6000506105a08051610200528060200151610220528060400151610240528060600151610260528060800151610280528060a001516102a0528060c001516102c0528060e001516102e052506101006105a06024634cb088f1610520526004356105405261053c610140515afa610a8a57600080fd5b60ff3d11610a9757600080fd5b6000506105a08051610400528060200151610420528060400151610440528060600151610460528060800151610480528060a001516104a0528060c001516104c0528060e001516104e0525061052060006008818352015b61050051610520511415610b0257610b35565b670de0b6b3a76400006103006105205160088110610b1f57600080fd5b60200201525b8151600101808352811415610aef575b5050610cc6565b6101006105a060246392e3cc2d610520526004356105405261053c610140515afa610b6657600080fd5b60ff3d11610b7357600080fd5b6000506105a08051610200528060200151610220528060400151610240528060600151610260528060800151610280528060a001516102a0528060c001516102c0528060e001516102e052506101006105a060246352b51555610520526004356105405261053c610140515afa610be957600080fd5b60ff3d11610bf657600080fd5b6000506105a08051610400528060200151610420528060400151610440528060600151610460528060800151610480528060a001516104a0528060c001516104c0528060e001516104e052506101006105a0602463ce99e45a610520526004356105405261053c610140515afa610c6c57600080fd5b60ff3d11610c7957600080fd5b6000506105a08051610300528060200151610320528060400151610340528060600151610360528060800151610380528060a001516103a0528060c001516103c0528060e001516103e052505b61052060006008818352015b61050051610520511415610ce557610d7c565b604e60126104006105205160088110610cfd57600080fd5b602002015180821015610d0f57600080fd5b8082039050905010610d2057600080fd5b60126104006105205160088110610d3657600080fd5b602002015180821015610d4857600080fd5b80820390509050600a0a6104006105205160088110610d6657600080fd5b60200201525b8151600101808352811415610cd2575b5050600560043560e05260c052604060c0205461052052610520511515610da557600354610520525b60206109606103c463ca3878906105405261050051610560526102005161058052610220516105a052610240516105c052610260516105e05261028051610600526102a051610620526102c051610640526102e051610660526101c051610680526101e0516106a052610300516106c052610320516106e0526103405161070052610360516107205261038051610740526103a051610760526103c051610780526103e0516107a052610400516107c052610420516107e0526104405161080052610460516108205261048051610840526104a051610860526104c051610880526104e0516108a052610160516108c052610180516108e0526064356109005261055c610520515afa610eb757600080fd5b601f3d11610ec457600080fd5b6000506109605160005260206000f35b634be9ae4281141561196b573415610eeb57600080fd5b60043560a01c15610efb57600080fd5b60243560a01c15610f0b57600080fd5b60443560a01c15610f1b57600080fd5b600154610140526103603661016037602061056060246355b30b196104e052600435610500526104fc610140515afa610f5357600080fd5b601f3d11610f6057600080fd5b600050610560516104c05260406105806024637cdb72b0610500526004356105205261051c610140515afa610f9457600080fd5b603f3d11610fa157600080fd5b600050610580516104e05260606105c0606463eb85226d6105005260043561052052602435610540526044356105605261051c610140515afa610fe357600080fd5b605f3d11610ff057600080fd5b6105c080808080516106205250506020810190508080805161064052505060208101905080808051610660525050505060005061062080516101605280602001516101805280604001516101a0525060406105a0602463940494f1610520526004356105405261053c610140515afa61106857600080fd5b603f3d1161107557600080fd5b6000506105a06101a0516002811061108c57600080fd5b6020020151610500526101a051156111fd576101006105a060246359f4f351610520526004356105405261053c610140515afa6110c857600080fd5b60ff3d116110d557600080fd5b6000506105a080516101c05280602001516101e0528060400151610200528060600151610220528060800151610240528060a00151610260528060c00151610280528060e001516102a052506101006105a06024634cb088f1610520526004356105405261053c610140515afa61114b57600080fd5b60ff3d1161115857600080fd5b6000506105a080516103c05280602001516103e0528060400151610400528060600151610420528060800151610440528060a00151610460528060c00151610480528060e001516104a0525061052060006008818352015b610500516105205114156111c3576111f6565b670de0b6b3a76400006102c061052051600881106111e057600080fd5b60200201525b81516001018083528114156111b0575b5050611387565b6101006105a060246392e3cc2d610520526004356105405261053c610140515afa61122757600080fd5b60ff3d1161123457600080fd5b6000506105a080516101c05280602001516101e0528060400151610200528060600151610220528060800151610240528060a00151610260528060c00151610280528060e001516102a052506101006105a060246352b51555610520526004356105405261053c610140515afa6112aa57600080fd5b60ff3d116112b757600080fd5b6000506105a080516103c05280602001516103e0528060400151610400528060600151610420528060800151610440528060a00151610460528060c00151610480528060e001516104a052506101006105a0602463ce99e45a610520526004356105405261053c610140515afa61132d57600080fd5b60ff3d1161133a57600080fd5b6000506105a080516102c05280602001516102e0528060400151610300528060600151610320528060800151610340528060a00151610360528060c00151610380528060e001516103a052505b61052060006008818352015b610500516105205114156113a65761143d565b604e60126103c061052051600881106113be57600080fd5b6020020151808210156113d057600080fd5b80820390509050106113e157600080fd5b60126103c061052051600881106113f757600080fd5b60200201518082101561140957600080fd5b80820390509050600a0a6103c0610520516008811061142757600080fd5b60200201525b8151600101808352811415611393575b5050600560043560e05260c052604060c020546105205261052051151561146657600354610520525b610c80610c806115c061102463138f41f16105405261050051610560526101c051610580526101e0516105a052610200516105c052610220516105e0526102405161060052610260516106205261028051610640526102a051610660526104c051610680526104e0516106a0526102c0516106c0526102e0516106e052610300516107005261032051610720526103405161074052610360516107605261038051610780526103a0516107a0526103c0516107c0526103e0516107e052610400516108005261042051610820526104405161084052610460516108605261048051610880526104a0516108a052610160516108c052610180516108e05260648035610900528060200135610920528060400135610940528060600135610960528060800135610980528060a001356109a0528060c001356109c0528060e001356109e052806101000135610a0052806101200135610a2052806101400135610a4052806101600135610a6052806101800135610a8052806101a00135610aa052806101c00135610ac052806101e00135610ae052806102000135610b0052806102200135610b2052806102400135610b4052806102600135610b6052806102800135610b8052806102a00135610ba052806102c00135610bc052806102e00135610be052806103000135610c0052806103200135610c2052806103400135610c4052806103600135610c6052806103800135610c8052806103a00135610ca052806103c00135610cc052806103e00135610ce052806104000135610d0052806104200135610d2052806104400135610d4052806104600135610d6052806104800135610d8052806104a00135610da052806104c00135610dc052806104e00135610de052806105000135610e0052806105200135610e2052806105400135610e4052806105600135610e6052806105800135610e8052806105a00135610ea052806105c00135610ec052806105e00135610ee052806106000135610f0052806106200135610f2052806106400135610f4052806106600135610f6052806106800135610f8052806106a00135610fa052806106c00135610fc052806106e00135610fe0528061070001356110005280610720013561102052806107400135611040528061076001356110605280610780013561108052806107a001356110a052806107c001356110c052806107e001356110e0528061080001356111005280610820013561112052806108400135611140528061086001356111605280610880013561118052806108a001356111a052806108c001356111c052806108e001356111e0528061090001356112005280610920013561122052806109400135611240528061096001356112605280610980013561128052806109a001356112a052806109c001356112c052806109e001356112e05280610a0001356113005280610a2001356113205280610a4001356113405280610a6001356113605280610a8001356113805280610aa001356113a05280610ac001356113c05280610ae001356113e05280610b0001356114005280610b2001356114205280610b4001356114405280610b6001356114605280610b8001356114805280610ba001356114a05280610bc001356114c05280610be001356114e05280610c0001356115005280610c2001356115205280610c4001356115405280610c600135611560525061055c610520515afa61195557600080fd5b610c7f3d1161196357600080fd5b6000506115c0f35b635d7dc8258114156119d057341561198257600080fd5b60043560a01c1561199257600080fd5b600560043560e05260c052604060c02054610140526101405115156119c15760035460005260206000f36119ce565b6101405160005260206000f35b005b634bbc5b1f811415611a715734156119e757600080fd5b6000546101405260206101c0600463a262904b6101605261017c610140515afa611a1057600080fd5b601f3d11611a1d57600080fd5b6000506101c05160015560206101e0602463493f4f746101605260036101805261017c610140515afa611a4f57600080fd5b601f3d11611a5c57600080fd5b6000506101e051600255600160005260206000f35b63188c7ee5811415611b07573415611a8857600080fd5b60043560a01c15611a9857600080fd5b60243560a01c15611aa857600080fd5b60206101a0600463f851a4406101405261015c6000545afa611ac957600080fd5b601f3d11611ad657600080fd5b6000506101a0513314611ae857600080fd5b602435600560043560e05260c052604060c02055600160005260206000f35b63da3fb2ab811415611b7f573415611b1e57600080fd5b60043560a01c15611b2e57600080fd5b60206101a0600463f851a4406101405261015c6000545afa611b4f57600080fd5b601f3d11611b5c57600080fd5b6000506101a0513314611b6e57600080fd5b600435600355600160005260206000f35b63752d53c6811415611dcd573415611b9657600080fd5b60043560a01c15611ba657600080fd5b60206101a0600463f851a4406101405261015c6000545afa611bc757600080fd5b601f3d11611bd457600080fd5b6000506101a0513314611be657600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6004351415611c46576000610140526101408051602001806101808284600060045af1611c2757600080fd5b505060006000610180516101a047335af1611c4157600080fd5b611dc2565b60206101e060246370a0823161016052306101805261017c6004355afa611c6c57600080fd5b601f3d11611c7957600080fd5b6000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af15050805182019150503360208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af1611d1a57600080fd5b505060206103806102c0516102e060006004355af1611d3857600080fd5b60203d80821115611d495780611d4b565b815b90509050610360526103608051602001806101608284600060045af1611d7057600080fd5b50506000610160511815611dc257610160806020015160008251806020901315611d9957600080fd5b8091901215611da757600080fd5b806020036101000a82049050905090501515611dc257600080fd5b600160005260206000f35b6390b22997811415611e45573415611de457600080fd5b60043560011c15611df457600080fd5b60206101a0600463f851a4406101405261015c6000545afa611e1557600080fd5b601f3d11611e2257600080fd5b6000506101a0513314611e3457600080fd5b600435600455600160005260206000f35b637b103999811415611e68573415611e5c57600080fd5b60015460005260206000f35b63f7cbf4c6811415611e8b573415611e7f57600080fd5b60025460005260206000f35b633b359fc8811415611eae573415611ea257600080fd5b60035460005260206000f35b639c868ac0811415611ed1573415611ec557600080fd5b60045460005260206000f35b505b005b6101e0526101405261016052610180526101a0526101c052606036610200376060610320606463eb85226d610260526101605161028052610180516102a0526101a0516102c05261027c610140515afa611f2e57600080fd5b605f3d11611f3b57600080fd5b6103208080808051610380525050602081019050808080516103a0525050602081019050808080516103c05250505050600050610380805161020052806020015161022052806040015161024052506102405115611fed57602061032060646307211ef7610260526102005161028052610220516102a0526101c0516102c05261027c610160515afa611fcd57600080fd5b601f3d11611fda57600080fd5b600050610320516000526000516101e051565b60206103206064635e0d443f610260526102005161028052610220516102a0526101c0516102c05261027c610160515afa61202757600080fd5b601f3d1161203457600080fd5b600050610320516000526000516101e051565b610240526101405261016052610180526101a0526101c0526101e05261020052610220526004541561207857600080fd5b60c0366102603760606103e0606463eb85226d61032052610160516103405261018051610360526101a0516103805261033c610140515afa6120b957600080fd5b605f3d116120c657600080fd5b6103e080808080516104405250506020810190508080805161046052505060208101905080808051610480525050505060005061044080516102c05280602001516102e0528060400151610300525073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101a051141561213e57476102605261217e565b60206103a060246370a0823161032052306103405261033c6101a0515afa61216557600080fd5b601f3d1161217257600080fd5b6000506103a051610260525b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101805114156121aa576101c051610280526122fc565b60006004610380527f23b872dd000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610200516020826103e0010152602081019050306020826103e00101526020810190506101c0516020826103e0010152602081019050806103e0526103e090508051602001806104a08284600060045af161225357600080fd5b505060206105806104a0516104c06000610180515af161227257600080fd5b60203d808211156122835780612285565b815b90509050610560526105608051602001806103208284600060045af16122aa57600080fd5b505060006103205118156122fc576103208060200151600082518060209013156122d357600080fd5b80919012156122e157600080fd5b806020036101000a820490509050905015156122fc57600080fd5b60066101805160e05260c052604060c0206101605160e05260c052604060c0205415156124a65760006004610380527f095ea7b3000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610160516020826103e00101526020810190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020826103e0010152602081019050806103e0526103e090508051602001806104808284600060045af16123d957600080fd5b50506020610540610480516104a06000610180515af16123f857600080fd5b60203d80821115612409578061240b565b815b90509050610520526105208051602001806103208284600060045af161243057600080fd5b505060006103205118156124825761032080602001516000825180602090131561245957600080fd5b809190121561246757600080fd5b806020036101000a8204905090509050151561248257600080fd5b600160066101805160e05260c052604060c0206101605160e05260c052604060c020555b610300511561250757610160513b6124bd57600080fd5b60006000608463a6417ed6610320526102c051610340526102e051610360526101c051610380526101e0516103a05261033c61028051610160515af161250257600080fd5b61255a565b610160513b61251557600080fd5b600060006084633df02124610320526102c051610340526102e051610360526101c051610380526101e0516103a05261033c61028051610160515af161255a57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101a05114156125de5747610260518082101561258b57600080fd5b808203905090506102a0526000610320526103208051602001806103608284600060045af16125b957600080fd5b505060006000610360516103806102a051610220515af16125d957600080fd5b612777565b60206103a060246370a0823161032052306103405261033c6101a0515afa61260557600080fd5b601f3d1161261257600080fd5b6000506103a051610260518082101561262a57600080fd5b808203905090506102a05260006004610380527fa9059cbb000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610220516020826103e00101526020810190506102a0516020826103e0010152602081019050806103e0526103e090508051602001806104808284600060045af16126ce57600080fd5b50506020610540610480516104a060006101a0515af16126ed57600080fd5b60203d808211156126fe5780612700565b815b90509050610520526105208051602001806103208284600060045af161272557600080fd5b505060006103205118156127775761032080602001516000825180602090131561274e57600080fd5b809190121561275c57600080fd5b806020036101000a8204905090509050151561277757600080fd5b61018051610320526101a051610340526101c051610360526102a051610380526101605161022051610200517fbd3eb7bcfdd1721a4eb4f00d0df3ed91bd6f17222f82b2d7bce519d8cab3fe466080610320a46102a05160005260005161024051565b6100c66128a0036100c66000396100c66128a0036000f30000000000000000000000000000000022d53366457f9d5e68ec105046fc43830000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x600436101561000d57611ed3565b600035601c526000516310e5e30381141561002c57336101405261005d565b639f69a6a68114156100585760843560a01c1561004857600080fd5b602060846101403760005061005d565b610319565b6007541561006a57600080fd5b600160075560043560a01c1561007f57600080fd5b60243560a01c1561008f57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600435141561010257346044351415156100fd576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b61014f565b3415151561014f576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b60015461016052604036610180376101c0600062010000818352015b60206102c06064636982eb0b6102005260043561022052602435610240526101c0516102605261021c610160515afa6101a357600080fd5b601f3d116101b057600080fd5b6000506102c0516101e0526101e05115156101ca5761027f565b6101405161016051610180516101a0516101c0516101e0516102005161016051610220526101e0516102405260043561026052602435610280526044356102a0526102a0516102805161026051610240516102205160065801611ed5565b61030052610200526101e0526101c0526101a05261018052610160526101405261030051610200526101a05161020051111561026f576101e05161018052610200516101a0525b815160010180835281141561016b575b50506101405161016051610180516101a051610160516101c052610180516101e052600435610200526024356102205260443561024052606435610260523361028052610140516102a0526102a05161028051610260516102405161022051610200516101e0516101c05160065801612047565b610300526101a05261018052610160526101405261030051600052600060075560206000f35b634798ce5b81141561032f573361014052610360565b631a4c1ca381141561035b5760a43560a01c1561034b57600080fd5b602060a461014037600050610360565b61053b565b6007541561036d57600080fd5b600160075560043560a01c1561038257600080fd5b60243560a01c1561039257600080fd5b60443560a01c156103a257600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60243514156104155734606435141515610410576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b610462565b34151515610462576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b60015461016052602061020060246337951049610180526004356101a05261019c610160515afa61049257600080fd5b601f3d1161049f57600080fd5b6000506102005115156104b457600254610160525b610140516101605161016051610180526004356101a0526024356101c0526044356101e052606435610200526084356102205233610240526101405161026052610260516102405161022051610200516101e0516101c0516101a0516101805160065801612047565b6102c05261016052610140526102c051600052600060075560206000f35b634e21df7581141561071957341561055257600080fd5b60043560a01c1561056257600080fd5b60243560a01c1561057257600080fd5b604036610140376001546101c0526002546101e0526101a060006002818352015b60206101a051026101c0015161018052610200600062010000818352015b60206103006064636982eb0b610240526004356102605260243561028052610200516102a05261025c610180515afa6105e957600080fd5b601f3d116105f657600080fd5b6000506103005161022052610220511515610610576106d5565b6101405161016051610180516101a0516101c0516101e051610200516102205161024051610180516102605261022051610280526004356102a0526024356102c0526044356102e0526102e0516102c0516102a051610280516102605160065801611ed5565b610340526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103405161024052610160516102405111156106c557610220516101405261024051610160525b81516001018083528114156105b1575b50505b8151600101808352811415610593575b505061018080808061014051815250506020810190508080610160518152505060409050905060c05260c051610180f35b633973e83481141561080c57341561073057600080fd5b60043560a01c1561074057600080fd5b60243560a01c1561075057600080fd5b60443560a01c1561076057600080fd5b6001546101405260206101e060246337951049610160526004356101805261017c610140515afa61079057600080fd5b601f3d1161079d57600080fd5b6000506101e05115156107b257600254610140525b610140516101405161016052600435610180526024356101a0526044356101c0526064356101e0526101e0516101c0516101a051610180516101605160065801611ed5565b61024052610140526102405160005260206000f35b637fa5a654811415610ed457341561082357600080fd5b60043560a01c1561083357600080fd5b60243560a01c1561084357600080fd5b60443560a01c1561085357600080fd5b60015461014052606036610160376060610280606463eb85226d6101c0526004356101e05260243561020052604435610220526101dc610140515afa61089857600080fd5b605f3d116108a557600080fd5b61028080808080516102e0525050602081019050808080516103005250506020810190508080805161032052505050506000506102e080516101605280602001516101805280604001516101a05250602061026060246355b30b196101e052600435610200526101fc610140515afa61091d57600080fd5b601f3d1161092a57600080fd5b600050610260516101c05260406102806024637cdb72b0610200526004356102205261021c610140515afa61095e57600080fd5b603f3d1161096b57600080fd5b600050610280516101e052610300366102003760406105a0602463940494f1610520526004356105405261053c610140515afa6109a757600080fd5b603f3d116109b457600080fd5b6000506105a06101a051600281106109cb57600080fd5b6020020151610500526101a05115610b3c576101006105a060246359f4f351610520526004356105405261053c610140515afa610a0757600080fd5b60ff3d11610a1457600080fd5b6000506105a08051610200528060200151610220528060400151610240528060600151610260528060800151610280528060a001516102a0528060c001516102c0528060e001516102e052506101006105a06024634cb088f1610520526004356105405261053c610140515afa610a8a57600080fd5b60ff3d11610a9757600080fd5b6000506105a08051610400528060200151610420528060400151610440528060600151610460528060800151610480528060a001516104a0528060c001516104c0528060e001516104e0525061052060006008818352015b61050051610520511415610b0257610b35565b670de0b6b3a76400006103006105205160088110610b1f57600080fd5b60200201525b8151600101808352811415610aef575b5050610cc6565b6101006105a060246392e3cc2d610520526004356105405261053c610140515afa610b6657600080fd5b60ff3d11610b7357600080fd5b6000506105a08051610200528060200151610220528060400151610240528060600151610260528060800151610280528060a001516102a0528060c001516102c0528060e001516102e052506101006105a060246352b51555610520526004356105405261053c610140515afa610be957600080fd5b60ff3d11610bf657600080fd5b6000506105a08051610400528060200151610420528060400151610440528060600151610460528060800151610480528060a001516104a0528060c001516104c0528060e001516104e052506101006105a0602463ce99e45a610520526004356105405261053c610140515afa610c6c57600080fd5b60ff3d11610c7957600080fd5b6000506105a08051610300528060200151610320528060400151610340528060600151610360528060800151610380528060a001516103a0528060c001516103c0528060e001516103e052505b61052060006008818352015b61050051610520511415610ce557610d7c565b604e60126104006105205160088110610cfd57600080fd5b602002015180821015610d0f57600080fd5b8082039050905010610d2057600080fd5b60126104006105205160088110610d3657600080fd5b602002015180821015610d4857600080fd5b80820390509050600a0a6104006105205160088110610d6657600080fd5b60200201525b8151600101808352811415610cd2575b5050600560043560e05260c052604060c0205461052052610520511515610da557600354610520525b60206109606103c463ca3878906105405261050051610560526102005161058052610220516105a052610240516105c052610260516105e05261028051610600526102a051610620526102c051610640526102e051610660526101c051610680526101e0516106a052610300516106c052610320516106e0526103405161070052610360516107205261038051610740526103a051610760526103c051610780526103e0516107a052610400516107c052610420516107e0526104405161080052610460516108205261048051610840526104a051610860526104c051610880526104e0516108a052610160516108c052610180516108e0526064356109005261055c610520515afa610eb757600080fd5b601f3d11610ec457600080fd5b6000506109605160005260206000f35b634be9ae4281141561196b573415610eeb57600080fd5b60043560a01c15610efb57600080fd5b60243560a01c15610f0b57600080fd5b60443560a01c15610f1b57600080fd5b600154610140526103603661016037602061056060246355b30b196104e052600435610500526104fc610140515afa610f5357600080fd5b601f3d11610f6057600080fd5b600050610560516104c05260406105806024637cdb72b0610500526004356105205261051c610140515afa610f9457600080fd5b603f3d11610fa157600080fd5b600050610580516104e05260606105c0606463eb85226d6105005260043561052052602435610540526044356105605261051c610140515afa610fe357600080fd5b605f3d11610ff057600080fd5b6105c080808080516106205250506020810190508080805161064052505060208101905080808051610660525050505060005061062080516101605280602001516101805280604001516101a0525060406105a0602463940494f1610520526004356105405261053c610140515afa61106857600080fd5b603f3d1161107557600080fd5b6000506105a06101a0516002811061108c57600080fd5b6020020151610500526101a051156111fd576101006105a060246359f4f351610520526004356105405261053c610140515afa6110c857600080fd5b60ff3d116110d557600080fd5b6000506105a080516101c05280602001516101e0528060400151610200528060600151610220528060800151610240528060a00151610260528060c00151610280528060e001516102a052506101006105a06024634cb088f1610520526004356105405261053c610140515afa61114b57600080fd5b60ff3d1161115857600080fd5b6000506105a080516103c05280602001516103e0528060400151610400528060600151610420528060800151610440528060a00151610460528060c00151610480528060e001516104a0525061052060006008818352015b610500516105205114156111c3576111f6565b670de0b6b3a76400006102c061052051600881106111e057600080fd5b60200201525b81516001018083528114156111b0575b5050611387565b6101006105a060246392e3cc2d610520526004356105405261053c610140515afa61122757600080fd5b60ff3d1161123457600080fd5b6000506105a080516101c05280602001516101e0528060400151610200528060600151610220528060800151610240528060a00151610260528060c00151610280528060e001516102a052506101006105a060246352b51555610520526004356105405261053c610140515afa6112aa57600080fd5b60ff3d116112b757600080fd5b6000506105a080516103c05280602001516103e0528060400151610400528060600151610420528060800151610440528060a00151610460528060c00151610480528060e001516104a052506101006105a0602463ce99e45a610520526004356105405261053c610140515afa61132d57600080fd5b60ff3d1161133a57600080fd5b6000506105a080516102c05280602001516102e0528060400151610300528060600151610320528060800151610340528060a00151610360528060c00151610380528060e001516103a052505b61052060006008818352015b610500516105205114156113a65761143d565b604e60126103c061052051600881106113be57600080fd5b6020020151808210156113d057600080fd5b80820390509050106113e157600080fd5b60126103c061052051600881106113f757600080fd5b60200201518082101561140957600080fd5b80820390509050600a0a6103c0610520516008811061142757600080fd5b60200201525b8151600101808352811415611393575b5050600560043560e05260c052604060c020546105205261052051151561146657600354610520525b610c80610c806115c061102463138f41f16105405261050051610560526101c051610580526101e0516105a052610200516105c052610220516105e0526102405161060052610260516106205261028051610640526102a051610660526104c051610680526104e0516106a0526102c0516106c0526102e0516106e052610300516107005261032051610720526103405161074052610360516107605261038051610780526103a0516107a0526103c0516107c0526103e0516107e052610400516108005261042051610820526104405161084052610460516108605261048051610880526104a0516108a052610160516108c052610180516108e05260648035610900528060200135610920528060400135610940528060600135610960528060800135610980528060a001356109a0528060c001356109c0528060e001356109e052806101000135610a0052806101200135610a2052806101400135610a4052806101600135610a6052806101800135610a8052806101a00135610aa052806101c00135610ac052806101e00135610ae052806102000135610b0052806102200135610b2052806102400135610b4052806102600135610b6052806102800135610b8052806102a00135610ba052806102c00135610bc052806102e00135610be052806103000135610c0052806103200135610c2052806103400135610c4052806103600135610c6052806103800135610c8052806103a00135610ca052806103c00135610cc052806103e00135610ce052806104000135610d0052806104200135610d2052806104400135610d4052806104600135610d6052806104800135610d8052806104a00135610da052806104c00135610dc052806104e00135610de052806105000135610e0052806105200135610e2052806105400135610e4052806105600135610e6052806105800135610e8052806105a00135610ea052806105c00135610ec052806105e00135610ee052806106000135610f0052806106200135610f2052806106400135610f4052806106600135610f6052806106800135610f8052806106a00135610fa052806106c00135610fc052806106e00135610fe0528061070001356110005280610720013561102052806107400135611040528061076001356110605280610780013561108052806107a001356110a052806107c001356110c052806107e001356110e0528061080001356111005280610820013561112052806108400135611140528061086001356111605280610880013561118052806108a001356111a052806108c001356111c052806108e001356111e0528061090001356112005280610920013561122052806109400135611240528061096001356112605280610980013561128052806109a001356112a052806109c001356112c052806109e001356112e05280610a0001356113005280610a2001356113205280610a4001356113405280610a6001356113605280610a8001356113805280610aa001356113a05280610ac001356113c05280610ae001356113e05280610b0001356114005280610b2001356114205280610b4001356114405280610b6001356114605280610b8001356114805280610ba001356114a05280610bc001356114c05280610be001356114e05280610c0001356115005280610c2001356115205280610c4001356115405280610c600135611560525061055c610520515afa61195557600080fd5b610c7f3d1161196357600080fd5b6000506115c0f35b635d7dc8258114156119d057341561198257600080fd5b60043560a01c1561199257600080fd5b600560043560e05260c052604060c02054610140526101405115156119c15760035460005260206000f36119ce565b6101405160005260206000f35b005b634bbc5b1f811415611a715734156119e757600080fd5b6000546101405260206101c0600463a262904b6101605261017c610140515afa611a1057600080fd5b601f3d11611a1d57600080fd5b6000506101c05160015560206101e0602463493f4f746101605260036101805261017c610140515afa611a4f57600080fd5b601f3d11611a5c57600080fd5b6000506101e051600255600160005260206000f35b63188c7ee5811415611b07573415611a8857600080fd5b60043560a01c15611a9857600080fd5b60243560a01c15611aa857600080fd5b60206101a0600463f851a4406101405261015c6000545afa611ac957600080fd5b601f3d11611ad657600080fd5b6000506101a0513314611ae857600080fd5b602435600560043560e05260c052604060c02055600160005260206000f35b63da3fb2ab811415611b7f573415611b1e57600080fd5b60043560a01c15611b2e57600080fd5b60206101a0600463f851a4406101405261015c6000545afa611b4f57600080fd5b601f3d11611b5c57600080fd5b6000506101a0513314611b6e57600080fd5b600435600355600160005260206000f35b63752d53c6811415611dcd573415611b9657600080fd5b60043560a01c15611ba657600080fd5b60206101a0600463f851a4406101405261015c6000545afa611bc757600080fd5b601f3d11611bd457600080fd5b6000506101a0513314611be657600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6004351415611c46576000610140526101408051602001806101808284600060045af1611c2757600080fd5b505060006000610180516101a047335af1611c4157600080fd5b611dc2565b60206101e060246370a0823161016052306101805261017c6004355afa611c6c57600080fd5b601f3d11611c7957600080fd5b6000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af15050805182019150503360208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af1611d1a57600080fd5b505060206103806102c0516102e060006004355af1611d3857600080fd5b60203d80821115611d495780611d4b565b815b90509050610360526103608051602001806101608284600060045af1611d7057600080fd5b50506000610160511815611dc257610160806020015160008251806020901315611d9957600080fd5b8091901215611da757600080fd5b806020036101000a82049050905090501515611dc257600080fd5b600160005260206000f35b6390b22997811415611e45573415611de457600080fd5b60043560011c15611df457600080fd5b60206101a0600463f851a4406101405261015c6000545afa611e1557600080fd5b601f3d11611e2257600080fd5b6000506101a0513314611e3457600080fd5b600435600455600160005260206000f35b637b103999811415611e68573415611e5c57600080fd5b60015460005260206000f35b63f7cbf4c6811415611e8b573415611e7f57600080fd5b60025460005260206000f35b633b359fc8811415611eae573415611ea257600080fd5b60035460005260206000f35b639c868ac0811415611ed1573415611ec557600080fd5b60045460005260206000f35b505b005b6101e0526101405261016052610180526101a0526101c052606036610200376060610320606463eb85226d610260526101605161028052610180516102a0526101a0516102c05261027c610140515afa611f2e57600080fd5b605f3d11611f3b57600080fd5b6103208080808051610380525050602081019050808080516103a0525050602081019050808080516103c05250505050600050610380805161020052806020015161022052806040015161024052506102405115611fed57602061032060646307211ef7610260526102005161028052610220516102a0526101c0516102c05261027c610160515afa611fcd57600080fd5b601f3d11611fda57600080fd5b600050610320516000526000516101e051565b60206103206064635e0d443f610260526102005161028052610220516102a0526101c0516102c05261027c610160515afa61202757600080fd5b601f3d1161203457600080fd5b600050610320516000526000516101e051565b610240526101405261016052610180526101a0526101c0526101e05261020052610220526004541561207857600080fd5b60c0366102603760606103e0606463eb85226d61032052610160516103405261018051610360526101a0516103805261033c610140515afa6120b957600080fd5b605f3d116120c657600080fd5b6103e080808080516104405250506020810190508080805161046052505060208101905080808051610480525050505060005061044080516102c05280602001516102e0528060400151610300525073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101a051141561213e57476102605261217e565b60206103a060246370a0823161032052306103405261033c6101a0515afa61216557600080fd5b601f3d1161217257600080fd5b6000506103a051610260525b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101805114156121aa576101c051610280526122fc565b60006004610380527f23b872dd000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610200516020826103e0010152602081019050306020826103e00101526020810190506101c0516020826103e0010152602081019050806103e0526103e090508051602001806104a08284600060045af161225357600080fd5b505060206105806104a0516104c06000610180515af161227257600080fd5b60203d808211156122835780612285565b815b90509050610560526105608051602001806103208284600060045af16122aa57600080fd5b505060006103205118156122fc576103208060200151600082518060209013156122d357600080fd5b80919012156122e157600080fd5b806020036101000a820490509050905015156122fc57600080fd5b60066101805160e05260c052604060c0206101605160e05260c052604060c0205415156124a65760006004610380527f095ea7b3000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610160516020826103e00101526020810190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020826103e0010152602081019050806103e0526103e090508051602001806104808284600060045af16123d957600080fd5b50506020610540610480516104a06000610180515af16123f857600080fd5b60203d80821115612409578061240b565b815b90509050610520526105208051602001806103208284600060045af161243057600080fd5b505060006103205118156124825761032080602001516000825180602090131561245957600080fd5b809190121561246757600080fd5b806020036101000a8204905090509050151561248257600080fd5b600160066101805160e05260c052604060c0206101605160e05260c052604060c020555b610300511561250757610160513b6124bd57600080fd5b60006000608463a6417ed6610320526102c051610340526102e051610360526101c051610380526101e0516103a05261033c61028051610160515af161250257600080fd5b61255a565b610160513b61251557600080fd5b600060006084633df02124610320526102c051610340526102e051610360526101c051610380526101e0516103a05261033c61028051610160515af161255a57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101a05114156125de5747610260518082101561258b57600080fd5b808203905090506102a0526000610320526103208051602001806103608284600060045af16125b957600080fd5b505060006000610360516103806102a051610220515af16125d957600080fd5b612777565b60206103a060246370a0823161032052306103405261033c6101a0515afa61260557600080fd5b601f3d1161261257600080fd5b6000506103a051610260518082101561262a57600080fd5b808203905090506102a05260006004610380527fa9059cbb000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610220516020826103e00101526020810190506102a0516020826103e0010152602081019050806103e0526103e090508051602001806104808284600060045af16126ce57600080fd5b50506020610540610480516104a060006101a0515af16126ed57600080fd5b60203d808211156126fe5780612700565b815b90509050610520526105208051602001806103208284600060045af161272557600080fd5b505060006103205118156127775761032080602001516000825180602090131561274e57600080fd5b809190121561275c57600080fd5b806020036101000a8204905090509050151561277757600080fd5b61018051610320526101a051610340526101c051610360526102a051610380526101605161022051610200517fbd3eb7bcfdd1721a4eb4f00d0df3ed91bd6f17222f82b2d7bce519d8cab3fe466080610320a46102a0516000526000516102405156

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  ]
[ 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.