Contract 0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c8 4

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xd03d7f926f3b48bcbf2d9e5d66d47aeffa3819fbb8fb61e92fc41b7cda771296Exchange_underly...302542382022-07-02 14:18:372 mins ago0x88928ff265a144aef2c5e228d536d9e477a68cfc IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.243699866253.1
0xe6179f801025f38060e25d1be7bbef736974cdc7aa855400e454d2be86f62f07Exchange_underly...302542302022-07-02 14:18:212 mins ago0x88928ff265a144aef2c5e228d536d9e477a68cfc IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2682685361253.1
0xee65cdcddc59ce6debe238b163f567580f0ca8e27f474c7f6fb73824506418e1Exchange_underly...302542112022-07-02 14:17:433 mins ago0x88928ff265a144aef2c5e228d536d9e477a68cfc IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2467740186253.1
0xe21019cda4e82ae1d8f2c0fa22bcd59c93d30537b9e387e19877c0324b6b70ecExchange_underly...302542102022-07-02 14:17:413 mins ago0x9ad879dd186fa3b32e60af26c55d1267a852fad3 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.1958836200
0x15bf8110ee47dff04fb7e060adcb611c15e28471e692c84e07397b97c2af013aExchange_underly...302542072022-07-02 14:17:313 mins ago0x88928ff265a144aef2c5e228d536d9e477a68cfc IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2479484026253.1
0x823290c429e411ef14149f14bb14bce078418f90cf52dc5df341c7a8b35fa57eExchange_underly...302541592022-07-02 14:15:554 mins ago0x857d44c489c6b338517e93681cb8a9e2d6d7a612 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2093238 200
0x54fe41b6a7d20c2d9442934163a4e39427ed196f3e9575796958b44d565649fcExchange_underly...302538492022-07-02 14:03:0717 mins ago0x857d44c489c6b338517e93681cb8a9e2d6d7a612 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2055052 200
0x97c955c799555ee18af77db13538de87c95298fc04a41c1051c45518b44ae350Exchange_underly...302537442022-07-02 13:56:5123 mins ago0x88928ff265a144aef2c5e228d536d9e477a68cfc IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.253105062253.1
0x47fbbb28939e5c6215090cebc7cc524d414d5a662c640b0aa2c5a64830543c1aExchange_underly...302535902022-07-02 13:49:5730 mins ago0x857d44c489c6b338517e93681cb8a9e2d6d7a612 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2079654 200
0xe05f997f91cbe8b15c0c66e831e8861c1e4670ae569ebec667b3f23a6b440f0eExchange_underly...302535892022-07-02 13:49:5530 mins ago0x4fccb9202001934648e7fc534720885d8ba15db9 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.1943702200
0x6cc2f14903f15745cfe437d10b7198466a7c0405ec1afaad4beb599ec1ec2bbdExchange_underly...302535092022-07-02 13:47:1133 mins ago0x88928ff265a144aef2c5e228d536d9e477a68cfc IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2405928104253.1
0x4ea7f5b66e6338bd379b0d066bfb01d1ccf8dca5e86b01685f9421686e1b5af2Exchange_underly...302532522022-07-02 13:38:2142 mins ago0x857d44c489c6b338517e93681cb8a9e2d6d7a612 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2081728 200
0x26b2fc790e18facd7dded510397d5e47b2d5711f5a6461a09d5218ab35f4ff33Exchange_underly...302531432022-07-02 13:32:2748 mins ago0x857d44c489c6b338517e93681cb8a9e2d6d7a612 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2102314 200
0x3cab614ecb1df0d42b2be3d11252c57d7ccb3fb6a76774880496233fdc20faecExchange_underly...302531422022-07-02 13:32:2548 mins ago0x4fccb9202001934648e7fc534720885d8ba15db9 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.1949572200
0x9b7a117efd7d0d504d310301770ddf01bc552750d397d6ea03b7bbadc2b00d37Exchange_underly...302531202022-07-02 13:31:4149 mins ago0x4fccb9202001934648e7fc534720885d8ba15db9 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.196902200
0xa0bf69f3879cde7b53e63af1f993accd4367519b6896ff7639bbe3405f76723bExchange_underly...302531202022-07-02 13:31:4149 mins ago0x88928ff265a144aef2c5e228d536d9e477a68cfc IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2492280762253.1
0x24ec365b7b1327ac19bf418dd7b05c588160d94ec3119a77c8066c8d1c712007Add_liquidity302529972022-07-02 13:27:2353 mins ago0xf15bdff7a1f2f5d7c4f7cfdabfb669cb2630f86b IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.028000479597 31.227846283
0x5323c86d0f31e315d18248455e58e398ec22b9095993d938db083a72f7151852Exchange_underly...302526752022-07-02 13:16:041 hr 4 mins ago0x88928ff265a144aef2c5e228d536d9e477a68cfc IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2717896633253.1
0xbdfd09b2522cc2caf791513df3cbef801a2f1e62e867d923b71814d342a8b140Exchange_underly...302526742022-07-02 13:16:001 hr 4 mins ago0x9ad879dd186fa3b32e60af26c55d1267a852fad3 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2023956200
0xa311e676e1885aa5fdb525d197f827524ecfa25b14c8afef0f6f73766fe8bd7eExchange_underly...302526432022-07-02 13:14:481 hr 5 mins ago0x88928ff265a144aef2c5e228d536d9e477a68cfc IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2727289174253.1
0xe308135cb3715ad7bccf7f8c4719579ef5837d80a9e22bc3987c2c3a176e221aExchange_underly...302525612022-07-02 13:12:001 hr 8 mins ago0x9ad879dd186fa3b32e60af26c55d1267a852fad3 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2183472200
0xa3a7acc775444198157da9a1366145b43e2fe692bc3e1ddd7939311424970bc4Exchange_underly...302525562022-07-02 13:11:501 hr 8 mins ago0x9ad879dd186fa3b32e60af26c55d1267a852fad3 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2120746200
0xbd1a2ea4243a35f1b76708c3aba08ca3a1780370e1d04a7b2efd75616f7d4110Exchange_underly...302525532022-07-02 13:11:441 hr 9 mins ago0x88928ff265a144aef2c5e228d536d9e477a68cfc IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.2716013569253.1
0x9b53d6c6cb50c8072d3faeec0c0180794dc5c8ad99ffc64592680f10f87eda4fExchange_underly...302525512022-07-02 13:11:401 hr 9 mins ago0x4fccb9202001934648e7fc534720885d8ba15db9 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.1919122200
0x7b75ef7a771bfd4377b25226ef45d993c7efa58c2d21b43fc34667522c1933ceExchange_underly...302525512022-07-02 13:11:401 hr 9 mins ago0x9ad879dd186fa3b32e60af26c55d1267a852fad3 IN  0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c80 MATIC0.203717200
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x3Fa8ebd5d16445b42e0b6A54678718C94eA99aBC

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.15

Optimization Enabled:
N/A

Other Settings:
, None license

Contract Source Code (Vyper language format)

# @version 0.2.15

from vyper.interfaces import ERC20

interface CurveCryptoSwap:
    def token() -> address: view
    def coins(i: uint256) -> address: view
    def get_dy(i: uint256, j: uint256, dx: uint256) -> uint256: view
    def calc_token_amount(amounts: uint256[N_COINS], is_deposit: bool) -> uint256: view
    def calc_withdraw_one_coin(token_amount: uint256, i: uint256) -> uint256: view
    def add_liquidity(amounts: uint256[N_COINS], min_mint_amount: uint256): nonpayable
    def exchange(i: uint256, j: uint256, dx: uint256, min_dy: uint256): nonpayable
    def remove_liquidity(amount: uint256, min_amounts: uint256[N_COINS]): nonpayable
    def remove_liquidity_one_coin(token_amount: uint256, i: uint256, min_amount: uint256): nonpayable

interface StableSwap:
    def underlying_coins(i: uint256) -> address: view
    def get_dy(i: int128, j: int128, dx: uint256) -> uint256: view
    def calc_token_amount(amounts: uint256[N_COINS], is_deposit: bool) -> uint256: view
    def calc_withdraw_one_coin(token_amount: uint256, i: int128) -> uint256: view
    def add_liquidity(amounts: uint256[N_COINS], min_mint_amount: uint256, use_underlying: bool) -> uint256: nonpayable
    def remove_liquidity_one_coin(token_amount: uint256, i: int128, min_amount: uint256, use_underlying: bool) -> uint256: nonpayable
    def remove_liquidity(amount: uint256, min_amounts: uint256[N_COINS], use_underlying: bool) -> uint256[N_COINS]: nonpayable


interface LendingPool:
    def withdraw(underlying_asset: address, amount: uint256, receiver: address): nonpayable

interface aToken:
    def UNDERLYING_ASSET_ADDRESS() -> address: view


N_COINS: constant(int128) = 3
N_STABLECOINS: constant(int128) = 3
N_UL_COINS: constant(int128) = N_COINS + N_STABLECOINS - 1
AAVE_LENDING_POOL: constant(address) = 0x8dFf5E27EA6b7AC08EbFdf9eB090F32ee9a30fcf

aave_referral: uint256
coins: public(address[N_COINS])
underlying_coins: public(address[N_UL_COINS])

pool: public(address)
base_pool: public(address)
token: public(address)


@external
def __init__(_pool: address, _base_pool: address):
    self.pool = _pool
    self.base_pool = _base_pool
    self.token = CurveCryptoSwap(_pool).token()

    for i in range(N_STABLECOINS):
        coin: address = StableSwap(_base_pool).underlying_coins(i)
        self.underlying_coins[i] = coin
        # approve transfer of underlying coin to base pool
        response: Bytes[32] = raw_call(
            coin,
            concat(
                method_id("approve(address,uint256)"),
                convert(_base_pool, bytes32),
                convert(MAX_UINT256, bytes32)
            ),
            max_outsize=32
        )
        if len(response) != 0:
            assert convert(response, bool)

    for i in range(N_COINS):
        coin: address = CurveCryptoSwap(_pool).coins(i)
        self.coins[i] = coin
        # approve transfer of coin to main pool
        response: Bytes[32] = raw_call(
            coin,
            concat(
                method_id("approve(address,uint256)"),
                convert(_pool, bytes32),
                convert(MAX_UINT256, bytes32)
            ),
            max_outsize=32
        )
        if len(response) != 0:
            assert convert(response, bool)

        if i != 0:
            # coins >= 1 are aTokens, we must get the underlying asset address
            # and approve transfer into the aave lending pool
            coin = aToken(coin).UNDERLYING_ASSET_ADDRESS()
            self.underlying_coins[i+(N_STABLECOINS-1)] = coin
            response = raw_call(
                coin,
                concat(
                    method_id("approve(address,uint256)"),
                    convert(AAVE_LENDING_POOL, bytes32),
                    convert(MAX_UINT256, bytes32)
                ),
                max_outsize=32
            )
            if len(response) != 0:
                assert convert(response, bool)


@external
def add_liquidity(_amounts: uint256[N_UL_COINS], _min_mint_amount: uint256, _receiver: address = msg.sender):
    base_deposit_amounts: uint256[N_STABLECOINS] = empty(uint256[N_STABLECOINS])
    deposit_amounts: uint256[N_COINS] = empty(uint256[N_COINS])
    is_base_deposit: bool = False

    # transfer base pool coins from caller and deposit to get LP tokens
    for i in range(N_STABLECOINS):
        amount: uint256 = _amounts[i]
        if amount != 0:
            coin: address = self.underlying_coins[i]
            # transfer underlying coin from msg.sender to self
            _response: Bytes[32] = raw_call(
                coin,
                concat(
                    method_id("transferFrom(address,address,uint256)"),
                    convert(msg.sender, bytes32),
                    convert(self, bytes32),
                    convert(amount, bytes32)
                ),
                max_outsize=32
            )
            if len(_response) != 0:
                assert convert(_response, bool)
            base_deposit_amounts[i] = ERC20(coin).balanceOf(self)
            is_base_deposit = True

    if is_base_deposit:
        deposit_amounts[0] = StableSwap(self.base_pool).add_liquidity(base_deposit_amounts, 0, True)

    # transfer remaining underlying coins and deposit into aave
    aave_referral: bytes32 = convert(self.aave_referral, bytes32)
    for i in range(N_STABLECOINS, N_UL_COINS):
        amount: uint256 = _amounts[i]
        if amount != 0:
            coin: address = self.underlying_coins[i]
            # transfer underlying coin from msg.sender to self
            _response: Bytes[32] = raw_call(
                coin,
                concat(
                    method_id("transferFrom(address,address,uint256)"),
                    convert(msg.sender, bytes32),
                    convert(self, bytes32),
                    convert(amount, bytes32)
                ),
                max_outsize=32
            )
            if len(_response) != 0:
                assert convert(_response, bool)

            # deposit to aave lending pool
            raw_call(
                AAVE_LENDING_POOL,
                concat(
                    method_id("deposit(address,uint256,address,uint16)"),
                    convert(coin, bytes32),
                    convert(amount, bytes32),
                    convert(self, bytes32),
                    aave_referral,
                )
            )
            deposit_amounts[i-(N_STABLECOINS-1)] = amount

    CurveCryptoSwap(self.pool).add_liquidity(deposit_amounts, _min_mint_amount)
    token: address = self.token
    amount: uint256 = ERC20(token).balanceOf(self)
    ERC20(token).transfer(_receiver, amount)


@external
def exchange_underlying(i: uint256, j: uint256, _dx: uint256, _min_dy: uint256, _receiver: address = msg.sender):
    # transfer `i` from caller into the zap
    response: Bytes[32] = raw_call(
        self.underlying_coins[i],
        concat(
            method_id("transferFrom(address,address,uint256)"),
            convert(msg.sender, bytes32),
            convert(self, bytes32),
            convert(_dx, bytes32)
        ),
        max_outsize=32
    )
    if len(response) != 0:
        assert convert(response, bool)

    dx: uint256 = _dx
    base_i: uint256 = 0
    base_j: uint256 = 0
    if j >= N_STABLECOINS:
        base_j = j - (N_STABLECOINS - 1)

    if i < N_STABLECOINS:
        # if `i` is in the base pool, deposit to get LP tokens
        base_deposit_amounts: uint256[N_STABLECOINS] = empty(uint256[N_STABLECOINS])
        base_deposit_amounts[i] = dx
        dx = StableSwap(self.base_pool).add_liquidity(base_deposit_amounts, 0, True)
    else:
        # if `i` is an aToken, deposit to the aave lending pool
        base_i = i - (N_STABLECOINS - 1)
        raw_call(
            AAVE_LENDING_POOL,
            concat(
                method_id("deposit(address,uint256,address,uint16)"),
                convert(self.underlying_coins[i], bytes32),
                convert(dx, bytes32),
                convert(self, bytes32),
                convert(self.aave_referral, bytes32),
            )
        )

    # perform the exchange
    if max(base_i, base_j) > 0:
        CurveCryptoSwap(self.pool).exchange(base_i, base_j, dx, 0)
    amount: uint256 = ERC20(self.coins[base_j]).balanceOf(self)

    if base_j == 0:
        # if `j` is in the base pool, withdraw the desired underlying asset and transfer to caller
        amount = StableSwap(self.base_pool).remove_liquidity_one_coin(amount, convert(j, int128), _min_dy, True)
        response = raw_call(
            self.underlying_coins[j],
            concat(
                method_id("transfer(address,uint256)"),
                convert(_receiver, bytes32),
                convert(amount, bytes32)
            ),
            max_outsize=32
        )
        if len(response) != 0:
            assert convert(response, bool)
    else:
        # withdraw `j` underlying from lending pool and transfer to caller
        assert amount >= _min_dy
        LendingPool(AAVE_LENDING_POOL).withdraw(self.underlying_coins[j], amount, _receiver)


@external
def remove_liquidity(_amount: uint256, _min_amounts: uint256[N_UL_COINS], _receiver: address = msg.sender):
    # transfer LP token from caller and remove liquidity
    ERC20(self.token).transferFrom(msg.sender, self, _amount)
    min_amounts: uint256[N_COINS] = [0, _min_amounts[3], _min_amounts[4]]
    CurveCryptoSwap(self.pool).remove_liquidity(_amount, min_amounts)

    # withdraw from base pool and transfer underlying assets to receiver
    value: uint256 = ERC20(self.coins[0]).balanceOf(self)
    base_min_amounts: uint256[N_STABLECOINS] = [_min_amounts[0], _min_amounts[1], _min_amounts[2]]
    received: uint256[N_STABLECOINS] = StableSwap(self.base_pool).remove_liquidity(value, base_min_amounts, True)
    for i in range(N_STABLECOINS):
        response: Bytes[32] = raw_call(
            self.underlying_coins[i],
            concat(
                method_id("transfer(address,uint256)"),
                convert(_receiver, bytes32),
                convert(received[i], bytes32)
            ),
            max_outsize=32
        )
        if len(response) != 0:
            assert convert(response, bool)

    # withdraw from aave lending pool and transfer to receiver
    for i in range(N_STABLECOINS, N_UL_COINS):
        value = ERC20(self.coins[i-(N_STABLECOINS-1)]).balanceOf(self)
        LendingPool(AAVE_LENDING_POOL).withdraw(self.underlying_coins[i], value, _receiver)


@external
def remove_liquidity_one_coin(_token_amount: uint256, i: uint256, _min_amount: uint256, _receiver: address = msg.sender):
    ERC20(self.token).transferFrom(msg.sender, self, _token_amount)
    base_i: uint256 = 0
    if i >= N_STABLECOINS:
        base_i = i - (N_STABLECOINS-1)
    CurveCryptoSwap(self.pool).remove_liquidity_one_coin(_token_amount, base_i, 0)

    value: uint256 = ERC20(self.coins[base_i]).balanceOf(self)
    if base_i == 0:
        value = StableSwap(self.base_pool).remove_liquidity_one_coin(value, convert(i, int128), _min_amount, True)
        response: Bytes[32] = raw_call(
            self.underlying_coins[i],
            concat(
                method_id("transfer(address,uint256)"),
                convert(_receiver, bytes32),
                convert(value, bytes32)
            ),
            max_outsize=32
        )
        if len(response) != 0:
            assert convert(response, bool)
    else:
        assert value >= _min_amount
        LendingPool(AAVE_LENDING_POOL).withdraw(self.underlying_coins[i], value, _receiver)


@view
@external
def get_dy_underlying(i: uint256, j: uint256, _dx: uint256) -> uint256:
    if max(i, j) < N_STABLECOINS:
        return StableSwap(self.base_pool).get_dy(convert(i, int128), convert(j, int128), _dx)

    dx: uint256 = _dx
    base_i: uint256 = 0
    base_j: uint256 = 0
    if j >= N_STABLECOINS:
        base_j = j - (N_STABLECOINS - 1)

    if i < N_STABLECOINS:
        amounts: uint256[N_STABLECOINS] = empty(uint256[N_STABLECOINS])
        amounts[i] = dx
        dx = StableSwap(self.base_pool).calc_token_amount(amounts, True)
    else:
        base_i = i - (N_STABLECOINS - 1)

    dy: uint256 = CurveCryptoSwap(self.pool).get_dy(base_i, base_j, dx)
    if base_j == 0:
        return StableSwap(self.base_pool).calc_withdraw_one_coin(dy, convert(j, int128))
    else:
        return dy


@view
@external
def calc_token_amount(_amounts: uint256[N_UL_COINS], _is_deposit: bool) -> uint256:
    base_amounts: uint256[N_COINS] = [_amounts[0], _amounts[1], _amounts[2]]
    base_lp: uint256 = StableSwap(self.base_pool).calc_token_amount(base_amounts, _is_deposit)
    amounts: uint256[N_COINS] = [base_lp, _amounts[3], _amounts[4]]
    return CurveCryptoSwap(self.pool).calc_token_amount(amounts, _is_deposit)


@view
@external
def calc_withdraw_one_coin(token_amount: uint256, i: uint256) -> uint256:
    if i >= N_STABLECOINS:
        return CurveCryptoSwap(self.pool).calc_withdraw_one_coin(token_amount, i - (N_STABLECOINS - 1))

    base_amount: uint256 = CurveCryptoSwap(self.pool).calc_withdraw_one_coin(token_amount, 0)
    return StableSwap(self.base_pool).calc_withdraw_one_coin(base_amount, convert(i, int128))

Contract Security Audit

Contract ABI

[{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_pool","type":"address"},{"name":"_base_pool","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"add_liquidity","inputs":[{"name":"_amounts","type":"uint256[5]"},{"name":"_min_mint_amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"add_liquidity","inputs":[{"name":"_amounts","type":"uint256[5]"},{"name":"_min_mint_amount","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"exchange_underlying","inputs":[{"name":"i","type":"uint256"},{"name":"j","type":"uint256"},{"name":"_dx","type":"uint256"},{"name":"_min_dy","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"exchange_underlying","inputs":[{"name":"i","type":"uint256"},{"name":"j","type":"uint256"},{"name":"_dx","type":"uint256"},{"name":"_min_dy","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity","inputs":[{"name":"_amount","type":"uint256"},{"name":"_min_amounts","type":"uint256[5]"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity","inputs":[{"name":"_amount","type":"uint256"},{"name":"_min_amounts","type":"uint256[5]"},{"name":"_receiver","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity_one_coin","inputs":[{"name":"_token_amount","type":"uint256"},{"name":"i","type":"uint256"},{"name":"_min_amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity_one_coin","inputs":[{"name":"_token_amount","type":"uint256"},{"name":"i","type":"uint256"},{"name":"_min_amount","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"get_dy_underlying","inputs":[{"name":"i","type":"uint256"},{"name":"j","type":"uint256"},{"name":"_dx","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":19203},{"stateMutability":"view","type":"function","name":"calc_token_amount","inputs":[{"name":"_amounts","type":"uint256[5]"},{"name":"_is_deposit","type":"bool"}],"outputs":[{"name":"","type":"uint256"}],"gas":9705},{"stateMutability":"view","type":"function","name":"calc_withdraw_one_coin","inputs":[{"name":"token_amount","type":"uint256"},{"name":"i","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":14299},{"stateMutability":"view","type":"function","name":"coins","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":2643},{"stateMutability":"view","type":"function","name":"underlying_coins","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":2673},{"stateMutability":"view","type":"function","name":"pool","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2658},{"stateMutability":"view","type":"function","name":"base_pool","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2688},{"stateMutability":"view","type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2718}]

6f7fffffffffffffffffffffffffffffff6040526040611d99610140396020611d9960c03960c05160a01c611d945760206020611d990160c03960c05160a01c611d94576101405160095561016051600a5560206101e0600463fc0c546a6101805261019c610140515afa15611d9457601f3d1115611d94576000506101e051600b5561018060006003818352015b6020610240602463b9947eb06101c052610180516101e0526101dc610160515afa15611d9457601f3d1115611d9457600050610240516101a0526101a0516001610180516005811015611d9457026004015560006004610220527f095ea7b3000000000000000000000000000000000000000000000000000000006102405261022060048060208461028001018260208501600060045af1505080518201915050610160516020826102800101526020810190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602082610280010152602081019050806102805261028090508051602001806103208284600060045af115611d9457505060206103e06103205161034060006101a0515af115611d945760203d808211156101be57806101c0565b815b905090506103c0526103c08051602001806101c08284600060045af115611d9457505060006101c0511815610222576101c08060200151600082518060209013611d945780919012611d9457806020036101000a820490509050905015611d94575b5b815160010180835281141561008e575b505061018060006003818352015b6020610240602463c66106576101c052610180516101e0526101dc610140515afa15611d9457601f3d1115611d9457600050610240516101a0526101a0516001610180516003811015611d9457026001015560006004610220527f095ea7b3000000000000000000000000000000000000000000000000000000006102405261022060048060208461028001018260208501600060045af1505080518201915050610140516020826102800101526020810190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602082610280010152602081019050806102805261028090508051602001806103208284600060045af115611d9457505060206103e06103205161034060006101a0515af115611d945760203d808211156103715780610373565b815b905090506103c0526103c08051602001806101c08284600060045af115611d9457505060006101c05118156103d5576101c08060200151600082518060209013611d945780919012611d9457806020036101000a820490509050905015611d94575b6000610180511815610591576020610280600463b16a19de6102205261023c6101a0515afa15611d9457601f3d1115611d9457600050610280516101a0526101a05160016101805160028181830110611d9457808201905090506005811015611d9457026004015560006004610220527f095ea7b3000000000000000000000000000000000000000000000000000000006102405261022060048060208461028001018260208501600060045af1505080518201915050738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf6020826102800101526020810190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602082610280010152602081019050806102805261028090508051602001806103208284600060045af115611d9457505060206103e06103205161034060006101a0515af115611d945760203d8082111561052c578061052e565b815b905090506103c0526103c08051602001806101c08284600060045af115611d9457505060006101c0511815610590576101c08060200151600082518060209013611d945780919012611d9457806020036101000a820490509050905015611d94575b5b5b8151600101808352811415610241575b5050611d7c56600436101561000d576117c8565b600035601c526f7fffffffffffffffffffffffffffffff604052600051346117ce576384738499811415610045573361014052610070565b63cf2b51b881141561006b5760c43560a01c6117ce57602060c461014037600050610070565b61061b565b60e0366101603761024060006003818352015b60046102405160058110156117ce5760200201356102605260006102605118156102405760016102405160058110156117ce5702600401546102805260006004610300527f23b872dd000000000000000000000000000000000000000000000000000000006103205261030060048060208461036001018260208501600060045af1505080518201915050336020826103600101526020810190503060208261036001015260208101905061026051602082610360010152602081019050806103605261036090508051602001806104208284600060045af1156117ce5750506020610500610420516104406000610280515af1156117ce5760203d8082111561018d578061018f565b815b905090506104e0526104e08051602001806102a08284600060045af1156117ce57505060006102a05118156101f1576102a080602001516000825180602090136117ce57809190126117ce57806020036101000a8204905090509050156117ce575b602061038060246370a0823161030052306103205261031c610280515afa156117ce57601f3d11156117ce57600050610380516101606102405160038110156117ce5760200201526001610220525b5b8151600101808352811415610083575b505061022051156102b457602061034060a4632b6e993a61024052610160516102605261018051610280526101a0516102a05260006102c05260016102e05261025c6000600a545af1156117ce57601f3d11156117ce57600050610340516101c0525b6000546102405261026060036002818352015b60046102605160058110156117ce5760200201356102805260006102805118156105425760016102605160058110156117ce5702600401546102a05260006004610320527f23b872dd000000000000000000000000000000000000000000000000000000006103405261032060048060208461038001018260208501600060045af1505080518201915050336020826103800101526020810190503060208261038001015260208101905061028051602082610380010152602081019050806103805261038090508051602001806104408284600060045af1156117ce57505060206105206104405161046060006102a0515af1156117ce5760203d808211156103d157806103d3565b815b90509050610500526105008051602001806102c08284600060045af1156117ce57505060006102c0511815610435576102c080602001516000825180602090136117ce57809190126117ce57806020036101000a8204905090509050156117ce575b60006004610320527fe8eda9df000000000000000000000000000000000000000000000000000000006103405261032060048060208461038001018260208501600060045af15050805182019150506102a051602082610380010152602081019050610280516020826103800101526020810190503060208261038001015260208101905061024051602082610380010152602081019050806103805261038090508051602001806104608284600060045af1156117ce57505060006000610460516104806000738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf5af1156117ce57610280516101c06102605160028082106117ce578082039050905060038110156117ce5760200201525b5b81516001018083528114156102c7575b50506009543b156117ce57600060006084634515cef3610260526101c051610280526101e0516102a052610200516102c05260a4356102e05261027c60006009545af1156117ce57600b5461026052602061032060246370a082316102a052306102c0526102bc610260515afa156117ce57601f3d11156117ce5760005061032051610280526020610340604463a9059cbb6102a052610140516102c052610280516102e0526102bc6000610260515af1156117ce57601f3d11156117ce5760005061034050005b6365b2489b81141561063157336101405261065c565b63e2ad025a8114156106575760843560a01c6117ce57602060846101403760005061065c565b610c26565b600060046101c0527f23b872dd000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af15050805182019150503360208261022001015260208101905030602082610220010152602081019050604435602082610220010152602081019050806102205261022090508051602001806102e08284600060045af1156117ce57505060206103c06102e0516103006000600160043560058110156117ce5702600401545af1156117ce5760203d80821115610738578061073a565b815b905090506103a0526103a08051602001806101608284600060045af1156117ce575050600061016051181561079c5761016080602001516000825180602090136117ce57809190126117ce57806020036101000a8204905090509050156117ce575b6044356101c0526040366101e0376003602435106107cc5760243560028082106117ce5780820390509050610200525b6003600435101561085257606036610220376101c05161022060043560038110156117ce576020020152602061038060a4632b6e993a61028052610220516102a052610240516102c052610260516102e05260006103005260016103205261029c6000600a545af1156117ce57601f3d11156117ce57600050610380516101c05261095b565b60043560028082106117ce57808203905090506101e05260006004610220527fe8eda9df000000000000000000000000000000000000000000000000000000006102405261022060048060208461028001018260208501600060045af1505080518201915050600160043560058110156117ce5702600401546020826102800101526020810190506101c05160208261028001015260208101905030602082610280010152602081019050600054602082610280010152602081019050806102805261028090508051602001806103608284600060045af1156117ce57505060006000610360516103806000738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf5af1156117ce575b60006101e05161020051808210156109735780610975565b815b9050905011156109c5576009543b156117ce57600060006084635b41b908610220526101e0516102405261020051610260526101c0516102805260006102a05261023c60006009545af1156117ce575b60206102c060246370a0823161024052306102605261025c60016102005160038110156117ce5702600101545afa156117ce57601f3d11156117ce576000506102c0516102205261020051610ba5576020610320608463517a55a361024052610220516102605260243560405181116117ce57610280526064356102a05260016102c05261025c6000600a545af1156117ce57601f3d11156117ce57600050610320516102205260006004610240527fa9059cbb00000000000000000000000000000000000000000000000000000000610260526102406004806020846102a001018260208501600060045af1505080518201915050610140516020826102a0010152602081019050610220516020826102a0010152602081019050806102a0526102a090508051602001806103408284600060045af1156117ce5750506020610400610340516103606000600160243560058110156117ce5702600401545af1156117ce5760203d80821115610b3c5780610b3e565b815b905090506103e0526103e08051602001806101608284600060045af1156117ce5750506000610160511815610ba05761016080602001516000825180602090136117ce57809190126117ce57806020036101000a8204905090509050156117ce575b610c24565b60643561022051106117ce57738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf3b156117ce576000600060646369328dec61024052600160243560058110156117ce570260040154610260526102205161028052610140516102a05261025c6000738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf5af1156117ce575b005b63e3bff5ce811415610c3c573361014052610c67565b634f626a31811415610c625760c43560a01c6117ce57602060c461014037600050610c67565b611009565b602061022060646323b872dd610160523361018052306101a0526004356101c05261017c6000600b545af1156117ce57601f3d11156117ce57600050610220506000610160526084356101805260a4356101a0526009543b156117ce5760006000608463ecb586a56101c0526004356101e052610160516102005261018051610220526101a051610240526101dc60006009545af1156117ce57602061026060246370a082316101e05230610200526101fc6001545afa156117ce57601f3d11156117ce57600050610260516101c0526024356101e052604435610200526064356102205260606103a060a463fce647366102a0526101c0516102c0526101e0516102e052610200516103005261022051610320526001610340526102bc6000600a545af1156117ce57605f3d11156117ce576000506103a0805161024052806020015161026052806040015161028052506102a060006003818352015b60006004610320527fa9059cbb000000000000000000000000000000000000000000000000000000006103405261032060048060208461038001018260208501600060045af1505080518201915050610140516020826103800101526020810190506102406102a05160038110156117ce576020020151602082610380010152602081019050806103805261038090508051602001806104208284600060045af1156117ce57505060206104e061042051610440600060016102a05160058110156117ce5702600401545af1156117ce5760203d80821115610ea75780610ea9565b815b905090506104c0526104c08051602001806102c08284600060045af1156117ce57505060006102c0511815610f0b576102c080602001516000825180602090136117ce57809190126117ce57806020036101000a8204905090509050156117ce575b5b8151600101808352811415610dc5575b50506102a060036002818352015b602061034060246370a082316102c052306102e0526102dc60016102a05160028082106117ce578082039050905060038110156117ce5702600101545afa156117ce57601f3d11156117ce57600050610340516101c052738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf3b156117ce576000600060646369328dec6102c05260016102a05160058110156117ce5702600401546102e0526101c0516103005261014051610320526102dc6000738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf5af1156117ce575b8151600101808352811415610f2a575b5050005b63f1dc3cc981141561101f57336101405261104a565b630fbcee6e8114156110455760643560a01c6117ce57602060646101403760005061104a565b61134f565b602061022060646323b872dd610160523361018052306101a0526004356101c05261017c6000600b545af1156117ce57601f3d11156117ce57600050610220506000610160526003602435106110b25760243560028082106117ce5780820390509050610160525b6009543b156117ce5760006000606463f1dc3cc9610180526004356101a052610160516101c05260006101e05261019c60006009545af1156117ce57602061022060246370a082316101a052306101c0526101bc60016101605160038110156117ce5702600101545afa156117ce57601f3d11156117ce576000506102205161018052610160516112ce576020610280608463517a55a36101a052610180516101c05260243560405181116117ce576101e052604435610200526001610220526101bc6000600a545af1156117ce57601f3d11156117ce57600050610280516101805260006004610200527fa9059cbb000000000000000000000000000000000000000000000000000000006102205261020060048060208461026001018260208501600060045af15050805182019150506101405160208261026001015260208101905061018051602082610260010152602081019050806102605261026090508051602001806103008284600060045af1156117ce57505060206103c0610300516103206000600160243560058110156117ce5702600401545af1156117ce5760203d808211156112655780611267565b815b905090506103a0526103a08051602001806101a08284600060045af1156117ce57505060006101a05118156112c9576101a080602001516000825180602090136117ce57809190126117ce57806020036101000a8204905090509050156117ce575b61134d565b60443561018051106117ce57738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf3b156117ce576000600060646369328dec6101a052600160243560058110156117ce5702600401546101c052610180516101e05261014051610200526101bc6000738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf5af1156117ce575b005b6385f11d1e811415611552576003600435602435808210156113715780611373565b815b9050905010156113da5760206102006064635e0d443f6101405260043560405181116117ce576101605260243560405181116117ce57610180526044356101a05261015c600a545afa156117ce57601f3d11156117ce576000506102005160005260206000f35b604435610140526040366101603760036024351061140a5760243560028082106117ce5780820390509050610180525b60036004351015611488576060366101a037610140516101a060043560038110156117ce57602002015260206102e06084633883e119610200526101a051610220526101c051610240526101e0516102605260016102805261021c600a545afa156117ce57601f3d11156117ce576000506102e051610140526114a0565b60043560028082106117ce5780820390509050610160525b6020610280606463556d6e9f6101c052610160516101e052610180516102005261014051610220526101dc6009545afa156117ce57601f3d11156117ce57600050610280516101a05261018051611543576020610260604463cc2b27d76101c0526101a0516101e05260243560405181116117ce57610200526101dc600a545afa156117ce57601f3d11156117ce576000506102605160005260206000f3611550565b6101a05160005260206000f35b005b637ede89c58114156116385760a43560011c6117ce5760043561014052602435610160526044356101805260206102a06084633883e1196101c052610140516101e0526101605161020052610180516102205260a435610240526101dc600a545afa156117ce57601f3d11156117ce576000506102a0516101a0526101a0516101c0526064356101e0526084356102005260206103006084633883e119610220526101c051610240526101e05161026052610200516102805260a4356102a05261023c6009545afa156117ce57601f3d11156117ce576000506103005160005260206000f35b634fb08c5e81141561172e576003602435106116a25760206101e06044634fb08c5e610140526004356101605260243560028082106117ce57808203905090506101805261015c6009545afa156117ce57601f3d11156117ce576000506101e05160005260206000f35b60206102006044634fb08c5e610160526004356101805260006101a05261017c6009545afa156117ce57601f3d11156117ce5760005061020051610140526020610200604463cc2b27d761016052610140516101805260243560405181116117ce576101a05261017c600a545afa156117ce57601f3d11156117ce576000506102005160005260206000f35b63c661065781141561175657600160043560038110156117ce57026001015460005260206000f35b63b9947eb081141561177e57600160043560058110156117ce57026004015460005260206000f35b6316f0115b8114156117965760095460005260206000f35b635d6362bb8114156117ae57600a5460005260206000f35b63fc0c546a8114156117c657600b5460005260206000f35b505b60006000fd5b600080fd5b6105a9611d7c036105a96000396105a9611d7c036000f35b600080fd00000000000000000000000092577943c7ac4accb35288ab2cc84d75fec330af000000000000000000000000445fe580ef8d70ff569ab36e80c647af338db351

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.