ETH Price: $3,466.47 (+3.98%)

Contract

0xD16d5eC345Dd86Fb63C6a9C43c517210F1027914
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim214738412024-12-24 17:33:112 hrs ago1735061591IN
Curve.fi: FeeDistributor
0 ETH0.001137448.95517335
Claim214732282024-12-24 15:29:354 hrs ago1735054175IN
Curve.fi: FeeDistributor
0 ETH0.001355311.97678337
Claim214730372024-12-24 14:50:595 hrs ago1735051859IN
Curve.fi: FeeDistributor
0 ETH0.0028497912.36478293
Claim214712612024-12-24 8:52:5911 hrs ago1735030379IN
Curve.fi: FeeDistributor
0 ETH0.000743314.89928148
Claim214703762024-12-24 5:54:5914 hrs ago1735019699IN
Curve.fi: FeeDistributor
0 ETH0.001203286.13094886
Claim214697652024-12-24 3:51:3516 hrs ago1735012295IN
Curve.fi: FeeDistributor
0 ETH0.000795165.76715297
Claim214688582024-12-24 0:49:1119 hrs ago1735001351IN
Curve.fi: FeeDistributor
0 ETH0.001278928.42897604
Claim214656372024-12-23 13:59:3529 hrs ago1734962375IN
Curve.fi: FeeDistributor
0 ETH0.0012280511.2317497
Claim214641682024-12-23 9:03:4734 hrs ago1734944627IN
Curve.fi: FeeDistributor
0 ETH0.001056997.4
Claim214631362024-12-23 5:35:3538 hrs ago1734932135IN
Curve.fi: FeeDistributor
0 ETH0.000440774.07315924
Claim214630682024-12-23 5:21:3538 hrs ago1734931295IN
Curve.fi: FeeDistributor
0 ETH0.000601594.7
Claim214623412024-12-23 2:55:1141 hrs ago1734922511IN
Curve.fi: FeeDistributor
0 ETH0.000579434.39114884
Claim214623162024-12-23 2:50:1141 hrs ago1734922211IN
Curve.fi: FeeDistributor
0 ETH0.000556394.71091592
Claim214615942024-12-23 0:24:5943 hrs ago1734913499IN
Curve.fi: FeeDistributor
0 ETH0.001389034.72173766
Claim214599402024-12-22 18:51:112 days ago1734893471IN
Curve.fi: FeeDistributor
0 ETH0.000944496.18409156
Claim214594672024-12-22 17:16:112 days ago1734887771IN
Curve.fi: FeeDistributor
0 ETH0.001485536.43422033
Claim214593782024-12-22 16:58:232 days ago1734886703IN
Curve.fi: FeeDistributor
0 ETH0.000952657.5
Claim214581572024-12-22 12:52:472 days ago1734871967IN
Curve.fi: FeeDistributor
0 ETH0.001056646.77335228
Claim214568582024-12-22 8:30:592 days ago1734856259IN
Curve.fi: FeeDistributor
0 ETH0.000773855.57726425
Claim214568192024-12-22 8:23:112 days ago1734855791IN
Curve.fi: FeeDistributor
0 ETH0.000934536.32852279
Claim214566122024-12-22 7:41:472 days ago1734853307IN
Curve.fi: FeeDistributor
0 ETH0.000530014.89779446
Claim214565552024-12-22 7:30:232 days ago1734852623IN
Curve.fi: FeeDistributor
0 ETH0.000669525.82900056
Claim214561072024-12-22 6:00:352 days ago1734847235IN
Curve.fi: FeeDistributor
0 ETH0.001424055.23252803
Claim214556292024-12-22 4:24:112 days ago1734841451IN
Curve.fi: FeeDistributor
0 ETH0.00173815.90831265
Claim214551062024-12-22 2:39:112 days ago1734835151IN
Curve.fi: FeeDistributor
0 ETH0.000634995.25699007
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
214738412024-12-24 17:33:112 hrs ago1735061591
0xD16d5eC3...0F1027914
0 ETH
214738412024-12-24 17:33:112 hrs ago1735061591
0xD16d5eC3...0F1027914
0 ETH
214738412024-12-24 17:33:112 hrs ago1735061591
0xD16d5eC3...0F1027914
0 ETH
214738412024-12-24 17:33:112 hrs ago1735061591
0xD16d5eC3...0F1027914
0 ETH
214732282024-12-24 15:29:354 hrs ago1735054175
0xD16d5eC3...0F1027914
0 ETH
214732282024-12-24 15:29:354 hrs ago1735054175
0xD16d5eC3...0F1027914
0 ETH
214732282024-12-24 15:29:354 hrs ago1735054175
0xD16d5eC3...0F1027914
0 ETH
214730372024-12-24 14:50:595 hrs ago1735051859
0xD16d5eC3...0F1027914
0 ETH
214730372024-12-24 14:50:595 hrs ago1735051859
0xD16d5eC3...0F1027914
0 ETH
214730372024-12-24 14:50:595 hrs ago1735051859
0xD16d5eC3...0F1027914
0 ETH
214730372024-12-24 14:50:595 hrs ago1735051859
0xD16d5eC3...0F1027914
0 ETH
214730372024-12-24 14:50:595 hrs ago1735051859
0xD16d5eC3...0F1027914
0 ETH
214730372024-12-24 14:50:595 hrs ago1735051859
0xD16d5eC3...0F1027914
0 ETH
214712612024-12-24 8:52:5911 hrs ago1735030379
0xD16d5eC3...0F1027914
0 ETH
214712612024-12-24 8:52:5911 hrs ago1735030379
0xD16d5eC3...0F1027914
0 ETH
214712612024-12-24 8:52:5911 hrs ago1735030379
0xD16d5eC3...0F1027914
0 ETH
214712612024-12-24 8:52:5911 hrs ago1735030379
0xD16d5eC3...0F1027914
0 ETH
214703762024-12-24 5:54:5914 hrs ago1735019699
0xD16d5eC3...0F1027914
0 ETH
214703762024-12-24 5:54:5914 hrs ago1735019699
0xD16d5eC3...0F1027914
0 ETH
214703762024-12-24 5:54:5914 hrs ago1735019699
0xD16d5eC3...0F1027914
0 ETH
214703762024-12-24 5:54:5914 hrs ago1735019699
0xD16d5eC3...0F1027914
0 ETH
214697652024-12-24 3:51:3516 hrs ago1735012295
0xD16d5eC3...0F1027914
0 ETH
214697652024-12-24 3:51:3516 hrs ago1735012295
0xD16d5eC3...0F1027914
0 ETH
214697652024-12-24 3:51:3516 hrs ago1735012295
0xD16d5eC3...0F1027914
0 ETH
214688582024-12-24 0:49:1119 hrs ago1735001351
0xD16d5eC3...0F1027914
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Curve Fee Distribution

Compiler Version
vyper:0.3.7

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# @version 0.3.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


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 (crvUSD)
    @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


@internal
def _checkpoint_token():
    token_balance: uint256 = ERC20(self.token).balanceOf(self)
    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 - 1) / 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()


@internal
def _claim(addr: address, ve: address, _last_token_time: uint256) -> uint256:
    # 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

    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

    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)
    self.user_epoch_of[addr] = user_epoch
    self.time_cursor_of[addr] = week_cursor

    log Claimed(addr, to_distribute, user_epoch, max_user_epoch)

    return to_distribute


@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 = self._claim(_addr, self.voting_escrow, last_token_time)
    if amount != 0:
        token: address = self.token
        assert ERC20(token).transfer(_addr, amount)
        self.token_last_balance -= 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

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

        amount: uint256 = self._claim(addr, voting_escrow, last_token_time)
        if amount != 0:
            assert ERC20(token).transfer(addr, amount)
            total += amount

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

    return True


@external
def burn(_coin: address) -> bool:
    """
    @notice Receive crvUSD into the contract and trigger a token checkpoint
    @param _coin Address of the coin being received (must be crvUSD)
    @return bool success
    """
    assert _coin == self.token
    assert not self.is_killed

    amount: uint256 = ERC20(_coin).balanceOf(msg.sender)
    if amount != 0:
        ERC20(_coin).transferFrom(msg.sender, self, amount)
        if self.can_checkpoint_token and (block.timestamp > self.last_token_time + TOKEN_CHECKPOINT_DEADLINE):
            self._checkpoint_token()

    return True


@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 crvUSD 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

    token: address = self.token
    assert ERC20(token).transfer(self.emergency_return, ERC20(token).balanceOf(self))


@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

Contract Security Audit

Contract ABI

[{"name":"CommitAdmin","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyAdmin","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"ToggleAllowCheckpointToken","inputs":[{"name":"toggle_flag","type":"bool","indexed":false}],"anonymous":false,"type":"event"},{"name":"CheckpointToken","inputs":[{"name":"time","type":"uint256","indexed":false},{"name":"tokens","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Claimed","inputs":[{"name":"recipient","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false},{"name":"claim_epoch","type":"uint256","indexed":false},{"name":"max_epoch","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_voting_escrow","type":"address"},{"name":"_start_time","type":"uint256"},{"name":"_token","type":"address"},{"name":"_admin","type":"address"},{"name":"_emergency_return","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"checkpoint_token","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"ve_for_at","inputs":[{"name":"_user","type":"address"},{"name":"_timestamp","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"checkpoint_total_supply","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"claim","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"claim","inputs":[{"name":"_addr","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"claim_many","inputs":[{"name":"_receivers","type":"address[20]"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"burn","inputs":[{"name":"_coin","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"commit_admin","inputs":[{"name":"_addr","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"apply_admin","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"toggle_allow_checkpoint_token","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"kill_me","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"recover_balance","inputs":[{"name":"_coin","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"start_time","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"time_cursor","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"time_cursor_of","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"user_epoch_of","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"last_token_time","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"tokens_per_week","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"voting_escrow","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"total_received","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"token_last_balance","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"ve_supply","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"future_admin","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"can_checkpoint_token","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"emergency_return","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"is_killed","inputs":[],"outputs":[{"name":"","type":"bool"}]}]

6020611b0d6000396000518060a01c611b08576040526020611b4d6000396000518060a01c611b08576060526020611b6d6000396000518060a01c611b08576080526020611b8d6000396000518060a01c611b085760a05234611b08576020611b2d60003960005162093a808104905062093a8081028162093a80820418611b0857905060c05260c05160015560c05160055560c05160025560605166038d7ea4c680075560405166038d7ea4c680065560805166071afd498d000a5560a05166071afd498d000d55611a2d6100da61000039611a2d610000f36003361161000c57610e19565b60003560e01c34611a1b5763811a40fe81186100785760043610611a1b5766071afd498d000a543318610040576001610069565b66071afd498d000c54610054576000610069565b600554620151808101818110611a1b57905042115b15611a1b57610076610e1f565b005b63ace296fb811861021b5760443610611a1b576004358060a01c611a1b576102e05266038d7ea4c6800654610300526103005163010ae757610340526102e051610360526020610340602461035c845afa6100d8573d600060003e3d6000fd5b60203d10611a1b5761034090505161032052610300516040526102e0516060526024356080526103205160a0526101106103606111f3565b6103605161034052610300516328d09d476103e0526102e05161040052610340516104205260806103e060446103fc845afa610151573d600060003e3d6000fd5b60803d10611a1b576103e05180600f0b8118611a1b57610480526104005180600f0b8118611a1b576104a052610420516104c052610440516104e052610480905080516103605260208101516103805260408101516103a05260608101516103c0525061036051610380516024356103a051808203828111611a1b579050905080607f1c611a1b5780820280600f0b8118611a1b579050905080820380600f0b8118611a1b57905090506000818118600083130218905060008112611a1b576103e05260206103e0f35b63b21ed50281186102385760043610611a1b57610236611321565b005b634e71d92d81186102555760043610611a1b573361062052610278565b631e83409a81186103e25760243610611a1b576004358060a01c611a1b57610620525b600054600114611a1b57600160005566071afd498d000e54611a1b5760025442106102a5576102a5611321565b6005546106405266071afd498d000c546102c05760006102d6565b61064051620151808101818110611a1b57905042115b156102e9576102e3610e1f565b42610640525b6106405162093a808104905062093a8081028162093a80820418611a1b57905061064052610620516102e05266038d7ea4c680065461030052610640516103205261033561068061152f565b610680516106605261066051156103d65766038d7ea4c6800754610680526106805163a9059cbb6106a052610620516106c052610660516106e05260206106a060446106bc6000855af161038e573d600060003e3d6000fd5b60203d10611a1b576106a0518060011c611a1b576107005261070090505115611a1b5766038d7ea4c680095461066051808203828111611a1b579050905066038d7ea4c68009555b60206106606000600055f35b637b935a2381186106fd576102843610611a1b576004358060a01c611a1b57610620526024358060a01c611a1b57610640526044358060a01c611a1b57610660526064358060a01c611a1b57610680526084358060a01c611a1b576106a05260a4358060a01c611a1b576106c05260c4358060a01c611a1b576106e05260e4358060a01c611a1b5761070052610104358060a01c611a1b5761072052610124358060a01c611a1b5761074052610144358060a01c611a1b5761076052610164358060a01c611a1b5761078052610184358060a01c611a1b576107a0526101a4358060a01c611a1b576107c0526101c4358060a01c611a1b576107e0526101e4358060a01c611a1b5761080052610204358060a01c611a1b5761082052610224358060a01c611a1b5761084052610244358060a01c611a1b5761086052610264358060a01c611a1b5761088052600054600114611a1b57600160005566071afd498d000e54611a1b57600254421061055b5761055b611321565b6005546108a05266071afd498d000c5461057657600061058c565b6108a051620151808101818110611a1b57905042115b1561059f57610599610e1f565b426108a0525b6108a05162093a808104905062093a8081028162093a80820418611a1b5790506108a05266038d7ea4c68006546108c05266038d7ea4c68007546108e05260006109005260006014905b8060051b61062001516109205261092051610603576106bb565b610920516102e0526108c051610300526108a0516103205261062661096061152f565b610960516109405261094051156106b0576108e05163a9059cbb610960526109205161098052610940516109a0526020610960604461097c6000855af1610672573d600060003e3d6000fd5b60203d10611a1b57610960518060011c611a1b576109c0526109c090505115611a1b576109005161094051808201828110611a1b5790509050610900525b6001018181186105e9575b505061090051156106eb5766038d7ea4c680095461090051808203828111611a1b579050905066038d7ea4c68009555b60016109205260206109206000600055f35b6389afcb4481186108245760243610611a1b576004358060a01c611a1b576101405266038d7ea4c68007546101405118611a1b5766071afd498d000e54611a1b57610140516370a0823161018052336101a0526020610180602461019c845afa61076c573d600060003e3d6000fd5b60203d10611a1b5761018090505161016052610160511561081757610140516323b872dd61018052336101a052306101c052610160516101e0526020610180606461019c6000855af16107c4573d600060003e3d6000fd5b60203d10611a1b57610180518060011c611a1b5761020052610200505066071afd498d000c546107f557600061080a565b600554620151808101818110611a1b57905042115b1561081757610817610e1f565b6001610180526020610180f35b63b1d3db75811861088e5760243610611a1b576004358060a01c611a1b5760405266071afd498d000a543318611a1b5760405166071afd498d000b557f59a407284ae6e2986675fa1400d6498af928ed01f4fd2dd6be4a2a8b4fc35b3460405160605260206060a1005b63c0e991a681186109045760043610611a1b5766071afd498d000a543318611a1b5766071afd498d000b5415611a1b5766071afd498d000b5460405260405166071afd498d000a557f756f845176805c8ebf249854e909627308157f63c96e470e44a9e8549ba6fb1e60405160605260206060a1005b632121bfc3811861096d5760043610611a1b5766071afd498d000a543318611a1b5766071afd498d000c541560405260405166071afd498d000c557fdbe6ac1081ebd8e648718341126659456f4009fcadfe1c23f66f5e61522610b260405160605260206060a1005b63e36988538118610a365760043610611a1b5766071afd498d000a543318611a1b57600166071afd498d000e5566038d7ea4c680075460405260405163a9059cbb60a05266071afd498d000d5460c0526040516370a0823160605230608052602060606024607c845afa6109e6573d600060003e3d6000fd5b60203d10611a1b57606090505160e052602060a0604460bc6000855af1610a12573d600060003e3d6000fd5b60203d10611a1b5760a0518060011c611a1b576101005261010090505115611a1b57005b63db2f5f798118610b8f5760243610611a1b576004358060a01c611a1b5760405266071afd498d000a543318611a1b5766038d7ea4c680075460405114611a1b576040516370a082316080523060a052602060806024609c845afa610aa0573d600060003e3d6000fd5b60203d10611a1b5760809050516060526000600460c0527fa9059cbb0000000000000000000000000000000000000000000000000000000060e05260c080516020820183610120018151815250508083019250505066071afd498d000d548161012001526020810190506060518161012001526020810190508061010052610100505060206101a06101005161012060006040515af1610b45573d600060003e3d6000fd5b3d602081183d60201002186101805261018080518060805260208201805160a05250505060805115610b845760a05160805160200360031b1c15611a1b575b600160c052602060c0f35b63834ee4178118610bae5760043610611a1b5760015460405260206040f35b63127dcbd38118610bcd5760043610611a1b5760025460405260206040f35b632a2a314b8118610c085760243610611a1b576004358060a01c611a1b57604052600360405160205260005260406000205460605260206060f35b63d5d46e888118610c435760243610611a1b576004358060a01c611a1b57604052600460405160205260005260406000205460605260206060f35b637f58e8f88118610c625760043610611a1b5760055460405260206040f35b63edf599978118610c935760243610611a1b5760043566038d7ea4c67fff8111611a1b576006015460405260206040f35b63dfe050318118610cb85760043610611a1b5766038d7ea4c680065460405260206040f35b63fc0c546a8118610cdd5760043610611a1b5766038d7ea4c680075460405260206040f35b632f0c222e8118610d025760043610611a1b5766038d7ea4c680085460405260206040f35b6322b04bfc8118610d275760043610611a1b5766038d7ea4c680095460405260206040f35b63d4dafba88118610d5e5760243610611a1b5760043566038d7ea4c67fff8111611a1b5766038d7ea4c6800a015460405260206040f35b63f851a4408118610d835760043610611a1b5766071afd498d000a5460405260206040f35b6317f7182a8118610da85760043610611a1b5766071afd498d000b5460405260206040f35b63aeba47378118610dcd5760043610611a1b5766071afd498d000c5460405260206040f35b632c3f531e8118610df25760043610611a1b5766071afd498d000d5460405260206040f35b639c868ac08118610e175760043610611a1b5766071afd498d000e5460405260206040f35b505b60006000fd5b66038d7ea4c68007546370a0823160605230608052602060606024607c845afa610e4e573d600060003e3d6000fd5b60203d10611a1b57606090505160405260405166038d7ea4c6800954808203828111611a1b579050905060605260405166038d7ea4c680095560055460805242608051808203828111611a1b579050905060a0524260055560805162093a808104905062093a8081028162093a80820418611a1b57905060c052600060e05260006014905b806101005260c05162093a808101818110611a1b57905060e05260e0514210610fa75760a051610f0a5760805160e0511815610f0d565b60005b610f785760c05166038d7ea4c67fff8111611a1b57600601805460605160e051608051808203828111611a1b5790509050808202811583838304141715611a1b579050905060a0518015611a1b5780820490509050808201828110611a1b5790509050815550611054565b60c05166038d7ea4c67fff8111611a1b576006018054606051808201828110611a1b5790509050815550611054565b60a051610fb957608051421815610fbc565b60005b6110255760c05166038d7ea4c67fff8111611a1b57600601805460605142608051808203828111611a1b5790509050808202811583838304141715611a1b579050905060a0518015611a1b5780820490509050808201828110611a1b579050905081555061106b565b60c05166038d7ea4c67fff8111611a1b576006018054606051808201828110611a1b579050905081555061106b565b60e05160805260e05160c052600101818118610ed3575b50507fce749457b74e10f393f2c6b1ce4261b78791376db5a3f501477a809f03f500d64261010052606051610120526040610100a1565b600060805260405163900cf0cf60c052602060c0600460dc845afa6110cc573d600060003e3d6000fd5b60203d10611a1b5760c090505160a05260006080905b8060c05260a051608051106110f6576111e9565b60805160a051808201828110611a1b579050905060028101818110611a1b5790508060011c905060e05260405163d1febfb96101805260e0516101a0526080610180602461019c845afa61114f573d600060003e3d6000fd5b60803d10611a1b576101805180600f0b8118611a1b57610220526101a05180600f0b8118611a1b57610240526101c051610260526101e051610280526102209050805161010052602081015161012052604081015161014052606081015161016052506060516101405111156111d75760e05160018103818111611a1b57905060a0526111de565b60e0516080525b6001018181186110e2575b5050608051815250565b600060c05260a05160e05260006080905b806101005260e05160c0511061121957611317565b60c05160e051808201828110611a1b579050905060028101818110611a1b5790508060011c9050610120526040516328d09d476101c0526060516101e052610120516102005260806101c060446101dc845afa61127b573d600060003e3d6000fd5b60803d10611a1b576101c05180600f0b8118611a1b57610260526101e05180600f0b8118611a1b5761028052610200516102a052610220516102c052610260905080516101405260208101516101605260408101516101805260608101516101a05250608051610180511115611304576101205160018103818111611a1b57905060e05261130c565b6101205160c0525b600101818118611204575b505060c051815250565b66038d7ea4c68006546102a0526002546102c0524260018103818111611a1b57905062093a808104905062093a8081028162093a80820418611a1b5790506102e0526102a05163c2c4c5c161030052803b15611a1b576000610300600461031c6000855af1611395573d600060003e3d6000fd5b5060006014905b80610300526102e0516102c05111611524576102a0516040526102c0516060526113c76103406110a2565b61034051610320526102a05163d1febfb96103c052610320516103e05260806103c060246103dc845afa611400573d600060003e3d6000fd5b60803d10611a1b576103c05180600f0b8118611a1b57610460526103e05180600f0b8118611a1b5761048052610400516104a052610420516104c052610460905080516103405260208101516103605260408101516103805260608101516103a0525060006103c052610380516102c051111561149a576102c05161038051808203828111611a1b579050905080607f1c611a1b576103c0525b61034051610360516103c05180820280600f0b8118611a1b579050905080820380600f0b8118611a1b57905090506000818118600083130218905060008112611a1b576102c05166038d7ea4c67fff8111611a1b5766038d7ea4c6800a015561150256611524565b6102c05162093a808101818110611a1b5790506102c05260010181811861139c575b50506102c051600255565b604036610340376103005163010ae7576103a0526102e0516103c05260206103a060246103bc845afa611567573d600060003e3d6000fd5b60203d10611a1b576103a0905051610380526001546103a05261038051611592576000815250611a19565b60036102e0516020526000526040600020546103c0526103c0516115e457610300516040526102e0516060526103a0516080526103805160a0526115d76103e06111f3565b6103e051610340526115fb565b60046102e051602052600052604060002054610340525b6103405161160a576001610340525b610300516328d09d47610460526102e05161048052610340516104a0526080610460604461047c845afa611643573d600060003e3d6000fd5b60803d10611a1b576104605180600f0b8118611a1b57610500526104805180600f0b8118611a1b57610520526104a051610540526104c05161056052610500905080516103e052602081015161040052604081015161042052606081015161044052506103c0516116ef576104205162093a808101818110611a1b57905060018103818111611a1b57905062093a808104905062093a8081028162093a80820418611a1b5790506103c0525b610320516103c05110611706576000815250611a19565b6103a0516103c051101561171d576103a0516103c0525b6080366104603760006032905b806104e052610320516103c051106117415761197a565b610420516103c0511015611756576000611761565b610380516103405111155b611884576103c0516104a051808203828111611a1b579050905080607f1c611a1b576105005261046051610500516104805180820280600f0b8118611a1b579050905080820380600f0b8118611a1b57905090506000818118600083130218905060008112611a1b5761052052610520516117e4576103805161034051116117e7565b60005b156117f15761197a565b61052051156118685761036051610520516103c05166038d7ea4c67fff8111611a1b5760060154808202811583838304141715611a1b57905090506103c05166038d7ea4c67fff8111611a1b5766038d7ea4c6800a01548015611a1b5780820490509050808201828110611a1b5790509050610360525b6103c05162093a808101818110611a1b5790506103c05261196f565b6103405160018101818110611a1b579050610340526103e051610460526104005161048052610420516104a052610440516104c05261038051610340511161196757610300516328d09d47610500526102e0516105205261034051610540526080610500604461051c845afa6118ff573d600060003e3d6000fd5b60803d10611a1b576105005180600f0b8118611a1b576105a0526105205180600f0b8118611a1b576105c052610540516105e05261056051610600526105a0905080516103e0526020810151610400526040810151610420526060810151610440525061196f565b6080366103e0375b60010181811861172a575b5050610380516103405160018103818111611a1b57905080828118828410021890509050610340526103405160046102e0516020526000526040600020556103c05160036102e0516020526000526040600020556102e0517f9cdcf2f7714cca3508c7f0110b04a90a80a3a8dd0e35de99689db74d28c5383e610360516104e0526103405161050052610380516105205260606104e0a2610360518152505b565b600080fda165767970657283000307000b005b600080fd0000000000000000000000005f3b5dfeb7b28cdbd7faba78963ee202a494e2a20000000000000000000000000000000000000000000000000000000066737100000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e00000000000000000000000040907540d8a6c65c637785e8f8b742ae6b0b9968000000000000000000000000467947ee34af926cf1dcac093870f613c96b1e0c

Deployed Bytecode

0x6003361161000c57610e19565b60003560e01c34611a1b5763811a40fe81186100785760043610611a1b5766071afd498d000a543318610040576001610069565b66071afd498d000c54610054576000610069565b600554620151808101818110611a1b57905042115b15611a1b57610076610e1f565b005b63ace296fb811861021b5760443610611a1b576004358060a01c611a1b576102e05266038d7ea4c6800654610300526103005163010ae757610340526102e051610360526020610340602461035c845afa6100d8573d600060003e3d6000fd5b60203d10611a1b5761034090505161032052610300516040526102e0516060526024356080526103205160a0526101106103606111f3565b6103605161034052610300516328d09d476103e0526102e05161040052610340516104205260806103e060446103fc845afa610151573d600060003e3d6000fd5b60803d10611a1b576103e05180600f0b8118611a1b57610480526104005180600f0b8118611a1b576104a052610420516104c052610440516104e052610480905080516103605260208101516103805260408101516103a05260608101516103c0525061036051610380516024356103a051808203828111611a1b579050905080607f1c611a1b5780820280600f0b8118611a1b579050905080820380600f0b8118611a1b57905090506000818118600083130218905060008112611a1b576103e05260206103e0f35b63b21ed50281186102385760043610611a1b57610236611321565b005b634e71d92d81186102555760043610611a1b573361062052610278565b631e83409a81186103e25760243610611a1b576004358060a01c611a1b57610620525b600054600114611a1b57600160005566071afd498d000e54611a1b5760025442106102a5576102a5611321565b6005546106405266071afd498d000c546102c05760006102d6565b61064051620151808101818110611a1b57905042115b156102e9576102e3610e1f565b42610640525b6106405162093a808104905062093a8081028162093a80820418611a1b57905061064052610620516102e05266038d7ea4c680065461030052610640516103205261033561068061152f565b610680516106605261066051156103d65766038d7ea4c6800754610680526106805163a9059cbb6106a052610620516106c052610660516106e05260206106a060446106bc6000855af161038e573d600060003e3d6000fd5b60203d10611a1b576106a0518060011c611a1b576107005261070090505115611a1b5766038d7ea4c680095461066051808203828111611a1b579050905066038d7ea4c68009555b60206106606000600055f35b637b935a2381186106fd576102843610611a1b576004358060a01c611a1b57610620526024358060a01c611a1b57610640526044358060a01c611a1b57610660526064358060a01c611a1b57610680526084358060a01c611a1b576106a05260a4358060a01c611a1b576106c05260c4358060a01c611a1b576106e05260e4358060a01c611a1b5761070052610104358060a01c611a1b5761072052610124358060a01c611a1b5761074052610144358060a01c611a1b5761076052610164358060a01c611a1b5761078052610184358060a01c611a1b576107a0526101a4358060a01c611a1b576107c0526101c4358060a01c611a1b576107e0526101e4358060a01c611a1b5761080052610204358060a01c611a1b5761082052610224358060a01c611a1b5761084052610244358060a01c611a1b5761086052610264358060a01c611a1b5761088052600054600114611a1b57600160005566071afd498d000e54611a1b57600254421061055b5761055b611321565b6005546108a05266071afd498d000c5461057657600061058c565b6108a051620151808101818110611a1b57905042115b1561059f57610599610e1f565b426108a0525b6108a05162093a808104905062093a8081028162093a80820418611a1b5790506108a05266038d7ea4c68006546108c05266038d7ea4c68007546108e05260006109005260006014905b8060051b61062001516109205261092051610603576106bb565b610920516102e0526108c051610300526108a0516103205261062661096061152f565b610960516109405261094051156106b0576108e05163a9059cbb610960526109205161098052610940516109a0526020610960604461097c6000855af1610672573d600060003e3d6000fd5b60203d10611a1b57610960518060011c611a1b576109c0526109c090505115611a1b576109005161094051808201828110611a1b5790509050610900525b6001018181186105e9575b505061090051156106eb5766038d7ea4c680095461090051808203828111611a1b579050905066038d7ea4c68009555b60016109205260206109206000600055f35b6389afcb4481186108245760243610611a1b576004358060a01c611a1b576101405266038d7ea4c68007546101405118611a1b5766071afd498d000e54611a1b57610140516370a0823161018052336101a0526020610180602461019c845afa61076c573d600060003e3d6000fd5b60203d10611a1b5761018090505161016052610160511561081757610140516323b872dd61018052336101a052306101c052610160516101e0526020610180606461019c6000855af16107c4573d600060003e3d6000fd5b60203d10611a1b57610180518060011c611a1b5761020052610200505066071afd498d000c546107f557600061080a565b600554620151808101818110611a1b57905042115b1561081757610817610e1f565b6001610180526020610180f35b63b1d3db75811861088e5760243610611a1b576004358060a01c611a1b5760405266071afd498d000a543318611a1b5760405166071afd498d000b557f59a407284ae6e2986675fa1400d6498af928ed01f4fd2dd6be4a2a8b4fc35b3460405160605260206060a1005b63c0e991a681186109045760043610611a1b5766071afd498d000a543318611a1b5766071afd498d000b5415611a1b5766071afd498d000b5460405260405166071afd498d000a557f756f845176805c8ebf249854e909627308157f63c96e470e44a9e8549ba6fb1e60405160605260206060a1005b632121bfc3811861096d5760043610611a1b5766071afd498d000a543318611a1b5766071afd498d000c541560405260405166071afd498d000c557fdbe6ac1081ebd8e648718341126659456f4009fcadfe1c23f66f5e61522610b260405160605260206060a1005b63e36988538118610a365760043610611a1b5766071afd498d000a543318611a1b57600166071afd498d000e5566038d7ea4c680075460405260405163a9059cbb60a05266071afd498d000d5460c0526040516370a0823160605230608052602060606024607c845afa6109e6573d600060003e3d6000fd5b60203d10611a1b57606090505160e052602060a0604460bc6000855af1610a12573d600060003e3d6000fd5b60203d10611a1b5760a0518060011c611a1b576101005261010090505115611a1b57005b63db2f5f798118610b8f5760243610611a1b576004358060a01c611a1b5760405266071afd498d000a543318611a1b5766038d7ea4c680075460405114611a1b576040516370a082316080523060a052602060806024609c845afa610aa0573d600060003e3d6000fd5b60203d10611a1b5760809050516060526000600460c0527fa9059cbb0000000000000000000000000000000000000000000000000000000060e05260c080516020820183610120018151815250508083019250505066071afd498d000d548161012001526020810190506060518161012001526020810190508061010052610100505060206101a06101005161012060006040515af1610b45573d600060003e3d6000fd5b3d602081183d60201002186101805261018080518060805260208201805160a05250505060805115610b845760a05160805160200360031b1c15611a1b575b600160c052602060c0f35b63834ee4178118610bae5760043610611a1b5760015460405260206040f35b63127dcbd38118610bcd5760043610611a1b5760025460405260206040f35b632a2a314b8118610c085760243610611a1b576004358060a01c611a1b57604052600360405160205260005260406000205460605260206060f35b63d5d46e888118610c435760243610611a1b576004358060a01c611a1b57604052600460405160205260005260406000205460605260206060f35b637f58e8f88118610c625760043610611a1b5760055460405260206040f35b63edf599978118610c935760243610611a1b5760043566038d7ea4c67fff8111611a1b576006015460405260206040f35b63dfe050318118610cb85760043610611a1b5766038d7ea4c680065460405260206040f35b63fc0c546a8118610cdd5760043610611a1b5766038d7ea4c680075460405260206040f35b632f0c222e8118610d025760043610611a1b5766038d7ea4c680085460405260206040f35b6322b04bfc8118610d275760043610611a1b5766038d7ea4c680095460405260206040f35b63d4dafba88118610d5e5760243610611a1b5760043566038d7ea4c67fff8111611a1b5766038d7ea4c6800a015460405260206040f35b63f851a4408118610d835760043610611a1b5766071afd498d000a5460405260206040f35b6317f7182a8118610da85760043610611a1b5766071afd498d000b5460405260206040f35b63aeba47378118610dcd5760043610611a1b5766071afd498d000c5460405260206040f35b632c3f531e8118610df25760043610611a1b5766071afd498d000d5460405260206040f35b639c868ac08118610e175760043610611a1b5766071afd498d000e5460405260206040f35b505b60006000fd5b66038d7ea4c68007546370a0823160605230608052602060606024607c845afa610e4e573d600060003e3d6000fd5b60203d10611a1b57606090505160405260405166038d7ea4c6800954808203828111611a1b579050905060605260405166038d7ea4c680095560055460805242608051808203828111611a1b579050905060a0524260055560805162093a808104905062093a8081028162093a80820418611a1b57905060c052600060e05260006014905b806101005260c05162093a808101818110611a1b57905060e05260e0514210610fa75760a051610f0a5760805160e0511815610f0d565b60005b610f785760c05166038d7ea4c67fff8111611a1b57600601805460605160e051608051808203828111611a1b5790509050808202811583838304141715611a1b579050905060a0518015611a1b5780820490509050808201828110611a1b5790509050815550611054565b60c05166038d7ea4c67fff8111611a1b576006018054606051808201828110611a1b5790509050815550611054565b60a051610fb957608051421815610fbc565b60005b6110255760c05166038d7ea4c67fff8111611a1b57600601805460605142608051808203828111611a1b5790509050808202811583838304141715611a1b579050905060a0518015611a1b5780820490509050808201828110611a1b579050905081555061106b565b60c05166038d7ea4c67fff8111611a1b576006018054606051808201828110611a1b579050905081555061106b565b60e05160805260e05160c052600101818118610ed3575b50507fce749457b74e10f393f2c6b1ce4261b78791376db5a3f501477a809f03f500d64261010052606051610120526040610100a1565b600060805260405163900cf0cf60c052602060c0600460dc845afa6110cc573d600060003e3d6000fd5b60203d10611a1b5760c090505160a05260006080905b8060c05260a051608051106110f6576111e9565b60805160a051808201828110611a1b579050905060028101818110611a1b5790508060011c905060e05260405163d1febfb96101805260e0516101a0526080610180602461019c845afa61114f573d600060003e3d6000fd5b60803d10611a1b576101805180600f0b8118611a1b57610220526101a05180600f0b8118611a1b57610240526101c051610260526101e051610280526102209050805161010052602081015161012052604081015161014052606081015161016052506060516101405111156111d75760e05160018103818111611a1b57905060a0526111de565b60e0516080525b6001018181186110e2575b5050608051815250565b600060c05260a05160e05260006080905b806101005260e05160c0511061121957611317565b60c05160e051808201828110611a1b579050905060028101818110611a1b5790508060011c9050610120526040516328d09d476101c0526060516101e052610120516102005260806101c060446101dc845afa61127b573d600060003e3d6000fd5b60803d10611a1b576101c05180600f0b8118611a1b57610260526101e05180600f0b8118611a1b5761028052610200516102a052610220516102c052610260905080516101405260208101516101605260408101516101805260608101516101a05250608051610180511115611304576101205160018103818111611a1b57905060e05261130c565b6101205160c0525b600101818118611204575b505060c051815250565b66038d7ea4c68006546102a0526002546102c0524260018103818111611a1b57905062093a808104905062093a8081028162093a80820418611a1b5790506102e0526102a05163c2c4c5c161030052803b15611a1b576000610300600461031c6000855af1611395573d600060003e3d6000fd5b5060006014905b80610300526102e0516102c05111611524576102a0516040526102c0516060526113c76103406110a2565b61034051610320526102a05163d1febfb96103c052610320516103e05260806103c060246103dc845afa611400573d600060003e3d6000fd5b60803d10611a1b576103c05180600f0b8118611a1b57610460526103e05180600f0b8118611a1b5761048052610400516104a052610420516104c052610460905080516103405260208101516103605260408101516103805260608101516103a0525060006103c052610380516102c051111561149a576102c05161038051808203828111611a1b579050905080607f1c611a1b576103c0525b61034051610360516103c05180820280600f0b8118611a1b579050905080820380600f0b8118611a1b57905090506000818118600083130218905060008112611a1b576102c05166038d7ea4c67fff8111611a1b5766038d7ea4c6800a015561150256611524565b6102c05162093a808101818110611a1b5790506102c05260010181811861139c575b50506102c051600255565b604036610340376103005163010ae7576103a0526102e0516103c05260206103a060246103bc845afa611567573d600060003e3d6000fd5b60203d10611a1b576103a0905051610380526001546103a05261038051611592576000815250611a19565b60036102e0516020526000526040600020546103c0526103c0516115e457610300516040526102e0516060526103a0516080526103805160a0526115d76103e06111f3565b6103e051610340526115fb565b60046102e051602052600052604060002054610340525b6103405161160a576001610340525b610300516328d09d47610460526102e05161048052610340516104a0526080610460604461047c845afa611643573d600060003e3d6000fd5b60803d10611a1b576104605180600f0b8118611a1b57610500526104805180600f0b8118611a1b57610520526104a051610540526104c05161056052610500905080516103e052602081015161040052604081015161042052606081015161044052506103c0516116ef576104205162093a808101818110611a1b57905060018103818111611a1b57905062093a808104905062093a8081028162093a80820418611a1b5790506103c0525b610320516103c05110611706576000815250611a19565b6103a0516103c051101561171d576103a0516103c0525b6080366104603760006032905b806104e052610320516103c051106117415761197a565b610420516103c0511015611756576000611761565b610380516103405111155b611884576103c0516104a051808203828111611a1b579050905080607f1c611a1b576105005261046051610500516104805180820280600f0b8118611a1b579050905080820380600f0b8118611a1b57905090506000818118600083130218905060008112611a1b5761052052610520516117e4576103805161034051116117e7565b60005b156117f15761197a565b61052051156118685761036051610520516103c05166038d7ea4c67fff8111611a1b5760060154808202811583838304141715611a1b57905090506103c05166038d7ea4c67fff8111611a1b5766038d7ea4c6800a01548015611a1b5780820490509050808201828110611a1b5790509050610360525b6103c05162093a808101818110611a1b5790506103c05261196f565b6103405160018101818110611a1b579050610340526103e051610460526104005161048052610420516104a052610440516104c05261038051610340511161196757610300516328d09d47610500526102e0516105205261034051610540526080610500604461051c845afa6118ff573d600060003e3d6000fd5b60803d10611a1b576105005180600f0b8118611a1b576105a0526105205180600f0b8118611a1b576105c052610540516105e05261056051610600526105a0905080516103e0526020810151610400526040810151610420526060810151610440525061196f565b6080366103e0375b60010181811861172a575b5050610380516103405160018103818111611a1b57905080828118828410021890509050610340526103405160046102e0516020526000526040600020556103c05160036102e0516020526000526040600020556102e0517f9cdcf2f7714cca3508c7f0110b04a90a80a3a8dd0e35de99689db74d28c5383e610360516104e0526103405161050052610380516105205260606104e0a2610360518152505b565b600080fda165767970657283000307000b

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

0000000000000000000000005f3b5dfeb7b28cdbd7faba78963ee202a494e2a20000000000000000000000000000000000000000000000000000000066737100000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e00000000000000000000000040907540d8a6c65c637785e8f8b742ae6b0b9968000000000000000000000000467947ee34af926cf1dcac093870f613c96b1e0c

-----Decoded View---------------
Arg [0] : _voting_escrow (address): 0x5f3b5DfEb7B28CDbD7FAba78963EE202a494e2A2
Arg [1] : _start_time (uint256): 1718841600
Arg [2] : _token (address): 0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E
Arg [3] : _admin (address): 0x40907540d8a6C65c637785e8f8B742ae6b0b9968
Arg [4] : _emergency_return (address): 0x467947EE34aF926cF1DCac093870f613C96B1E0c

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000005f3b5dfeb7b28cdbd7faba78963ee202a494e2a2
Arg [1] : 0000000000000000000000000000000000000000000000000000000066737100
Arg [2] : 000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e
Arg [3] : 00000000000000000000000040907540d8a6c65c637785e8f8b742ae6b0b9968
Arg [4] : 000000000000000000000000467947ee34af926cf1dcac093870f613c96b1e0c


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.