ETH Price: $1,875.81 (+3.26%)
Gas: 20 Gwei
 

Overview

ETH Balance

491.533469792232580493 ETH

Eth Value

$922,023.40 (@ $1,875.81/ETH)

Multi Chain

Transaction Hash
Method
Block
From
To
Value
0x1824dbd3113aeac66e01da141c197594760c5b003c1e8756ded978b8a80bbd88Claim(pending)2023-05-28 1:25:3010 days 6 hrs ago1685237130IN
Ribbon Finance: Fee Distributor
0 ETH(Pending)(Pending)
Claim174131242023-06-05 8:25:471 day 23 hrs ago1685953547IN
Ribbon Finance: Fee Distributor
0 ETH0.003649620.65504874
Claim174065382023-06-04 10:04:472 days 22 hrs ago1685873087IN
Ribbon Finance: Fee Distributor
0 ETH0.0022895821.44833134
Claim174057572023-06-04 7:25:473 days 48 mins ago1685863547IN
Ribbon Finance: Fee Distributor
0 ETH0.0044501718.61179016
Claim173986222023-06-03 7:17:474 days 56 mins ago1685776667IN
Ribbon Finance: Fee Distributor
0 ETH0.0024611219
Claim173982222023-06-03 5:57:234 days 2 hrs ago1685771843IN
Ribbon Finance: Fee Distributor
0 ETH0.0049179221
Claim173950752023-06-02 19:20:114 days 12 hrs ago1685733611IN
Ribbon Finance: Fee Distributor
0 ETH0.0020051124.83303247
Claim173885792023-06-01 21:20:115 days 10 hrs ago1685654411IN
Ribbon Finance: Fee Distributor
0 ETH0.0041834338.09702744
Claim173868932023-06-01 15:36:595 days 16 hrs ago1685633819IN
Ribbon Finance: Fee Distributor
0 ETH0.0202902948.17545131
Claim173810842023-05-31 20:00:356 days 12 hrs ago1685563235IN
Ribbon Finance: Fee Distributor
0 ETH0.0054209756.26509927
Claim173804512023-05-31 17:52:476 days 14 hrs ago1685555567IN
Ribbon Finance: Fee Distributor
0 ETH0.007327657.92483733
Claim173774542023-05-31 7:44:477 days 29 mins ago1685519087IN
Ribbon Finance: Fee Distributor
0 ETH0.0065728436.07941962
Claim173749732023-05-30 23:21:117 days 8 hrs ago1685488871IN
Ribbon Finance: Fee Distributor
0 ETH0.0126735734.2555071
Claim173729372023-05-30 16:30:597 days 15 hrs ago1685464259IN
Ribbon Finance: Fee Distributor
0 ETH0.016576470.2247394
Claim173648702023-05-29 13:13:598 days 19 hrs ago1685366039IN
Ribbon Finance: Fee Distributor
0 ETH0.0033988439.5467213
Claim173640352023-05-29 10:24:238 days 21 hrs ago1685355863IN
Ribbon Finance: Fee Distributor
0 ETH0.0037362227.0829127
Claim173615752023-05-29 2:06:599 days 6 hrs ago1685326019IN
Ribbon Finance: Fee Distributor
0 ETH0.0056576953
Claim173610372023-05-29 0:18:119 days 7 hrs ago1685319491IN
Ribbon Finance: Fee Distributor
0 ETH0.0030583829.63409482
Claim173519372023-05-27 17:40:2310 days 14 hrs ago1685209223IN
Ribbon Finance: Fee Distributor
0 ETH0.0062012725.56381943
Claim173471302023-05-27 1:28:4711 days 6 hrs ago1685150927IN
Ribbon Finance: Fee Distributor
0 ETH0.0044213629.07436901
Claim173428712023-05-26 11:06:2311 days 21 hrs ago1685099183IN
Ribbon Finance: Fee Distributor
0 ETH0.0020403625.26958685
Claim173399262023-05-26 1:11:2312 days 7 hrs ago1685063483IN
Ribbon Finance: Fee Distributor
0 ETH0.0177357128.04486088
Claim173326862023-05-25 0:45:2313 days 7 hrs ago1684975523IN
Ribbon Finance: Fee Distributor
0 ETH0.0057198824.86140565
Claim173301952023-05-24 16:20:2313 days 15 hrs ago1684945223IN
Ribbon Finance: Fee Distributor
0 ETH0.0206989559.74914535
Claim173136752023-05-22 8:33:3515 days 23 hrs ago1684744415IN
Ribbon Finance: Fee Distributor
0 ETH0.0037473230.62737322
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Advanced Filter
Parent Txn Hash Block From To Value
174131242023-06-05 8:25:471 day 23 hrs ago1685953547
Ribbon Finance: Fee Distributor
0.36225057 ETH
174065382023-06-04 10:04:472 days 22 hrs ago1685873087
Ribbon Finance: Fee Distributor
0.00874038 ETH
174057572023-06-04 7:25:473 days 48 mins ago1685863547
Ribbon Finance: Fee Distributor
0.05308637 ETH
173986222023-06-03 7:17:474 days 56 mins ago1685776667
Ribbon Finance: Fee Distributor
0.09043854 ETH
173982222023-06-03 5:57:234 days 2 hrs ago1685771843
Ribbon Finance: Fee Distributor
0.05222044 ETH
173950752023-06-02 19:20:114 days 12 hrs ago1685733611
Ribbon Finance: Fee Distributor
0.01608648 ETH
173932072023-06-02 13:00:354 days 19 hrs ago1685710835
Ribbon Finance: Fee Distributor
3.17438292 ETH
173885792023-06-01 21:20:115 days 10 hrs ago1685654411
Ribbon Finance: Fee Distributor
0.16435632 ETH
173868932023-06-01 15:36:595 days 16 hrs ago1685633819
Ribbon Finance: Fee Distributor
0.1820718 ETH
173810842023-05-31 20:00:356 days 12 hrs ago1685563235
Ribbon Finance: Fee Distributor
0.5418469 ETH
173804512023-05-31 17:52:476 days 14 hrs ago1685555567
Ribbon Finance: Fee Distributor
0.15311662 ETH
173774542023-05-31 7:44:477 days 29 mins ago1685519087
Ribbon Finance: Fee Distributor
1.43555951 ETH
173749732023-05-30 23:21:117 days 8 hrs ago1685488871
Ribbon Finance: Fee Distributor
0.04694833 ETH
173729372023-05-30 16:30:597 days 15 hrs ago1685464259
Ribbon Finance: Fee Distributor
1.49200231 ETH
173648702023-05-29 13:13:598 days 19 hrs ago1685366039
Ribbon Finance: Fee Distributor
0.03293799 ETH
173640352023-05-29 10:24:238 days 21 hrs ago1685355863
Ribbon Finance: Fee Distributor
0.84315327 ETH
173615752023-05-29 2:06:599 days 6 hrs ago1685326019
Ribbon Finance: Fee Distributor
0.80362936 ETH
173610372023-05-29 0:18:119 days 7 hrs ago1685319491
Ribbon Finance: Fee Distributor
0.15156128 ETH
173519372023-05-27 17:40:2310 days 14 hrs ago1685209223
Ribbon Finance: Fee Distributor
0.0480019 ETH
173471302023-05-27 1:28:4711 days 6 hrs ago1685150927
Ribbon Finance: Fee Distributor
0.07696765 ETH
173434282023-05-26 13:00:4711 days 19 hrs ago1685106047
Ribbon Finance: Fee Distributor
3.60259598 ETH
173428712023-05-26 11:06:2311 days 21 hrs ago1685099183
Ribbon Finance: Fee Distributor
0.0169507 ETH
173399262023-05-26 1:11:2312 days 7 hrs ago1685063483
Ribbon Finance: Fee Distributor
0.9907918 ETH
173301952023-05-24 16:20:2313 days 15 hrs ago1684945223
Ribbon Finance: Fee Distributor
0.29708548 ETH
173136752023-05-22 8:33:3515 days 23 hrs ago1684744415
Ribbon Finance: Fee Distributor
0.12134959 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.2.7

Optimization Enabled:
N/A

Other Settings:
MIT license

Contract Source Code (Vyper language format)

# @version 0.2.7
"""
@title Curve Fee Distribution
@author Curve Finance
@license MIT
"""

from vyper.interfaces import ERC20


interface VotingEscrow:
    def user_point_epoch(addr: address) -> uint256: view
    def epoch() -> uint256: view
    def user_point_history(addr: address, loc: uint256) -> Point: view
    def point_history(loc: uint256) -> Point: view
    def checkpoint(): nonpayable

interface WETH:
    def withdraw(wad: uint256): nonpayable

event SetEmergencyReturn:
    admin: address

event CommitAdmin:
    admin: address

event ApplyAdmin:
    admin: address

event ToggleAllowCheckpointToken:
    toggle_flag: bool

event CheckpointToken:
    time: uint256
    tokens: uint256

event Claimed:
    recipient: indexed(address)
    amount: uint256
    claim_epoch: uint256
    max_epoch: uint256


struct Point:
    bias: int128
    slope: int128  # - dweight / dt
    ts: uint256
    blk: uint256  # block


WEEK: constant(uint256) = 7 * 86400
TOKEN_CHECKPOINT_DEADLINE: constant(uint256) = 86400

start_time: public(uint256)
time_cursor: public(uint256)
time_cursor_of: public(HashMap[address, uint256])
user_epoch_of: public(HashMap[address, uint256])

last_token_time: public(uint256)
tokens_per_week: public(uint256[1000000000000000])

voting_escrow: public(address)
token: public(address)
total_received: public(uint256)
token_last_balance: public(uint256)

ve_supply: public(uint256[1000000000000000])  # VE total supply at week bounds

admin: public(address)
future_admin: public(address)
can_checkpoint_token: public(bool)
emergency_return: public(address)
is_killed: public(bool)


@external
def __init__(
    _voting_escrow: address,
    _start_time: uint256,
    _token: address,
    _admin: address,
    _emergency_return: address
):
    """
    @notice Contract constructor
    @param _voting_escrow VotingEscrow contract address
    @param _start_time Epoch time for fee distribution to start
    @param _token Fee token address (ETH)
    @param _admin Admin address
    @param _emergency_return Address to transfer `_token` balance to
                             if this contract is killed
    """
    t: uint256 = _start_time / WEEK * WEEK
    self.start_time = t
    self.last_token_time = t
    self.time_cursor = t
    self.token = _token
    self.voting_escrow = _voting_escrow
    self.admin = _admin
    self.emergency_return = _emergency_return
    self.can_checkpoint_token = True

@external
@payable
def __default__():
  return

@internal
def _checkpoint_token():
    token_balance: uint256 = self.balance
    to_distribute: uint256 = token_balance - self.token_last_balance
    self.token_last_balance = token_balance

    t: uint256 = self.last_token_time
    since_last: uint256 = block.timestamp - t
    self.last_token_time = block.timestamp
    this_week: uint256 = t / WEEK * WEEK
    next_week: uint256 = 0

    for i in range(20):
        next_week = this_week + WEEK
        if block.timestamp < next_week:
            if since_last == 0 and block.timestamp == t:
                self.tokens_per_week[this_week] += to_distribute
            else:
                self.tokens_per_week[this_week] += to_distribute * (block.timestamp - t) / since_last
            break
        else:
            if since_last == 0 and next_week == t:
                self.tokens_per_week[this_week] += to_distribute
            else:
                self.tokens_per_week[this_week] += to_distribute * (next_week - t) / since_last
        t = next_week
        this_week = next_week

    log CheckpointToken(block.timestamp, to_distribute)


@external
def checkpoint_token():
    """
    @notice Update the token checkpoint
    @dev Calculates the total number of tokens to be distributed in a given week.
         During setup for the initial distribution this function is only callable
         by the contract owner. Beyond initial distro, it can be enabled for anyone
         to call.
    """
    assert (msg.sender == self.admin) or\
           (self.can_checkpoint_token and (block.timestamp > self.last_token_time + TOKEN_CHECKPOINT_DEADLINE))
    self._checkpoint_token()


@internal
def _find_timestamp_epoch(ve: address, _timestamp: uint256) -> uint256:
    _min: uint256 = 0
    _max: uint256 = VotingEscrow(ve).epoch()
    for i in range(128):
        if _min >= _max:
            break
        _mid: uint256 = (_min + _max + 2) / 2
        pt: Point = VotingEscrow(ve).point_history(_mid)
        if pt.ts <= _timestamp:
            _min = _mid
        else:
            _max = _mid - 1
    return _min


@view
@internal
def _find_timestamp_user_epoch(ve: address, user: address, _timestamp: uint256, max_user_epoch: uint256) -> uint256:
    _min: uint256 = 0
    _max: uint256 = max_user_epoch
    for i in range(128):
        if _min >= _max:
            break
        _mid: uint256 = (_min + _max + 2) / 2
        pt: Point = VotingEscrow(ve).user_point_history(user, _mid)
        if pt.ts <= _timestamp:
            _min = _mid
        else:
            _max = _mid - 1
    return _min


@view
@external
def ve_for_at(_user: address, _timestamp: uint256) -> uint256:
    """
    @notice Get the veCRV balance for `_user` at `_timestamp`
    @param _user Address to query balance for
    @param _timestamp Epoch time
    @return uint256 veCRV balance
    """
    ve: address = self.voting_escrow
    max_user_epoch: uint256 = VotingEscrow(ve).user_point_epoch(_user)
    epoch: uint256 = self._find_timestamp_user_epoch(ve, _user, _timestamp, max_user_epoch)
    pt: Point = VotingEscrow(ve).user_point_history(_user, epoch)
    return convert(max(pt.bias - pt.slope * convert(_timestamp - pt.ts, int128), 0), uint256)

@internal
def _checkpoint_total_supply():
    ve: address = self.voting_escrow
    t: uint256 = self.time_cursor
    rounded_timestamp: uint256 = block.timestamp / WEEK * WEEK
    VotingEscrow(ve).checkpoint()

    for i in range(20):
        if t > rounded_timestamp:
            break
        else:
            epoch: uint256 = self._find_timestamp_epoch(ve, t)
            pt: Point = VotingEscrow(ve).point_history(epoch)
            dt: int128 = 0
            if t > pt.ts:
                # If the point is at 0 epoch, it can actually be earlier than the first deposit
                # Then make dt 0
                dt = convert(t - pt.ts, int128)
            self.ve_supply[t] = convert(max(pt.bias - pt.slope * dt, 0), uint256)
        t += WEEK

    self.time_cursor = t


@external
def checkpoint_total_supply():
    """
    @notice Update the veCRV total supply checkpoint
    @dev The checkpoint is also updated by the first claimant each
         new epoch week. This function may be called independently
         of a claim, to reduce claiming gas costs.
    """
    self._checkpoint_total_supply()


@view
@internal
def _claim(addr: address, ve: address, _last_token_time: uint256) -> (uint256, uint256, uint256, uint256, bool):
    # Minimal user_epoch is 0 (if user had no point)
    user_epoch: uint256 = 0
    to_distribute: uint256 = 0

    max_user_epoch: uint256 = VotingEscrow(ve).user_point_epoch(addr)
    _start_time: uint256 = self.start_time

    if max_user_epoch == 0:
        # No lock = no fees
        return (0, 0, 0, 0, False)

    week_cursor: uint256 = self.time_cursor_of[addr]
    if week_cursor == 0:
        # Need to do the initial binary search
        user_epoch = self._find_timestamp_user_epoch(ve, addr, _start_time, max_user_epoch)
    else:
        user_epoch = self.user_epoch_of[addr]

    if user_epoch == 0:
        user_epoch = 1

    user_point: Point = VotingEscrow(ve).user_point_history(addr, user_epoch)

    if week_cursor == 0:
        week_cursor = (user_point.ts + WEEK - 1) / WEEK * WEEK

    if week_cursor >= _last_token_time:
        return (0, 0, 0, 0, False)

    if week_cursor < _start_time:
        week_cursor = _start_time
    old_user_point: Point = empty(Point)

    # Iterate over weeks
    for i in range(50):
        if week_cursor >= _last_token_time:
            break

        if week_cursor >= user_point.ts and user_epoch <= max_user_epoch:
            user_epoch += 1
            old_user_point = user_point
            if user_epoch > max_user_epoch:
                user_point = empty(Point)
            else:
                user_point = VotingEscrow(ve).user_point_history(addr, user_epoch)

        else:
            # Calc
            # + i * 2 is for rounding errors
            dt: int128 = convert(week_cursor - old_user_point.ts, int128)
            balance_of: uint256 = convert(max(old_user_point.bias - dt * old_user_point.slope, 0), uint256)
            if balance_of == 0 and user_epoch > max_user_epoch:
                break
            if balance_of > 0:
                to_distribute += balance_of * self.tokens_per_week[week_cursor] / self.ve_supply[week_cursor]

            week_cursor += WEEK

    user_epoch = min(max_user_epoch, user_epoch - 1)

    return (to_distribute, user_epoch, week_cursor, max_user_epoch, True)

@external
@nonreentrant('lock')
def claim(_addr: address = msg.sender) -> uint256:
    """
    @notice Claim fees for `_addr`
    @dev Each call to claim look at a maximum of 50 user veCRV points.
         For accounts with many veCRV related actions, this function
         may need to be called more than once to claim all available
         fees. In the `Claimed` event that fires, if `claim_epoch` is
         less than `max_epoch`, the account may claim again.
    @param _addr Address to claim fees for
    @return uint256 Amount of fees claimed in the call
    """
    assert not self.is_killed

    if block.timestamp >= self.time_cursor:
        self._checkpoint_total_supply()

    last_token_time: uint256 = self.last_token_time

    if self.can_checkpoint_token and (block.timestamp > last_token_time + TOKEN_CHECKPOINT_DEADLINE):
        self._checkpoint_token()
        last_token_time = block.timestamp

    last_token_time = last_token_time / WEEK * WEEK

    amount: uint256 = 0
    user_epoch: uint256 = 0
    week_cursor: uint256 = 0
    max_user_epoch: uint256 = 0
    is_update: bool = True
    amount, user_epoch, week_cursor, max_user_epoch, is_update = self._claim(_addr, self.voting_escrow, last_token_time)

    if is_update:
      self.user_epoch_of[_addr] = user_epoch
      self.time_cursor_of[_addr] = week_cursor
      log Claimed(_addr, amount, user_epoch, max_user_epoch)

    if amount != 0:
        self.token_last_balance -= amount
        send(_addr, amount)

    return amount


@external
@nonreentrant('lock')
def claim_many(_receivers: address[20]) -> bool:
    """
    @notice Make multiple fee claims in a single call
    @dev Used to claim for many accounts at once, or to make
         multiple claims for the same address when that address
         has significant veCRV history
    @param _receivers List of addresses to claim for. Claiming
                      terminates at the first `ZERO_ADDRESS`.
    @return bool success
    """
    assert not self.is_killed

    if block.timestamp >= self.time_cursor:
        self._checkpoint_total_supply()

    last_token_time: uint256 = self.last_token_time

    if self.can_checkpoint_token and (block.timestamp > last_token_time + TOKEN_CHECKPOINT_DEADLINE):
        self._checkpoint_token()
        last_token_time = block.timestamp

    last_token_time = last_token_time / WEEK * WEEK
    voting_escrow: address = self.voting_escrow
    token: address = self.token
    total: uint256 = 0

    amount: uint256 = 0
    user_epoch: uint256 = 0
    week_cursor: uint256 = 0
    max_user_epoch: uint256 = 0
    is_update: bool = True

    for addr in _receivers:
        if addr == ZERO_ADDRESS:
            break

        amount, user_epoch, week_cursor, max_user_epoch, is_update = self._claim(addr, voting_escrow, last_token_time)

        if is_update:
          self.user_epoch_of[addr] = user_epoch
          self.time_cursor_of[addr] = week_cursor
          log Claimed(addr, amount, user_epoch, max_user_epoch)

        if amount != 0:
            total += amount
            send(addr, amount)

    if total != 0:
        self.token_last_balance -= total

    return True


@external
@payable
def burn(_coin: address, _amount: uint256) -> bool:
    """
    @notice Receive WETH into the contract and trigger a token checkpoint
    @param _coin Address of the coin being received (must be WETH)
    @param _amount Amount to transfer
    @return bool success
    """
    assert _coin == self.token
    assert _amount != 0
    assert not self.is_killed

    ERC20(_coin).transferFrom(msg.sender, self, _amount)
    WETH(_coin).withdraw(_amount)

    if self.can_checkpoint_token and (block.timestamp > self.last_token_time + TOKEN_CHECKPOINT_DEADLINE):
        self._checkpoint_token()

    return True

@external
def set_emergency_return(_addr: address):
    """
    @notice Set new emergency return address
    @param _addr New emergency return address
    """
    assert msg.sender == self.admin  # dev: access denied
    self.emergency_return = _addr
    log SetEmergencyReturn(_addr)

@external
def commit_admin(_addr: address):
    """
    @notice Commit transfer of ownership
    @param _addr New admin address
    """
    assert msg.sender == self.admin  # dev: access denied
    self.future_admin = _addr
    log CommitAdmin(_addr)


@external
def apply_admin():
    """
    @notice Apply transfer of ownership
    """
    assert msg.sender == self.admin
    assert self.future_admin != ZERO_ADDRESS
    future_admin: address = self.future_admin
    self.admin = future_admin
    log ApplyAdmin(future_admin)


@external
def toggle_allow_checkpoint_token():
    """
    @notice Toggle permission for checkpointing by any account
    """
    assert msg.sender == self.admin
    flag: bool = not self.can_checkpoint_token
    self.can_checkpoint_token = flag
    log ToggleAllowCheckpointToken(flag)


@external
def kill_me():
    """
    @notice Kill the contract
    @dev Killing transfers the entire ETH balance to the emergency return address
         and blocks the ability to claim or burn. The contract cannot be unkilled.
    """
    assert msg.sender == self.admin

    self.is_killed = True

    send(self.emergency_return, self.balance)

@external
def recover_balance(_coin: address) -> bool:
    """
    @notice Recover ERC20 tokens from this contract
    @dev Tokens are sent to the emergency return address.
    @param _coin Token address
    @return bool success
    """
    assert msg.sender == self.admin
    assert _coin != self.token

    amount: uint256 = ERC20(_coin).balanceOf(self)
    response: Bytes[32] = raw_call(
        _coin,
        concat(
            method_id("transfer(address,uint256)"),
            convert(self.emergency_return, bytes32),
            convert(amount, bytes32),
        ),
        max_outsize=32,
    )
    if len(response) != 0:
        assert convert(response, bool)

    return True

@external
@payable
def recover_eth_balance() -> bool:
    """
    @notice Recover ETH from this contract
    @dev ETH sent to the emergency return address.
    @return bool success
    """
    assert msg.sender == self.admin

    send(self.emergency_return, self.balance)

    return True

Contract Security Audit

Contract ABI

[{"name":"SetEmergencyReturn","inputs":[{"type":"address","name":"admin","indexed":false}],"anonymous":false,"type":"event"},{"name":"CommitAdmin","inputs":[{"type":"address","name":"admin","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyAdmin","inputs":[{"type":"address","name":"admin","indexed":false}],"anonymous":false,"type":"event"},{"name":"ToggleAllowCheckpointToken","inputs":[{"type":"bool","name":"toggle_flag","indexed":false}],"anonymous":false,"type":"event"},{"name":"CheckpointToken","inputs":[{"type":"uint256","name":"time","indexed":false},{"type":"uint256","name":"tokens","indexed":false}],"anonymous":false,"type":"event"},{"name":"Claimed","inputs":[{"type":"address","name":"recipient","indexed":true},{"type":"uint256","name":"amount","indexed":false},{"type":"uint256","name":"claim_epoch","indexed":false},{"type":"uint256","name":"max_epoch","indexed":false}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"address","name":"_voting_escrow"},{"type":"uint256","name":"_start_time"},{"type":"address","name":"_token"},{"type":"address","name":"_admin"},{"type":"address","name":"_emergency_return"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"name":"checkpoint_token","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":819695},{"name":"ve_for_at","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"_user"},{"type":"uint256","name":"_timestamp"}],"stateMutability":"view","type":"function","gas":249507},{"name":"checkpoint_total_supply","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":10592495},{"name":"claim","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"nonpayable","type":"function"},{"name":"claim","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"_addr"}],"stateMutability":"nonpayable","type":"function"},{"name":"claim_many","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address[20]","name":"_receivers"}],"stateMutability":"nonpayable","type":"function","gas":27012626},{"name":"burn","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_coin"},{"type":"uint256","name":"_amount"}],"stateMutability":"payable","type":"function","gas":823671},{"name":"set_emergency_return","outputs":[],"inputs":[{"type":"address","name":"_addr"}],"stateMutability":"nonpayable","type":"function","gas":37988},{"name":"commit_admin","outputs":[],"inputs":[{"type":"address","name":"_addr"}],"stateMutability":"nonpayable","type":"function","gas":38018},{"name":"apply_admin","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":39654},{"name":"toggle_allow_checkpoint_token","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":38793},{"name":"kill_me","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":72263},{"name":"recover_balance","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_coin"}],"stateMutability":"nonpayable","type":"function","gas":7898},{"name":"recover_eth_balance","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"payable","type":"function","gas":37272},{"name":"start_time","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1691},{"name":"time_cursor","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1721},{"name":"time_cursor_of","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1966},{"name":"user_epoch_of","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1996},{"name":"last_token_time","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1811},{"name":"tokens_per_week","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":1950},{"name":"voting_escrow","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1871},{"name":"token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1901},{"name":"total_received","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1931},{"name":"token_last_balance","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1961},{"name":"ve_supply","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2100},{"name":"admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2021},{"name":"future_admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2051},{"name":"can_checkpoint_token","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2081},{"name":"emergency_return","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2111},{"name":"is_killed","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2141}]

6f7fffffffffffffffffffffffffffffff60405260a061233361014039602061233360c03960c05160a01c1561003457600080fd5b602060406123330160c03960c05160a01c1561004f57600080fd5b602060606123330160c03960c05160a01c1561006a57600080fd5b602060806123330160c03960c05160a01c1561008557600080fd5b6101605162093a808082049050905062093a8080820282158284830414176100ac57600080fd5b809050905090506101e0526101e0516000556101e0516004556101e05160015561018051600755610140516006556101a051600b556101c051600e556001600d5561231b56600436101561000d57612223565b600035601c526f7fffffffffffffffffffffffffffffff604052600015610340575b610140524761016052610160516009548082101561004c57600080fd5b8082039050905061018052610160516009556004546101a052426101a0518082101561007757600080fd5b808203905090506101c052426004556101a05162093a808082049050905062093a8080820282158284830414176100ad57600080fd5b809050905090506101e05260006102005261022060006014818352015b6101e05162093a808181830110156100e157600080fd5b8082019050905061020052610200514210156101ee576101c051151561010c576101a051421461010f565b60005b1561015a576101e05166038d7ea4c68000811061012b57600080fd5b600560c052602060c0200180546101805181818301101561014b57600080fd5b808201905090508155506101e5565b6101e05166038d7ea4c68000811061017157600080fd5b600560c052602060c02001805461018051426101a0518082101561019457600080fd5b8082039050905080820282158284830414176101af57600080fd5b809050905090506101c05180806101c557600080fd5b8204905090508181830110156101da57600080fd5b808201905090508155505b610304566102e3565b6101c0511515610206576101a0516102005114610209565b60005b15610254576101e05166038d7ea4c68000811061022557600080fd5b600560c052602060c0200180546101805181818301101561024557600080fd5b808201905090508155506102e2565b6101e05166038d7ea4c68000811061026b57600080fd5b600560c052602060c02001805461018051610200516101a0518082101561029157600080fd5b8082039050905080820282158284830414176102ac57600080fd5b809050905090506101c05180806102c257600080fd5b8204905090508181830110156102d757600080fd5b808201905090508155505b5b610200516101a052610200516101e0525b81516001018083528114156100ca575b5050426102205261018051610240527fce749457b74e10f393f2c6b1ce4261b78791376db5a3f501477a809f03f500d66040610220a161014051565b63811a40fe60005114156103b257341561035957600080fd5b600b5433141561036a57600161039a565b600d5415610396576004546201518081818301101561038857600080fd5b808201905090504211610399565b60005b5b5b6103a457600080fd5b6006580161002f565b600050005b60001561056d575b61018052610140526101605260006101a0526020610240600463900cf0cf6101e0526101fc610140515afa6103ee57600080fd5b601f3d116103fb57600080fd5b600050610240516101c0526101e060006080818352015b6101c0516101a05110151561042657610559565b6101a0516101c05181818301101561043d57600080fd5b80820190509050600281818301101561045557600080fd5b80820190509050600280820490509050610200526102206080610320602463d1febfb96102a052610200516102c0526102bc610140515afa61049657600080fd5b607f3d116104a357600080fd5b61032080808080516103a0525050602081019050808080516103c0525050602081019050808080516103e05250506020810190508080805161040052505050506000506103a0805182528060200151826020015280604001518260400152806060015182606001525050610160516102605111151561052957610200516101a052610548565b6102005160018082101561053c57600080fd5b808203905090506101c0525b5b8151600101808352811415610412575b50506101a051600052600051610180515650005b600015610706575b6101c0526101405261016052610180526101a05260006101e0526101a0516102005261022060006080818352015b610200516101e0511015156105b7576106f2565b6101e051610200518181830110156105ce57600080fd5b8082019050905060028181830110156105e657600080fd5b8082019050905060028082049050905061024052610260608061038060446328d09d476102e052610160516103005261024051610320526102fc610140515afa61062f57600080fd5b607f3d1161063c57600080fd5b61038080808080516104005250506020810190508080805161042052505060208101905080808051610440525050602081019050808080516104605250505050600050610400805182528060200151826020015280604001518260400152806060015182606001525050610180516102a0511115156106c257610240516101e0526106e1565b610240516001808210156106d557600080fd5b80820390509050610200525b5b81516001018083528114156105a3575b50506101e0516000526000516101c0515650005b63ace296fb600051141561092457341561071f57600080fd5b60043560a01c1561072f57600080fd5b600654610140526020610200602463010ae757610180526004356101a05261019c610140515afa61075f57600080fd5b601f3d1161076c57600080fd5b6000506102005161016052610140516101605161018051610140516101a0526004356101c0526024356101e0526101605161020052610200516101e0516101c0516101a05160065801610575565b6102605261018052610160526101405261026051610180526101a060806102c060446328d09d476102205260043561024052610180516102605261023c610140515afa61080657600080fd5b607f3d1161081357600080fd5b6102c080808080516103405250506020810190508080805161036052505060208101905080808051610380525050602081019050808080516103a052505050506000506103408051825280602001518260200152806040015182604001528060600151826060015250506101a0516101c0516024356101e0518082101561089957600080fd5b808203905090506040518111156108af57600080fd5b808202808060008112156108bf57195b607f1c156108cc57600080fd5b905090509050808203808060008112156108e257195b607f1c156108ef57600080fd5b9050905090506000808212156109055780610907565b815b90509050600081121561091957600080fd5b60005260206000f350005b600015610be2575b6101405260065461016052600154610180524262093a808082049050905062093a80808202821582848304141761096257600080fd5b809050905090506101a052610160513b61097b57600080fd5b60006000600463c2c4c5c16101c0526101dc6000610160515af161099e57600080fd5b6101c060006014818352015b6101a0516101805111156109c157610bd356610ba0565b6101405161016051610180516101a0516101c0516101e051610160516102005261018051610220526102205161020051600658016103ba565b610280526101e0526101c0526101a052610180526101605261014052610280516101e0526102006080610300602463d1febfb9610280526101e0516102a05261029c610160515afa610a4b57600080fd5b607f3d11610a5857600080fd5b6103008080808051610380525050602081019050808080516103a0525050602081019050808080516103c0525050602081019050808080516103e0525050505060005061038080518252806020015182602001528060400151826040015280606001518260600152505060006102805261024051610180511115610b0657610180516102405180821015610aeb57600080fd5b80820390509050604051811115610b0157600080fd5b610280525b61020051610220516102805180820280806000811215610b2257195b607f1c15610b2f57600080fd5b90509050905080820380806000811215610b4557195b607f1c15610b5257600080fd5b905090509050600080821215610b685780610b6a565b815b905090506000811215610b7c57600080fd5b6101805166038d7ea4c680008110610b9357600080fd5b600a60c052602060c02001555b610180805162093a80818183011015610bb857600080fd5b808201905090508152505b81516001018083528114156109aa575b50506101805160015561014051565b63b21ed5026000511415610c09573415610bfb57600080fd5b6006580161092c565b600050005b600015611379575b6101a0526101405261016052610180526040366101c03760206102a0602463010ae75761022052610140516102405261023c610160515afa610c5257600080fd5b601f3d11610c5f57600080fd5b6000506102a0516102005260005461022052610200511515610d0557610240808080600081525050602081019050808060008152505060208101905080806000815250506020810190508080600081525050602081019050808060008152505060a09050905060c05260c0516102e0525b60006102e051111515610ce257610cfe565b60206102e05103610240015160206102e051036102e052610cd0565b6101a05156505b60026101405160e05260c052604060c020546102e0526102e0511515610db7576101405161016051610180516101a0516101c0516101e05161020051610220516102e05161016051610300526101405161032052610220516103405261020051610360526103605161034051610320516103005160065801610575565b6103c0526102e05261022052610200526101e0526101c0526101a0526101805261016052610140526103c0516101c052610dce565b60036101405160e05260c052604060c020546101c0525b6101c0511515610ddf5760016101c0525b610300608061042060446328d09d4761038052610140516103a0526101c0516103c05261039c610160515afa610e1457600080fd5b607f3d11610e2157600080fd5b61042080808080516104a0525050602081019050808080516104c0525050602081019050808080516104e05250506020810190508080805161050052505050506000506104a08051825280602001518260200152806040015182604001528060600151826060015250506102e0511515610ef8576103405162093a80818183011015610eac57600080fd5b80820190509050600180821015610ec257600080fd5b8082039050905062093a808082049050905062093a808082028215828483041417610eec57600080fd5b809050905090506102e0525b610180516102e051101515610f9157610380808080600081525050602081019050808060008152505060208101905080806000815250506020810190508080600081525050602081019050808060008152505060a09050905060c05260c051610420525b600061042051111515610f6e57610f8a565b6020610420510361038001516020610420510361042052610f5c565b6101a05156505b610220516102e0511015610fa857610220516102e0525b608036610420376104a060006032818352015b610180516102e051101515610fcf576112ae565b610340516102e051101515610fed57610200516101c0511115610ff0565b60005b1561110b576101c08051600181818301101561100b57600080fd5b80820190509050815250610420610300805182528060200151826020015280604001518260400152806060015182606001525050610200516101c05111156110595760803661030037611106565b610300608061056060446328d09d476104c052610140516104e0526101c051610500526104dc610160515afa61108e57600080fd5b607f3d1161109b57600080fd5b61056080808080516105e052505060208101905080808051610600525050602081019050808080516106205250506020810190508080805161064052505050506000506105e08051825280602001518260200152806040015182604001528060600151826060015250505b61129d565b6102e051610460518082101561112057600080fd5b8082039050905060405181111561113657600080fd5b6104c052610420516104c051610440518082028080600081121561115657195b607f1c1561116357600080fd5b9050905090508082038080600081121561117957195b607f1c1561118657600080fd5b90509050905060008082121561119c578061119e565b815b9050905060008112156111b057600080fd5b6104e0526104e05115156111cc57610200516101c051116111cf565b60005b156111d9576112ae565b60006104e051111561127a576101e080516104e0516102e05166038d7ea4c68000811061120557600080fd5b600560c052602060c0200154808202821582848304141761122557600080fd5b809050905090506102e05166038d7ea4c68000811061124357600080fd5b600a60c052602060c0200154808061125a57600080fd5b82049050905081818301101561126f57600080fd5b808201905090508152505b6102e0805162093a8081818301101561129257600080fd5b808201905090508152505b5b8151600101808352811415610fbb575b5050610200516101c0516001808210156112c757600080fd5b80820390509050808211156112dc57806112de565b815b905090506101c0526104a08080806101e0518152505060208101905080806101c0518152505060208101905080806102e0518152505060208101905080806102005181525050602081019050808060018152505060a09050905060c05260c051610540525b60006105405111151561135557611371565b602061054051036104a001516020610540510361054052611343565b6101a0515650005b634e71d92d60005114156113915733610140526113c7565b631e83409a60005114156113bf5760043560a01c156113af57600080fd5b60206004610140376000506113c7565b600015611686575b62ffffff54156113d657600080fd5b600162ffffff5534156113e857600080fd5b600f54156113f557600080fd5b6001544210151561141557610140516006580161092c565b610140526000505b60045461016052600d541561144957610160516201518081818301101561143b57600080fd5b80820190509050421161144c565b60005b156114735761014051610160516006580161002f565b610160526101405260005042610160525b6101605162093a808082049050905062093a80808202821582848304141761149a57600080fd5b8090509050905061016052608036610180376001610200526101405161016051610180516101a0516101c0516101e05161020051610140516102205260065461024052610160516102605261026051610240516102205160065801610c11565b6102c0526102e052610300526103205261034052610200526101e0526101c0526101a0526101805261016052610140526102c0808080805161036052505060208101905080808051610380525050602081019050808080516103a0525050602081019050808080516103c0525050602081019050808080516103e0525050505061036080516101805280602001516101a05280604001516101c05280606001516101e052806080015161020052506102005115611621576101a05160036101405160e05260c052604060c020556101c05160026101405160e05260c052604060c0205561018051610220526101a051610240526101e05161026052610140517f9cdcf2f7714cca3508c7f0110b04a90a80a3a8dd0e35de99689db74d28c5383e6060610220a25b60006101805118156116695760098054610180518082101561164257600080fd5b80820390509050815550600060006000600061018051610140516000f161166857600080fd5b5b61018051600052600062ffffff5560206000f350600062ffffff55005b637b935a236000511415611a125762ffffff54156116a357600080fd5b600162ffffff5534156116b557600080fd5b6000610120525b610120516004013560a01c156116d157600080fd5b60206101205101610120526102806101205110156116ee576116bc565b600f54156116fb57600080fd5b60015442101515611713576006580161092c565b6000505b60045461014052600d541561174757610140516201518081818301101561173957600080fd5b80820190509050421161174a565b60005b1561176957610140516006580161002f565b6101405260005042610140525b6101405162093a808082049050905062093a80808202821582848304141761179057600080fd5b8090509050905061014052600654610160526007546101805260a0366101a03760016102405261028060006014818352015b6020610280510260040135610260526102605115156117e0576119c9565b6101406102a0525b6102a0515160206102a051016102a0526102a06102a051101561180a576117e8565b610260516102c052610160516102e0526101405161030052610300516102e0516102c05160065801610c11565b61036052610380526103a0526103c0526103e0526102806102a0525b6102a0515260206102a051036102a0526101406102a05110151561187657611853565b610360808080805161040052505060208101905080808051610420525050602081019050808080516104405250506020810190508080805161046052505060208101905080808051610480525050505061040080516101c05280602001516101e05280604001516102005280606001516102205280608001516102405250610240511561196d576101e05160036102605160e05260c052604060c020556102005160026102605160e05260c052604060c020556101c0516102a0526101e0516102c052610220516102e052610260517f9cdcf2f7714cca3508c7f0110b04a90a80a3a8dd0e35de99689db74d28c5383e60606102a0a25b60006101c05118156119b8576101a080516101c05181818301101561199157600080fd5b8082019050905081525060006000600060006101c051610260516000f16119b757600080fd5b5b5b81516001018083528114156117c2575b505060006101a05118156119f757600980546101a051808210156119ec57600080fd5b808203905090508155505b6001600052600062ffffff5560206000f350600062ffffff55005b639dc29fac6000511415611b285760043560a01c15611a3057600080fd5b60075460043514611a4057600080fd5b600060243518611a4f57600080fd5b600f5415611a5c57600080fd5b602061020060646323b872dd61014052336101605230610180526024356101a05261015c60006004355af1611a9057600080fd5b601f3d11611a9d57600080fd5b600050610200506004353b611ab157600080fd5b600060006024632e1a7d4d610140526024356101605261015c60006004355af1611ada57600080fd5b600d5415611b065760045462015180818183011015611af857600080fd5b808201905090504211611b09565b60005b15611b1b576006580161002f565b6000505b600160005260206000f350005b63853f21c86000511415611b95573415611b4157600080fd5b60043560a01c15611b5157600080fd5b600b543314611b5f57600080fd5b600435600e55600435610140527fddf14d4001805d5c8783316f14c83a234cdb129ef6d8f0fc823cc2ee0828590a6020610140a1005b63b1d3db756000511415611c02573415611bae57600080fd5b60043560a01c15611bbe57600080fd5b600b543314611bcc57600080fd5b600435600c55600435610140527f59a407284ae6e2986675fa1400d6498af928ed01f4fd2dd6be4a2a8b4fc35b346020610140a1005b63c0e991a66000511415611c77573415611c1b57600080fd5b600b543314611c2957600080fd5b6000600c5418611c3857600080fd5b600c546101405261014051600b5561014051610160527f756f845176805c8ebf249854e909627308157f63c96e470e44a9e8549ba6fb1e6020610160a1005b632121bfc36000511415611cde573415611c9057600080fd5b600b543314611c9e57600080fd5b600d54156101405261014051600d5561014051610160527fdbe6ac1081ebd8e648718341126659456f4009fcadfe1c23f66f5e61522610b26020610160a1005b63e36988536000511415611d24573415611cf757600080fd5b600b543314611d0557600080fd5b6001600f55600060006000600047600e546000f1611d2257600080fd5b005b63db2f5f796000511415611ef7573415611d3d57600080fd5b60043560a01c15611d4d57600080fd5b600b543314611d5b57600080fd5b60075460043518611d6b57600080fd5b60206101e060246370a0823161016052306101805261017c6004355afa611d9157600080fd5b601f3d11611d9e57600080fd5b6000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af1505080518201915050600e5460208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af1611e4157600080fd5b505060206103806102c0516102e060006004355af1611e5f57600080fd5b60203d80821115611e705780611e72565b815b90509050610360526103608051602001806101608284600060045af1611e9757600080fd5b50506000610160511815611eea57610160806020015160008251806020901315611ec057600080fd5b8091901215611ece57600080fd5b806020036101000a82049050905090501515611ee957600080fd5b5b600160005260206000f350005b63c17350f56000511415611f3857600b543314611f1357600080fd5b600060006000600047600e546000f1611f2b57600080fd5b600160005260206000f350005b63834ee4176000511415611f5f573415611f5157600080fd5b60005460005260206000f350005b63127dcbd36000511415611f86573415611f7857600080fd5b60015460005260206000f350005b632a2a314b6000511415611fcb573415611f9f57600080fd5b60043560a01c15611faf57600080fd5b600260043560e05260c052604060c0205460005260206000f350005b63d5d46e886000511415612010573415611fe457600080fd5b60043560a01c15611ff457600080fd5b600360043560e05260c052604060c0205460005260206000f350005b637f58e8f8600051141561203757341561202957600080fd5b60045460005260206000f350005b63edf59997600051141561207d57341561205057600080fd5b60043566038d7ea4c68000811061206657600080fd5b600560c052602060c020015460005260206000f350005b63dfe0503160005114156120a457341561209657600080fd5b60065460005260206000f350005b63fc0c546a60005114156120cb5734156120bd57600080fd5b60075460005260206000f350005b632f0c222e60005114156120f25734156120e457600080fd5b60085460005260206000f350005b6322b04bfc600051141561211957341561210b57600080fd5b60095460005260206000f350005b63d4dafba8600051141561215f57341561213257600080fd5b60043566038d7ea4c68000811061214857600080fd5b600a60c052602060c020015460005260206000f350005b63f851a440600051141561218657341561217857600080fd5b600b5460005260206000f350005b6317f7182a60005114156121ad57341561219f57600080fd5b600c5460005260206000f350005b63aeba473760005114156121d45734156121c657600080fd5b600d5460005260206000f350005b632c3f531e60005114156121fb5734156121ed57600080fd5b600e5460005260206000f350005b639c868ac0600051141561222257341561221457600080fd5b600f5460005260206000f350005b5b60006000f35b6100f261231b036100f26000396100f261231b036000f300000000000000000000000019854c9a5ffa8116f48f984bdf946fb9cea9b5f700000000000000000000000000000000000000000000000000000000621cced0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000077da011d5314d80be59e939c2f7ec2f702e1dcc400000000000000000000000077da011d5314d80be59e939c2f7ec2f702e1dcc4

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

00000000000000000000000019854c9a5ffa8116f48f984bdf946fb9cea9b5f700000000000000000000000000000000000000000000000000000000621cced0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000077da011d5314d80be59e939c2f7ec2f702e1dcc400000000000000000000000077da011d5314d80be59e939c2f7ec2f702e1dcc4

-----Decoded View---------------
Arg [0] : _voting_escrow (address): 0x19854C9A5fFa8116f48f984bDF946fB9CEa9B5f7
Arg [1] : _start_time (uint256): 1646055120
Arg [2] : _token (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [3] : _admin (address): 0x77DA011d5314D80BE59e939c2f7EC2F702E1DCC4
Arg [4] : _emergency_return (address): 0x77DA011d5314D80BE59e939c2f7EC2F702E1DCC4

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000019854c9a5ffa8116f48f984bdf946fb9cea9b5f7
Arg [1] : 00000000000000000000000000000000000000000000000000000000621cced0
Arg [2] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [3] : 00000000000000000000000077da011d5314d80be59e939c2f7ec2f702e1dcc4
Arg [4] : 00000000000000000000000077da011d5314d80be59e939c2f7ec2f702e1dcc4


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.