ETH Price: $3,393.75 (+1.63%)

Contract

0x1F50352628430D7573E19119cDbd6bdCca4d05C4
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Remove_liquidity...111964382020-11-05 9:39:231514 days ago1604569163IN
0x1F503526...Cca4d05C4
0 ETH0.0850900530.1
Remove_liquidity111907772020-11-04 12:54:471515 days ago1604494487IN
0x1F503526...Cca4d05C4
0 ETH0.0688637935
Add_liquidity110512022020-10-14 2:50:141537 days ago1602643814IN
0x1F503526...Cca4d05C4
0 ETH0.071133647
Add_liquidity110509142020-10-14 1:47:331537 days ago1602640053IN
0x1F503526...Cca4d05C4
0 ETH0.1553569984
Add_liquidity110507162020-10-14 1:04:581537 days ago1602637498IN
0x1F503526...Cca4d05C4
0 ETH0.0711149947
Add_liquidity110490892020-10-13 19:06:561537 days ago1602616016IN
0x1F503526...Cca4d05C4
0 ETH0.0945760260
Add_liquidity110441712020-10-13 0:59:341538 days ago1602550774IN
0x1F503526...Cca4d05C4
0 ETH0.0924744550
Add_liquidity110441632020-10-13 0:58:311538 days ago1602550711IN
0x1F503526...Cca4d05C4
0 ETH0.0513418127.76
Add_liquidity110418972020-10-12 16:43:571538 days ago1602521037IN
0x1F503526...Cca4d05C4
0 ETH0.2145059122.01
Add_liquidity110416632020-10-12 15:47:241538 days ago1602517644IN
0x1F503526...Cca4d05C4
0 ETH0.2136475110.1
Add_liquidity110384292020-10-12 3:52:461539 days ago1602474766IN
0x1F503526...Cca4d05C4
0 ETH0.0559974637
Add_liquidity110373902020-10-11 23:51:011539 days ago1602460261IN
0x1F503526...Cca4d05C4
0 ETH0.0331166922.1
Add_liquidity110363162020-10-11 20:04:591539 days ago1602446699IN
0x1F503526...Cca4d05C4
0 ETH0.0425679324
Add_liquidity110362002020-10-11 19:39:391539 days ago1602445179IN
0x1F503526...Cca4d05C4
0 ETH0.0443988924
Add_liquidity110361922020-10-11 19:38:161539 days ago1602445096IN
0x1F503526...Cca4d05C4
0 ETH0.0511493727.649
Add_liquidity110361542020-10-11 19:30:041539 days ago1602444604IN
0x1F503526...Cca4d05C4
0 ETH0.044325629
Add_liquidity110360992020-10-11 19:18:461539 days ago1602443926IN
0x1F503526...Cca4d05C4
0 ETH0.0363232524
Add_liquidity110348142020-10-11 14:42:241539 days ago1602427344IN
0x1F503526...Cca4d05C4
0 ETH0.090963252.7
Add_liquidity110348082020-10-11 14:40:371539 days ago1602427237IN
0x1F503526...Cca4d05C4
0 ETH0.0998694354
Add_liquidity110323472020-10-11 5:41:271540 days ago1602394887IN
0x1F503526...Cca4d05C4
0 ETH0.0544218836
Add_liquidity110313952020-10-11 2:03:571540 days ago1602381837IN
0x1F503526...Cca4d05C4
0 ETH0.0582562437
Add_liquidity110301042020-10-10 21:20:131540 days ago1602364813IN
0x1F503526...Cca4d05C4
0 ETH0.0535331734
Add_liquidity110300652020-10-10 21:11:231540 days ago1602364283IN
0x1F503526...Cca4d05C4
0 ETH0.054383936.336
Add_liquidity110294702020-10-10 19:05:101540 days ago1602356710IN
0x1F503526...Cca4d05C4
0 ETH0.0695839935
Add_liquidity110292622020-10-10 18:19:001540 days ago1602353940IN
0x1F503526...Cca4d05C4
0 ETH0.0748365550
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xbBC81d23...48873a5d3
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.1.0b17

Optimization Enabled:
N/A

Other Settings:
default evmVersion, None license

Contract Source Code (Vyper language format)

# A "zap" to deposit/withdraw Curve contract without too many transactions
# (c) Curve.Fi, 2020
from vyper.interfaces import ERC20

# External Contracts
contract yERC20:
    def totalSupply() -> uint256: constant
    def allowance(_owner: address, _spender: address) -> uint256: constant
    def transfer(_to: address, _value: uint256) -> bool: modifying
    def transferFrom(_from: address, _to: address, _value: uint256) -> bool: modifying
    def approve(_spender: address, _value: uint256) -> bool: modifying
    def name() -> string[64]: constant
    def symbol() -> string[32]: constant
    def decimals() -> uint256: constant
    def balanceOf(arg0: address) -> uint256: constant
    def deposit(depositAmount: uint256): modifying
    def withdraw(withdrawTokens: uint256): modifying
    def getPricePerFullShare() -> uint256: constant




# Tether transfer-only ABI
contract USDT:
    def transfer(_to: address, _value: uint256): modifying
    def transferFrom(_from: address, _to: address, _value: uint256): modifying


contract Curve:
    def add_liquidity(amounts: uint256[N_COINS], min_mint_amount: uint256): modifying
    def remove_liquidity(_amount: uint256, min_amounts: uint256[N_COINS]): modifying
    def remove_liquidity_imbalance(amounts: uint256[N_COINS], max_burn_amount: uint256): modifying
    def balances(i: int128) -> uint256: constant
    def A() -> uint256: constant
    def fee() -> uint256: constant
    def owner() -> address: constant


N_COINS: constant(int128) = 4
TETHERED: constant(bool[N_COINS]) = [False, False, True, False]
ZERO256: constant(uint256) = 0  # This hack is really bad XXX
ZEROS: constant(uint256[N_COINS]) = [ZERO256, ZERO256, ZERO256, ZERO256]  # <- change
LENDING_PRECISION: constant(uint256) = 10 ** 18
PRECISION: constant(uint256) = 10 ** 18
PRECISION_MUL: constant(uint256[N_COINS]) = [convert(1, uint256), convert(1000000000000, uint256), convert(1000000000000, uint256), convert(1, uint256)]
FEE_DENOMINATOR: constant(uint256) = 10 ** 10
FEE_IMPRECISION: constant(uint256) = 25 * 10 ** 8  # % of the fee

coins: public(address[N_COINS])
underlying_coins: public(address[N_COINS])
curve: public(address)
token: public(address)


@public
def __init__(_coins: address[N_COINS], _underlying_coins: address[N_COINS],
             _curve: address, _token: address):
    self.coins = _coins
    self.underlying_coins = _underlying_coins
    self.curve = _curve
    self.token = _token


@public
@nonreentrant('lock')
def add_liquidity(uamounts: uint256[N_COINS], min_mint_amount: uint256):
    tethered: bool[N_COINS] = TETHERED
    amounts: uint256[N_COINS] = ZEROS

    for i in range(N_COINS):
        uamount: uint256 = uamounts[i]

        if uamount > 0:
            # Transfer the underlying coin from owner
            if tethered[i]:
                USDT(self.underlying_coins[i]).transferFrom(
                    msg.sender, self, uamount)
            else:
                assert_modifiable(ERC20(self.underlying_coins[i])\
                    .transferFrom(msg.sender, self, uamount))

            # Mint if needed
            ERC20(self.underlying_coins[i]).approve(self.coins[i], uamount)
            yERC20(self.coins[i]).deposit(uamount)
            amounts[i] = yERC20(self.coins[i]).balanceOf(self)
            ERC20(self.coins[i]).approve(self.curve, amounts[i])

    Curve(self.curve).add_liquidity(amounts, min_mint_amount)

    tokens: uint256 = ERC20(self.token).balanceOf(self)
    assert_modifiable(ERC20(self.token).transfer(msg.sender, tokens))


@private
def _send_all(_addr: address, min_uamounts: uint256[N_COINS], one: int128):
    tethered: bool[N_COINS] = TETHERED

    for i in range(N_COINS):
        if (one < 0) or (i == one):
            _coin: address = self.coins[i]
            _balance: uint256 = yERC20(_coin).balanceOf(self)
            if _balance == 0:  # Do nothing for 0 coins
                continue
            yERC20(_coin).withdraw(_balance)

            _ucoin: address = self.underlying_coins[i]
            _uamount: uint256 = ERC20(_ucoin).balanceOf(self)
            assert _uamount >= min_uamounts[i], "Not enough coins withdrawn"

            if tethered[i]:
                USDT(_ucoin).transfer(_addr, _uamount)
            else:
                assert_modifiable(ERC20(_ucoin).transfer(_addr, _uamount))


@public
@nonreentrant('lock')
def remove_liquidity(_amount: uint256, min_uamounts: uint256[N_COINS]):
    zeros: uint256[N_COINS] = ZEROS

    assert_modifiable(ERC20(self.token).transferFrom(msg.sender, self, _amount))
    Curve(self.curve).remove_liquidity(_amount, zeros)

    self._send_all(msg.sender, min_uamounts, -1)


@public
@nonreentrant('lock')
def remove_liquidity_imbalance(uamounts: uint256[N_COINS], max_burn_amount: uint256):
    """
    Get max_burn_amount in, remove requested liquidity and transfer back what is left
    """
    tethered: bool[N_COINS] = TETHERED
    _token: address = self.token

    amounts: uint256[N_COINS] = uamounts
    for i in range(N_COINS):
        if amounts[i] > 0:
            rate: uint256 = yERC20(self.coins[i]).getPricePerFullShare()
            amounts[i] = amounts[i] * LENDING_PRECISION / rate

    # Transfrer max tokens in
    _tokens: uint256 = ERC20(_token).balanceOf(msg.sender)
    if _tokens > max_burn_amount:
        _tokens = max_burn_amount
    assert_modifiable(ERC20(_token).transferFrom(msg.sender, self, _tokens))

    Curve(self.curve).remove_liquidity_imbalance(amounts, max_burn_amount)

    # Transfer unused tokens back
    _tokens = ERC20(_token).balanceOf(self)
    assert_modifiable(ERC20(_token).transfer(msg.sender, _tokens))

    # Unwrap and transfer all the coins we've got
    self._send_all(msg.sender, ZEROS, -1)


@private
@constant
def _xp_mem(rates: uint256[N_COINS], _balances: uint256[N_COINS]) -> uint256[N_COINS]:
    result: uint256[N_COINS] = rates
    for i in range(N_COINS):
        result[i] = result[i] * _balances[i] / PRECISION
    return result


@private
@constant
def get_D(A: uint256, xp: uint256[N_COINS]) -> uint256:
    S: uint256 = 0
    for _x in xp:
        S += _x
    if S == 0:
        return 0

    Dprev: uint256 = 0
    D: uint256 = S
    Ann: uint256 = A * N_COINS
    for _i in range(255):
        D_P: uint256 = D
        for _x in xp:
            D_P = D_P * D / (_x * N_COINS + 1)  # +1 is to prevent /0
        Dprev = D
        D = (Ann * S + D_P * N_COINS) * D / ((Ann - 1) * D + (N_COINS + 1) * D_P)
        # Equality with the precision of 1
        if D > Dprev:
            if D - Dprev <= 1:
                break
        else:
            if Dprev - D <= 1:
                break
    return D


@private
@constant
def get_y(A: uint256, i: int128, _xp: uint256[N_COINS], D: uint256) -> uint256:
    """
    Calculate x[i] if one reduces D from being calculated for _xp to D

    Done by solving quadratic equation iteratively.
    x_1**2 + x1 * (sum' - (A*n**n - 1) * D / (A * n**n)) = D ** (n + 1) / (n ** (2 * n) * prod' * A)
    x_1**2 + b*x_1 = c

    x_1 = (x_1**2 + c) / (2*x_1 + b)
    """
    # x in the input is converted to the same price/precision

    assert (i >= 0) and (i < N_COINS)

    c: uint256 = D
    S_: uint256 = 0
    Ann: uint256 = A * N_COINS

    _x: uint256 = 0
    for _i in range(N_COINS):
        if _i != i:
            _x = _xp[_i]
        else:
            continue
        S_ += _x
        c = c * D / (_x * N_COINS)
    c = c * D / (Ann * N_COINS)
    b: uint256 = S_ + D / Ann
    y_prev: uint256 = 0
    y: uint256 = D
    for _i in range(255):
        y_prev = y
        y = (y*y + c) / (2 * y + b - D)
        # Equality with the precision of 1
        if y > y_prev:
            if y - y_prev <= 1:
                break
        else:
            if y_prev - y <= 1:
                break
    return y


@private
@constant
def _calc_withdraw_one_coin(_token_amount: uint256, i: int128, rates: uint256[N_COINS]) -> uint256:
    # First, need to calculate
    # * Get current D
    # * Solve Eqn against y_i for D - _token_amount
    crv: address = self.curve
    A: uint256 = Curve(crv).A()
    fee: uint256 = Curve(crv).fee() * N_COINS / (4 * (N_COINS - 1))
    fee += fee * FEE_IMPRECISION / FEE_DENOMINATOR  # Overcharge to account for imprecision
    precisions: uint256[N_COINS] = PRECISION_MUL
    total_supply: uint256 = ERC20(self.token).totalSupply()

    xp: uint256[N_COINS] = PRECISION_MUL
    S: uint256 = 0
    for j in range(N_COINS):
        xp[j] *= Curve(crv).balances(j)
        xp[j] = xp[j] * rates[j] / LENDING_PRECISION
        S += xp[j]

    D0: uint256 = self.get_D(A, xp)
    D1: uint256 = D0 - _token_amount * D0 / total_supply
    xp_reduced: uint256[N_COINS] = xp

    # xp = xp - fee * | xp * D1 / D0 - (xp - S * dD / D0 * (0, ... 1, ..0))|
    for j in range(N_COINS):
        dx_expected: uint256 = 0
        b_ideal: uint256 = xp[j] * D1 / D0
        b_expected: uint256 = xp[j]
        if j == i:
            b_expected -= S * (D0 - D1) / D0
        if b_ideal >= b_expected:
            dx_expected += (b_ideal - b_expected)
        else:
            dx_expected += (b_expected - b_ideal)
        xp_reduced[j] -= fee * dx_expected / FEE_DENOMINATOR

    dy: uint256 = xp_reduced[i] - self.get_y(A, i, xp_reduced, D1)
    dy = dy / precisions[i]

    return dy


@public
@constant
def calc_withdraw_one_coin(_token_amount: uint256, i: int128) -> uint256:
    rates: uint256[N_COINS] = ZEROS

    for j in range(N_COINS):
        rates[j] = yERC20(self.coins[j]).getPricePerFullShare()

    return self._calc_withdraw_one_coin(_token_amount, i, rates)


@public
@nonreentrant('lock')
def remove_liquidity_one_coin(_token_amount: uint256, i: int128, min_uamount: uint256, donate_dust: bool = False):
    """
    Remove _amount of liquidity all in a form of coin i
    """
    rates: uint256[N_COINS] = ZEROS
    _token: address = self.token

    for j in range(N_COINS):
        rates[j] = yERC20(self.coins[j]).getPricePerFullShare()

    dy: uint256 = self._calc_withdraw_one_coin(_token_amount, i, rates)
    assert dy >= min_uamount, "Not enough coins removed"

    assert_modifiable(
        ERC20(self.token).transferFrom(msg.sender, self, _token_amount))

    amounts: uint256[N_COINS] = ZEROS
    amounts[i] = dy * LENDING_PRECISION / rates[i]
    token_amount_before: uint256 = ERC20(_token).balanceOf(self)
    Curve(self.curve).remove_liquidity_imbalance(amounts, _token_amount)

    # Unwrap and transfer all the coins we've got
    self._send_all(msg.sender, ZEROS, i)

    if not donate_dust:
        # Transfer unused tokens back
        token_amount_after: uint256 = ERC20(_token).balanceOf(self)
        if token_amount_after > token_amount_before:
            assert_modifiable(ERC20(_token).transfer(
                msg.sender, token_amount_after - token_amount_before)
            )


@public
@nonreentrant('lock')
def withdraw_donated_dust():
    owner: address = Curve(self.curve).owner()
    assert msg.sender == owner

    _token: address = self.token
    assert_modifiable(
        ERC20(_token).transfer(owner, ERC20(_token).balanceOf(self)))

Contract Security Audit

Contract ABI

[{"outputs":[],"inputs":[{"type":"address[4]","name":"_coins"},{"type":"address[4]","name":"_underlying_coins"},{"type":"address","name":"_curve"},{"type":"address","name":"_token"}],"constant":false,"payable":false,"type":"constructor"},{"name":"add_liquidity","outputs":[],"inputs":[{"type":"uint256[4]","name":"uamounts"},{"type":"uint256","name":"min_mint_amount"}],"constant":false,"payable":false,"type":"function","gas":164560},{"name":"remove_liquidity","outputs":[],"inputs":[{"type":"uint256","name":"_amount"},{"type":"uint256[4]","name":"min_uamounts"}],"constant":false,"payable":false,"type":"function","gas":99521},{"name":"remove_liquidity_imbalance","outputs":[],"inputs":[{"type":"uint256[4]","name":"uamounts"},{"type":"uint256","name":"max_burn_amount"}],"constant":false,"payable":false,"type":"function","gas":120148},{"name":"calc_withdraw_one_coin","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"}],"constant":true,"payable":false,"type":"function","gas":3881601},{"name":"remove_liquidity_one_coin","outputs":[],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"},{"type":"uint256","name":"min_uamount"}],"constant":false,"payable":false,"type":"function"},{"name":"remove_liquidity_one_coin","outputs":[],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"},{"type":"uint256","name":"min_uamount"},{"type":"bool","name":"donate_dust"}],"constant":false,"payable":false,"type":"function"},{"name":"withdraw_donated_dust","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":63973},{"name":"coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"int128","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1680},{"name":"underlying_coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"int128","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1710},{"name":"curve","outputs":[{"type":"address","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1541},{"name":"token","outputs":[{"type":"address","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1571}]

Deployed Bytecode

0x600436101561000d576128e6565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05263029b2f3460005114156106945762ffffff54156100be57600080fd5b600162ffffff5534156100d057600080fd5b61014060008152600081602001526001816040015260008160600152506101c0600081526000816020015260008160400152600081606001525061024060006004818352015b6004610240516004811061012957600080fd5b602002013561026052600061026051111561056357610140610240516004811061015257600080fd5b6020020151156101fe57610240516004811061016d57600080fd5b600160c052602060c02001543b61018357600080fd5b610240516004811061019457600080fd5b600160c052602060c020015430186101ab57600080fd5b6000600060646323b872dd610360523361038052306103a052610260516103c05261037c600061024051600481106101e257600080fd5b600160c052602060c02001545af16101f957600080fd5b6102ad565b610240516004811061020f57600080fd5b600160c052602060c02001543b61022557600080fd5b610240516004811061023657600080fd5b600160c052602060c0200154301861024d57600080fd5b602061034060646323b872dd61028052336102a052306102c052610260516102e05261029c6000610240516004811061028557600080fd5b600160c052602060c02001545af161029c57600080fd5b600050610340516102ac57600080fd5b5b61024051600481106102be57600080fd5b600160c052602060c02001543b6102d457600080fd5b61024051600481106102e557600080fd5b600160c052602060c020015430186102fc57600080fd5b60206104c0604463095ea7b361042052610240516004811061031d57600080fd5b600060c052602060c020015461044052610260516104605261043c6000610240516004811061034b57600080fd5b600160c052602060c02001545af161036257600080fd5b6000506104c050610240516004811061037a57600080fd5b600060c052602060c02001543b61039057600080fd5b61024051600481106103a157600080fd5b600060c052602060c020015430186103b857600080fd5b60006000602463b6b55f256104e05261026051610500526104fc600061024051600481106103e557600080fd5b600060c052602060c02001545af16103fc57600080fd5b610240516004811061040d57600080fd5b600060c052602060c02001543b61042357600080fd5b610240516004811061043457600080fd5b600060c052602060c0200154301861044b57600080fd5b60206105e060246370a0823161056052306105805261057c610240516004811061047457600080fd5b600060c052602060c02001545afa61048b57600080fd5b6000506105e0516101c061024051600481106104a657600080fd5b602002015261024051600481106104bc57600080fd5b600060c052602060c02001543b6104d257600080fd5b61024051600481106104e357600080fd5b600060c052602060c020015430186104fa57600080fd5b60206106a0604463095ea7b361060052600254610620526101c0610240516004811061052557600080fd5b60200201516106405261061c6000610240516004811061054457600080fd5b600060c052602060c02001545af161055b57600080fd5b6000506106a0505b5b8151600101808352811415610116575b50506002543b61058357600080fd5b600254301861059157600080fd5b6000600060a463029b2f346106c0526106e06101c0805182528060200151826020015280604001518260400152806060015182606001525050608435610760526106dc60006002545af16105e457600080fd5b6003543b6105f157600080fd5b60035430186105ff57600080fd5b602061086060246370a082316107e05230610800526107fc6003545afa61062557600080fd5b600050610860516107c0526003543b61063d57600080fd5b600354301861064b57600080fd5b6020610920604463a9059cbb61088052336108a0526107c0516108c05261089c60006003545af161067b57600080fd5b6000506109205161068b57600080fd5b600062ffffff55005b600015610985575b610200526101405261016052610180526101a0526101c0526101e05261022060008152600081602001526001816040015260008160600152506102a060006004818352015b6101e0516102a0511460006101e05112171561096c576102a0516004811061070857600080fd5b600060c052602060c02001546102c0526102c0513b61072657600080fd5b6102c051301861073557600080fd5b602061038060246370a0823161030052306103205261031c6102c0515afa61075c57600080fd5b600050610380516102e0526102e05115156107765761096d565b6102c0513b61078457600080fd5b6102c051301861079357600080fd5b600060006024632e1a7d4d6103a0526102e0516103c0526103bc60006102c0515af16107be57600080fd5b6102a051600481106107cf57600080fd5b600160c052602060c020015461042052610420513b6107ed57600080fd5b6104205130186107fc57600080fd5b60206104e060246370a0823161046052306104805261047c610420515afa61082357600080fd5b6000506104e051610440526308c379a061050052602061052052601a610540527f4e6f7420656e6f75676820636f696e732077697468647261776e00000000000061056052610540506101606102a0516004811061088057600080fd5b602002015161044051101561089657608461051cfd5b6102206102a051600481106108aa57600080fd5b60200201511561090957610420513b6108c257600080fd5b6104205130186108d157600080fd5b60006000604463a9059cbb610660526101405161068052610440516106a05261067c6000610420515af161090457600080fd5b61096b565b610420513b61091757600080fd5b61042051301861092657600080fd5b6020610640604463a9059cbb6105a052610140516105c052610440516105e0526105bc6000610420515af161095a57600080fd5b6000506106405161096a57600080fd5b5b5b5b81516001018083528114156106e1575b505061020051565b637d49d8756000511415610b7c5762ffffff54156109a257600080fd5b600162ffffff5534156109b457600080fd5b61014060008152600081602001526000816040015260008160600152506003543b6109de57600080fd5b60035430186109ec57600080fd5b602061028060646323b872dd6101c052336101e0523061020052600435610220526101dc60006003545af1610a2057600080fd5b60005061028051610a3057600080fd5b6002543b610a3d57600080fd5b6002543018610a4b57600080fd5b6000600060a4637d49d8756102a0526004356102c0526102e06101408051825280602001518260200152806040015182604001528060600151826060015250506102bc60006002545af1610a9e57600080fd5b6101406103a0525b6103a0515160206103a051016103a0526103a06103a0511015610ac857610aa6565b63eb9ec6916103c052336103e05261040060248035825280602001358260200152806040013582604001528060600135826060015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104805261048051610460516104405161042051610400516103e0516006580161069c565b6103806103a0525b6103a0515260206103a051036103a0526101406103a051101515610b7057610b4d565b600050600062ffffff55005b6318a7bd766000511415610fed5762ffffff5415610b9957600080fd5b600162ffffff553415610bab57600080fd5b61014060008152600081602001526001816040015260008160600152506003546101c0526101e0600480358252806020013582602001528060400135826040015280606001358260600152505061026060006004818352015b60006101e06102605160048110610c1a57600080fd5b60200201511115610d26576102605160048110610c3657600080fd5b600060c052602060c02001543b610c4c57600080fd5b6102605160048110610c5d57600080fd5b600060c052602060c02001543018610c7457600080fd5b602061030060046377c7b8fc6102a0526102bc6102605160048110610c9857600080fd5b600060c052602060c02001545afa610caf57600080fd5b60005061030051610280526101e06102605160048110610cce57600080fd5b6020020151670de0b6b3a76400008082028215828483041417610cf057600080fd5b80905090509050610280518080610d0657600080fd5b8204905090506101e06102605160048110610d2057600080fd5b60200201525b5b8151600101808352811415610c04575b50506101c0513b610d4757600080fd5b6101c0513018610d5657600080fd5b60206103c060246370a0823161034052336103605261035c6101c0515afa610d7d57600080fd5b6000506103c05161032052608435610320511115610d9d57608435610320525b6101c0513b610dab57600080fd5b6101c0513018610dba57600080fd5b60206104a060646323b872dd6103e0523361040052306104205261032051610440526103fc60006101c0515af1610df057600080fd5b6000506104a051610e0057600080fd5b6002543b610e0d57600080fd5b6002543018610e1b57600080fd5b6000600060a46318a7bd766104c0526104e06101e0805182528060200151826020015280604001518260400152806060015182606001525050608435610560526104dc60006002545af1610e6e57600080fd5b6101c0513b610e7c57600080fd5b6101c0513018610e8b57600080fd5b602061064060246370a082316105c052306105e0526105dc6101c0515afa610eb257600080fd5b60005061064051610320526101c0513b610ecb57600080fd5b6101c0513018610eda57600080fd5b6020610700604463a9059cbb610660523361068052610320516106a05261067c60006101c0515af1610f0b57600080fd5b60005061070051610f1b57600080fd5b610140610720525b61072051516020610720510161072052610720610720511015610f4557610f23565b63eb9ec69161074052336107605261078060008152600081602001526000816040015260008160600152507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61080052610800516107e0516107c0516107a05161078051610760516006580161069c565b610700610720525b6107205152602061072051036107205261014061072051101515610fe157610fbe565b600050600062ffffff55005b60001561111e575b610240526101405261016052610180526101a0526101c0526101e05261020052610220526102606101408051825280602001518260200152806040015182604001528060600151826060015250506102e060006004818352015b6102606102e0516004811061106357600080fd5b60200201516101c06102e0516004811061107c57600080fd5b6020020151808202821582848304141761109557600080fd5b80905090509050670de0b6b3a764000080806110b057600080fd5b8204905090506102606102e051600481106110ca57600080fd5b60200201525b815160010180835281141561104f575b50506080610300525b6000610300511115156110fb57611117565b60206103005103610260015160206103005103610300526110e9565b6102405156005b600015611428575b6101e0526101405261016052610180526101a0526101c05260006102005261024060006004818352015b6020610240510261016001516102205261020080516102205181818301101561117857600080fd5b808201905090508152505b8151600101808352811415611150575b50506102005115156111ae5760006000526000516101e05156505b600061028052610200516102a05261014051600480820282158284830414176111d657600080fd5b809050905090506102c0526102e0600060ff818352015b6102a0516103005261034060006004818352015b60206103405102610160015161032052610300516102a051808202821582848304141761122d57600080fd5b80905090509050610320516004808202821582848304141761124e57600080fd5b80905090509050600181818301101561126657600080fd5b80820190509050808061127857600080fd5b820490509050610300525b8151600101808352811415611201575b50506102a051610280526102c0516102005180820282158284830414176112b957600080fd5b8090509050905061030051600480820282158284830414176112da57600080fd5b809050905090508181830110156112f057600080fd5b808201905090506102a051808202821582848304141761130f57600080fd5b809050905090506102c05160018082101561132957600080fd5b808203905090506102a051808202821582848304141761134857600080fd5b80905090509050600561030051808202821582848304141761136957600080fd5b8090509050905081818301101561137f57600080fd5b80820190509050808061139157600080fd5b8204905090506102a052610280516102a05111156113d85760016102a05161028051808210156113c057600080fd5b808203905090501115156113d357611414565b611403565b6001610280516102a051808210156113ef57600080fd5b8082039050905011151561140257611414565b5b5b81516001018083528114156111ed575b50506102a0516000526000516101e0515650005b600015611755575b610220526101405261016052610180526101a0526101c0526101e052610200526004610160511260006101605112151661146957600080fd5b6102005161024052600061026052610140516004808202821582848304141761149157600080fd5b809050905090506102805260006102a0526102c060006004818352015b610160516102c05118156114de576101806102c051600481106114d057600080fd5b60200201516102a0526114e3565b61155f565b61026080516102a0518181830110156114fb57600080fd5b808201905090508152506102405161020051808202821582848304141761152157600080fd5b809050905090506102a0516004808202821582848304141761154257600080fd5b80905090509050808061155457600080fd5b820490509050610240525b81516001018083528114156114ae575b50506102405161020051808202821582848304141761158d57600080fd5b8090509050905061028051600480820282158284830414176115ae57600080fd5b8090509050905080806115c057600080fd5b8204905090506102405261026051610200516102805180806115e157600080fd5b8204905090508181830110156115f657600080fd5b808201905090506102e0526000610300526102005161032052610340600060ff818352015b61032051610300526103205161032051808202821582848304141761163f57600080fd5b809050905090506102405181818301101561165957600080fd5b80820190509050600261032051808202821582848304141761167a57600080fd5b809050905090506102e05181818301101561169457600080fd5b8082019050905061020051808210156116ac57600080fd5b8082039050905080806116be57600080fd5b82049050905061032052610300516103205111156117055760016103205161030051808210156116ed57600080fd5b8082039050905011151561170057611741565b611730565b600161030051610320518082101561171c57600080fd5b8082039050905011151561172f57611741565b5b5b815160010180835281141561161b575b505061032051600052600051610220515650005b600015611f0b575b610200526101405261016052610180526101a0526101c0526101e05260025461022052610220513b61178e57600080fd5b61022051301861179d57600080fd5b60206102c0600463f446c1d06102605261027c610220515afa6117bf57600080fd5b6000506102c05161024052610220513b6117d857600080fd5b6102205130186117e757600080fd5b6020610360600463ddca3f436103005261031c610220515afa61180957600080fd5b600050610360516004808202821582848304141761182657600080fd5b80905090509050600c808061183a57600080fd5b8204905090506102e0526102e080516102e051639502f900808202821582848304141761186657600080fd5b809050905090506402540be400808061187e57600080fd5b82049050905081818301101561189357600080fd5b808201905090508152506103806001815264e8d4a51000816020015264e8d4a51000816040015260018160600152506003543b6118cf57600080fd5b60035430186118dd57600080fd5b602061048060046318160ddd6104205261043c6003545afa6118fe57600080fd5b60005061048051610400526104a06001815264e8d4a51000816020015264e8d4a510008160400152600181606001525060006105205261054060006004818352015b6104a0610540516004811061195457600080fd5b602002018051610220513b61196857600080fd5b61022051301861197757600080fd5b60206105e0602463065a80d861056052610540516105805261057c610220515afa6119a157600080fd5b6000506105e05180820282158284830414176119bc57600080fd5b809050905090508152506104a061054051600481106119da57600080fd5b602002015161018061054051600481106119f357600080fd5b60200201518082028215828483041417611a0c57600080fd5b80905090509050670de0b6b3a76400008080611a2757600080fd5b8204905090506104a06105405160048110611a4157600080fd5b602002015261052080516104a06105405160048110611a5f57600080fd5b6020020151818183011015611a7357600080fd5b808201905090508152505b8151600101808352811415611940575b5050610140610620525b61062051516020610620510161062052610620610620511015611aba57611a98565b637b7241516106405261024051610660526106806104a08051825280602001518260200152806040015182604001528060600151826060015250506106e0516106c0516106a051610680516106605160065801611126565b61074052610600610620525b6106205152602061062051036106205261014061062051101515611b4157611b1e565b61074051610600526106005161014051610600518082028215828483041417611b6957600080fd5b80905090509050610400518080611b7f57600080fd5b82049050905080821015611b9257600080fd5b80820390509050610760526107806104a080518252806020015182602001528060400151826040015280606001518260600152505061080060006004818352015b6000610820526104a06108005160048110611bed57600080fd5b6020020151610760518082028215828483041417611c0a57600080fd5b80905090509050610600518080611c2057600080fd5b820490509050610840526104a06108005160048110611c3e57600080fd5b60200201516108605261016051610800511415611cc257610860805161052051610600516107605180821015611c7357600080fd5b808203905090508082028215828483041417611c8e57600080fd5b80905090509050610600518080611ca457600080fd5b82049050905080821015611cb757600080fd5b808203905090508152505b6108605161084051101515611d10576108208051610840516108605180821015611ceb57600080fd5b80820390509050818183011015611d0157600080fd5b80820190509050815250611d4b565b6108208051610860516108405180821015611d2a57600080fd5b80820390509050818183011015611d4057600080fd5b808201905090508152505b6107806108005160048110611d5f57600080fd5b6020020180516102e051610820518082028215828483041417611d8157600080fd5b809050905090506402540be4008080611d9957600080fd5b82049050905080821015611dac57600080fd5b808203905090508152505b8151600101808352811415611bd3575b50506107806101605160048110611ddd57600080fd5b60200201516101406108a0525b6108a0515160206108a051016108a0526108a06108a0511015611e0c57611dea565b638643731f6108c052610240516108e0526101605161090052610920610780805182528060200151826020015280604001518260400152806060015182606001525050610760516109a0526109a05161098051610960516109405161092051610900516108e05160065801611430565b610a00526108806108a0525b6108a0515260206108a051036108a0526101406108a051101515611eab57611e88565b610a005180821015611ebc57600080fd5b8082039050905061088052610880516103806101605160048110611edf57600080fd5b60200201518080611eef57600080fd5b8204905090506108805261088051600052600051610200515650005b63cc2b27d760005114156120c4573415611f2457600080fd5b60605160243580604051901315611f3a57600080fd5b8091901215611f4857600080fd5b5061014060008152600081602001526000816040015260008160600152506101c060006004818352015b6101c05160048110611f8357600080fd5b600060c052602060c02001543b611f9957600080fd5b6101c05160048110611faa57600080fd5b600060c052602060c02001543018611fc157600080fd5b602061024060046377c7b8fc6101e0526101fc6101c05160048110611fe557600080fd5b600060c052602060c02001545afa611ffc57600080fd5b600050610240516101406101c0516004811061201757600080fd5b60200201525b8151600101808352811415611f72575b50506101405161016051610180516101a05163800c1cbc610280526004356102a0526024356102c0526102e06101408051825280602001518260200152806040015182604001528060600151826060015250506103405161032051610300516102e0516102c0516102a0516006580161175d565b6103a0526101a0526101805261016052610140526103a05160005260206000f350005b631a4d01d260005114156120dd57600061014052612113565b63517a55a3600051141561210b57606435600281106120fb57600080fd5b6020606461014037600050612113565b600015612690575b62ffffff541561212257600080fd5b600162ffffff55341561213457600080fd5b6060516024358060405190131561214a57600080fd5b809190121561215857600080fd5b5061016060008152600081602001526000816040015260008160600152506003546101e05261020060006004818352015b610200516004811061219a57600080fd5b600060c052602060c02001543b6121b057600080fd5b61020051600481106121c157600080fd5b600060c052602060c020015430186121d857600080fd5b602061028060046377c7b8fc6102205261023c61020051600481106121fc57600080fd5b600060c052602060c02001545afa61221357600080fd5b60005061028051610160610200516004811061222e57600080fd5b60200201525b8151600101808352811415612189575b50506101406102c0525b6102c0515160206102c051016102c0526102c06102c05110156122705761224e565b63800c1cbc6102e05260043561030052602435610320526103406101608051825280602001518260200152806040015182604001528060600151826060015250506103a05161038051610360516103405161032051610300516006580161175d565b610400526102a06102c0525b6102c0515260206102c051036102c0526101406102c051101515612301576122de565b610400516102a0526308c379a0610420526020610440526018610460527f4e6f7420656e6f75676820636f696e732072656d6f766564000000000000000061048052610460506044356102a051101561235b57608461043cfd5b6003543b61236857600080fd5b600354301861237657600080fd5b602061058060646323b872dd6104c052336104e0523061050052600435610520526104dc60006003545af16123aa57600080fd5b600050610580516123ba57600080fd5b6105a060008152600081602001526000816040015260008160600152506102a051670de0b6b3a764000080820282158284830414176123f857600080fd5b809050905090506101606024356004811061241257600080fd5b6020020151808061242257600080fd5b8204905090506105a06024356004811061243b57600080fd5b60200201526101e0513b61244e57600080fd5b6101e051301861245d57600080fd5b60206106c060246370a0823161064052306106605261065c6101e0515afa61248457600080fd5b6000506106c051610620526002543b61249c57600080fd5b60025430186124aa57600080fd5b6000600060a46318a7bd766106e0526107006105a0805182528060200151826020015280604001518260400152806060015182606001525050600435610780526106fc60006002545af16124fd57600080fd5b6101406107e0525b6107e0515160206107e051016107e0526107e06107e051101561252757612505565b63eb9ec69161080052336108205261084060008152600081602001526000816040015260008160600152506024356108c0526108c0516108a051610880516108605161084051610820516006580161069c565b6107c06107e0525b6107e0515260206107e051036107e0526101406107e0511015156125a557612582565b600050610140511515612687576101e0513b6125c057600080fd5b6101e05130186125cf57600080fd5b60206109c060246370a0823161094052306109605261095c6101e0515afa6125f657600080fd5b6000506109c0516109205261062051610920511115612686576101e0513b61261d57600080fd5b6101e051301861262c57600080fd5b6020610a80604463a9059cbb6109e05233610a005261092051610620518082101561265657600080fd5b80820390509050610a20526109fc60006101e0515af161267557600080fd5b600050610a805161268557600080fd5b5b5b600062ffffff55005b636c956a5460005114156127cd5762ffffff54156126ad57600080fd5b600162ffffff5534156126bf57600080fd5b6002543b6126cc57600080fd5b60025430186126da57600080fd5b60206101c06004638da5cb5b6101605261017c6002545afa6126fb57600080fd5b6000506101c0516101405261014051331461271557600080fd5b6003546101e0526101e0513b61272a57600080fd5b6101e051301861273957600080fd5b6020610340604463a9059cbb6102a052610140516102c0526101e0513b61275f57600080fd5b6101e051301861276e57600080fd5b602061028060246370a0823161020052306102205261021c6101e0515afa61279557600080fd5b600050610280516102e0526102bc60006101e0515af16127b457600080fd5b600050610340516127c457600080fd5b600062ffffff55005b6323746eb860005114156128325734156127e657600080fd5b606051600435806040519013156127fc57600080fd5b809190121561280a57600080fd5b506004356004811061281b57600080fd5b600060c052602060c020015460005260206000f350005b63b739953e600051141561289757341561284b57600080fd5b6060516004358060405190131561286157600080fd5b809190121561286f57600080fd5b506004356004811061288057600080fd5b600160c052602060c020015460005260206000f350005b637165485d60005114156128be5734156128b057600080fd5b60025460005260206000f350005b63fc0c546a60005114156128e55734156128d757600080fd5b60035460005260206000f350005b5b60006000fd

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.