POL Price: $0.217688 (-0.29%)
Gas: 30 GWei
 

Overview

POL Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0 POL

POL Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Exchange_underly...706457892025-04-23 6:55:4354 mins ago1745391343IN
Curve: ATriCrypto3 Zap
0 POL0.0009912627.43000006
Exchange_underly...706457772025-04-23 6:55:1954 mins ago1745391319IN
Curve: ATriCrypto3 Zap
0 POL0.0009916227.44000006
Add_liquidity706437942025-04-23 5:45:032 hrs ago1745387103IN
Curve: ATriCrypto3 Zap
0 POL0.0268233330.00000004
Exchange_underly...706381522025-04-23 2:25:085 hrs ago1745375108IN
Curve: ATriCrypto3 Zap
0 POL0.0331018134.0262761
Exchange_underly...706377082025-04-23 2:09:245 hrs ago1745374164IN
Curve: ATriCrypto3 Zap
0 POL0.0345298834.25196152
Remove_liquidity...706361852025-04-23 1:15:176 hrs ago1745370917IN
Curve: ATriCrypto3 Zap
0 POL0.024969330
Exchange_underly...706360522025-04-23 1:10:356 hrs ago1745370635IN
Curve: ATriCrypto3 Zap
0 POL0.0477463351.53052646
Exchange_underly...706360212025-04-23 1:09:296 hrs ago1745370569IN
Curve: ATriCrypto3 Zap
0 POL0.0421360442.77701555
Add_liquidity706309392025-04-22 22:09:219 hrs ago1745359761IN
Curve: ATriCrypto3 Zap
0 POL0.0189686527.40007259
Remove_liquidity...706304892025-04-22 21:53:239 hrs ago1745358803IN
Curve: ATriCrypto3 Zap
0 POL0.0227364127.40000493
Exchange_underly...706304352025-04-22 21:51:299 hrs ago1745358689IN
Curve: ATriCrypto3 Zap
0 POL0.0719459369.4445398
Exchange_underly...706303182025-04-22 21:47:1910 hrs ago1745358439IN
Curve: ATriCrypto3 Zap
0 POL0.0546676751.52229487
Exchange_underly...706302592025-04-22 21:45:1510 hrs ago1745358315IN
Curve: ATriCrypto3 Zap
0 POL0.0393014934.02703406
Add_liquidity706300842025-04-22 21:39:0310 hrs ago1745357943IN
Curve: ATriCrypto3 Zap
0 POL0.019775730.00000013
Exchange_underly...706298532025-04-22 21:30:5110 hrs ago1745357451IN
Curve: ATriCrypto3 Zap
0 POL0.0387429334.01
Exchange_underly...706298492025-04-22 21:30:4310 hrs ago1745357443IN
Curve: ATriCrypto3 Zap
0 POL0.0383098434.0695509
Exchange_underly...706296232025-04-22 21:22:4310 hrs ago1745356963IN
Curve: ATriCrypto3 Zap
0 POL0.0528967651.66289704
Exchange_underly...706295572025-04-22 21:20:2310 hrs ago1745356823IN
Curve: ATriCrypto3 Zap
0 POL0.0394997634.0833986
Remove_liquidity...706196782025-04-22 15:29:3316 hrs ago1745335773IN
Curve: ATriCrypto3 Zap
0 POL0.0479515758.44866194
Exchange_underly...706195712025-04-22 15:25:4716 hrs ago1745335547IN
Curve: ATriCrypto3 Zap
0 POL0.0597679169.15501744
Remove_liquidity...706073132025-04-22 8:07:3623 hrs ago1745309256IN
Curve: ATriCrypto3 Zap
0 POL0.0254877130.0219942
Exchange_underly...706064442025-04-22 7:36:1224 hrs ago1745307372IN
Curve: ATriCrypto3 Zap
0 POL0.049592742.76814566
Exchange_underly...706063272025-04-22 7:32:0424 hrs ago1745307124IN
Curve: ATriCrypto3 Zap
0 POL0.0399662734.77030234
Exchange_underly...706063162025-04-22 7:31:4024 hrs ago1745307100IN
Curve: ATriCrypto3 Zap
0 POL0.03840434.03101847
Exchange_underly...706059082025-04-22 7:16:4224 hrs ago1745306202IN
Curve: ATriCrypto3 Zap
0 POL0.0330915134.34995513
View all transactions

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x3Fa8ebd5...94eA99aBC
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.15

Optimization Enabled:
N/A

Other Settings:
default evmVersion, 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

API
[{"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}]

Deployed Bytecode

0x600436101561000d576117c8565b600035601c526f7fffffffffffffffffffffffffffffff604052600051346117ce576384738499811415610045573361014052610070565b63cf2b51b881141561006b5760c43560a01c6117ce57602060c461014037600050610070565b61061b565b60e0366101603761024060006003818352015b60046102405160058110156117ce5760200201356102605260006102605118156102405760016102405160058110156117ce5702600401546102805260006004610300527f23b872dd000000000000000000000000000000000000000000000000000000006103205261030060048060208461036001018260208501600060045af1505080518201915050336020826103600101526020810190503060208261036001015260208101905061026051602082610360010152602081019050806103605261036090508051602001806104208284600060045af1156117ce5750506020610500610420516104406000610280515af1156117ce5760203d8082111561018d578061018f565b815b905090506104e0526104e08051602001806102a08284600060045af1156117ce57505060006102a05118156101f1576102a080602001516000825180602090136117ce57809190126117ce57806020036101000a8204905090509050156117ce575b602061038060246370a0823161030052306103205261031c610280515afa156117ce57601f3d11156117ce57600050610380516101606102405160038110156117ce5760200201526001610220525b5b8151600101808352811415610083575b505061022051156102b457602061034060a4632b6e993a61024052610160516102605261018051610280526101a0516102a05260006102c05260016102e05261025c6000600a545af1156117ce57601f3d11156117ce57600050610340516101c0525b6000546102405261026060036002818352015b60046102605160058110156117ce5760200201356102805260006102805118156105425760016102605160058110156117ce5702600401546102a05260006004610320527f23b872dd000000000000000000000000000000000000000000000000000000006103405261032060048060208461038001018260208501600060045af1505080518201915050336020826103800101526020810190503060208261038001015260208101905061028051602082610380010152602081019050806103805261038090508051602001806104408284600060045af1156117ce57505060206105206104405161046060006102a0515af1156117ce5760203d808211156103d157806103d3565b815b90509050610500526105008051602001806102c08284600060045af1156117ce57505060006102c0511815610435576102c080602001516000825180602090136117ce57809190126117ce57806020036101000a8204905090509050156117ce575b60006004610320527fe8eda9df000000000000000000000000000000000000000000000000000000006103405261032060048060208461038001018260208501600060045af15050805182019150506102a051602082610380010152602081019050610280516020826103800101526020810190503060208261038001015260208101905061024051602082610380010152602081019050806103805261038090508051602001806104608284600060045af1156117ce57505060006000610460516104806000738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf5af1156117ce57610280516101c06102605160028082106117ce578082039050905060038110156117ce5760200201525b5b81516001018083528114156102c7575b50506009543b156117ce57600060006084634515cef3610260526101c051610280526101e0516102a052610200516102c05260a4356102e05261027c60006009545af1156117ce57600b5461026052602061032060246370a082316102a052306102c0526102bc610260515afa156117ce57601f3d11156117ce5760005061032051610280526020610340604463a9059cbb6102a052610140516102c052610280516102e0526102bc6000610260515af1156117ce57601f3d11156117ce5760005061034050005b6365b2489b81141561063157336101405261065c565b63e2ad025a8114156106575760843560a01c6117ce57602060846101403760005061065c565b610c26565b600060046101c0527f23b872dd000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af15050805182019150503360208261022001015260208101905030602082610220010152602081019050604435602082610220010152602081019050806102205261022090508051602001806102e08284600060045af1156117ce57505060206103c06102e0516103006000600160043560058110156117ce5702600401545af1156117ce5760203d80821115610738578061073a565b815b905090506103a0526103a08051602001806101608284600060045af1156117ce575050600061016051181561079c5761016080602001516000825180602090136117ce57809190126117ce57806020036101000a8204905090509050156117ce575b6044356101c0526040366101e0376003602435106107cc5760243560028082106117ce5780820390509050610200525b6003600435101561085257606036610220376101c05161022060043560038110156117ce576020020152602061038060a4632b6e993a61028052610220516102a052610240516102c052610260516102e05260006103005260016103205261029c6000600a545af1156117ce57601f3d11156117ce57600050610380516101c05261095b565b60043560028082106117ce57808203905090506101e05260006004610220527fe8eda9df000000000000000000000000000000000000000000000000000000006102405261022060048060208461028001018260208501600060045af1505080518201915050600160043560058110156117ce5702600401546020826102800101526020810190506101c05160208261028001015260208101905030602082610280010152602081019050600054602082610280010152602081019050806102805261028090508051602001806103608284600060045af1156117ce57505060006000610360516103806000738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf5af1156117ce575b60006101e05161020051808210156109735780610975565b815b9050905011156109c5576009543b156117ce57600060006084635b41b908610220526101e0516102405261020051610260526101c0516102805260006102a05261023c60006009545af1156117ce575b60206102c060246370a0823161024052306102605261025c60016102005160038110156117ce5702600101545afa156117ce57601f3d11156117ce576000506102c0516102205261020051610ba5576020610320608463517a55a361024052610220516102605260243560405181116117ce57610280526064356102a05260016102c05261025c6000600a545af1156117ce57601f3d11156117ce57600050610320516102205260006004610240527fa9059cbb00000000000000000000000000000000000000000000000000000000610260526102406004806020846102a001018260208501600060045af1505080518201915050610140516020826102a0010152602081019050610220516020826102a0010152602081019050806102a0526102a090508051602001806103408284600060045af1156117ce5750506020610400610340516103606000600160243560058110156117ce5702600401545af1156117ce5760203d80821115610b3c5780610b3e565b815b905090506103e0526103e08051602001806101608284600060045af1156117ce5750506000610160511815610ba05761016080602001516000825180602090136117ce57809190126117ce57806020036101000a8204905090509050156117ce575b610c24565b60643561022051106117ce57738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf3b156117ce576000600060646369328dec61024052600160243560058110156117ce570260040154610260526102205161028052610140516102a05261025c6000738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf5af1156117ce575b005b63e3bff5ce811415610c3c573361014052610c67565b634f626a31811415610c625760c43560a01c6117ce57602060c461014037600050610c67565b611009565b602061022060646323b872dd610160523361018052306101a0526004356101c05261017c6000600b545af1156117ce57601f3d11156117ce57600050610220506000610160526084356101805260a4356101a0526009543b156117ce5760006000608463ecb586a56101c0526004356101e052610160516102005261018051610220526101a051610240526101dc60006009545af1156117ce57602061026060246370a082316101e05230610200526101fc6001545afa156117ce57601f3d11156117ce57600050610260516101c0526024356101e052604435610200526064356102205260606103a060a463fce647366102a0526101c0516102c0526101e0516102e052610200516103005261022051610320526001610340526102bc6000600a545af1156117ce57605f3d11156117ce576000506103a0805161024052806020015161026052806040015161028052506102a060006003818352015b60006004610320527fa9059cbb000000000000000000000000000000000000000000000000000000006103405261032060048060208461038001018260208501600060045af1505080518201915050610140516020826103800101526020810190506102406102a05160038110156117ce576020020151602082610380010152602081019050806103805261038090508051602001806104208284600060045af1156117ce57505060206104e061042051610440600060016102a05160058110156117ce5702600401545af1156117ce5760203d80821115610ea75780610ea9565b815b905090506104c0526104c08051602001806102c08284600060045af1156117ce57505060006102c0511815610f0b576102c080602001516000825180602090136117ce57809190126117ce57806020036101000a8204905090509050156117ce575b5b8151600101808352811415610dc5575b50506102a060036002818352015b602061034060246370a082316102c052306102e0526102dc60016102a05160028082106117ce578082039050905060038110156117ce5702600101545afa156117ce57601f3d11156117ce57600050610340516101c052738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf3b156117ce576000600060646369328dec6102c05260016102a05160058110156117ce5702600401546102e0526101c0516103005261014051610320526102dc6000738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf5af1156117ce575b8151600101808352811415610f2a575b5050005b63f1dc3cc981141561101f57336101405261104a565b630fbcee6e8114156110455760643560a01c6117ce57602060646101403760005061104a565b61134f565b602061022060646323b872dd610160523361018052306101a0526004356101c05261017c6000600b545af1156117ce57601f3d11156117ce57600050610220506000610160526003602435106110b25760243560028082106117ce5780820390509050610160525b6009543b156117ce5760006000606463f1dc3cc9610180526004356101a052610160516101c05260006101e05261019c60006009545af1156117ce57602061022060246370a082316101a052306101c0526101bc60016101605160038110156117ce5702600101545afa156117ce57601f3d11156117ce576000506102205161018052610160516112ce576020610280608463517a55a36101a052610180516101c05260243560405181116117ce576101e052604435610200526001610220526101bc6000600a545af1156117ce57601f3d11156117ce57600050610280516101805260006004610200527fa9059cbb000000000000000000000000000000000000000000000000000000006102205261020060048060208461026001018260208501600060045af15050805182019150506101405160208261026001015260208101905061018051602082610260010152602081019050806102605261026090508051602001806103008284600060045af1156117ce57505060206103c0610300516103206000600160243560058110156117ce5702600401545af1156117ce5760203d808211156112655780611267565b815b905090506103a0526103a08051602001806101a08284600060045af1156117ce57505060006101a05118156112c9576101a080602001516000825180602090136117ce57809190126117ce57806020036101000a8204905090509050156117ce575b61134d565b60443561018051106117ce57738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf3b156117ce576000600060646369328dec6101a052600160243560058110156117ce5702600401546101c052610180516101e05261014051610200526101bc6000738dff5e27ea6b7ac08ebfdf9eb090f32ee9a30fcf5af1156117ce575b005b6385f11d1e811415611552576003600435602435808210156113715780611373565b815b9050905010156113da5760206102006064635e0d443f6101405260043560405181116117ce576101605260243560405181116117ce57610180526044356101a05261015c600a545afa156117ce57601f3d11156117ce576000506102005160005260206000f35b604435610140526040366101603760036024351061140a5760243560028082106117ce5780820390509050610180525b60036004351015611488576060366101a037610140516101a060043560038110156117ce57602002015260206102e06084633883e119610200526101a051610220526101c051610240526101e0516102605260016102805261021c600a545afa156117ce57601f3d11156117ce576000506102e051610140526114a0565b60043560028082106117ce5780820390509050610160525b6020610280606463556d6e9f6101c052610160516101e052610180516102005261014051610220526101dc6009545afa156117ce57601f3d11156117ce57600050610280516101a05261018051611543576020610260604463cc2b27d76101c0526101a0516101e05260243560405181116117ce57610200526101dc600a545afa156117ce57601f3d11156117ce576000506102605160005260206000f3611550565b6101a05160005260206000f35b005b637ede89c58114156116385760a43560011c6117ce5760043561014052602435610160526044356101805260206102a06084633883e1196101c052610140516101e0526101605161020052610180516102205260a435610240526101dc600a545afa156117ce57601f3d11156117ce576000506102a0516101a0526101a0516101c0526064356101e0526084356102005260206103006084633883e119610220526101c051610240526101e05161026052610200516102805260a4356102a05261023c6009545afa156117ce57601f3d11156117ce576000506103005160005260206000f35b634fb08c5e81141561172e576003602435106116a25760206101e06044634fb08c5e610140526004356101605260243560028082106117ce57808203905090506101805261015c6009545afa156117ce57601f3d11156117ce576000506101e05160005260206000f35b60206102006044634fb08c5e610160526004356101805260006101a05261017c6009545afa156117ce57601f3d11156117ce5760005061020051610140526020610200604463cc2b27d761016052610140516101805260243560405181116117ce576101a05261017c600a545afa156117ce57601f3d11156117ce576000506102005160005260206000f35b63c661065781141561175657600160043560038110156117ce57026001015460005260206000f35b63b9947eb081141561177e57600160043560058110156117ce57026004015460005260206000f35b6316f0115b8114156117965760095460005260206000f35b635d6362bb8114156117ae57600a5460005260206000f35b63fc0c546a8114156117c657600b5460005260206000f35b505b60006000fd5b600080fd

Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.