Feature Tip: Add private address tag to any address under My Name Tag !
Latest 25 from a total of 1,091 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Vote_for_gauge_w... | 24508531 | 4 hrs ago | IN | 0 ETH | 0.00001077 | ||||
| Vote_for_gauge_w... | 24508517 | 4 hrs ago | IN | 0 ETH | 0.00001018 | ||||
| Vote_for_gauge_w... | 24506876 | 10 hrs ago | IN | 0 ETH | 0.00001572 | ||||
| Vote_for_gauge_w... | 24506468 | 11 hrs ago | IN | 0 ETH | 0.00004088 | ||||
| Vote_for_gauge_w... | 24503891 | 20 hrs ago | IN | 0 ETH | 0.0000095 | ||||
| Vote_for_gauge_w... | 24495691 | 47 hrs ago | IN | 0 ETH | 0.00002383 | ||||
| Vote_for_gauge_w... | 24492009 | 2 days ago | IN | 0 ETH | 0.00012836 | ||||
| Vote_for_gauge_w... | 24491449 | 2 days ago | IN | 0 ETH | 0.00006492 | ||||
| Vote_for_gauge_w... | 24490771 | 2 days ago | IN | 0 ETH | 0.00002028 | ||||
| Vote_for_gauge_w... | 24490603 | 2 days ago | IN | 0 ETH | 0.00000931 | ||||
| Vote_for_gauge_w... | 24490229 | 2 days ago | IN | 0 ETH | 0.0000141 | ||||
| Vote_for_gauge_w... | 24489994 | 2 days ago | IN | 0 ETH | 0.00002101 | ||||
| Vote_for_gauge_w... | 24489281 | 2 days ago | IN | 0 ETH | 0.00001909 | ||||
| Vote_for_gauge_w... | 24488547 | 2 days ago | IN | 0 ETH | 0.00000593 | ||||
| Vote_for_gauge_w... | 24487159 | 3 days ago | IN | 0 ETH | 0.00001048 | ||||
| Vote_for_gauge_w... | 24487143 | 3 days ago | IN | 0 ETH | 0.00001007 | ||||
| Vote_for_gauge_w... | 24486209 | 3 days ago | IN | 0 ETH | 0.00001971 | ||||
| Vote_for_gauge_w... | 24486152 | 3 days ago | IN | 0 ETH | 0.000052 | ||||
| Vote_for_gauge_w... | 24485027 | 3 days ago | IN | 0 ETH | 0.00004968 | ||||
| Vote_for_gauge_w... | 24485024 | 3 days ago | IN | 0 ETH | 0.00003789 | ||||
| Vote_for_gauge_w... | 24483596 | 3 days ago | IN | 0 ETH | 0.00002238 | ||||
| Vote_for_gauge_w... | 24482119 | 3 days ago | IN | 0 ETH | 0.00000607 | ||||
| Vote_for_gauge_w... | 24478837 | 4 days ago | IN | 0 ETH | 0.00009376 | ||||
| Vote_for_gauge_w... | 24478268 | 4 days ago | IN | 0 ETH | 0.00003888 | ||||
| Vote_for_gauge_w... | 24475755 | 4 days ago | IN | 0 ETH | 0.00001664 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x9fC47920...63d98F0A9 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Gauge Controller
Compiler Version
vyper:0.4.3
Contract Source Code (Vyper Json-Input format)
# @version 0.4.3
"""
@title Gauge Controller
@author Yield Basis
@license GNU Affero General Public License v3.0
@notice Controls liquidity gauges and the issuance of coins through the gauges
"""
from snekmate.auth import ownable
initializes: ownable
exports: (
ownable.transfer_ownership,
ownable.owner
)
# All future times are rounded by week
WEEK: constant(uint256) = 7 * 86400
# Cannot change weight votes more often than once in 10 days
WEIGHT_VOTE_DELAY: constant(uint256) = 10 * 86400
struct Point:
bias: uint256
slope: uint256
struct VotedSlope:
slope: uint256
bias: uint256 # Only used if slope == 0
power: uint256
end: uint256
interface VotingEscrow:
def get_last_user_slope(addr: address) -> int256: view
def get_last_user_point(addr: address) -> Point: view
def locked__end(addr: address) -> uint256: view
def transfer_clearance_checker() -> address: view
interface Gauge:
def get_adjustment() -> uint256: view
interface GovernanceToken:
def emit(owner: address, rate_factor: uint256) -> uint256: nonpayable
def preview_emissions(t: uint256, rate_factor: uint256) -> uint256: view
def transfer(_to: address, _amount: uint256) -> bool: nonpayable
event VoteForGauge:
time: uint256
user: address
gauge_addr: address
weight: uint256
event NewGauge:
addr: address
event SetKilled:
gauge: address
is_killed: bool
TOKEN: public(immutable(GovernanceToken))
VOTING_ESCROW: public(immutable(VotingEscrow))
# Gauge parameters
# All numbers are "fixed point" on the basis of 1e18
n_gauges: public(uint256)
# Needed for enumeration
gauges: public(address[1000000000])
is_killed: public(HashMap[address, bool])
vote_user_slopes: public(HashMap[address, HashMap[address, VotedSlope]]) # user -> gauge_addr -> VotedSlope
vote_user_power: public(HashMap[address, uint256]) # Total vote power used by user
last_user_vote: public(HashMap[address, HashMap[address, uint256]]) # Last user vote's timestamp for each gauge address
# Past and scheduled points for gauge weight, sum of weights per type, total weight
# Point is for bias+slope
# changes_* are for changes in slope
# time_* are for the last change timestamp
# timestamps for changes_ are rounded to whole weeks
# Variables for raw weights of gauges
point_weight: public(HashMap[address, Point]) # gauge_addr -> Point
changes_weight: HashMap[address, HashMap[uint256, uint256]] # gauge_addr -> weektime -> slope
time_weight: public(HashMap[address, uint256]) # gauge_addr -> last time
gauge_weight: public(HashMap[address, uint256])
gauge_weight_sum: public(uint256)
adjusted_gauge_weight: public(HashMap[address, uint256])
adjusted_gauge_weight_sum: public(uint256)
specific_emissions: public(uint256)
specific_emissions_per_gauge: public(HashMap[address, uint256])
weighted_emissions_per_gauge: public(HashMap[address, uint256])
sent_emissions_per_gauge: public(HashMap[address, uint256])
@deploy
def __init__(token: GovernanceToken, voting_escrow: VotingEscrow):
"""
@notice Contract constructor
@param token `ERC20CRV` contract address
@param voting_escrow `VotingEscrow` contract address
"""
ownable.__init__()
assert token.address != empty(address)
assert voting_escrow.address != empty(address)
TOKEN = token
VOTING_ESCROW = voting_escrow
@internal
@view
def _get_weight(gauge: address) -> Point:
"""
@notice Fill historic gauge weights week-over-week for missed checkins
and return the total for the future week
@param gauge Address of the gauge
@return Gauge weight
"""
t: uint256 = self.time_weight[gauge]
current_week: uint256 = block.timestamp // WEEK * WEEK
dt: uint256 = 0
if t > 0:
pt: Point = self.point_weight[gauge]
for i: uint256 in range(500):
if t >= current_week:
dt = block.timestamp - t
if dt == 0:
break
else:
dt = (t + WEEK) // WEEK * WEEK - t
t += dt
pt.bias -= min(pt.slope * dt, pt.bias) # Correctly handles even slope=0
pt.slope -= min(self.changes_weight[gauge][t], pt.slope) # Value from non-week-boundary is 0
if pt.bias == 0:
pt.slope = 0
return pt
else:
return empty(Point)
@internal
def _checkpoint_gauge(gauge: address) -> Point:
assert self.time_weight[gauge] > 0, "Gauge not alive"
adjustment: uint256 = min(staticcall Gauge(gauge).get_adjustment(), 10**18)
t: uint256 = self.time_weight[gauge]
w: uint256 = self.gauge_weight[gauge]
aw: uint256 = self.adjusted_gauge_weight[gauge]
w_sum: uint256 = self.gauge_weight_sum
aw_sum: uint256 = self.adjusted_gauge_weight_sum
pt: Point = self._get_weight(gauge)
self.point_weight[gauge] = pt
w_new: uint256 = pt.bias
aw_new: uint256 = w_new * adjustment // 10**18
self.gauge_weight[gauge] = w_new
self.gauge_weight_sum = w_sum + w_new - w
self.adjusted_gauge_weight[gauge] = aw_new
self.adjusted_gauge_weight_sum = aw_sum + aw_new - aw
d_emissions: uint256 = extcall TOKEN.emit(self, unsafe_div(aw_sum * 10**18, w_sum))
self.time_weight[gauge] = block.timestamp
specific_emissions: uint256 = self.specific_emissions + unsafe_div(d_emissions * 10**18, aw_sum)
if d_emissions > 0:
self.specific_emissions = specific_emissions
if block.timestamp > t: # Guaranteed to have no new emissions if same time
self.weighted_emissions_per_gauge[gauge] += (specific_emissions - self.specific_emissions_per_gauge[gauge]) * aw // 10**18
self.specific_emissions_per_gauge[gauge] = specific_emissions
return pt
@external
def add_gauge(gauge: address):
"""
@notice Add gauge `gauge`
@param gauge Gauge address
"""
ownable._check_owner()
assert self.time_weight[gauge] == 0, "Gauge already added"
n: uint256 = self.n_gauges
self.n_gauges = n + 1
self.gauges[n] = gauge
self.time_weight[gauge] = block.timestamp
self.specific_emissions_per_gauge[gauge] = self.specific_emissions
log NewGauge(addr=gauge)
@external
def vote_for_gauge_weights(_gauge_addrs: DynArray[address, 50], _user_weights: DynArray[uint256, 50]):
"""
@notice Allocate voting power for changing pool weights
@param _gauge_addrs Gauges which `msg.sender` votes for
@param _user_weights Weights for a gauge in bps (units of 0.01%). Minimal is 0.01%. Ignored if 0
"""
# Check if transfer_clearance_checker is set to GC
assert staticcall VOTING_ESCROW.transfer_clearance_checker() == self, "Vote checker not set"
n: uint256 = len(_gauge_addrs)
assert len(_user_weights) == n, "Mismatch in lengths"
pt: Point = staticcall VOTING_ESCROW.get_last_user_point(msg.sender)
slope: uint256 = pt.slope
bias: uint256 = pt.bias # <- we only use it if locked until max_value(uint256)
lock_end: uint256 = staticcall VOTING_ESCROW.locked__end(msg.sender)
assert lock_end > block.timestamp, "Expired"
power_used: uint256 = self.vote_user_power[msg.sender]
for i: uint256 in range(50):
if i >= n:
break
_user_weight: uint256 = _user_weights[i]
_gauge_addr: address = _gauge_addrs[i]
assert _user_weight <= 10000, "Weight too large"
if _user_weight != 0:
assert not self.is_killed[_gauge_addr], "Killed"
assert self.time_weight[_gauge_addr] > 0, "Gauge not added"
assert block.timestamp >= self.last_user_vote[msg.sender][_gauge_addr] + WEIGHT_VOTE_DELAY, "Cannot vote so often"
# Prepare slopes and biases in memory
old_slope: VotedSlope = self.vote_user_slopes[msg.sender][_gauge_addr]
old_bias: uint256 = 0
if old_slope.end == max_value(uint256):
old_bias = old_slope.bias
else:
old_dt: uint256 = max(old_slope.end, block.timestamp) - block.timestamp
old_bias = old_slope.slope * old_dt
new_slope: VotedSlope = VotedSlope(
slope = slope * _user_weight // 10000,
bias = 0,
power = _user_weight,
end = lock_end
)
new_bias: uint256 = 0
if lock_end == max_value(uint256):
new_bias = bias * _user_weight // 10000
else:
new_bias = new_slope.slope * (lock_end - block.timestamp) # dev: raises when expired
new_slope.bias = new_bias
power_used = power_used + new_slope.power - old_slope.power
pt = self._checkpoint_gauge(_gauge_addr) # Contains old_weight_bias and old_weight_slope
## Remove old and schedule new slope changes
# Remove slope changes for old slopes
# Schedule recording of initial slope for next_time
self.point_weight[_gauge_addr].bias = max(pt.bias + new_bias, old_bias) - old_bias
if old_slope.end > block.timestamp:
self.point_weight[_gauge_addr].slope = max(pt.slope + new_slope.slope, old_slope.slope) - old_slope.slope
else:
self.point_weight[_gauge_addr].slope += new_slope.slope
if old_slope.end > block.timestamp:
# Cancel old slope changes if they still didn't happen
self.changes_weight[_gauge_addr][old_slope.end] -= old_slope.slope
# Add slope changes for new slopes
self.changes_weight[_gauge_addr][new_slope.end] += new_slope.slope
self.vote_user_slopes[msg.sender][_gauge_addr] = new_slope
# point_weight has changed, so we are doing another checkpoint to enact the vote
self._checkpoint_gauge(_gauge_addr)
# Record last action time
self.last_user_vote[msg.sender][_gauge_addr] = block.timestamp
log VoteForGauge(time=block.timestamp, user=msg.sender, gauge_addr=_gauge_addr, weight=_user_weight)
# Check and update powers (weights) used
assert power_used <= 10000, 'Used too much power'
self.vote_user_power[msg.sender] = power_used
@external
@view
def get_gauge_weight(addr: address) -> uint256:
"""
@notice Get current gauge weight
@param addr Gauge address
@return Gauge weight
"""
return self._get_weight(addr).bias
@external
@view
def gauge_relative_weight(gauge: address) -> uint256:
"""
@notice Get Gauge relative weight (not more than 1.0) normalized to 1e18
(e.g. 1.0 == 1e18). Inflation which will be received by it is
inflation_rate * relative_weight / 1e18
@param gauge Gauge address
@return Value of relative weight normalized to 1e18
"""
return unsafe_div(self.adjusted_gauge_weight[gauge] * 10**18, self.adjusted_gauge_weight_sum)
@external
@view
def ve_transfer_allowed(user: address) -> bool:
return self.vote_user_power[user] == 0
@external
def checkpoint(gauge: address):
"""
@notice Checkpoint a gauge
"""
self._checkpoint_gauge(gauge)
@external
@view
def preview_emissions(gauge: address, at_time: uint256) -> uint256:
"""
@notice Checkpoint logic is re-done here without causing writes
"""
if self.time_weight[gauge] == 0:
return 0
w: uint256 = self.gauge_weight[gauge]
aw: uint256 = self.adjusted_gauge_weight[gauge]
w_sum: uint256 = self.gauge_weight_sum
aw_sum: uint256 = self.adjusted_gauge_weight_sum
d_emissions: uint256 = 0
if at_time > self.time_weight[gauge]:
d_emissions = staticcall TOKEN.preview_emissions(at_time, unsafe_div(aw_sum * 10**18, w_sum))
specific_emissions: uint256 = self.specific_emissions + unsafe_div(d_emissions * 10**18, aw_sum)
weighted_emissions_per_gauge: uint256 = self.weighted_emissions_per_gauge[gauge] + (specific_emissions - self.specific_emissions_per_gauge[gauge]) * aw // 10**18
return weighted_emissions_per_gauge - self.sent_emissions_per_gauge[gauge]
@external
def emit() -> uint256:
self._checkpoint_gauge(msg.sender)
emissions: uint256 = self.weighted_emissions_per_gauge[msg.sender]
to_send: uint256 = emissions - self.sent_emissions_per_gauge[msg.sender]
self.sent_emissions_per_gauge[msg.sender] = emissions
if to_send > 0:
extcall TOKEN.transfer(msg.sender, to_send)
return to_send
@external
def set_killed(gauge: address, is_killed: bool):
ownable._check_owner()
assert self.time_weight[gauge] > 0, "Gauge not added"
self.is_killed[gauge] = is_killed
log SetKilled(gauge=gauge, is_killed=is_killed)# pragma version ~=0.4.3
# pragma nonreentrancy off
"""
@title Owner-Based Access Control Functions
@custom:contract-name ownable
@license GNU Affero General Public License v3.0 only
@author pcaversaccio
@notice These functions can be used to implement a basic access
control mechanism, where there is an account (an owner)
that can be granted exclusive access to specific functions.
By default, the owner account will be the one that deploys
the contract. This can later be changed with `transfer_ownership`.
An exemplary integration can be found in the ERC-20 implementation here:
https://github.com/pcaversaccio/snekmate/blob/main/src/snekmate/tokens/erc20.vy.
The implementation is inspired by OpenZeppelin's implementation here:
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol.
"""
# @dev Returns the address of the current owner.
# @notice If you declare a variable as `public`,
# Vyper automatically generates an `external`
# getter function for the variable.
owner: public(address)
# @dev Emitted when the ownership is transferred
# from `previous_owner` to `new_owner`.
event OwnershipTransferred:
previous_owner: indexed(address)
new_owner: indexed(address)
@deploy
@payable
def __init__():
"""
@dev To omit the opcodes for checking the `msg.value`
in the creation-time EVM bytecode, the constructor
is declared as `payable`.
@notice The `owner` role will be assigned to
the `msg.sender`.
"""
self._transfer_ownership(msg.sender)
@external
def transfer_ownership(new_owner: address):
"""
@dev Transfers the ownership of the contract
to a new account `new_owner`.
@notice Note that this function can only be
called by the current `owner`. Also,
the `new_owner` cannot be the zero address.
@param new_owner The 20-byte address of the new owner.
"""
self._check_owner()
assert new_owner != empty(address), "ownable: new owner is the zero address"
self._transfer_ownership(new_owner)
@external
def renounce_ownership():
"""
@dev Leaves the contract without an owner.
@notice Renouncing ownership will leave the
contract without an owner, thereby
removing any functionality that is
only available to the owner.
"""
self._check_owner()
self._transfer_ownership(empty(address))
@internal
def _check_owner():
"""
@dev Throws if the sender is not the owner.
"""
assert msg.sender == self.owner, "ownable: caller is not the owner"
@internal
def _transfer_ownership(new_owner: address):
"""
@dev Transfers the ownership of the contract
to a new account `new_owner`.
@notice This is an `internal` function without
access restriction.
@param new_owner The 20-byte address of the new owner.
"""
old_owner: address = self.owner
self.owner = new_owner
log OwnershipTransferred(previous_owner=old_owner, new_owner=new_owner){
"outputSelection": {
"contracts/dao/GaugeController.vy": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
},
"search_paths": [
".venv/lib/pypy3.11/site-packages",
"."
]
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"name":"time","type":"uint256"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"gauge_addr","type":"address"},{"indexed":false,"name":"weight","type":"uint256"}],"name":"VoteForGauge","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"}],"name":"NewGauge","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gauge","type":"address"},{"indexed":false,"name":"is_killed","type":"bool"}],"name":"SetKilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previous_owner","type":"address"},{"indexed":true,"name":"new_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"name":"new_owner","type":"address"}],"name":"transfer_ownership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"gauge","type":"address"}],"name":"add_gauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_gauge_addrs","type":"address[]"},{"name":"_user_weights","type":"uint256[]"}],"name":"vote_for_gauge_weights","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"addr","type":"address"}],"name":"get_gauge_weight","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"gauge","type":"address"}],"name":"gauge_relative_weight","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"user","type":"address"}],"name":"ve_transfer_allowed","outputs":[{"name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"gauge","type":"address"}],"name":"checkpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"gauge","type":"address"},{"name":"at_time","type":"uint256"}],"name":"preview_emissions","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emit","outputs":[{"name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"gauge","type":"address"},{"name":"is_killed","type":"bool"}],"name":"set_killed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TOKEN","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTING_ESCROW","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n_gauges","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"uint256"}],"name":"gauges","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"}],"name":"is_killed","outputs":[{"name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"name":"vote_user_slopes","outputs":[{"components":[{"name":"slope","type":"uint256"},{"name":"bias","type":"uint256"},{"name":"power","type":"uint256"},{"name":"end","type":"uint256"}],"name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"}],"name":"vote_user_power","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"name":"last_user_vote","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"}],"name":"point_weight","outputs":[{"components":[{"name":"bias","type":"uint256"},{"name":"slope","type":"uint256"}],"name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"}],"name":"time_weight","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"}],"name":"gauge_weight","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gauge_weight_sum","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"}],"name":"adjusted_gauge_weight","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adjusted_gauge_weight_sum","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"specific_emissions","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"}],"name":"specific_emissions_per_gauge","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"}],"name":"weighted_emissions_per_gauge","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"arg0","type":"address"}],"name":"sent_emissions_per_gauge","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"token","type":"address"},{"name":"voting_escrow","type":"address"}],"outputs":[],"stateMutability":"nonpayable","type":"constructor"}]Contract Creation Code
0x611bce5150346100ae576020611c985f395f518060a01c6100ae576080526020611cb85f395f518060a01c6100ae5760a0526100396100a0565b608051156100ae5760a051156100ae57608051611bae5260a051611bce52611bae6100b261000039611bee610000f35b5f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b336040526100ac610069565b565b5f80fd5f3560e01c60026018820660011b611b7e01601e395f51565b63f0350c0481186100fa57602436103417611b7a576004358060a01c611b7a5761010052610044611579565b610100516100e9576020806101a0526026610120527f6f776e61626c653a206e6577206f776e657220697320746865207a65726f2061610140527f646472657373000000000000000000000000000000000000000000000000000061016052610120816101a001604682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b610100516040526100f86115f5565b005b635f1a104c811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca046040516020525f5260405f20541560605260206060f35b638da5cb5b81186115755734611b7a575f5460405260206040f35b6352f9d92e81186102a157602436103417611b7a576004358060a01c611b7a5761010052610180611579565b633b9aca08610100516020525f5260405f20541561021057602080610180526013610120527f476175676520616c726561647920616464656400000000000000000000000000610140526101208161018001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610160528060040161017cfd5b600154610120526101205160018101818110611b7a5790506001556101005161012051633b9aca00811015611b7a576002015542633b9aca08610100516020525f5260405f2055633b9aca0d54633b9aca0e610100516020525f5260405f20557f88b3a3dcf49d2c2bc73de47dc84b60f3b9179d60d97b8ba43a1d3aa726c818b961010051610140526020610140a1005b636207d866811861030457602436103417611b7a576004358060a01c611b7a57604052633b9aca0c54633b9aca0b6040516020525f5260405f2054670de0b6b3a7640000810281670de0b6b3a7640000820418611b7a5790500460605260206060f35b639d9e8ee6811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca106040516020525f5260405f205460605260206060f35b63f1443a91811861157557604436103417611b7a576004356004016032813511611b7a5780355f8160328111611b7a5780156103a057905b8060051b6020850101358060a01c611b7a578160051b610320015260010181811861037a575b5050806103005250506024356004016032813511611b7a57803560208160051b01808361096037505050306020611bce5f395f5163cada3682610fc0526020610fc06004610fdc845afa6103f6573d5f5f3e3d5ffd5b3d602081183d602010021880610fc001610fe011611b7a57610fc0518060a01c611b7a57611000525061100090505118156104a357602080611080526014611020527f566f746520636865636b6572206e6f7420736574000000000000000000000000611040526110208161108001603482825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0611060528060040161107cfd5b61030051610fc052610fc05161096051181561053157602080611040526013610fe0527f4d69736d6174636820696e206c656e677468730000000000000000000000000061100052610fe08161104001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0611020528060040161103cfd5b6020611bce5f395f5163a7afdcae6110205233611040526040611020602461103c845afa610561573d5f5f3e3d5ffd5b60403d10611b7a576110209050604081610fe05e506110005161102052610fe051611040526020611bce5f395f5163adc6358961108052336110a0526020611080602461109c845afa6105b6573d5f5f3e3d5ffd5b60203d10611b7a576110809050516110605242611060511161064a576020806110e0526007611080527f45787069726564000000000000000000000000000000000000000000000000006110a052611080816110e001602782825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06110c052806004016110dcfd5b633b9aca04336020525f5260405f2054611080525f6032905b806110a052610fc0516110a0511015610cca576110a05161096051811015611b7a5760051b61098001516110c0526110a05161030051811015611b7a5760051b61032001516110e0526127106110c051111561073157602080611160526010611100527f57656967687420746f6f206c6172676500000000000000000000000000000000611120526111008161116001603082825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0611140528060040161115cfd5b6110c051156107ca57633b9aca026110e0516020525f5260405f2054156107ca57602080611160526006611100527f4b696c6c65640000000000000000000000000000000000000000000000000000611120526111008161116001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0611140528060040161115cfd5b633b9aca086110e0516020525f5260405f20546108595760208061116052600f611100527f4761756765206e6f742061646465640000000000000000000000000000000000611120526111008161116001602f82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0611140528060040161115cfd5b633b9aca05336020525f5260405f20806110e0516020525f5260405f20905054620d2f008101818110611b7a57905042101561090757602080611160526014611100527f43616e6e6f7420766f746520736f206f6674656e000000000000000000000000611120526111008161116001603482825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0611140528060040161115cfd5b633b9aca03336020525f5260405f20806110e0516020525f5260405f209050805461110052600181015461112052600281015461114052600381015461116052505f6111805261116051196109635761112051611180526109a9565b61116051428082811882841102189050905042808203828111611b7a57905090506111a052611100516111a051808202811583838304141715611b7a5790509050611180525b611020516110c051808202811583838304141715611b7a5790509050612710810490506111a0525f6111c0526110c0516111e05261106051611200525f611220526110605119610a1f57611040516110c051808202811583838304141715611b7a57905090506127108104905061122052610a4f565b6111a0516110605142808203828111611b7a5790509050808202811583838304141715611b7a5790509050611220525b611220516111c052611080516111e051808201828110611b7a579050905061114051808203828111611b7a5790509050611080526110e05161012052610a966112406117d0565b6112406040816112805e506040611280610fe05e610fe05161122051808201828110611b7a5790509050611180518082811882841102189050905061118051808203828111611b7a5790509050633b9aca066110e0516020525f5260405f2055426111605111610b3457633b9aca066110e0516020525f5260405f2060018101905080546111a051808201828110611b7a5790509050815550610b87565b611000516111a051808201828110611b7a5790509050611100518082811882841102189050905061110051808203828111611b7a5790509050633b9aca066110e0516020525f5260405f20600181019050555b42611160511115610bcc57633b9aca076110e0516020525f5260405f2080611160516020525f5260405f209050805461110051808203828111611b7a57905090508155505b633b9aca076110e0516020525f5260405f2080611200516020525f5260405f20905080546111a051808201828110611b7a5790509050815550633b9aca03336020525f5260405f20806110e0516020525f5260405f2090506111a05181556111c05160018201556111e0516002820155611200516003820155506110e05161012052610c596112406117d0565b6112405042633b9aca05336020525f5260405f20806110e0516020525f5260405f209050557f45ca9a4c8d0119eb329e580d28fe689e484e1be230da8037ade9547d2d25cc91426112405233611260526110e051611280526110c0516112a0526080611240a1600101818118610663575b5050612710611080511115610d51576020806111005260136110a0527f5573656420746f6f206d75636820706f776572000000000000000000000000006110c0526110a08161110001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06110e052806004016110fcfd5b61108051633b9aca04336020525f5260405f2055005b634e791a3a8118610da457602436103417611b7a576004358060a01c611b7a5761012052602061012051604052610d9f61014061162c565b610140f35b6386b5c66a811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca096040516020525f5260405f205460605260206060f35b63a972985e811861157557602436103417611b7a576004358060a01c611b7a57610300526103005161012052610e196103206117d0565b61032050005b63e3a8d98a811861157557604436103417611b7a576004358060a01c611b7a57604052633b9aca086040516020525f5260405f2054610e65575f60605260206060611004565b633b9aca096040516020525f5260405f2054606052633b9aca0b6040516020525f5260405f2054608052633b9aca0a5460a052633b9aca0c5460c0525f60e052633b9aca086040516020525f5260405f20546024351115610f2d576020611bae5f395f51636ccb253b610100526024356101205260a05160c051670de0b6b3a7640000810281670de0b6b3a7640000820418611b7a57905004610140526020610100604461011c845afa610f1b573d5f5f3e3d5ffd5b60203d10611b7a5761010090505160e0525b633b9aca0d5460c05160e051670de0b6b3a7640000810281670de0b6b3a7640000820418611b7a57905004808201828110611b7a579050905061010052633b9aca0f6040516020525f5260405f205461010051633b9aca0e6040516020525f5260405f2054808203828111611b7a5790509050608051808202811583838304141715611b7a5790509050670de0b6b3a764000081049050808201828110611b7a57905090506101205261012051633b9aca106040516020525f5260405f2054808203828111611b7a57905090506101405260206101405bf35b633bdab8bf81186115755734611b7a5733610120526110266103006117d0565b61030050633b9aca0f336020525f5260405f20546103005261030051633b9aca10336020525f5260405f2054808203828111611b7a57905090506103205261030051633b9aca10336020525f5260405f205561032051156110e9576020611bae5f395f5163a9059cbb61034052336103605261032051610380526020610340604461035c5f855af16110ba573d5f5f3e3d5ffd5b3d602081183d6020100218806103400161036011611b7a57610340518060011c611b7a576103a052506103a050505b6020610320f35b634344ce71811861157557604436103417611b7a576004358060a01c611b7a57610100526024358060011c611b7a576101205261112b611579565b633b9aca08610100516020525f5260405f20546111ba576020806101a052600f610140527f4761756765206e6f74206164646564000000000000000000000000000000000061016052610140816101a001602f82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b61012051633b9aca02610100516020525f5260405f20557f6f287c58034b39b1a4c2b7eb84d0bfceccc7984f19675343742bb94f114a46c660406101006101405e6040610140a1005b6382bfefc881186112215734611b7a576020611bae60403960206040f35b63e93841d0811861123d5734611b7a5760015460405260206040f35b630f467f98811861157557604436103417611b7a576004358060a01c611b7a576040526024358060a01c611b7a57606052633b9aca036040516020525f5260405f20806060516020525f5260405f2090508054608052600181015460a052600281015460c052600381015460e0525060806080f35b631f87f33381186115755734611b7a576020611bce60403960206040f35b63b0539187811861157557602436103417611b7a57600435633b9aca00811015611b7a576002015460405260206040f35b6359e63166811861133f57602436103417611b7a576004358060a01c611b7a57604052633b9aca026040516020525f5260405f205460605260206060f35b63f9b48876811861138757602436103417611b7a576004358060a01c611b7a57604052633b9aca066040516020525f5260405f20805460605260018101546080525060406060f35b63e2a18e8e81186115755734611b7a57633b9aca0c5460405260206040f35b63411e74b5811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca046040516020525f5260405f205460605260206060f35b637e418fa0811861143f57604436103417611b7a576004358060a01c611b7a576040526024358060a01c611b7a57606052633b9aca056040516020525f5260405f20806060516020525f5260405f2090505460805260206080f35b63d3e89bd0811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca0f6040516020525f5260405f205460605260206060f35b63a4d7a25081186114bb57602436103417611b7a576004358060a01c611b7a57604052633b9aca086040516020525f5260405f205460605260206060f35b63e0b51e78811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca0e6040516020525f5260405f205460605260206060f35b6394c8598581186115755734611b7a57633b9aca0a5460405260206040f35b63924809ad811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca0b6040516020525f5260405f205460605260206060f35b638a00d11b81186115755734611b7a57633b9aca0d5460405260206040f35b5f5ffd5b5f543318156115f35760208060a05260206040527f6f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260605260408160a001604082825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b565b5f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b633b9aca086040516020525f5260405f20546060524262093a808104905062093a8081028162093a80820418611b7a5790506080525f60a052606051156117c757633b9aca066040516020525f5260405f20805460c052600181015460e052505f6101f4905b806101005260805160605110156116ea5760605162093a808101818110611b7a57905062093a808104905062093a8081028162093a80820418611b7a579050606051808203828111611b7a579050905060a052611708565b42606051808203828111611b7a579050905060a05260a051156117b9575b60605160a051808201828110611b7a579050905060605260c05160e05160a051808202811583838304141715611b7a579050905060c05180828118828410021890509050808203828111611b7a579050905060c05260e051633b9aca076040516020525f5260405f20806060516020525f5260405f2090505460e05180828118828410021890509050808203828111611b7a579050905060e05260c0516117ae575f60e0525b600101818118611692575b5050604060c0825e506117ce565b6040368237505b565b633b9aca08610120516020525f5260405f205461185f576020806101a052600f610140527f4761756765206e6f7420616c697665000000000000000000000000000000000061016052610140816101a001602f82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b61012051633ea9f06f610160526020610160600461017c845afa611885573d5f5f3e3d5ffd5b60203d10611b7a57610160905051670de0b6b3a7640000818118670de0b6b3a764000083100218905061014052633b9aca08610120516020525f5260405f205461016052633b9aca09610120516020525f5260405f205461018052633b9aca0b610120516020525f5260405f20546101a052633b9aca0a546101c052633b9aca0c546101e0526101205160405261191d61024061162c565b6102406040816102005e50633b9aca06610120516020525f5260405f206102005181556102205160018201555061020051610240526102405161014051808202811583838304141715611b7a5790509050670de0b6b3a7640000810490506102605261024051633b9aca09610120516020525f5260405f20556101c05161024051808201828110611b7a579050905061018051808203828111611b7a5790509050633b9aca0a5561026051633b9aca0b610120516020525f5260405f20556101e05161026051808201828110611b7a57905090506101a051808203828111611b7a5790509050633b9aca0c556020611bae5f395f5163f1fb05e96102a052306102c0526101c0516101e051670de0b6b3a7640000810281670de0b6b3a7640000820418611b7a579050046102e05260206102a060446102bc5f855af1611a65573d5f5f3e3d5ffd5b60203d10611b7a576102a09050516102805242633b9aca08610120516020525f5260405f2055633b9aca0d546101e05161028051670de0b6b3a7640000810281670de0b6b3a7640000820418611b7a57905004808201828110611b7a57905090506102a0526102805115611ade576102a051633b9aca0d555b61016051421115611b7057633b9aca0f610120516020525f5260405f2080546102a051633b9aca0e610120516020525f5260405f2054808203828111611b7a57905090506101a051808202811583838304141715611b7a5790509050670de0b6b3a764000081049050808201828110611b7a57905090508155506102a051633b9aca0e610120516020525f5260405f20555b6040610200825e50565b5f80fd147d10f015750139157513a60154100613e415750d6715560018151813011575120303420e1f12b2157514f90de212d0855820281ef720ef4c104c2db25aab6049f4d02e17e627cf89299866f4a7e503cdecb1191bae8118301840a165767970657283000403003800000000000000000000000001791f726b4103694969820be083196cc7c045ff0000000000000000000000008235c179e9e84688fbd8b12295efc26834dac211
Deployed Bytecode
0x5f3560e01c60026018820660011b611b7e01601e395f51565b63f0350c0481186100fa57602436103417611b7a576004358060a01c611b7a5761010052610044611579565b610100516100e9576020806101a0526026610120527f6f776e61626c653a206e6577206f776e657220697320746865207a65726f2061610140527f646472657373000000000000000000000000000000000000000000000000000061016052610120816101a001604682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b610100516040526100f86115f5565b005b635f1a104c811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca046040516020525f5260405f20541560605260206060f35b638da5cb5b81186115755734611b7a575f5460405260206040f35b6352f9d92e81186102a157602436103417611b7a576004358060a01c611b7a5761010052610180611579565b633b9aca08610100516020525f5260405f20541561021057602080610180526013610120527f476175676520616c726561647920616464656400000000000000000000000000610140526101208161018001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610160528060040161017cfd5b600154610120526101205160018101818110611b7a5790506001556101005161012051633b9aca00811015611b7a576002015542633b9aca08610100516020525f5260405f2055633b9aca0d54633b9aca0e610100516020525f5260405f20557f88b3a3dcf49d2c2bc73de47dc84b60f3b9179d60d97b8ba43a1d3aa726c818b961010051610140526020610140a1005b636207d866811861030457602436103417611b7a576004358060a01c611b7a57604052633b9aca0c54633b9aca0b6040516020525f5260405f2054670de0b6b3a7640000810281670de0b6b3a7640000820418611b7a5790500460605260206060f35b639d9e8ee6811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca106040516020525f5260405f205460605260206060f35b63f1443a91811861157557604436103417611b7a576004356004016032813511611b7a5780355f8160328111611b7a5780156103a057905b8060051b6020850101358060a01c611b7a578160051b610320015260010181811861037a575b5050806103005250506024356004016032813511611b7a57803560208160051b01808361096037505050306020611bce5f395f5163cada3682610fc0526020610fc06004610fdc845afa6103f6573d5f5f3e3d5ffd5b3d602081183d602010021880610fc001610fe011611b7a57610fc0518060a01c611b7a57611000525061100090505118156104a357602080611080526014611020527f566f746520636865636b6572206e6f7420736574000000000000000000000000611040526110208161108001603482825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0611060528060040161107cfd5b61030051610fc052610fc05161096051181561053157602080611040526013610fe0527f4d69736d6174636820696e206c656e677468730000000000000000000000000061100052610fe08161104001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0611020528060040161103cfd5b6020611bce5f395f5163a7afdcae6110205233611040526040611020602461103c845afa610561573d5f5f3e3d5ffd5b60403d10611b7a576110209050604081610fe05e506110005161102052610fe051611040526020611bce5f395f5163adc6358961108052336110a0526020611080602461109c845afa6105b6573d5f5f3e3d5ffd5b60203d10611b7a576110809050516110605242611060511161064a576020806110e0526007611080527f45787069726564000000000000000000000000000000000000000000000000006110a052611080816110e001602782825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06110c052806004016110dcfd5b633b9aca04336020525f5260405f2054611080525f6032905b806110a052610fc0516110a0511015610cca576110a05161096051811015611b7a5760051b61098001516110c0526110a05161030051811015611b7a5760051b61032001516110e0526127106110c051111561073157602080611160526010611100527f57656967687420746f6f206c6172676500000000000000000000000000000000611120526111008161116001603082825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0611140528060040161115cfd5b6110c051156107ca57633b9aca026110e0516020525f5260405f2054156107ca57602080611160526006611100527f4b696c6c65640000000000000000000000000000000000000000000000000000611120526111008161116001602682825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0611140528060040161115cfd5b633b9aca086110e0516020525f5260405f20546108595760208061116052600f611100527f4761756765206e6f742061646465640000000000000000000000000000000000611120526111008161116001602f82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0611140528060040161115cfd5b633b9aca05336020525f5260405f20806110e0516020525f5260405f20905054620d2f008101818110611b7a57905042101561090757602080611160526014611100527f43616e6e6f7420766f746520736f206f6674656e000000000000000000000000611120526111008161116001603482825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0611140528060040161115cfd5b633b9aca03336020525f5260405f20806110e0516020525f5260405f209050805461110052600181015461112052600281015461114052600381015461116052505f6111805261116051196109635761112051611180526109a9565b61116051428082811882841102189050905042808203828111611b7a57905090506111a052611100516111a051808202811583838304141715611b7a5790509050611180525b611020516110c051808202811583838304141715611b7a5790509050612710810490506111a0525f6111c0526110c0516111e05261106051611200525f611220526110605119610a1f57611040516110c051808202811583838304141715611b7a57905090506127108104905061122052610a4f565b6111a0516110605142808203828111611b7a5790509050808202811583838304141715611b7a5790509050611220525b611220516111c052611080516111e051808201828110611b7a579050905061114051808203828111611b7a5790509050611080526110e05161012052610a966112406117d0565b6112406040816112805e506040611280610fe05e610fe05161122051808201828110611b7a5790509050611180518082811882841102189050905061118051808203828111611b7a5790509050633b9aca066110e0516020525f5260405f2055426111605111610b3457633b9aca066110e0516020525f5260405f2060018101905080546111a051808201828110611b7a5790509050815550610b87565b611000516111a051808201828110611b7a5790509050611100518082811882841102189050905061110051808203828111611b7a5790509050633b9aca066110e0516020525f5260405f20600181019050555b42611160511115610bcc57633b9aca076110e0516020525f5260405f2080611160516020525f5260405f209050805461110051808203828111611b7a57905090508155505b633b9aca076110e0516020525f5260405f2080611200516020525f5260405f20905080546111a051808201828110611b7a5790509050815550633b9aca03336020525f5260405f20806110e0516020525f5260405f2090506111a05181556111c05160018201556111e0516002820155611200516003820155506110e05161012052610c596112406117d0565b6112405042633b9aca05336020525f5260405f20806110e0516020525f5260405f209050557f45ca9a4c8d0119eb329e580d28fe689e484e1be230da8037ade9547d2d25cc91426112405233611260526110e051611280526110c0516112a0526080611240a1600101818118610663575b5050612710611080511115610d51576020806111005260136110a0527f5573656420746f6f206d75636820706f776572000000000000000000000000006110c0526110a08161110001603382825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a06110e052806004016110fcfd5b61108051633b9aca04336020525f5260405f2055005b634e791a3a8118610da457602436103417611b7a576004358060a01c611b7a5761012052602061012051604052610d9f61014061162c565b610140f35b6386b5c66a811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca096040516020525f5260405f205460605260206060f35b63a972985e811861157557602436103417611b7a576004358060a01c611b7a57610300526103005161012052610e196103206117d0565b61032050005b63e3a8d98a811861157557604436103417611b7a576004358060a01c611b7a57604052633b9aca086040516020525f5260405f2054610e65575f60605260206060611004565b633b9aca096040516020525f5260405f2054606052633b9aca0b6040516020525f5260405f2054608052633b9aca0a5460a052633b9aca0c5460c0525f60e052633b9aca086040516020525f5260405f20546024351115610f2d576020611bae5f395f51636ccb253b610100526024356101205260a05160c051670de0b6b3a7640000810281670de0b6b3a7640000820418611b7a57905004610140526020610100604461011c845afa610f1b573d5f5f3e3d5ffd5b60203d10611b7a5761010090505160e0525b633b9aca0d5460c05160e051670de0b6b3a7640000810281670de0b6b3a7640000820418611b7a57905004808201828110611b7a579050905061010052633b9aca0f6040516020525f5260405f205461010051633b9aca0e6040516020525f5260405f2054808203828111611b7a5790509050608051808202811583838304141715611b7a5790509050670de0b6b3a764000081049050808201828110611b7a57905090506101205261012051633b9aca106040516020525f5260405f2054808203828111611b7a57905090506101405260206101405bf35b633bdab8bf81186115755734611b7a5733610120526110266103006117d0565b61030050633b9aca0f336020525f5260405f20546103005261030051633b9aca10336020525f5260405f2054808203828111611b7a57905090506103205261030051633b9aca10336020525f5260405f205561032051156110e9576020611bae5f395f5163a9059cbb61034052336103605261032051610380526020610340604461035c5f855af16110ba573d5f5f3e3d5ffd5b3d602081183d6020100218806103400161036011611b7a57610340518060011c611b7a576103a052506103a050505b6020610320f35b634344ce71811861157557604436103417611b7a576004358060a01c611b7a57610100526024358060011c611b7a576101205261112b611579565b633b9aca08610100516020525f5260405f20546111ba576020806101a052600f610140527f4761756765206e6f74206164646564000000000000000000000000000000000061016052610140816101a001602f82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b61012051633b9aca02610100516020525f5260405f20557f6f287c58034b39b1a4c2b7eb84d0bfceccc7984f19675343742bb94f114a46c660406101006101405e6040610140a1005b6382bfefc881186112215734611b7a576020611bae60403960206040f35b63e93841d0811861123d5734611b7a5760015460405260206040f35b630f467f98811861157557604436103417611b7a576004358060a01c611b7a576040526024358060a01c611b7a57606052633b9aca036040516020525f5260405f20806060516020525f5260405f2090508054608052600181015460a052600281015460c052600381015460e0525060806080f35b631f87f33381186115755734611b7a576020611bce60403960206040f35b63b0539187811861157557602436103417611b7a57600435633b9aca00811015611b7a576002015460405260206040f35b6359e63166811861133f57602436103417611b7a576004358060a01c611b7a57604052633b9aca026040516020525f5260405f205460605260206060f35b63f9b48876811861138757602436103417611b7a576004358060a01c611b7a57604052633b9aca066040516020525f5260405f20805460605260018101546080525060406060f35b63e2a18e8e81186115755734611b7a57633b9aca0c5460405260206040f35b63411e74b5811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca046040516020525f5260405f205460605260206060f35b637e418fa0811861143f57604436103417611b7a576004358060a01c611b7a576040526024358060a01c611b7a57606052633b9aca056040516020525f5260405f20806060516020525f5260405f2090505460805260206080f35b63d3e89bd0811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca0f6040516020525f5260405f205460605260206060f35b63a4d7a25081186114bb57602436103417611b7a576004358060a01c611b7a57604052633b9aca086040516020525f5260405f205460605260206060f35b63e0b51e78811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca0e6040516020525f5260405f205460605260206060f35b6394c8598581186115755734611b7a57633b9aca0a5460405260206040f35b63924809ad811861157557602436103417611b7a576004358060a01c611b7a57604052633b9aca0b6040516020525f5260405f205460605260206060f35b638a00d11b81186115755734611b7a57633b9aca0d5460405260206040f35b5f5ffd5b5f543318156115f35760208060a05260206040527f6f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260605260408160a001604082825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b565b5f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b633b9aca086040516020525f5260405f20546060524262093a808104905062093a8081028162093a80820418611b7a5790506080525f60a052606051156117c757633b9aca066040516020525f5260405f20805460c052600181015460e052505f6101f4905b806101005260805160605110156116ea5760605162093a808101818110611b7a57905062093a808104905062093a8081028162093a80820418611b7a579050606051808203828111611b7a579050905060a052611708565b42606051808203828111611b7a579050905060a05260a051156117b9575b60605160a051808201828110611b7a579050905060605260c05160e05160a051808202811583838304141715611b7a579050905060c05180828118828410021890509050808203828111611b7a579050905060c05260e051633b9aca076040516020525f5260405f20806060516020525f5260405f2090505460e05180828118828410021890509050808203828111611b7a579050905060e05260c0516117ae575f60e0525b600101818118611692575b5050604060c0825e506117ce565b6040368237505b565b633b9aca08610120516020525f5260405f205461185f576020806101a052600f610140527f4761756765206e6f7420616c697665000000000000000000000000000000000061016052610140816101a001602f82825e8051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b61012051633ea9f06f610160526020610160600461017c845afa611885573d5f5f3e3d5ffd5b60203d10611b7a57610160905051670de0b6b3a7640000818118670de0b6b3a764000083100218905061014052633b9aca08610120516020525f5260405f205461016052633b9aca09610120516020525f5260405f205461018052633b9aca0b610120516020525f5260405f20546101a052633b9aca0a546101c052633b9aca0c546101e0526101205160405261191d61024061162c565b6102406040816102005e50633b9aca06610120516020525f5260405f206102005181556102205160018201555061020051610240526102405161014051808202811583838304141715611b7a5790509050670de0b6b3a7640000810490506102605261024051633b9aca09610120516020525f5260405f20556101c05161024051808201828110611b7a579050905061018051808203828111611b7a5790509050633b9aca0a5561026051633b9aca0b610120516020525f5260405f20556101e05161026051808201828110611b7a57905090506101a051808203828111611b7a5790509050633b9aca0c556020611bae5f395f5163f1fb05e96102a052306102c0526101c0516101e051670de0b6b3a7640000810281670de0b6b3a7640000820418611b7a579050046102e05260206102a060446102bc5f855af1611a65573d5f5f3e3d5ffd5b60203d10611b7a576102a09050516102805242633b9aca08610120516020525f5260405f2055633b9aca0d546101e05161028051670de0b6b3a7640000810281670de0b6b3a7640000820418611b7a57905004808201828110611b7a57905090506102a0526102805115611ade576102a051633b9aca0d555b61016051421115611b7057633b9aca0f610120516020525f5260405f2080546102a051633b9aca0e610120516020525f5260405f2054808203828111611b7a57905090506101a051808202811583838304141715611b7a5790509050670de0b6b3a764000081049050808201828110611b7a57905090508155506102a051633b9aca0e610120516020525f5260405f20555b6040610200825e50565b5f80fd147d10f015750139157513a60154100613e415750d6715560018151813011575120303420e1f12b2157514f90de212d000000000000000000000000001791f726b4103694969820be083196cc7c045ff0000000000000000000000008235c179e9e84688fbd8b12295efc26834dac211
Loading...
Loading
Loading...
Loading
Net Worth in USD
$1,464.89
Net Worth in ETH
0.742037
Token Allocations
YB
100.00%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $0.156222 | 9,376.9937 | $1,464.89 |
Loading...
Loading
Loading...
Loading
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.