Overview
ETH Balance
0.009865840250445248 ETH
Eth Value
$22.38 (@ $2,268.78/ETH)Latest 12 from a total of 12 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 20827235 | 537 days ago | IN | 0.005 ETH | 0.00046218 | ||||
| Transfer | 20380024 | 599 days ago | IN | 0.01 ETH | 0.00006022 | ||||
| Transfer | 20278660 | 613 days ago | IN | 0.01 ETH | 0.00013294 | ||||
| Transfer | 20029161 | 648 days ago | IN | 0.01 ETH | 0.00052645 | ||||
| Transfer | 19728041 | 690 days ago | IN | 0.01 ETH | 0.00020742 | ||||
| Transfer | 19528990 | 718 days ago | IN | 0.01 ETH | 0.00076307 | ||||
| Transfer | 19279588 | 753 days ago | IN | 0.01 ETH | 0.0007329 | ||||
| Transfer | 19030290 | 788 days ago | IN | 0.01 ETH | 0.00084794 | ||||
| Transfer | 18830529 | 816 days ago | IN | 0.01 ETH | 0.0012789 | ||||
| Transfer | 18530505 | 858 days ago | IN | 0.015 ETH | 0.00070013 | ||||
| Transfer | 17983424 | 935 days ago | IN | 0.025 ETH | 0.00042293 | ||||
| Transfer | 16038297 | 1208 days ago | IN | 0.06 ETH | 0.00033145 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Bridge | 20630579 | 564 days ago | 0.00200769 ETH | ||||
| Bridge | 20580708 | 571 days ago | 0.00200607 ETH | ||||
| Bridge | 20530442 | 578 days ago | 0.00201247 ETH | ||||
| Bridge | 20480235 | 585 days ago | 0.00201374 ETH | ||||
| Bridge | 20429982 | 592 days ago | 0.00203285 ETH | ||||
| Bridge | 20379886 | 599 days ago | 0.00202256 ETH | ||||
| Bridge | 20329760 | 606 days ago | 0.00204197 ETH | ||||
| Bridge | 20279590 | 613 days ago | 0.00202186 ETH | ||||
| Bridge | 20229477 | 620 days ago | 0.00203151 ETH | ||||
| Bridge | 20179316 | 627 days ago | 0.00201925 ETH | ||||
| Bridge | 20129323 | 634 days ago | 0.00203479 ETH | ||||
| Bridge | 20079257 | 641 days ago | 0.00205859 ETH | ||||
| Bridge | 20029163 | 648 days ago | 0.00215629 ETH | ||||
| Bridge | 19979046 | 655 days ago | 0.00210558 ETH | ||||
| Bridge | 19928894 | 662 days ago | 0.00206992 ETH | ||||
| Bridge | 19878949 | 669 days ago | 0.00202701 ETH | ||||
| Bridge | 19828873 | 676 days ago | 0.00202688 ETH | ||||
| Bridge | 19778773 | 683 days ago | 0.00203776 ETH | ||||
| Bridge | 19728729 | 690 days ago | 0.0020611 ETH | ||||
| Bridge | 19678663 | 697 days ago | 0.00205664 ETH | ||||
| Bridge | 19628702 | 704 days ago | 0.00211198 ETH | ||||
| Bridge | 19578748 | 711 days ago | 0.00218261 ETH | ||||
| Bridge | 19528980 | 718 days ago | 0.00220622 ETH | ||||
| Bridge | 19479385 | 725 days ago | 0.00223552 ETH | ||||
| Bridge | 19429590 | 732 days ago | 0.0024048 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Minimal Proxy Contract for 0x9336da074c4f585a8b59a8c2b77a32b630cde5a1
Contract Name:
Vyper_contract
Compiler Version
vyper:0.3.1
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"}]}]Loading...
Loading
Loading...
Loading
Net Worth in USD
$22.38
Net Worth in ETH
0.009866
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,268.78 | 0.00986584 | $22.38 |
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.