ETH Price: $2,117.19 (-2.70%)

Contract

0x39D053f054e9e5E5ADA759FBDDCEc904D43e9B7c
 

Overview

ETH Balance

0.004347153191560912 ETH

Eth Value

$9.20 (@ $2,117.19/ETH)

More Info

Private Name Tags

ContractCreator

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer224352952025-05-08 0:33:47322 days ago1746664427IN
0x39D053f0...4D43e9B7c
0.005 ETH0.000021020.88725382
Transfer223331242025-04-23 17:13:59336 days ago1745428439IN
0x39D053f0...4D43e9B7c
0.008 ETH0.000052212.20391197
Transfer220846852025-03-20 1:06:11371 days ago1742432771IN
0x39D053f0...4D43e9B7c
0.005 ETH0.000023210.97993333
Transfer219842072025-03-06 0:15:47385 days ago1741220147IN
0x39D053f0...4D43e9B7c
0.005 ETH0.000028061.18446447
Transfer218339962025-02-13 0:30:11406 days ago1739406611IN
0x39D053f0...4D43e9B7c
0.005 ETH0.000039151.65248362
Transfer217337542025-01-30 0:25:35420 days ago1738196735IN
0x39D053f0...4D43e9B7c
0.005 ETH0.000063342.6735991
Transfer215832552025-01-09 0:10:35441 days ago1736381435IN
0x39D053f0...4D43e9B7c
0.005 ETH0.000149286.30084857
Transfer214330772024-12-19 0:44:59462 days ago1734569099IN
0x39D053f0...4D43e9B7c
0.01 ETH0.000315613.32047191
Transfer212325522024-11-21 0:33:23490 days ago1732149203IN
0x39D053f0...4D43e9B7c
0.005 ETH0.00022589.53057858
Transfer211391572024-11-07 23:49:35503 days ago1731023375IN
0x39D053f0...4D43e9B7c
0.005 ETH0.0003819816.1223784
Transfer210093872024-10-20 21:10:35521 days ago1729458635IN
0x39D053f0...4D43e9B7c
0.005 ETH0.000209338.83525554
Transfer209386462024-10-10 23:57:35531 days ago1728604655IN
0x39D053f0...4D43e9B7c
0.005 ETH0.0002412110.18088216
Transfer208272272024-09-25 11:08:35546 days ago1727262515IN
0x39D053f0...4D43e9B7c
0.005 ETH0.0004949720.89131658
Transfer205816462024-08-22 4:05:11581 days ago1724299511IN
0x39D053f0...4D43e9B7c
0.01 ETH0.000033471.41288394
Transfer203484492024-07-20 14:50:11613 days ago1721487011IN
0x39D053f0...4D43e9B7c
0.01 ETH0.000136045.74218569
Transfer201293582024-06-20 0:26:47644 days ago1718843207IN
0x39D053f0...4D43e9B7c
0.01 ETH0.000113974.81030059
Transfer198401402024-05-10 14:09:47684 days ago1715350187IN
0x39D053f0...4D43e9B7c
0.01 ETH0.000146326.17602254

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Bridge225347282025-05-22 0:06:11308 days ago1747872371
0x39D053f0...4D43e9B7c
0.00201219 ETH
Bridge224848532025-05-15 0:06:23315 days ago1747267583
0x39D053f0...4D43e9B7c
0.00201123 ETH
Bridge224351942025-05-08 0:13:23322 days ago1746663203
0x39D053f0...4D43e9B7c
0.00200235 ETH
Bridge223853212025-05-01 0:05:35329 days ago1746057935
0x39D053f0...4D43e9B7c
0.00200293 ETH
Bridge223351972025-04-24 0:08:47336 days ago1745453327
0x39D053f0...4D43e9B7c
0.00200447 ETH
Bridge222850222025-04-17 0:05:11343 days ago1744848311
0x39D053f0...4D43e9B7c
0.00200269 ETH
Bridge222348172025-04-10 0:04:59350 days ago1744243499
0x39D053f0...4D43e9B7c
0.00200394 ETH
Bridge221847002025-04-03 0:06:11357 days ago1743638771
0x39D053f0...4D43e9B7c
0.00200778 ETH
Bridge221345602025-03-27 0:06:59364 days ago1743034019
0x39D053f0...4D43e9B7c
0.00200294 ETH
Bridge220843992025-03-20 0:08:35371 days ago1742429315
0x39D053f0...4D43e9B7c
0.00200446 ETH
Bridge220342492025-03-13 0:04:59378 days ago1741824299
0x39D053f0...4D43e9B7c
0.00200402 ETH
Bridge219841522025-03-06 0:04:47385 days ago1741219487
0x39D053f0...4D43e9B7c
0.00200499 ETH
Bridge219339782025-02-27 0:06:11392 days ago1740614771
0x39D053f0...4D43e9B7c
0.00200697 ETH
Bridge218838762025-02-20 0:04:11399 days ago1740009851
0x39D053f0...4D43e9B7c
0.00200515 ETH
Bridge218338772025-02-13 0:06:23406 days ago1739405183
0x39D053f0...4D43e9B7c
0.00200918 ETH
Bridge217837622025-02-06 0:04:35413 days ago1738800275
0x39D053f0...4D43e9B7c
0.00201317 ETH
Bridge217336682025-01-30 0:08:23420 days ago1738195703
0x39D053f0...4D43e9B7c
0.00202524 ETH
Bridge216834962025-01-23 0:04:59427 days ago1737590699
0x39D053f0...4D43e9B7c
0.00204784 ETH
Bridge216333612025-01-16 0:07:23434 days ago1736986043
0x39D053f0...4D43e9B7c
0.00205809 ETH
Bridge215832232025-01-09 0:04:11441 days ago1736381051
0x39D053f0...4D43e9B7c
0.00204047 ETH
Bridge215330992025-01-02 0:08:11448 days ago1735776491
0x39D053f0...4D43e9B7c
0.00220102 ETH
Bridge214829422024-12-26 0:03:35455 days ago1735171415
0x39D053f0...4D43e9B7c
0.00203846 ETH
Bridge214328952024-12-19 0:08:35462 days ago1734566915
0x39D053f0...4D43e9B7c
0.00215961 ETH
Bridge213827352024-12-12 0:06:35469 days ago1733961995
0x39D053f0...4D43e9B7c
0.00215913 ETH
Bridge213326332024-12-05 0:11:11476 days ago1733357471
0x39D053f0...4D43e9B7c
0.00217512 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Minimal Proxy Contract for 0x9336da074c4f585a8b59a8c2b77a32b630cde5a1

Contract Name:
Vyper_contract

Compiler Version
vyper:0.3.1

Optimization Enabled:
N/A

Other Settings:
berlin EvmVersion, MIT license

Contract Source Code (Vyper language format)

# @version 0.3.1
"""
@title Root Liquidity Gauge Implementation
@license MIT
@author Curve Finance
"""


interface Bridger:
    def cost() -> uint256: view
    def bridge(_token: address, _destination: address, _amount: uint256): payable

interface CRV20:
    def rate() -> uint256: view
    def future_epoch_time_write() -> uint256: nonpayable

interface ERC20:
    def balanceOf(_account: address) -> uint256: view
    def approve(_account: address, _value: uint256): nonpayable
    def transfer(_to: address, _amount: uint256): nonpayable

interface GaugeController:
    def checkpoint_gauge(addr: address): nonpayable
    def gauge_relative_weight(addr: address, time: uint256) -> uint256: view

interface Factory:
    def get_bridger(_chain_id: uint256) -> address: view
    def owner() -> address: view

interface Minter:
    def mint(_gauge: address): nonpayable


struct InflationParams:
    rate: uint256
    finish_time: uint256


WEEK: constant(uint256) = 604800
YEAR: constant(uint256) = 86400 * 365
RATE_DENOMINATOR: constant(uint256) = 10 ** 18
RATE_REDUCTION_COEFFICIENT: constant(uint256) = 1189207115002721024  # 2 ** (1/4) * 1e18
RATE_REDUCTION_TIME: constant(uint256) = YEAR

CRV: immutable(address)
GAUGE_CONTROLLER: immutable(address)
MINTER: immutable(address)


chain_id: public(uint256)
bridger: public(address)
factory: public(address)
inflation_params: public(InflationParams)

last_period: public(uint256)
total_emissions: public(uint256)

is_killed: public(bool)


@external
def __init__(_crv_token: address, _gauge_controller: address, _minter: address):
    self.factory = 0x000000000000000000000000000000000000dEaD

    # assign immutable variables
    CRV = _crv_token
    GAUGE_CONTROLLER = _gauge_controller
    MINTER = _minter


@payable
@external
def __default__():
    pass


@external
def transmit_emissions():
    """
    @notice Mint any new emissions and transmit across to child gauge
    """
    assert msg.sender == self.factory  # dev: call via factory

    Minter(MINTER).mint(self)
    minted: uint256 = ERC20(CRV).balanceOf(self)

    assert minted != 0  # dev: nothing minted
    bridger: address = self.bridger

    Bridger(bridger).bridge(CRV, self, minted, value=Bridger(bridger).cost())


@view
@external
def integrate_fraction(_user: address) -> uint256:
    """
    @notice Query the total emissions `_user` is entitled to
    @dev Any value of `_user` other than the gauge address will return 0
    """
    if _user == self:
        return self.total_emissions
    return 0


@external
def user_checkpoint(_user: address) -> bool:
    """
    @notice Checkpoint the gauge updating total emissions
    @param _user Vestigal parameter with no impact on the function
    """
    # the last period we calculated emissions up to (but not including)
    last_period: uint256 = self.last_period
    # our current period (which we will calculate emissions up to)
    current_period: uint256 = block.timestamp / WEEK

    # only checkpoint if the current period is greater than the last period
    # last period is always less than or equal to current period and we only calculate
    # emissions up to current period (not including it)
    if last_period != current_period:
        # checkpoint the gauge filling in any missing weight data
        GaugeController(GAUGE_CONTROLLER).checkpoint_gauge(self)

        params: InflationParams = self.inflation_params
        emissions: uint256 = 0

        # only calculate emissions for at most 256 periods since the last checkpoint
        for i in range(last_period, last_period + 256):
            if i == current_period:
                # don't calculate emissions for the current period
                break
            period_time: uint256 = i * WEEK
            weight: uint256 = GaugeController(GAUGE_CONTROLLER).gauge_relative_weight(self, period_time)

            if period_time <= params.finish_time and params.finish_time < period_time + WEEK:
                # calculate with old rate
                emissions += weight * params.rate * (params.finish_time - period_time) / 10 ** 18
                # update rate
                params.rate = params.rate * RATE_DENOMINATOR / RATE_REDUCTION_COEFFICIENT
                # calculate with new rate
                emissions += weight * params.rate * (period_time + WEEK - params.finish_time) / 10 ** 18
                # update finish time
                params.finish_time += RATE_REDUCTION_TIME
                # update storage
                self.inflation_params = params
            else:
                emissions += weight * params.rate * WEEK / 10 ** 18

        self.last_period = current_period
        self.total_emissions += emissions

    return True


@external
def set_killed(_is_killed: bool):
    """
    @notice Set the gauge kill status
    @dev Inflation params are modified accordingly to disable/enable emissions
    """
    assert msg.sender == Factory(self.factory).owner()

    if _is_killed:
        self.inflation_params.rate = 0
    else:
        self.inflation_params = InflationParams({
            rate: CRV20(CRV).rate(),
            finish_time: CRV20(CRV).future_epoch_time_write()
        })
        self.last_period = block.timestamp / WEEK
    self.is_killed = _is_killed


@external
def update_bridger():
    """
    @notice Update the bridger used by this contract
    @dev Bridger contracts should prevent briding if ever updated
    """
    # reset approval
    bridger: address = Factory(self.factory).get_bridger(self.chain_id)
    ERC20(CRV).approve(self.bridger, 0)
    ERC20(CRV).approve(bridger, MAX_UINT256)
    self.bridger = bridger


@external
def initialize(_bridger: address, _chain_id: uint256):
    """
    @notice Proxy initialization method
    """
    assert self.factory == ZERO_ADDRESS  # dev: already initialized

    self.chain_id = _chain_id
    self.bridger = _bridger
    self.factory = msg.sender

    inflation_params: InflationParams = InflationParams({
        rate: CRV20(CRV).rate(),
        finish_time: CRV20(CRV).future_epoch_time_write()
    })
    assert inflation_params.rate != 0

    self.inflation_params = inflation_params
    self.last_period = block.timestamp / WEEK

    ERC20(CRV).approve(_bridger, MAX_UINT256)

Contract ABI

API
[{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_crv_token","type":"address"},{"name":"_gauge_controller","type":"address"},{"name":"_minter","type":"address"}],"outputs":[]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"nonpayable","type":"function","name":"transmit_emissions","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"integrate_fraction","inputs":[{"name":"_user","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"user_checkpoint","inputs":[{"name":"_user","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"set_killed","inputs":[{"name":"_is_killed","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"update_bridger","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"initialize","inputs":[{"name":"_bridger","type":"address"},{"name":"_chain_id","type":"uint256"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"chain_id","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"bridger","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"factory","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"inflation_params","inputs":[],"outputs":[{"name":"","type":"tuple","components":[{"name":"rate","type":"uint256"},{"name":"finish_time","type":"uint256"}]}]},{"stateMutability":"view","type":"function","name":"last_period","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"total_emissions","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"is_killed","inputs":[],"outputs":[{"name":"","type":"bool"}]}]

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.