ETH Price: $2,268.78 (+7.01%)

Contract

0x95285Ea6fF14F80A2fD3989a6bAb993Bd6b5fA13
 

Overview

ETH Balance

0.009865840250445248 ETH

Eth Value

$22.38 (@ $2,268.78/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer208272352024-09-25 11:10:11537 days ago1727262611IN
0x95285Ea6...Bd6b5fA13
0.005 ETH0.0004621819.50738149
Transfer203800242024-07-25 0:37:47599 days ago1721867867IN
0x95285Ea6...Bd6b5fA13
0.01 ETH0.000060222.5418871
Transfer202786602024-07-10 21:02:47613 days ago1720645367IN
0x95285Ea6...Bd6b5fA13
0.01 ETH0.000132945.61107034
Transfer200291612024-06-06 0:18:23648 days ago1717633103IN
0x95285Ea6...Bd6b5fA13
0.01 ETH0.0005264522.21971022
Transfer197280412024-04-24 21:54:35690 days ago1713995675IN
0x95285Ea6...Bd6b5fA13
0.01 ETH0.000207428.75475721
Transfer195289902024-03-28 0:13:59718 days ago1711584839IN
0x95285Ea6...Bd6b5fA13
0.01 ETH0.0007630732.20659488
Transfer192795882024-02-22 0:26:11753 days ago1708561571IN
0x95285Ea6...Bd6b5fA13
0.01 ETH0.000732930.93333152
Transfer190302902024-01-18 0:51:59788 days ago1705539119IN
0x95285Ea6...Bd6b5fA13
0.01 ETH0.0008479435.78873052
Transfer188305292023-12-20 23:59:11816 days ago1703116751IN
0x95285Ea6...Bd6b5fA13
0.01 ETH0.001278953.97831413
Transfer185305052023-11-08 23:25:47858 days ago1699485947IN
0x95285Ea6...Bd6b5fA13
0.015 ETH0.0007001329.55043893
Transfer179834242023-08-24 8:38:47935 days ago1692866327IN
0x95285Ea6...Bd6b5fA13
0.025 ETH0.0004229317.8507028
Transfer160382972022-11-24 7:18:111208 days ago1669274291IN
0x95285Ea6...Bd6b5fA13
0.06 ETH0.0003314513.98954191

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Bridge206305792024-08-29 0:10:35564 days ago1724890235
0x95285Ea6...Bd6b5fA13
0.00200769 ETH
Bridge205807082024-08-22 0:56:11571 days ago1724288171
0x95285Ea6...Bd6b5fA13
0.00200607 ETH
Bridge205304422024-08-15 0:26:47578 days ago1723681607
0x95285Ea6...Bd6b5fA13
0.00201247 ETH
Bridge204802352024-08-08 0:18:59585 days ago1723076339
0x95285Ea6...Bd6b5fA13
0.00201374 ETH
Bridge204299822024-08-01 0:01:59592 days ago1722470519
0x95285Ea6...Bd6b5fA13
0.00203285 ETH
Bridge203798862024-07-25 0:09:35599 days ago1721866175
0x95285Ea6...Bd6b5fA13
0.00202256 ETH
Bridge203297602024-07-18 0:14:23606 days ago1721261663
0x95285Ea6...Bd6b5fA13
0.00204197 ETH
Bridge202795902024-07-11 0:10:11613 days ago1720656611
0x95285Ea6...Bd6b5fA13
0.00202186 ETH
Bridge202294772024-07-04 0:10:11620 days ago1720051811
0x95285Ea6...Bd6b5fA13
0.00203151 ETH
Bridge201793162024-06-27 0:03:23627 days ago1719446603
0x95285Ea6...Bd6b5fA13
0.00201925 ETH
Bridge201293232024-06-20 0:19:47634 days ago1718842787
0x95285Ea6...Bd6b5fA13
0.00203479 ETH
Bridge200792572024-06-13 0:14:47641 days ago1718237687
0x95285Ea6...Bd6b5fA13
0.00205859 ETH
Bridge200291632024-06-06 0:18:47648 days ago1717633127
0x95285Ea6...Bd6b5fA13
0.00215629 ETH
Bridge199790462024-05-30 0:20:23655 days ago1717028423
0x95285Ea6...Bd6b5fA13
0.00210558 ETH
Bridge199288942024-05-23 0:06:35662 days ago1716422795
0x95285Ea6...Bd6b5fA13
0.00206992 ETH
Bridge198789492024-05-16 0:26:11669 days ago1715819171
0x95285Ea6...Bd6b5fA13
0.00202701 ETH
Bridge198288732024-05-09 0:20:35676 days ago1715214035
0x95285Ea6...Bd6b5fA13
0.00202688 ETH
Bridge197787732024-05-02 0:09:35683 days ago1714608575
0x95285Ea6...Bd6b5fA13
0.00203776 ETH
Bridge197287292024-04-25 0:13:11690 days ago1714003991
0x95285Ea6...Bd6b5fA13
0.0020611 ETH
Bridge196786632024-04-18 0:07:35697 days ago1713398855
0x95285Ea6...Bd6b5fA13
0.00205664 ETH
Bridge196287022024-04-11 0:06:47704 days ago1712794007
0x95285Ea6...Bd6b5fA13
0.00211198 ETH
Bridge195787482024-04-04 0:13:11711 days ago1712189591
0x95285Ea6...Bd6b5fA13
0.00218261 ETH
Bridge195289802024-03-28 0:11:59718 days ago1711584719
0x95285Ea6...Bd6b5fA13
0.00220622 ETH
Bridge194793852024-03-21 0:08:59725 days ago1710979739
0x95285Ea6...Bd6b5fA13
0.00223552 ETH
Bridge194295902024-03-14 0:07:11732 days ago1710374831
0x95285Ea6...Bd6b5fA13
0.0024048 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.