Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0.004347153191560912 ETH
Eth Value
$9.20 (@ $2,117.19/ETH)Latest 17 from a total of 17 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 22435295 | 322 days ago | IN | 0.005 ETH | 0.00002102 | ||||
| Transfer | 22333124 | 336 days ago | IN | 0.008 ETH | 0.00005221 | ||||
| Transfer | 22084685 | 371 days ago | IN | 0.005 ETH | 0.00002321 | ||||
| Transfer | 21984207 | 385 days ago | IN | 0.005 ETH | 0.00002806 | ||||
| Transfer | 21833996 | 406 days ago | IN | 0.005 ETH | 0.00003915 | ||||
| Transfer | 21733754 | 420 days ago | IN | 0.005 ETH | 0.00006334 | ||||
| Transfer | 21583255 | 441 days ago | IN | 0.005 ETH | 0.00014928 | ||||
| Transfer | 21433077 | 462 days ago | IN | 0.01 ETH | 0.0003156 | ||||
| Transfer | 21232552 | 490 days ago | IN | 0.005 ETH | 0.0002258 | ||||
| Transfer | 21139157 | 503 days ago | IN | 0.005 ETH | 0.00038198 | ||||
| Transfer | 21009387 | 521 days ago | IN | 0.005 ETH | 0.00020933 | ||||
| Transfer | 20938646 | 531 days ago | IN | 0.005 ETH | 0.00024121 | ||||
| Transfer | 20827227 | 546 days ago | IN | 0.005 ETH | 0.00049497 | ||||
| Transfer | 20581646 | 581 days ago | IN | 0.01 ETH | 0.00003347 | ||||
| Transfer | 20348449 | 613 days ago | IN | 0.01 ETH | 0.00013604 | ||||
| Transfer | 20129358 | 644 days ago | IN | 0.01 ETH | 0.00011397 | ||||
| Transfer | 19840140 | 684 days ago | IN | 0.01 ETH | 0.00014632 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Bridge | 22534728 | 308 days ago | 0.00201219 ETH | ||||
| Bridge | 22484853 | 315 days ago | 0.00201123 ETH | ||||
| Bridge | 22435194 | 322 days ago | 0.00200235 ETH | ||||
| Bridge | 22385321 | 329 days ago | 0.00200293 ETH | ||||
| Bridge | 22335197 | 336 days ago | 0.00200447 ETH | ||||
| Bridge | 22285022 | 343 days ago | 0.00200269 ETH | ||||
| Bridge | 22234817 | 350 days ago | 0.00200394 ETH | ||||
| Bridge | 22184700 | 357 days ago | 0.00200778 ETH | ||||
| Bridge | 22134560 | 364 days ago | 0.00200294 ETH | ||||
| Bridge | 22084399 | 371 days ago | 0.00200446 ETH | ||||
| Bridge | 22034249 | 378 days ago | 0.00200402 ETH | ||||
| Bridge | 21984152 | 385 days ago | 0.00200499 ETH | ||||
| Bridge | 21933978 | 392 days ago | 0.00200697 ETH | ||||
| Bridge | 21883876 | 399 days ago | 0.00200515 ETH | ||||
| Bridge | 21833877 | 406 days ago | 0.00200918 ETH | ||||
| Bridge | 21783762 | 413 days ago | 0.00201317 ETH | ||||
| Bridge | 21733668 | 420 days ago | 0.00202524 ETH | ||||
| Bridge | 21683496 | 427 days ago | 0.00204784 ETH | ||||
| Bridge | 21633361 | 434 days ago | 0.00205809 ETH | ||||
| Bridge | 21583223 | 441 days ago | 0.00204047 ETH | ||||
| Bridge | 21533099 | 448 days ago | 0.00220102 ETH | ||||
| Bridge | 21482942 | 455 days ago | 0.00203846 ETH | ||||
| Bridge | 21432895 | 462 days ago | 0.00215961 ETH | ||||
| Bridge | 21382735 | 469 days ago | 0.00215913 ETH | ||||
| Bridge | 21332633 | 476 days ago | 0.00217512 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
$9.21
Net Worth in ETH
0.004351
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,119 | 0.00434715 | $9.21 |
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.