ETH Price: $2,580.62 (-2.48%)

Contract

0x97aDC08FA1D849D2C48C5dcC1DaB568B169b0267
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Exchange205566232024-08-18 16:11:112 days ago1723997471IN
0x97aDC08F...B169b0267
0 ETH0.002123975.05222163
Exchange205345832024-08-15 14:19:355 days ago1723731575IN
0x97aDC08F...B169b0267
0 ETH0.002201635.50396922
Remove_liquidity...205011382024-08-10 22:15:3510 days ago1723328135IN
0x97aDC08F...B169b0267
0 ETH0.000499430.96441505
Remove_liquidity...203005772024-07-13 22:30:2338 days ago1720909823IN
0x97aDC08F...B169b0267
0 ETH0.000714911.89632768
Exchange202570992024-07-07 20:44:2344 days ago1720385063IN
0x97aDC08F...B169b0267
0 ETH0.000598951.3
Exchange202570752024-07-07 20:39:2344 days ago1720384763IN
0x97aDC08F...B169b0267
0 ETH0.000667321.45216321
Exchange202222632024-07-02 23:59:5949 days ago1719964799IN
0x97aDC08F...B169b0267
0 ETH0.001258532.81300254
Exchange201685882024-06-25 12:06:2357 days ago1719317183IN
0x97aDC08F...B169b0267
0 ETH0.002056494.52557197
Remove_liquidity...197827042024-05-02 13:21:47110 days ago1714656107IN
0x97aDC08F...B169b0267
0 ETH0.0041973210.0543284
Exchange197590082024-04-29 5:53:35114 days ago1714370015IN
0x97aDC08F...B169b0267
0 ETH0.003862227.15362617
Exchange197464042024-04-27 11:35:11116 days ago1714217711IN
0x97aDC08F...B169b0267
0 ETH0.002926275.82739582
Exchange196637432024-04-15 21:59:47127 days ago1713218387IN
0x97aDC08F...B169b0267
0 ETH0.0057418912.50727777
Exchange196589342024-04-15 5:48:59128 days ago1713160139IN
0x97aDC08F...B169b0267
0 ETH0.003514518.06349879
Exchange196024202024-04-07 7:46:35136 days ago1712475995IN
0x97aDC08F...B169b0267
0 ETH0.0065586813.93179123
Remove_liquidity...195749902024-04-03 11:37:23140 days ago1712144243IN
0x97aDC08F...B169b0267
0 ETH0.0082624120.2503261
Remove_liquidity...195117692024-03-25 13:23:47148 days ago1711373027IN
0x97aDC08F...B169b0267
0 ETH0.0049585523.47809925
Remove_liquidity...195099412024-03-25 7:12:35149 days ago1711350755IN
0x97aDC08F...B169b0267
0 ETH0.0070420517.35420126
Exchange195029062024-03-24 7:24:11150 days ago1711265051IN
0x97aDC08F...B169b0267
0 ETH0.0073253315.92001404
Exchange194932732024-03-22 22:55:59151 days ago1711148159IN
0x97aDC08F...B169b0267
0 ETH0.0092587319.88693075
Exchange194861382024-03-21 22:55:47152 days ago1711061747IN
0x97aDC08F...B169b0267
0 ETH0.0118672925.81003157
Exchange194761602024-03-20 13:18:35153 days ago1710940715IN
0x97aDC08F...B169b0267
0 ETH0.0174187237.70376672
Exchange194500632024-03-16 21:16:35157 days ago1710623795IN
0x97aDC08F...B169b0267
0 ETH0.0154930934.38737512
Exchange194331212024-03-14 12:02:47160 days ago1710417767IN
0x97aDC08F...B169b0267
0 ETH0.0025148553.72005186
Exchange194330962024-03-14 11:57:35160 days ago1710417455IN
0x97aDC08F...B169b0267
0 ETH0.0196781740.97621605
Exchange192822242024-02-22 9:19:35181 days ago1708593575IN
0x97aDC08F...B169b0267
0 ETH0.0147343732.61282742
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.3.3

Optimization Enabled:
N/A

Other Settings:
None license

Contract Source Code (Vyper language format)

# @version 0.3.3
"""
@title Zap for Curve Factory
@license MIT
@author Curve.Fi
@notice Zap for 3pool metapools created via factory
"""


interface ERC20:  # Custom ERC20 which works for USDT, WETH, WBTC and Curve LP Tokens
    def transfer(_receiver: address, _amount: uint256): nonpayable
    def transferFrom(_sender: address, _receiver: address, _amount: uint256): nonpayable
    def approve(_spender: address, _amount: uint256): nonpayable
    def balanceOf(_owner: address) -> uint256: view


interface wETH:
    def deposit(): payable
    def withdraw(_amount: uint256): nonpayable


# CurveCryptoSwap2ETH from Crypto Factory
interface CurveMeta:
    def coins(i: uint256) -> address: view
    def token() -> address: view
    def lp_price() -> uint256: view
    def price_scale() -> uint256: view
    def price_oracle() -> uint256: view
    def virtual_price() -> uint256: view
    def get_dy(i: uint256, j: uint256, dx: uint256) -> uint256: view
    def calc_token_amount(amounts: uint256[N_COINS]) -> uint256: view
    def calc_withdraw_one_coin(token_amount: uint256, i: uint256) -> uint256: view
    def exchange(i: uint256, j: uint256, dx: uint256, min_dy: uint256, use_eth: bool = False, receiver: address = msg.sender) -> uint256: payable
    def add_liquidity(amounts: uint256[N_COINS], min_mint_amount: uint256, use_eth: bool = False, receiver: address = msg.sender) -> uint256: payable
    def remove_liquidity(_amount: uint256, min_amounts: uint256[2], use_eth: bool = False, receiver: address = msg.sender): nonpayable
    def remove_liquidity_one_coin(token_amount: uint256, i: uint256, min_amount: uint256, use_eth: bool = False, receiver: address = msg.sender) -> uint256: nonpayable


# TriCrypto pool
interface CurveBase:
    def coins(i: uint256) -> address: view
    def token() -> address: view
    def get_dy(i: int128, j: int128, dx: uint256) -> uint256: view
    def calc_token_amount(amounts: uint256[BASE_N_COINS], is_deposit: bool) -> uint256: view
    def calc_withdraw_one_coin(token_amount: uint256, i: int128) -> uint256: view
    def exchange(i: int128, j: int128, dx: uint256, min_dy: uint256): nonpayable
    def add_liquidity(amounts: uint256[BASE_N_COINS], min_mint_amount: uint256): nonpayable
    def remove_liquidity_one_coin(token_amount: uint256, i: int128, min_amount: uint256): nonpayable
    def remove_liquidity(amount: uint256, min_amounts: uint256[BASE_N_COINS]): nonpayable
    def get_virtual_price() -> uint256: view


N_COINS: constant(uint256) = 2
MAX_COIN: constant(uint256) = N_COINS - 1
BASE_N_COINS: constant(uint256) = 3
N_ALL_COINS: constant(uint256) = N_COINS + BASE_N_COINS - 1

WETH: immutable(wETH)

BASE_POOL: immutable(CurveBase)
BASE_LP_TOKEN: immutable(address)
BASE_COINS: immutable(address[BASE_N_COINS])
# coin -> pool -> is approved to transfer?
is_approved: HashMap[address, HashMap[address, bool]]


@external
def __init__(_base_pool: address, _base_lp_token: address, _weth: address, _base_coins: address[BASE_N_COINS]):
    """
    @notice Contract constructor
    """
    BASE_POOL = CurveBase(_base_pool)
    BASE_LP_TOKEN = _base_lp_token
    BASE_COINS = _base_coins
    WETH = wETH(_weth)

    for coin in _base_coins:
        ERC20(coin).approve(_base_pool, MAX_UINT256)
        self.is_approved[coin][_base_pool] = True


@payable
@external
def __default__():
    assert msg.sender.is_contract  # dev: receive only from pools and WETH


@pure
@external
def base_pool() -> address:
    return BASE_POOL.address


@pure
@external
def base_token() -> address:
    return BASE_LP_TOKEN


@external
@view
def price_oracle(_pool: address) -> uint256:
    usd_tkn: uint256 = CurveMeta(_pool).price_oracle()
    vprice: uint256 = BASE_POOL.get_virtual_price()
    return vprice * 10**18 / usd_tkn


@external
@view
def price_scale(_pool: address) -> uint256:
    usd_tkn: uint256 = CurveMeta(_pool).price_scale()
    vprice: uint256 = BASE_POOL.get_virtual_price()
    return vprice * 10**18 / usd_tkn


@external
@view
def lp_price(_pool: address) -> uint256:
    p: uint256 = CurveMeta(_pool).lp_price()  # price in tkn
    usd_tkn: uint256 = CurveMeta(_pool).price_oracle()
    vprice: uint256 = BASE_POOL.get_virtual_price()
    return p * vprice / usd_tkn


@internal
def _receive(_coin: address, _amount: uint256, _from: address,
             _eth_value: uint256, _use_eth: bool, _wrap_eth: bool=False) -> uint256:
    """
    Transfer coin to zap
    @param _coin Address of the coin
    @param _amount Amount of coin
    @param _from Sender of the coin
    @param _eth_value Eth value sent
    @param _use_eth Use raw ETH
    @param _wrap_eth Wrap raw ETH
    @return Received ETH amount
    """
    if _use_eth and _coin == WETH.address:
        assert _eth_value == _amount  # dev: incorrect ETH amount
        if _wrap_eth:
            WETH.deposit(value=_amount)
        else:
            return _amount
    else:
        response: Bytes[32] = raw_call(
            _coin,
            _abi_encode(
                _from,
                self,
                _amount,
                method_id=method_id("transferFrom(address,address,uint256)"),
            ),
            max_outsize=32,
        )
        if len(response) != 0:
            assert convert(response, bool)  # dev: failed transfer
    return 0


@internal
def _send(_coin: address, _to: address, _use_eth: bool, _withdraw_eth: bool=False) -> uint256:
    """
    Send coin from zap
    @dev Sends all available amount
    @param _coin Address of the coin
    @param _to Sender of the coin
    @param _use_eth Use raw ETH
    @param _withdraw_eth Withdraw raw ETH from wETH
    @return Amount of coin sent
    """
    amount: uint256 = 0
    if _use_eth and _coin == WETH.address:
        if _withdraw_eth:
            amount = ERC20(_coin).balanceOf(self)
            WETH.withdraw(amount)
        amount = self.balance
        raw_call(_to, b"", value=amount)
    else:
        amount = ERC20(_coin).balanceOf(self)
        response: Bytes[32] = raw_call(
            _coin,
            _abi_encode(_to, amount, method_id=method_id("transfer(address,uint256)")),
            max_outsize=32,
        )
        if len(response) != 0:
            assert convert(response, bool)  # dev: failed transfer
    return amount


@payable
@external
def exchange(_pool: address, i: uint256, j: uint256, _dx: uint256, _min_dy: uint256,
             _use_eth: bool = False, _receiver: address = msg.sender) -> uint256:
    """
    @notice Exchange using wETH by default
    @dev Index values can be found via the `coins` public getter method
    @param _pool Address of the pool for the exchange
    @param i Index value for the coin to send
    @param j Index value of the coin to receive
    @param _dx Amount of `i` being exchanged
    @param _min_dy Minimum amount of `j` to receive
    @param _use_eth Use raw ETH
    @param _receiver Address that will receive `j`
    @return Actual amount of `j` received
    """
    assert i != j  # dev: indexes are similar
    if not _use_eth:
        assert msg.value == 0  # dev: nonzero ETH amount

    base_coins: address[BASE_N_COINS] = BASE_COINS
    if i < MAX_COIN:  # Swap to LP token and remove from base
        # Receive and swap to LP Token
        coin: address = CurveMeta(_pool).coins(i)
        eth_amount: uint256 = self._receive(coin, _dx, msg.sender, msg.value, _use_eth)
        if not self.is_approved[coin][_pool]:
            ERC20(coin).approve(_pool, MAX_UINT256)
            self.is_approved[coin][_pool] = True
        lp_amount: uint256 = CurveMeta(_pool).exchange(i, MAX_COIN, _dx, 0, _use_eth, value=eth_amount)

        # Remove and send to _receiver
        BASE_POOL.remove_liquidity_one_coin(lp_amount, convert(j - MAX_COIN, int128), _min_dy)

        coin = base_coins[j - MAX_COIN]
        return self._send(coin, _receiver, _use_eth, True)

    # Receive coin i
    base_i: int128 = convert(i - MAX_COIN, int128)
    self._receive(base_coins[base_i], _dx, msg.sender, msg.value, _use_eth, True)

    # Add in base and exchange LP token
    if j < MAX_COIN:
        amounts: uint256[BASE_N_COINS] = empty(uint256[BASE_N_COINS])
        amounts[base_i] = _dx

        BASE_POOL.add_liquidity(amounts, 0)

        if not self.is_approved[BASE_LP_TOKEN][_pool]:
            ERC20(BASE_LP_TOKEN).approve(_pool, MAX_UINT256)
            self.is_approved[BASE_LP_TOKEN][_pool] = True

        lp_amount: uint256 = ERC20(BASE_LP_TOKEN).balanceOf(self)
        return CurveMeta(_pool).exchange(MAX_COIN, j, lp_amount, _min_dy, _use_eth, _receiver)

    base_j: int128 = convert(j - MAX_COIN, int128)

    BASE_POOL.exchange(base_i, base_j, _dx, _min_dy)

    coin: address = base_coins[base_j]
    return self._send(coin, _receiver, _use_eth, True)


@view
@external
def get_dy(_pool: address, i: uint256, j: uint256, _dx: uint256) -> uint256:
    """
    @notice Calculate the amount received in exchange
    @dev Index values can be found via the `coins` public getter method
    @param _pool Address of the pool for the exchange
    @param i Index value for the coin to send
    @param j Index value of the coin to receive
    @param _dx Amount of `i` being exchanged
    @return Expected amount of `j` to receive
    """
    assert i != j  # dev: indexes are similar

    if i < MAX_COIN:  # Swap to LP token and remove from base
        lp_amount: uint256 = CurveMeta(_pool).get_dy(i, MAX_COIN, _dx)

        return BASE_POOL.calc_withdraw_one_coin(lp_amount, convert(j - MAX_COIN, int128))

    # Add in base and exchange LP token
    if j < MAX_COIN:
        amounts: uint256[BASE_N_COINS] = empty(uint256[BASE_N_COINS])
        amounts[i - MAX_COIN] = _dx
        lp_amount: uint256 = BASE_POOL.calc_token_amount(amounts, True)

        return CurveMeta(_pool).get_dy(MAX_COIN, j, lp_amount)

    # Exchange in base
    return BASE_POOL.get_dy(convert(i - MAX_COIN, int128), convert(j - MAX_COIN, int128), _dx)


@payable
@external
def add_liquidity(
    _pool: address,
    _deposit_amounts: uint256[N_ALL_COINS],
    _min_mint_amount: uint256,
    _use_eth: bool = False,
    _receiver: address = msg.sender,
) -> uint256:
    """
    @notice Deposit tokens to base and meta pools
    @param _pool Address of the metapool to deposit into
    @param _deposit_amounts List of amounts of underlying coins to deposit
    @param _min_mint_amount Minimum amount of LP tokens to mint from the deposit
    @param _use_eth Use raw ETH
    @param _receiver Address that receives the LP tokens
    @return Amount of LP tokens received by depositing
    """
    if not _use_eth:
        assert msg.value == 0  # dev: nonzero ETH amount
    meta_amounts: uint256[N_COINS] = empty(uint256[N_COINS])
    base_amounts: uint256[BASE_N_COINS] = empty(uint256[BASE_N_COINS])
    deposit_base: bool = False
    base_coins: address[BASE_N_COINS] = BASE_COINS
    eth_amount: uint256 = 0

    if _deposit_amounts[0] != 0:
        coin: address = CurveMeta(_pool).coins(0)
        eth_amount = self._receive(coin, _deposit_amounts[0], msg.sender, msg.value, _use_eth)
        if not self.is_approved[coin][_pool]:
            ERC20(coin).approve(_pool, MAX_UINT256)
            self.is_approved[coin][_pool] = True
        meta_amounts[0] = _deposit_amounts[0]

    for i in range(MAX_COIN, N_ALL_COINS):
        amount: uint256 = _deposit_amounts[i]
        if amount == 0:
            continue
        deposit_base = True

        base_idx: uint256 = i - MAX_COIN

        coin: address = base_coins[base_idx]
        self._receive(coin, amount, msg.sender, msg.value, _use_eth, True)
        base_amounts[base_idx] = amount

    # Deposit to the base pool
    if deposit_base:
        BASE_POOL.add_liquidity(base_amounts, 0)
        meta_amounts[MAX_COIN] = ERC20(BASE_LP_TOKEN).balanceOf(self)
        if not self.is_approved[BASE_LP_TOKEN][_pool]:
            ERC20(BASE_LP_TOKEN).approve(_pool, MAX_UINT256)
            self.is_approved[BASE_LP_TOKEN][_pool] = True

    # Deposit to the meta pool
    return CurveMeta(_pool).add_liquidity(meta_amounts, _min_mint_amount, _use_eth, _receiver, value=eth_amount)


@view
@external
def calc_token_amount(_pool: address, _amounts: uint256[N_ALL_COINS]) -> uint256:
    """
    @notice Calculate addition or reduction in token supply from a deposit or withdrawal
    @dev This calculation accounts for slippage, but not fees.
         Needed to prevent front-running, not for precise calculations!
    @param _pool Address of the pool to deposit into
    @param _amounts Amount of each underlying coin being deposited
    @return Expected amount of LP tokens received
    """
    meta_amounts: uint256[N_COINS] = empty(uint256[N_COINS])
    base_amounts: uint256[BASE_N_COINS] = empty(uint256[BASE_N_COINS])
    deposit_base: bool = False

    meta_amounts[0] = _amounts[0]
    for i in range(BASE_N_COINS):
        base_amounts[i] = _amounts[i + MAX_COIN]
        if base_amounts[i] > 0:
            deposit_base = True

    if deposit_base:
        base_tokens: uint256 = BASE_POOL.calc_token_amount(base_amounts, True)
        meta_amounts[MAX_COIN] = base_tokens

    return CurveMeta(_pool).calc_token_amount(meta_amounts)


@external
def remove_liquidity(
    _pool: address,
    _burn_amount: uint256,
    _min_amounts: uint256[N_ALL_COINS],
    _use_eth: bool = False,
    _receiver: address = msg.sender,
) -> uint256[N_ALL_COINS]:
    """
    @notice Withdraw and unwrap coins from the pool
    @dev Withdrawal amounts are based on current deposit ratios
    @param _pool Address of the pool to withdraw from
    @param _burn_amount Quantity of LP tokens to burn in the withdrawal
    @param _min_amounts Minimum amounts of underlying coins to receive
    @param _use_eth Use raw ETH
    @param _receiver Address that receives the LP tokens
    @return List of amounts of underlying coins that were withdrawn
    """
    lp_token: address = CurveMeta(_pool).token()
    ERC20(lp_token).transferFrom(msg.sender, self, _burn_amount)

    min_amounts_base: uint256[BASE_N_COINS] = empty(uint256[BASE_N_COINS])
    amounts: uint256[N_ALL_COINS] = empty(uint256[N_ALL_COINS])

    # Withdraw from meta
    CurveMeta(_pool).remove_liquidity(
        _burn_amount,
        [_min_amounts[0], 0],
        _use_eth,
    )
    lp_amount: uint256 = ERC20(BASE_LP_TOKEN).balanceOf(self)

    # Withdraw from base
    for i in range(BASE_N_COINS):
        min_amounts_base[i] = _min_amounts[MAX_COIN + i]
    BASE_POOL.remove_liquidity(lp_amount, min_amounts_base)

    # Transfer all coins out
    coin: address = CurveMeta(_pool).coins(0)
    amounts[0] = self._send(coin, _receiver, _use_eth)

    base_coins: address[BASE_N_COINS] = BASE_COINS
    for i in range(MAX_COIN, N_ALL_COINS):
        coin = base_coins[i - MAX_COIN]
        amounts[i] = self._send(coin, _receiver, _use_eth, True)

    return amounts


@external
def remove_liquidity_one_coin(
    _pool: address,
    _burn_amount: uint256,
    i: uint256,
    _min_amount: uint256,
    _use_eth: bool = False,
    _receiver: address=msg.sender
) -> uint256:
    """
    @notice Withdraw and unwrap a single coin from the pool
    @param _pool Address of the pool to withdraw from
    @param _burn_amount Amount of LP tokens to burn in the withdrawal
    @param i Index value of the coin to withdraw
    @param _min_amount Minimum amount of underlying coin to receive
    @param _use_eth Use raw ETH
    @param _receiver Address that receives the LP tokens
    @return Amount of underlying coin received
    """
    lp_token: address = CurveMeta(_pool).token()
    ERC20(lp_token).transferFrom(msg.sender, self, _burn_amount)

    if i < MAX_COIN:
        return CurveMeta(_pool).remove_liquidity_one_coin(_burn_amount, i, _min_amount, _use_eth, _receiver)

    # Withdraw a base pool coin
    coin_amount: uint256 = CurveMeta(_pool).remove_liquidity_one_coin(_burn_amount, MAX_COIN, 0)

    BASE_POOL.remove_liquidity_one_coin(coin_amount, convert(i - MAX_COIN, int128), _min_amount)

    coin: address = BASE_COINS[i - MAX_COIN]
    return self._send(coin, _receiver, _use_eth, True)


@view
@external
def calc_withdraw_one_coin(_pool: address, _token_amount: uint256, i: uint256) -> uint256:
    """
    @notice Calculate the amount received when withdrawing and unwrapping a single coin
    @param _pool Address of the pool to withdraw from
    @param _token_amount Amount of LP tokens to burn in the withdrawal
    @param i Index value of the underlying coin to withdraw
    @return Amount of coin received
    """
    if i < MAX_COIN:
        return CurveMeta(_pool).calc_withdraw_one_coin(_token_amount, i)

    _base_tokens: uint256 = CurveMeta(_pool).calc_withdraw_one_coin(_token_amount, MAX_COIN)
    return BASE_POOL.calc_withdraw_one_coin(_base_tokens, convert(i - MAX_COIN, int128))

Contract Security Audit

Contract ABI

[{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_base_pool","type":"address"},{"name":"_base_lp_token","type":"address"},{"name":"_weth","type":"address"},{"name":"_base_coins","type":"address[3]"}],"outputs":[]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"pure","type":"function","name":"base_pool","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"pure","type":"function","name":"base_token","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"price_oracle","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"price_scale","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"lp_price","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"_pool","type":"address"},{"name":"i","type":"uint256"},{"name":"j","type":"uint256"},{"name":"_dx","type":"uint256"},{"name":"_min_dy","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"_pool","type":"address"},{"name":"i","type":"uint256"},{"name":"j","type":"uint256"},{"name":"_dx","type":"uint256"},{"name":"_min_dy","type":"uint256"},{"name":"_use_eth","type":"bool"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"_pool","type":"address"},{"name":"i","type":"uint256"},{"name":"j","type":"uint256"},{"name":"_dx","type":"uint256"},{"name":"_min_dy","type":"uint256"},{"name":"_use_eth","type":"bool"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_dy","inputs":[{"name":"_pool","type":"address"},{"name":"i","type":"uint256"},{"name":"j","type":"uint256"},{"name":"_dx","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"add_liquidity","inputs":[{"name":"_pool","type":"address"},{"name":"_deposit_amounts","type":"uint256[4]"},{"name":"_min_mint_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"add_liquidity","inputs":[{"name":"_pool","type":"address"},{"name":"_deposit_amounts","type":"uint256[4]"},{"name":"_min_mint_amount","type":"uint256"},{"name":"_use_eth","type":"bool"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"add_liquidity","inputs":[{"name":"_pool","type":"address"},{"name":"_deposit_amounts","type":"uint256[4]"},{"name":"_min_mint_amount","type":"uint256"},{"name":"_use_eth","type":"bool"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"calc_token_amount","inputs":[{"name":"_pool","type":"address"},{"name":"_amounts","type":"uint256[4]"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity","inputs":[{"name":"_pool","type":"address"},{"name":"_burn_amount","type":"uint256"},{"name":"_min_amounts","type":"uint256[4]"}],"outputs":[{"name":"","type":"uint256[4]"}]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity","inputs":[{"name":"_pool","type":"address"},{"name":"_burn_amount","type":"uint256"},{"name":"_min_amounts","type":"uint256[4]"},{"name":"_use_eth","type":"bool"}],"outputs":[{"name":"","type":"uint256[4]"}]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity","inputs":[{"name":"_pool","type":"address"},{"name":"_burn_amount","type":"uint256"},{"name":"_min_amounts","type":"uint256[4]"},{"name":"_use_eth","type":"bool"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256[4]"}]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity_one_coin","inputs":[{"name":"_pool","type":"address"},{"name":"_burn_amount","type":"uint256"},{"name":"i","type":"uint256"},{"name":"_min_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity_one_coin","inputs":[{"name":"_pool","type":"address"},{"name":"_burn_amount","type":"uint256"},{"name":"i","type":"uint256"},{"name":"_min_amount","type":"uint256"},{"name":"_use_eth","type":"bool"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity_one_coin","inputs":[{"name":"_pool","type":"address"},{"name":"_burn_amount","type":"uint256"},{"name":"i","type":"uint256"},{"name":"_min_amount","type":"uint256"},{"name":"_use_eth","type":"bool"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"calc_withdraw_one_coin","inputs":[{"name":"_pool","type":"address"},{"name":"_token_amount","type":"uint256"},{"name":"i","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]}]

6020611c9e6000396000518060a01c611c99576040526020611cbe6000396000518060a01c611c99576060526020611cde6000396000518060a01c611c99576080526020611cfe6000396000518060a01c611c995760a0526020611d1e6000396000518060a01c611c995760c0526020611d3e6000396000518060a01c611c995760e0526040516300001b44526060516300001b645260a0516300001b845260c0516300001ba45260e0516300001bc4526080516300001b245260006003905b6020810260a001516101005263095ea7b361012052604051610140527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61016052610100513b15611c995760006000604461013c6000610100515af161012a573d600060003e3d6000fd5b600160006101005160205260005260406000208060405160205260005260406000209050556001018181186100bf575050611b24610174630000000039611b2460c0016300000000f3600436101561000d5761183a565b60003560e01c6364a14558811861002e57600061024052336102605261007c565b632bf78c6181186100525760a4358060011c611b1f5761024052336102605261007c565b63b837cc6981186106565760a4358060011c611b1f576102405260c4358060a01c611b1f57610260525b6004358060a01c611b1f576102205260443560243514611b1f57610240516100a45734611b1f575b6020611b84600039600051610280526020611ba46000396000516102a0526020611bc46000396000516102c052600160243510156103325763c661065761030052602435610320526020610300602461031c610220515afa61010b573d600060003e3d6000fd5b60203d10611b1f57610300518060a01c611b1f5761034052610340516102e0526102e051604052606435606052336080523460a0526102405160c052600060e052610157610320611846565b610320516103005260006102e05160205260005260406000208061022051602052600052604060002090505461020e5763095ea7b36103205261022051610340527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610360526102e0513b15611b1f5760006000604461033c60006102e0515af16101e7573d600060003e3d6000fd5b600160006102e0516020526000526040600020806102205160205260005260406000209050555b63394747c561034052602435610360526001610380526064356103a05260006103c052610240516103e052602061034060a461035c61030051610220515af161025c573d600060003e3d6000fd5b60203d10611b1f576103405161032052631a4d01d26103405261032051610360526044356001808210611b1f578082039050905080607f1c611b1f57610380526084356103a0526020611b446000396000513b15611b1f5760006000606461035c60006020611b446000396000515af16102db573d600060003e3d6000fd5b60206044356001808210611b1f57808203905090506003811015611b1f570261028001516102e05260206102e0516040526102605160605261024051608052600160a05261032a610340611971565b610340610654565b6024356001808210611b1f578082039050905080607f1c611b1f576102e05260206102e0516003811015611b1f57026102800151604052606435606052336080523460a0526102405160c052600160e05261038e610300611846565b6103005060016044351015610592576060366103003760643560206102e0516003811015611b1f57026103000152634515cef3610360526103005161038052610320516103a052610340516103c05260006103e0526020611b446000396000513b15611b1f5760006000608461037c60006020611b446000396000515af161041b573d600060003e3d6000fd5b60006020611b646000396000516020526000526040600020806102205160205260005260406000209050546104e65763095ea7b36103605261022051610380527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103a0526020611b646000396000513b15611b1f5760006000604461037c60006020611b646000396000515af16104b8573d600060003e3d6000fd5b600160006020611b646000396000516020526000526040600020806102205160205260005260406000209050555b6370a0823161038052306103a0526020610380602461039c6020611b646000396000515afa61051a573d600060003e3d6000fd5b60203d10611b1f576103805161036052602063ce7d65036103805260016103a0526044356103c052610360516103e0526084356104005261024051610420526102605161044052602061038060c461039c6000610220515af1610582573d600060003e3d6000fd5b60203d10611b1f57610380610654565b6044356001808210611b1f578082039050905080607f1c611b1f5761030052633df02124610320526102e051610340526103005161036052606435610380526084356103a0526020611b446000396000513b15611b1f5760006000608461033c60006020611b446000396000515af1610610573d600060003e3d6000fd5b6020610300516003811015611b1f57026102800151610320526020610320516040526102605160605261024051608052600160a052610650610340611971565b6103405bf35b63384e03db81186106715760006102405233610260526106bf565b63c45d79e981186106955760c4358060011c611b1f576102405233610260526106bf565b63968fe83b8118610af25760c4358060011c611b1f576102405260e4358060a01c611b1f57610260525b6004358060a01c611b1f5761022052610240516106dc5734611b1f575b60c036610280376020611b84600039600051610340526020611ba4600039600051610360526020611bc46000396000516103805260006103a0526000602435146108595763c66106576103e05260006104005260206103e060246103fc610220515afa61074e573d600060003e3d6000fd5b60203d10611b1f576103e0518060a01c611b1f5761042052610420516103c0526103c051604052602435606052336080523460a0526102405160c052600060e05261079a6103e0611846565b6103e0516103a05260006103c0516020526000526040600020806102205160205260005260406000209050546108515763095ea7b36103e05261022051610400527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610420526103c0513b15611b1f576000600060446103fc60006103c0515af161082a573d600060003e3d6000fd5b600160006103c0516020526000526040600020806102205160205260005260406000209050555b602435610280525b600160038101905b806103c05260206103c0516004811015611b1f5702602401356103e0526103e05161088b5761090d565b6001610320526103c0516001808210611b1f5780820390509050610400526020610400516003811015611b1f5702610340015161042052610420516040526103e051606052336080523460a0526102405160c052600160e0526108ef610440611846565b610440506103e0516020610400516003811015611b1f57026102c001525b6001018181186108615750506103205115610a9057634515cef36103c0526102c0516103e0526102e0516104005261030051610420526000610440526020611b446000396000513b15611b1f576000600060846103dc60006020611b446000396000515af1610981573d600060003e3d6000fd5b6370a082316103c052306103e05260206103c060246103dc6020611b646000396000515afa6109b5573d600060003e3d6000fd5b60203d10611b1f576103c0516102a05260006020611b64600039600051602052600052604060002080610220516020526000526040600020905054610a905763095ea7b36103c052610220516103e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610400526020611b646000396000513b15611b1f576000600060446103dc60006020611b646000396000515af1610a62573d600060003e3d6000fd5b600160006020611b646000396000516020526000526040600020806102205160205260005260406000209050555b6020637328333b6103c052610280516103e0526102a0516104005260a435610420526102405161044052610260516104605260206103c060a46103dc6103a051610220515af1610ae5573d600060003e3d6000fd5b60203d10611b1f576103c0f35b635d6362bb8118610b165734611b1f576020611b4460003960005160405260206040f35b6375ce738e8118610b3a5734611b1f576020611b6460003960005160405260206040f35b63d55d1dd98118610bfd576004358060a01c611b1f5760405234611b1f576386fc88d3608052602060806004609c6040515afa610b7c573d600060003e3d6000fd5b60203d10611b1f5760805160605263bb7b8b8060a052602060a0600460bc6020611b446000396000515afa610bb6573d600060003e3d6000fd5b60203d10611b1f5760a051608052608051670de0b6b3a7640000808202821582848304141715611b1f5790509050606051808015611b1f5782049050905060a052602060a0f35b638bc3103e8118610cc0576004358060a01c611b1f5760405234611b1f5763b9e8c9fd608052602060806004609c6040515afa610c3f573d600060003e3d6000fd5b60203d10611b1f5760805160605263bb7b8b8060a052602060a0600460bc6020611b446000396000515afa610c79573d600060003e3d6000fd5b60203d10611b1f5760a051608052608051670de0b6b3a7640000808202821582848304141715611b1f5790509050606051808015611b1f5782049050905060a052602060a0f35b6353b8e11f8118610daf576004358060a01c611b1f5760405234611b1f576354f0f7d5608052602060806004609c6040515afa610d02573d600060003e3d6000fd5b60203d10611b1f576080516060526386fc88d360a052602060a0600460bc6040515afa610d34573d600060003e3d6000fd5b60203d10611b1f5760a05160805263bb7b8b8060c052602060c0600460dc6020611b446000396000515afa610d6e573d600060003e3d6000fd5b60203d10611b1f5760c05160a05260605160a051808202821582848304141715611b1f5790509050608051808015611b1f5782049050905060c052602060c0f35b63e9737ee28118610fd9576004358060a01c611b1f5760405234611b1f5760443560243514611b1f5760016024351015610e875763556d6e9f60805260243560a052600160c05260643560e052602060806064609c6040515afa610e18573d600060003e3d6000fd5b60203d10611b1f57608051606052602063cc2b27d760805260605160a0526044356001808210611b1f578082039050905080607f1c611b1f5760c052602060806044609c6020611b446000396000515afa610e78573d600060003e3d6000fd5b60203d10611b1f576080610fd7565b60016044351015610f5c5760603660603760643560206024356001808210611b1f57808203905090506003811015611b1f570260600152633883e11960e052606051610100526080516101205260a05161014052600161016052602060e0608460fc6020611b446000396000515afa610f05573d600060003e3d6000fd5b60203d10611b1f5760e05160c052602063556d6e9f60e0526001610100526044356101205260c05161014052602060e0606460fc6040515afa610f4d573d600060003e3d6000fd5b60203d10611b1f5760e0610fd7565b6020635e0d443f6060526024356001808210611b1f578082039050905080607f1c611b1f576080526044356001808210611b1f578082039050905080607f1c611b1f5760a05260643560c052602060606064607c6020611b446000396000515afa610fcc573d600060003e3d6000fd5b60203d10611b1f5760605bf35b63a658d0648118611126576004358060a01c611b1f5760405234611b1f5760c03660603760243560605260006003905b806101205260206101205160018181830110611b1f57808201905090506004811015611b1f5702602401356020610120516003811015611b1f570260a0015260006020610120516003811015611b1f570260a00151111561106b576001610100525b60010181811861100957505061010051156110e257633883e1196101405260a0516101605260c0516101805260e0516101a05260016101c0526020610140608461015c6020611b446000396000515afa6110ca573d600060003e3d6000fd5b60203d10611b1f576101405161012052610120516080525b6020638d8ea7276101205260605161014052608051610160526020610120604461013c6040515afa611119573d600060003e3d6000fd5b60203d10611b1f57610120f35b63ad5cc918811861114157600061020052336102205261118f565b6352e151b081186111655760c4358060011c611b1f5761020052336102205261118f565b63e0b4940581186114ab5760c4358060011c611b1f576102005260e4358060a01c611b1f57610220525b6004358060a01c611b1f576101e05234611b1f5763fc0c546a610260526020610260600461027c6101e0515afa6111cb573d600060003e3d6000fd5b60203d10611b1f57610260518060a01c611b1f576102a0526102a051610240526323b872dd610260523361028052306102a0526024356102c052610240513b15611b1f5760006000606461027c6000610240515af161122f573d600060003e3d6000fd5b60e0366102603763269b558161034052602435610360526044356103805260006103a052610200516103c0526101e0513b15611b1f5760006000608461035c60006101e0515af1611285573d600060003e3d6000fd5b6370a082316103605230610380526020610360602461037c6020611b646000396000515afa6112b9573d600060003e3d6000fd5b60203d10611b1f57610360516103405260006003905b806103605260206001610360518181830110611b1f57808201905090506004811015611b1f5702604401356020610360516003811015611b1f570261026001526001018181186112cf57505063ecb586a5610360526103405161038052610260516103a052610280516103c0526102a0516103e0526020611b446000396000513b15611b1f5760006000608461037c60006020611b446000396000515af161137c573d600060003e3d6000fd5b63c66106576103805260006103a0526020610380602461039c6101e0515afa6113aa573d600060003e3d6000fd5b60203d10611b1f57610380518060a01c611b1f576103c0526103c05161036052610360516040526102205160605261020051608052600060a0526113ef610380611971565b610380516102c0526020611b84600039600051610380526020611ba46000396000516103a0526020611bc46000396000516103c052600160038101905b806103e05260206103e0516001808210611b1f57808203905090506003811015611b1f5702610380015161036052610360516040526102205160605261020051608052600160a05261147f610400611971565b6104005160206103e0516004811015611b1f57026102c0015260010181811861142c57505060806102c0f35b63c5bdcd0981186114c6576000610200523361022052611514565b63d694352581186114ea576084358060011c611b1f57610200523361022052611514565b630664b693811861172e576084358060011c611b1f576102005260a4358060a01c611b1f57610220525b6004358060a01c611b1f576101e05234611b1f5763fc0c546a610260526020610260600461027c6101e0515afa611550573d600060003e3d6000fd5b60203d10611b1f57610260518060a01c611b1f576102a0526102a051610240526323b872dd610260523361028052306102a0526024356102c052610240513b15611b1f5760006000606461027c6000610240515af16115b4573d600060003e3d6000fd5b600160443510156116135760206307329bcd610260526060602461028037610200516102e0526102205161030052602061026060a461027c60006101e0515af1611603573d600060003e3d6000fd5b60203d10611b1f5761026061172c565b63f1dc3cc9610280526024356102a05260016102c05260006102e0526020610280606461029c60006101e0515af1611650573d600060003e3d6000fd5b60203d10611b1f576102805161026052631a4d01d261028052610260516102a0526044356001808210611b1f578082039050905080607f1c611b1f576102c0526064356102e0526020611b446000396000513b15611b1f5760006000606461029c60006020611b446000396000515af16116cf573d600060003e3d6000fd5b602060206044356001808210611b1f57808203905090506003811015611b1f5702606001611b2401600039600051610280526020610280516040526102205160605261020051608052600160a0526117286102a0611971565b6102a05bf35b639aed0eea8118611834576004358060a01c611b1f5760405234611b1f5760016044351015611798576020634fb08c5e60605260243560805260443560a052602060606044607c6040515afa611789573d600060003e3d6000fd5b60203d10611b1f576060611832565b634fb08c5e60805260243560a052600160c052602060806044609c6040515afa6117c7573d600060003e3d6000fd5b60203d10611b1f57608051606052602063cc2b27d760805260605160a0526044356001808210611b1f578082039050905080607f1c611b1f5760c052602060806044609c6020611b446000396000515afa611827573d600060003e3d6000fd5b60203d10611b1f5760805bf35b5061183a565b6000333b1115611b1f57005b60c051611854576000611864565b6020611b24600039600051604051145b611906576323b872dd6101445260046080516101645230610184526060516101a452606001610140526101405060206102006101405161016060006040515af16118b3573d600060003e3d6000fd5b6101e060203d8082116118c657816118c8565b805b9050905081528051806101005260208201805161012052505050600061010051146119695761012051610100516020036008021c15611b1f57611969565b60605160a05118611b1f5760e0516119275760605181525061196f56611969565b63d0e30db0610100526020611b246000396000513b15611b1f5760006000600461011c6060516020611b246000396000515af1611969573d600060003e3d6000fd5b60008152505b565b600060c052608051611984576000611994565b6020611b24600039600051604051145b611a65576370a0823160e0523061010052602060e0602460fc6040515afa6119c1573d600060003e3d6000fd5b60203d10611b1f5760e05160c05263a9059cbb6101245260046060516101445260c05161016452604001610120526101205060206101c06101205161014060006040515af1611a15573d600060003e3d6000fd5b6101a060203d808211611a285781611a2a565b805b90509050815280518060e05260208201805161010052505050600060e05114611b17576101005160e0516020036008021c15611b1f57611b17565b60a05115611aea576370a0823160e0523061010052602060e0602460fc6040515afa611a96573d600060003e3d6000fd5b60203d10611b1f5760e05160c052632e1a7d4d60e05260c051610100526020611b246000396000513b15611b1f5760006000602460fc60006020611b246000396000515af1611aea573d600060003e3d6000fd5b4760c052600060e05260e0506000600060e05161010060c0516060515af1611b17573d600060003e3d6000fd5b60c051815250565b600080fd005b600080fd000000000000000000000000bebc44782c7db0a1a60cb6fe97d0b483032ff1c70000000000000000000000006c3f90f043a72fa612cbac8115ee7e52bde6e490000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7

Deployed Bytecode

0x600436101561000d5761183a565b60003560e01c6364a14558811861002e57600061024052336102605261007c565b632bf78c6181186100525760a4358060011c611b1f5761024052336102605261007c565b63b837cc6981186106565760a4358060011c611b1f576102405260c4358060a01c611b1f57610260525b6004358060a01c611b1f576102205260443560243514611b1f57610240516100a45734611b1f575b6020611b84600039600051610280526020611ba46000396000516102a0526020611bc46000396000516102c052600160243510156103325763c661065761030052602435610320526020610300602461031c610220515afa61010b573d600060003e3d6000fd5b60203d10611b1f57610300518060a01c611b1f5761034052610340516102e0526102e051604052606435606052336080523460a0526102405160c052600060e052610157610320611846565b610320516103005260006102e05160205260005260406000208061022051602052600052604060002090505461020e5763095ea7b36103205261022051610340527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610360526102e0513b15611b1f5760006000604461033c60006102e0515af16101e7573d600060003e3d6000fd5b600160006102e0516020526000526040600020806102205160205260005260406000209050555b63394747c561034052602435610360526001610380526064356103a05260006103c052610240516103e052602061034060a461035c61030051610220515af161025c573d600060003e3d6000fd5b60203d10611b1f576103405161032052631a4d01d26103405261032051610360526044356001808210611b1f578082039050905080607f1c611b1f57610380526084356103a0526020611b446000396000513b15611b1f5760006000606461035c60006020611b446000396000515af16102db573d600060003e3d6000fd5b60206044356001808210611b1f57808203905090506003811015611b1f570261028001516102e05260206102e0516040526102605160605261024051608052600160a05261032a610340611971565b610340610654565b6024356001808210611b1f578082039050905080607f1c611b1f576102e05260206102e0516003811015611b1f57026102800151604052606435606052336080523460a0526102405160c052600160e05261038e610300611846565b6103005060016044351015610592576060366103003760643560206102e0516003811015611b1f57026103000152634515cef3610360526103005161038052610320516103a052610340516103c05260006103e0526020611b446000396000513b15611b1f5760006000608461037c60006020611b446000396000515af161041b573d600060003e3d6000fd5b60006020611b646000396000516020526000526040600020806102205160205260005260406000209050546104e65763095ea7b36103605261022051610380527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103a0526020611b646000396000513b15611b1f5760006000604461037c60006020611b646000396000515af16104b8573d600060003e3d6000fd5b600160006020611b646000396000516020526000526040600020806102205160205260005260406000209050555b6370a0823161038052306103a0526020610380602461039c6020611b646000396000515afa61051a573d600060003e3d6000fd5b60203d10611b1f576103805161036052602063ce7d65036103805260016103a0526044356103c052610360516103e0526084356104005261024051610420526102605161044052602061038060c461039c6000610220515af1610582573d600060003e3d6000fd5b60203d10611b1f57610380610654565b6044356001808210611b1f578082039050905080607f1c611b1f5761030052633df02124610320526102e051610340526103005161036052606435610380526084356103a0526020611b446000396000513b15611b1f5760006000608461033c60006020611b446000396000515af1610610573d600060003e3d6000fd5b6020610300516003811015611b1f57026102800151610320526020610320516040526102605160605261024051608052600160a052610650610340611971565b6103405bf35b63384e03db81186106715760006102405233610260526106bf565b63c45d79e981186106955760c4358060011c611b1f576102405233610260526106bf565b63968fe83b8118610af25760c4358060011c611b1f576102405260e4358060a01c611b1f57610260525b6004358060a01c611b1f5761022052610240516106dc5734611b1f575b60c036610280376020611b84600039600051610340526020611ba4600039600051610360526020611bc46000396000516103805260006103a0526000602435146108595763c66106576103e05260006104005260206103e060246103fc610220515afa61074e573d600060003e3d6000fd5b60203d10611b1f576103e0518060a01c611b1f5761042052610420516103c0526103c051604052602435606052336080523460a0526102405160c052600060e05261079a6103e0611846565b6103e0516103a05260006103c0516020526000526040600020806102205160205260005260406000209050546108515763095ea7b36103e05261022051610400527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610420526103c0513b15611b1f576000600060446103fc60006103c0515af161082a573d600060003e3d6000fd5b600160006103c0516020526000526040600020806102205160205260005260406000209050555b602435610280525b600160038101905b806103c05260206103c0516004811015611b1f5702602401356103e0526103e05161088b5761090d565b6001610320526103c0516001808210611b1f5780820390509050610400526020610400516003811015611b1f5702610340015161042052610420516040526103e051606052336080523460a0526102405160c052600160e0526108ef610440611846565b610440506103e0516020610400516003811015611b1f57026102c001525b6001018181186108615750506103205115610a9057634515cef36103c0526102c0516103e0526102e0516104005261030051610420526000610440526020611b446000396000513b15611b1f576000600060846103dc60006020611b446000396000515af1610981573d600060003e3d6000fd5b6370a082316103c052306103e05260206103c060246103dc6020611b646000396000515afa6109b5573d600060003e3d6000fd5b60203d10611b1f576103c0516102a05260006020611b64600039600051602052600052604060002080610220516020526000526040600020905054610a905763095ea7b36103c052610220516103e0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610400526020611b646000396000513b15611b1f576000600060446103dc60006020611b646000396000515af1610a62573d600060003e3d6000fd5b600160006020611b646000396000516020526000526040600020806102205160205260005260406000209050555b6020637328333b6103c052610280516103e0526102a0516104005260a435610420526102405161044052610260516104605260206103c060a46103dc6103a051610220515af1610ae5573d600060003e3d6000fd5b60203d10611b1f576103c0f35b635d6362bb8118610b165734611b1f576020611b4460003960005160405260206040f35b6375ce738e8118610b3a5734611b1f576020611b6460003960005160405260206040f35b63d55d1dd98118610bfd576004358060a01c611b1f5760405234611b1f576386fc88d3608052602060806004609c6040515afa610b7c573d600060003e3d6000fd5b60203d10611b1f5760805160605263bb7b8b8060a052602060a0600460bc6020611b446000396000515afa610bb6573d600060003e3d6000fd5b60203d10611b1f5760a051608052608051670de0b6b3a7640000808202821582848304141715611b1f5790509050606051808015611b1f5782049050905060a052602060a0f35b638bc3103e8118610cc0576004358060a01c611b1f5760405234611b1f5763b9e8c9fd608052602060806004609c6040515afa610c3f573d600060003e3d6000fd5b60203d10611b1f5760805160605263bb7b8b8060a052602060a0600460bc6020611b446000396000515afa610c79573d600060003e3d6000fd5b60203d10611b1f5760a051608052608051670de0b6b3a7640000808202821582848304141715611b1f5790509050606051808015611b1f5782049050905060a052602060a0f35b6353b8e11f8118610daf576004358060a01c611b1f5760405234611b1f576354f0f7d5608052602060806004609c6040515afa610d02573d600060003e3d6000fd5b60203d10611b1f576080516060526386fc88d360a052602060a0600460bc6040515afa610d34573d600060003e3d6000fd5b60203d10611b1f5760a05160805263bb7b8b8060c052602060c0600460dc6020611b446000396000515afa610d6e573d600060003e3d6000fd5b60203d10611b1f5760c05160a05260605160a051808202821582848304141715611b1f5790509050608051808015611b1f5782049050905060c052602060c0f35b63e9737ee28118610fd9576004358060a01c611b1f5760405234611b1f5760443560243514611b1f5760016024351015610e875763556d6e9f60805260243560a052600160c05260643560e052602060806064609c6040515afa610e18573d600060003e3d6000fd5b60203d10611b1f57608051606052602063cc2b27d760805260605160a0526044356001808210611b1f578082039050905080607f1c611b1f5760c052602060806044609c6020611b446000396000515afa610e78573d600060003e3d6000fd5b60203d10611b1f576080610fd7565b60016044351015610f5c5760603660603760643560206024356001808210611b1f57808203905090506003811015611b1f570260600152633883e11960e052606051610100526080516101205260a05161014052600161016052602060e0608460fc6020611b446000396000515afa610f05573d600060003e3d6000fd5b60203d10611b1f5760e05160c052602063556d6e9f60e0526001610100526044356101205260c05161014052602060e0606460fc6040515afa610f4d573d600060003e3d6000fd5b60203d10611b1f5760e0610fd7565b6020635e0d443f6060526024356001808210611b1f578082039050905080607f1c611b1f576080526044356001808210611b1f578082039050905080607f1c611b1f5760a05260643560c052602060606064607c6020611b446000396000515afa610fcc573d600060003e3d6000fd5b60203d10611b1f5760605bf35b63a658d0648118611126576004358060a01c611b1f5760405234611b1f5760c03660603760243560605260006003905b806101205260206101205160018181830110611b1f57808201905090506004811015611b1f5702602401356020610120516003811015611b1f570260a0015260006020610120516003811015611b1f570260a00151111561106b576001610100525b60010181811861100957505061010051156110e257633883e1196101405260a0516101605260c0516101805260e0516101a05260016101c0526020610140608461015c6020611b446000396000515afa6110ca573d600060003e3d6000fd5b60203d10611b1f576101405161012052610120516080525b6020638d8ea7276101205260605161014052608051610160526020610120604461013c6040515afa611119573d600060003e3d6000fd5b60203d10611b1f57610120f35b63ad5cc918811861114157600061020052336102205261118f565b6352e151b081186111655760c4358060011c611b1f5761020052336102205261118f565b63e0b4940581186114ab5760c4358060011c611b1f576102005260e4358060a01c611b1f57610220525b6004358060a01c611b1f576101e05234611b1f5763fc0c546a610260526020610260600461027c6101e0515afa6111cb573d600060003e3d6000fd5b60203d10611b1f57610260518060a01c611b1f576102a0526102a051610240526323b872dd610260523361028052306102a0526024356102c052610240513b15611b1f5760006000606461027c6000610240515af161122f573d600060003e3d6000fd5b60e0366102603763269b558161034052602435610360526044356103805260006103a052610200516103c0526101e0513b15611b1f5760006000608461035c60006101e0515af1611285573d600060003e3d6000fd5b6370a082316103605230610380526020610360602461037c6020611b646000396000515afa6112b9573d600060003e3d6000fd5b60203d10611b1f57610360516103405260006003905b806103605260206001610360518181830110611b1f57808201905090506004811015611b1f5702604401356020610360516003811015611b1f570261026001526001018181186112cf57505063ecb586a5610360526103405161038052610260516103a052610280516103c0526102a0516103e0526020611b446000396000513b15611b1f5760006000608461037c60006020611b446000396000515af161137c573d600060003e3d6000fd5b63c66106576103805260006103a0526020610380602461039c6101e0515afa6113aa573d600060003e3d6000fd5b60203d10611b1f57610380518060a01c611b1f576103c0526103c05161036052610360516040526102205160605261020051608052600060a0526113ef610380611971565b610380516102c0526020611b84600039600051610380526020611ba46000396000516103a0526020611bc46000396000516103c052600160038101905b806103e05260206103e0516001808210611b1f57808203905090506003811015611b1f5702610380015161036052610360516040526102205160605261020051608052600160a05261147f610400611971565b6104005160206103e0516004811015611b1f57026102c0015260010181811861142c57505060806102c0f35b63c5bdcd0981186114c6576000610200523361022052611514565b63d694352581186114ea576084358060011c611b1f57610200523361022052611514565b630664b693811861172e576084358060011c611b1f576102005260a4358060a01c611b1f57610220525b6004358060a01c611b1f576101e05234611b1f5763fc0c546a610260526020610260600461027c6101e0515afa611550573d600060003e3d6000fd5b60203d10611b1f57610260518060a01c611b1f576102a0526102a051610240526323b872dd610260523361028052306102a0526024356102c052610240513b15611b1f5760006000606461027c6000610240515af16115b4573d600060003e3d6000fd5b600160443510156116135760206307329bcd610260526060602461028037610200516102e0526102205161030052602061026060a461027c60006101e0515af1611603573d600060003e3d6000fd5b60203d10611b1f5761026061172c565b63f1dc3cc9610280526024356102a05260016102c05260006102e0526020610280606461029c60006101e0515af1611650573d600060003e3d6000fd5b60203d10611b1f576102805161026052631a4d01d261028052610260516102a0526044356001808210611b1f578082039050905080607f1c611b1f576102c0526064356102e0526020611b446000396000513b15611b1f5760006000606461029c60006020611b446000396000515af16116cf573d600060003e3d6000fd5b602060206044356001808210611b1f57808203905090506003811015611b1f5702606001611b2401600039600051610280526020610280516040526102205160605261020051608052600160a0526117286102a0611971565b6102a05bf35b639aed0eea8118611834576004358060a01c611b1f5760405234611b1f5760016044351015611798576020634fb08c5e60605260243560805260443560a052602060606044607c6040515afa611789573d600060003e3d6000fd5b60203d10611b1f576060611832565b634fb08c5e60805260243560a052600160c052602060806044609c6040515afa6117c7573d600060003e3d6000fd5b60203d10611b1f57608051606052602063cc2b27d760805260605160a0526044356001808210611b1f578082039050905080607f1c611b1f5760c052602060806044609c6020611b446000396000515afa611827573d600060003e3d6000fd5b60203d10611b1f5760805bf35b5061183a565b6000333b1115611b1f57005b60c051611854576000611864565b6020611b24600039600051604051145b611906576323b872dd6101445260046080516101645230610184526060516101a452606001610140526101405060206102006101405161016060006040515af16118b3573d600060003e3d6000fd5b6101e060203d8082116118c657816118c8565b805b9050905081528051806101005260208201805161012052505050600061010051146119695761012051610100516020036008021c15611b1f57611969565b60605160a05118611b1f5760e0516119275760605181525061196f56611969565b63d0e30db0610100526020611b246000396000513b15611b1f5760006000600461011c6060516020611b246000396000515af1611969573d600060003e3d6000fd5b60008152505b565b600060c052608051611984576000611994565b6020611b24600039600051604051145b611a65576370a0823160e0523061010052602060e0602460fc6040515afa6119c1573d600060003e3d6000fd5b60203d10611b1f5760e05160c05263a9059cbb6101245260046060516101445260c05161016452604001610120526101205060206101c06101205161014060006040515af1611a15573d600060003e3d6000fd5b6101a060203d808211611a285781611a2a565b805b90509050815280518060e05260208201805161010052505050600060e05114611b17576101005160e0516020036008021c15611b1f57611b17565b60a05115611aea576370a0823160e0523061010052602060e0602460fc6040515afa611a96573d600060003e3d6000fd5b60203d10611b1f5760e05160c052632e1a7d4d60e05260c051610100526020611b246000396000513b15611b1f5760006000602460fc60006020611b246000396000515af1611aea573d600060003e3d6000fd5b4760c052600060e05260e0506000600060e05161010060c0516060515af1611b17573d600060003e3d6000fd5b60c051815250565b600080fd000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000bebc44782c7db0a1a60cb6fe97d0b483032ff1c70000000000000000000000006c3f90f043a72fa612cbac8115ee7e52bde6e4900000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7

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

000000000000000000000000bebc44782c7db0a1a60cb6fe97d0b483032ff1c70000000000000000000000006c3f90f043a72fa612cbac8115ee7e52bde6e490000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7

-----Decoded View---------------
Arg [0] : _base_pool (address): 0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7
Arg [1] : _base_lp_token (address): 0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490
Arg [2] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [3] : _base_coins (address[3]): 0x6B175474E89094C44Da98b954EedeAC495271d0F,0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,0xdAC17F958D2ee523a2206206994597C13D831ec7

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000bebc44782c7db0a1a60cb6fe97d0b483032ff1c7
Arg [1] : 0000000000000000000000006c3f90f043a72fa612cbac8115ee7e52bde6e490
Arg [2] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [3] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [4] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [5] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7


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.