Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 405 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Vote_for_gauge_w... | 20597441 | 551 days ago | IN | 0 ETH | 0.00029688 | ||||
| Vote_for_gauge_w... | 20518925 | 562 days ago | IN | 0 ETH | 0.00047095 | ||||
| Vote_for_gauge_w... | 20518922 | 562 days ago | IN | 0 ETH | 0.00033129 | ||||
| Vote_for_gauge_w... | 20415149 | 576 days ago | IN | 0 ETH | 0.00058111 | ||||
| Vote_for_gauge_w... | 20392964 | 580 days ago | IN | 0 ETH | 0.00065748 | ||||
| Vote_for_gauge_w... | 20367347 | 583 days ago | IN | 0 ETH | 0.00126648 | ||||
| Vote_for_gauge_w... | 20367328 | 583 days ago | IN | 0 ETH | 0.00283647 | ||||
| Vote_for_gauge_w... | 20229271 | 602 days ago | IN | 0 ETH | 0.00081189 | ||||
| Vote_for_gauge_w... | 20198277 | 607 days ago | IN | 0 ETH | 0.00081912 | ||||
| Vote_for_gauge_w... | 20198117 | 607 days ago | IN | 0 ETH | 0.00097264 | ||||
| Vote_for_gauge_w... | 20198104 | 607 days ago | IN | 0 ETH | 0.00141388 | ||||
| Vote_for_gauge_w... | 20167355 | 611 days ago | IN | 0 ETH | 0.00165125 | ||||
| Vote_for_gauge_w... | 20167351 | 611 days ago | IN | 0 ETH | 0.00266637 | ||||
| Vote_for_gauge_w... | 20167311 | 611 days ago | IN | 0 ETH | 0.00074794 | ||||
| Vote_for_gauge_w... | 20127510 | 617 days ago | IN | 0 ETH | 0.0042577 | ||||
| Vote_for_gauge_w... | 20127506 | 617 days ago | IN | 0 ETH | 0.00382932 | ||||
| Vote_for_gauge_w... | 20127497 | 617 days ago | IN | 0 ETH | 0.00273346 | ||||
| Vote_for_gauge_w... | 20109679 | 619 days ago | IN | 0 ETH | 0.00364877 | ||||
| Vote_for_gauge_w... | 20018534 | 632 days ago | IN | 0 ETH | 0.00251757 | ||||
| Vote_for_gauge_w... | 20018508 | 632 days ago | IN | 0 ETH | 0.00205675 | ||||
| Vote_for_gauge_w... | 20018482 | 632 days ago | IN | 0 ETH | 0.00245126 | ||||
| Vote_for_gauge_w... | 19297636 | 733 days ago | IN | 0 ETH | 0.00753922 | ||||
| Vote_for_gauge_w... | 19297630 | 733 days ago | IN | 0 ETH | 0.00629959 | ||||
| Vote_for_gauge_w... | 19278065 | 736 days ago | IN | 0 ETH | 0.00797702 | ||||
| Vote_for_gauge_w... | 19278060 | 736 days ago | IN | 0 ETH | 0.00556878 |
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 0x9aD7e7b0...8DD6f2367 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.16
Contract Source Code (Vyper language format)
# @version 0.2.16
"""
@title Gauge Controller
@author Angle Protocol
@license MIT
@notice Controls liquidity gauges and the issuance of coins through the gauges
"""
# Full fork from:
# Curve Finance's gauge controller
# https://github.com/curvefi/curve-dao-contracts/blob/master/contracts/GaugeController.vy
# 7 * 86400 seconds - all future times are rounded by week
WEEK: constant(uint256) = 604800
# 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
power: uint256
end: uint256
interface VotingEscrow:
def get_last_user_slope(addr: address) -> int128: view
def locked__end(addr: address) -> uint256: view
event CommitOwnership:
admin: address
event ApplyOwnership:
admin: address
event AddType:
name: String[64]
type_id: int128
event NewTypeWeight:
type_id: int128
time: uint256
weight: uint256
total_weight: uint256
event NewGaugeWeight:
gauge_address: address
time: uint256
weight: uint256
total_weight: uint256
event VoteForGauge:
time: uint256
user: address
gauge_addr: address
weight: uint256
event NewGauge:
addr: address
gauge_type: int128
weight: uint256
event KilledGauge:
addr: address
MULTIPLIER: constant(uint256) = 10 ** 18
admin: public(address) # Can and will be a smart contract
future_admin: public(address) # Can and will be a smart contract
token: public(address) # ANGLE token
voting_escrow: public(address) # Voting escrow
# Gauge parameters
# All numbers are "fixed point" on the basis of 1e18
n_gauge_types: public(int128)
n_gauges: public(int128)
gauge_type_names: public(HashMap[int128, String[64]])
# Needed for enumeration
gauges: public(address[1000000000])
# we increment values by 1 prior to storing them here so we can rely on a value
# of zero as meaning the gauge has not been set
gauge_types_: HashMap[address, int128]
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 are rounded to whole weeks
points_weight: public(HashMap[address, HashMap[uint256, Point]]) # gauge_addr -> time -> Point
changes_weight: HashMap[address, HashMap[uint256, uint256]] # gauge_addr -> time -> slope
time_weight: public(HashMap[address, uint256]) # gauge_addr -> last scheduled time (next week)
points_sum: public(HashMap[int128, HashMap[uint256, Point]]) # type_id -> time -> Point
changes_sum: HashMap[int128, HashMap[uint256, uint256]] # type_id -> time -> slope
time_sum: public(uint256[1000000000]) # type_id -> last scheduled time (next week)
points_total: public(HashMap[uint256, uint256]) # time -> total weight
time_total: public(uint256) # last scheduled time
points_type_weight: public(HashMap[int128, HashMap[uint256, uint256]]) # type_id -> time -> type weight
time_type_weight: public(uint256[1000000000]) # type_id -> last scheduled time (next week)
@external
def __init__(_token: address, _voting_escrow: address, _admin: address):
"""
@notice Contract constructor
@param _token `ERC20ANGLE` contract address
@param _voting_escrow `VotingEscrow` contract address
"""
assert _token != ZERO_ADDRESS
assert _voting_escrow != ZERO_ADDRESS
assert _admin != ZERO_ADDRESS
self.admin = _admin
self.token = _token
self.voting_escrow = _voting_escrow
self.time_total = block.timestamp / WEEK * WEEK
@external
def commit_transfer_ownership(addr: address):
"""
@notice Transfer ownership of GaugeController to `addr`
@param addr Address to have ownership transferred to
"""
assert msg.sender == self.admin # dev: admin only
assert addr != ZERO_ADDRESS # dev: future admin cannot be the 0 address
self.future_admin = addr
log CommitOwnership(addr)
@external
def accept_transfer_ownership():
"""
@notice Accept a pending ownership transfer
"""
_admin: address = self.future_admin
assert msg.sender == _admin # dev: future admin only
self.admin = _admin
log ApplyOwnership(_admin)
@external
@view
def gauge_types(_addr: address) -> int128:
"""
@notice Get gauge type for address
@param _addr Gauge address
@return Gauge type id
"""
gauge_type: int128 = self.gauge_types_[_addr]
assert gauge_type != 0
return gauge_type - 1
@internal
def _get_type_weight(gauge_type: int128) -> uint256:
"""
@notice Fill historic type weights week-over-week for missed checkins
and return the type weight for the future week
@param gauge_type Gauge type id
@return Type weight
"""
t: uint256 = self.time_type_weight[gauge_type]
if t > 0:
w: uint256 = self.points_type_weight[gauge_type][t]
for i in range(500):
if t > block.timestamp:
break
t += WEEK
self.points_type_weight[gauge_type][t] = w
if t > block.timestamp:
self.time_type_weight[gauge_type] = t
return w
else:
return 0
@internal
def _get_sum(gauge_type: int128) -> uint256:
"""
@notice Fill sum of gauge weights for the same type week-over-week for
missed checkins and return the sum for the future week
@param gauge_type Gauge type id
@return Sum of weights
"""
t: uint256 = self.time_sum[gauge_type]
if t > 0:
pt: Point = self.points_sum[gauge_type][t]
for i in range(500):
if t > block.timestamp:
break
t += WEEK
d_bias: uint256 = pt.slope * WEEK
if pt.bias > d_bias:
pt.bias -= d_bias
d_slope: uint256 = self.changes_sum[gauge_type][t]
pt.slope -= d_slope
else:
pt.bias = 0
pt.slope = 0
self.points_sum[gauge_type][t] = pt
if t > block.timestamp:
self.time_sum[gauge_type] = t
return pt.bias
else:
return 0
@internal
def _get_total() -> uint256:
"""
@notice Fill historic total weights week-over-week for missed checkins
and return the total for the future week
@return Total weight
"""
t: uint256 = self.time_total
_n_gauge_types: int128 = self.n_gauge_types
if t > block.timestamp:
# If we have already checkpointed - still need to change the value
t -= WEEK
pt: uint256 = self.points_total[t]
for gauge_type in range(100):
if gauge_type == _n_gauge_types:
break
self._get_sum(gauge_type)
self._get_type_weight(gauge_type)
for i in range(500):
if t > block.timestamp:
break
t += WEEK
pt = 0
# Scales as n_types * n_unchecked_weeks (hopefully 1 at most)
for gauge_type in range(100):
if gauge_type == _n_gauge_types:
break
type_sum: uint256 = self.points_sum[gauge_type][t].bias
type_weight: uint256 = self.points_type_weight[gauge_type][t]
pt += type_sum * type_weight
self.points_total[t] = pt
if t > block.timestamp:
self.time_total = t
return pt
@internal
def _get_weight(gauge_addr: address) -> uint256:
"""
@notice Fill historic gauge weights week-over-week for missed checkins
and return the total for the future week
@param gauge_addr Address of the gauge
@return Gauge weight
"""
t: uint256 = self.time_weight[gauge_addr]
if t > 0:
pt: Point = self.points_weight[gauge_addr][t]
for i in range(500):
if t > block.timestamp:
break
t += WEEK
d_bias: uint256 = pt.slope * WEEK
if pt.bias > d_bias:
pt.bias -= d_bias
d_slope: uint256 = self.changes_weight[gauge_addr][t]
pt.slope -= d_slope
else:
pt.bias = 0
pt.slope = 0
self.points_weight[gauge_addr][t] = pt
if t > block.timestamp:
self.time_weight[gauge_addr] = t
return pt.bias
else:
return 0
@external
def add_gauge(addr: address, gauge_type: int128, weight: uint256 = 0):
"""
@notice Add gauge `addr` of type `gauge_type` with weight `weight`
@param addr Gauge address
@param gauge_type Gauge type
@param weight Gauge weight
"""
assert msg.sender == self.admin
assert (gauge_type >= 0) and (gauge_type < self.n_gauge_types)
assert self.gauge_types_[addr] == 0 # dev: cannot add the same gauge twice
n: int128 = self.n_gauges
self.n_gauges = n + 1
self.gauges[n] = addr
self.gauge_types_[addr] = gauge_type + 1
next_time: uint256 = (block.timestamp + WEEK) / WEEK * WEEK
if weight > 0:
_type_weight: uint256 = self._get_type_weight(gauge_type)
_old_sum: uint256 = self._get_sum(gauge_type)
_old_total: uint256 = self._get_total()
self.points_sum[gauge_type][next_time].bias = weight + _old_sum
self.time_sum[gauge_type] = next_time
self.points_total[next_time] = _old_total + _type_weight * weight
self.time_total = next_time
self.points_weight[addr][next_time].bias = weight
if self.time_sum[gauge_type] == 0:
self.time_sum[gauge_type] = next_time
self.time_weight[addr] = next_time
log NewGauge(addr, gauge_type, weight)
@external
def checkpoint():
"""
@notice Checkpoint to fill data common for all gauges
"""
self._get_total()
@external
def checkpoint_gauge(addr: address):
"""
@notice Checkpoint to fill data for both a specific gauge and common for all gauges
@param addr Gauge address
"""
self._get_weight(addr)
self._get_total()
@internal
@view
def _gauge_relative_weight(addr: address, time: uint256) -> 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 addr Gauge address
@param time Relative weight at the specified timestamp in the past or present
@return Value of relative weight normalized to 1e18
"""
t: uint256 = time / WEEK * WEEK
_total_weight: uint256 = self.points_total[t]
if _total_weight > 0:
gauge_type: int128 = self.gauge_types_[addr] - 1
_type_weight: uint256 = self.points_type_weight[gauge_type][t]
_gauge_weight: uint256 = self.points_weight[addr][t].bias
return MULTIPLIER * _type_weight * _gauge_weight / _total_weight
else:
return 0
@external
@view
def gauge_relative_weight(addr: address, time: uint256 = block.timestamp) -> 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 addr Gauge address
@param time Relative weight at the specified timestamp in the past or present
@return Value of relative weight normalized to 1e18
"""
return self._gauge_relative_weight(addr, time)
@external
def gauge_relative_weight_write(addr: address, time: uint256 = block.timestamp) -> uint256:
"""
@notice Get gauge weight normalized to 1e18 and also fill all the unfilled
values for type and gauge records
@dev Any address can call, however nothing is recorded if the values are filled already
@param addr Gauge address
@param time Relative weight at the specified timestamp in the past or present
@return Value of relative weight normalized to 1e18
"""
self._get_weight(addr)
self._get_total() # Also calculates get_sum
return self._gauge_relative_weight(addr, time)
@internal
def _change_type_weight(type_id: int128, weight: uint256):
"""
@notice Change type weight
@param type_id Type id
@param weight New type weight
"""
old_weight: uint256 = self._get_type_weight(type_id)
old_sum: uint256 = self._get_sum(type_id)
_total_weight: uint256 = self._get_total()
next_time: uint256 = (block.timestamp + WEEK) / WEEK * WEEK
_total_weight = _total_weight + old_sum * weight - old_sum * old_weight
self.points_total[next_time] = _total_weight
self.points_type_weight[type_id][next_time] = weight
self.time_total = next_time
self.time_type_weight[type_id] = next_time
log NewTypeWeight(type_id, next_time, weight, _total_weight)
@external
def add_type(_name: String[64], weight: uint256 = 0):
"""
@notice Add gauge type with name `_name` and weight `weight`
@param _name Name of gauge type
@param weight Weight of gauge type
"""
assert msg.sender == self.admin
type_id: int128 = self.n_gauge_types
self.gauge_type_names[type_id] = _name
self.n_gauge_types = type_id + 1
if weight != 0:
self._change_type_weight(type_id, weight)
log AddType(_name, type_id)
@external
def change_type_weight(type_id: int128, weight: uint256):
"""
@notice Change gauge type `type_id` weight to `weight`
@param type_id Gauge type id
@param weight New Gauge weight
"""
assert msg.sender == self.admin
self._change_type_weight(type_id, weight)
@internal
def _change_gauge_weight(addr: address, weight: uint256):
# Change gauge weight
# Only needed when testing in reality
gauge_type: int128 = self.gauge_types_[addr] - 1
old_gauge_weight: uint256 = self._get_weight(addr)
type_weight: uint256 = self._get_type_weight(gauge_type)
old_sum: uint256 = self._get_sum(gauge_type)
_total_weight: uint256 = self._get_total()
next_time: uint256 = (block.timestamp + WEEK) / WEEK * WEEK
self.points_weight[addr][next_time].bias = weight
self.time_weight[addr] = next_time
new_sum: uint256 = old_sum + weight - old_gauge_weight
self.points_sum[gauge_type][next_time].bias = new_sum
self.time_sum[gauge_type] = next_time
_total_weight = _total_weight + new_sum * type_weight - old_sum * type_weight
self.points_total[next_time] = _total_weight
self.time_total = next_time
log NewGaugeWeight(addr, block.timestamp, weight, _total_weight)
@external
def change_gauge_weight(addr: address, weight: uint256):
"""
@notice Change weight of gauge `addr` to `weight`
@param addr `GaugeController` contract address
@param weight New Gauge weight
"""
assert msg.sender == self.admin
self._change_gauge_weight(addr, weight)
@external
def vote_for_gauge_weights(_gauge_addr: address, _user_weight: uint256):
"""
@notice Allocate voting power for changing pool weights
@param _gauge_addr Gauge which `msg.sender` votes for
@param _user_weight Weight for a gauge in bps (units of 0.01%). Minimal is 0.01%. Ignored if 0
"""
escrow: address = self.voting_escrow
slope: uint256 = convert(VotingEscrow(escrow).get_last_user_slope(msg.sender), uint256)
lock_end: uint256 = VotingEscrow(escrow).locked__end(msg.sender)
_n_gauges: int128 = self.n_gauges
next_time: uint256 = (block.timestamp + WEEK) / WEEK * WEEK
assert lock_end > next_time, "Your token lock expires too soon"
assert (_user_weight >= 0) and (_user_weight <= 10000), "You used all your voting power"
assert block.timestamp >= self.last_user_vote[msg.sender][_gauge_addr] + WEIGHT_VOTE_DELAY, "Cannot vote so often"
gauge_type: int128 = self.gauge_types_[_gauge_addr] - 1
assert gauge_type >= 0, "Gauge not added"
# Prepare slopes and biases in memory
old_slope: VotedSlope = self.vote_user_slopes[msg.sender][_gauge_addr]
old_dt: uint256 = 0
if old_slope.end > next_time:
old_dt = old_slope.end - next_time
old_bias: uint256 = old_slope.slope * old_dt
new_slope: VotedSlope = VotedSlope({
slope: slope * _user_weight / 10000,
end: lock_end,
power: _user_weight
})
new_dt: uint256 = lock_end - next_time # dev: raises when expired
new_bias: uint256 = new_slope.slope * new_dt
# Check and update powers (weights) used
power_used: uint256 = self.vote_user_power[msg.sender]
power_used = power_used + new_slope.power - old_slope.power
self.vote_user_power[msg.sender] = power_used
assert (power_used >= 0) and (power_used <= 10000), 'Used too much power'
## Remove old and schedule new slope changes
# Remove slope changes for old slopes
# Schedule recording of initial slope for next_time
old_weight_bias: uint256 = self._get_weight(_gauge_addr)
old_weight_slope: uint256 = self.points_weight[_gauge_addr][next_time].slope
old_sum_bias: uint256 = self._get_sum(gauge_type)
old_sum_slope: uint256 = self.points_sum[gauge_type][next_time].slope
self.points_weight[_gauge_addr][next_time].bias = max(old_weight_bias + new_bias, old_bias) - old_bias
self.points_sum[gauge_type][next_time].bias = max(old_sum_bias + new_bias, old_bias) - old_bias
if old_slope.end > next_time:
self.points_weight[_gauge_addr][next_time].slope = max(old_weight_slope + new_slope.slope, old_slope.slope) - old_slope.slope
self.points_sum[gauge_type][next_time].slope = max(old_sum_slope + new_slope.slope, old_slope.slope) - old_slope.slope
else:
self.points_weight[_gauge_addr][next_time].slope += new_slope.slope
self.points_sum[gauge_type][next_time].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
self.changes_sum[gauge_type][old_slope.end] -= old_slope.slope
# Add slope changes for new slopes
self.changes_weight[_gauge_addr][new_slope.end] += new_slope.slope
self.changes_sum[gauge_type][new_slope.end] += new_slope.slope
self._get_total()
self.vote_user_slopes[msg.sender][_gauge_addr] = new_slope
# Record last action time
self.last_user_vote[msg.sender][_gauge_addr] = block.timestamp
log VoteForGauge(block.timestamp, msg.sender, _gauge_addr, _user_weight)
@external
@view
def get_gauge_weight(addr: address) -> uint256:
"""
@notice Get current gauge weight
@param addr Gauge address
@return Gauge weight
"""
return self.points_weight[addr][self.time_weight[addr]].bias
@external
@view
def get_type_weight(type_id: int128) -> uint256:
"""
@notice Get current type weight
@param type_id Type id
@return Type weight
"""
return self.points_type_weight[type_id][self.time_type_weight[type_id]]
@external
@view
def get_total_weight() -> uint256:
"""
@notice Get current total (type-weighted) weight
@return Total weight
"""
return self.points_total[self.time_total]
@external
@view
def get_weights_sum_per_type(type_id: int128) -> uint256:
"""
@notice Get sum of gauge weights per type
@param type_id Type id
@return Sum of gauge weights
"""
return self.points_sum[type_id][self.time_sum[type_id]].biasContract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"name":"CommitOwnership","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyOwnership","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"AddType","inputs":[{"name":"name","type":"string","indexed":false},{"name":"type_id","type":"int128","indexed":false}],"anonymous":false,"type":"event"},{"name":"NewTypeWeight","inputs":[{"name":"type_id","type":"int128","indexed":false},{"name":"time","type":"uint256","indexed":false},{"name":"weight","type":"uint256","indexed":false},{"name":"total_weight","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"NewGaugeWeight","inputs":[{"name":"gauge_address","type":"address","indexed":false},{"name":"time","type":"uint256","indexed":false},{"name":"weight","type":"uint256","indexed":false},{"name":"total_weight","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"VoteForGauge","inputs":[{"name":"time","type":"uint256","indexed":false},{"name":"user","type":"address","indexed":false},{"name":"gauge_addr","type":"address","indexed":false},{"name":"weight","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"NewGauge","inputs":[{"name":"addr","type":"address","indexed":false},{"name":"gauge_type","type":"int128","indexed":false},{"name":"weight","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"KilledGauge","inputs":[{"name":"addr","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_token","type":"address"},{"name":"_voting_escrow","type":"address"},{"name":"_admin","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"addr","type":"address"}],"outputs":[],"gas":39542},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[],"gas":39390},{"stateMutability":"view","type":"function","name":"gauge_types","inputs":[{"name":"_addr","type":"address"}],"outputs":[{"name":"","type":"int128"}],"gas":2992},{"stateMutability":"nonpayable","type":"function","name":"add_gauge","inputs":[{"name":"addr","type":"address"},{"name":"gauge_type","type":"int128"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"add_gauge","inputs":[{"name":"addr","type":"address"},{"name":"gauge_type","type":"int128"},{"name":"weight","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"checkpoint","inputs":[],"outputs":[],"gas":18271410417},{"stateMutability":"nonpayable","type":"function","name":"checkpoint_gauge","inputs":[{"name":"addr","type":"address"}],"outputs":[],"gas":18325922441},{"stateMutability":"view","type":"function","name":"gauge_relative_weight","inputs":[{"name":"addr","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"gauge_relative_weight","inputs":[{"name":"addr","type":"address"},{"name":"time","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"gauge_relative_weight_write","inputs":[{"name":"addr","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"gauge_relative_weight_write","inputs":[{"name":"addr","type":"address"},{"name":"time","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"add_type","inputs":[{"name":"_name","type":"string"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"add_type","inputs":[{"name":"_name","type":"string"},{"name":"weight","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"change_type_weight","inputs":[{"name":"type_id","type":"int128"},{"name":"weight","type":"uint256"}],"outputs":[],"gas":36722675182},{"stateMutability":"nonpayable","type":"function","name":"change_gauge_weight","inputs":[{"name":"addr","type":"address"},{"name":"weight","type":"uint256"}],"outputs":[],"gas":36831772257},{"stateMutability":"nonpayable","type":"function","name":"vote_for_gauge_weights","inputs":[{"name":"_gauge_addr","type":"address"},{"name":"_user_weight","type":"uint256"}],"outputs":[],"gas":18380903091},{"stateMutability":"view","type":"function","name":"get_gauge_weight","inputs":[{"name":"addr","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":5290},{"stateMutability":"view","type":"function","name":"get_type_weight","inputs":[{"name":"type_id","type":"int128"}],"outputs":[{"name":"","type":"uint256"}],"gas":5309},{"stateMutability":"view","type":"function","name":"get_total_weight","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":5020},{"stateMutability":"view","type":"function","name":"get_weights_sum_per_type","inputs":[{"name":"type_id","type":"int128"}],"outputs":[{"name":"","type":"uint256"}],"gas":5369},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2868},{"stateMutability":"view","type":"function","name":"future_admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2898},{"stateMutability":"view","type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2928},{"stateMutability":"view","type":"function","name":"voting_escrow","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2958},{"stateMutability":"view","type":"function","name":"n_gauge_types","inputs":[],"outputs":[{"name":"","type":"int128"}],"gas":2988},{"stateMutability":"view","type":"function","name":"n_gauges","inputs":[],"outputs":[{"name":"","type":"int128"}],"gas":3018},{"stateMutability":"view","type":"function","name":"gauge_type_names","inputs":[{"name":"arg0","type":"int128"}],"outputs":[{"name":"","type":"string"}],"gas":13552},{"stateMutability":"view","type":"function","name":"gauges","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":3123},{"stateMutability":"view","type":"function","name":"vote_user_slopes","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"slope","type":"uint256"},{"name":"power","type":"uint256"},{"name":"end","type":"uint256"}],"gas":8138},{"stateMutability":"view","type":"function","name":"vote_user_power","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3353},{"stateMutability":"view","type":"function","name":"last_user_vote","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3598},{"stateMutability":"view","type":"function","name":"points_weight","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"}],"outputs":[{"name":"bias","type":"uint256"},{"name":"slope","type":"uint256"}],"gas":5918},{"stateMutability":"view","type":"function","name":"time_weight","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3443},{"stateMutability":"view","type":"function","name":"points_sum","inputs":[{"name":"arg0","type":"int128"},{"name":"arg1","type":"uint256"}],"outputs":[{"name":"bias","type":"uint256"},{"name":"slope","type":"uint256"}],"gas":6037},{"stateMutability":"view","type":"function","name":"time_sum","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":3333},{"stateMutability":"view","type":"function","name":"points_total","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":3433},{"stateMutability":"view","type":"function","name":"time_total","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3348},{"stateMutability":"view","type":"function","name":"points_type_weight","inputs":[{"name":"arg0","type":"int128"},{"name":"arg1","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":3767},{"stateMutability":"view","type":"function","name":"time_type_weight","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":3453}]Contract Creation Code
0x606061278661014039602061278660c03960c05160a01c61278157602060206127860160c03960c05160a01c61278157602060406127860160c03960c05160a01c612781576000610140511815612781576000610160511815612781576000610180511815612781576101805160005561014051600255610160516003554262093a808082049050905062093a80808202821582848304141715612781578090509050905063773594115561276956600436101561000d57611880565b600035601c52600051346126b557636b441a408114156100865760043560a01c6126b5576000543314156126b557600060043518156126b5576004356001557f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e961014080808060043581525050602090509050610140a1005b63e5ea47b88114156100e65760015461014052610140513314156126b557610140516000557febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056101608080806101405181525050602090509050610160a1005b633f9095b78114156101475760043560a01c6126b557633b9aca0760043560e05260c052604060c020546101405260006101405118156126b55761014051600180820380607f1d8160801d14156126b5578090509050905060005260206000f35b633a04f90081141561015e5760006101405261017f565b6318dfe92181141561017a57602060446101403760005061017f565b6104e7565b60043560a01c6126b55760243580607f1d8160801d14156126b557809050506000543314156126b5576000602435126101be57600454602435126101c1565b60005b156126b557633b9aca0760043560e05260c052604060c020546126b5576005546101605261016051600180820180607f1d8160801d14156126b55780905090509050600555600435600161016051633b9aca008110156126b5570260070155602435600180820180607f1d8160801d14156126b55780905090509050633b9aca0760043560e05260c052604060c020554262093a8081818301106126b5578082019050905062093a808082049050905062093a808082028215828483041417156126b5578090509050905061018052600061014051111561043b576101405161016051610180516101a0516024356101c0526101c05160065801611886565b610220526101a052610180526101605261014052610220516101a0526101405161016051610180516101a0516101c0516024356101e0526101e051600658016119a2565b610240526101c0526101a052610180526101605261014052610240516101c0526101405161016051610180516101a0516101c0516101e05160065801611b79565b610200526101e0526101c0526101a052610180526101605261014052610200516101e052610140516101c05181818301106126b55780820190509050633b9aca0e60243560e05260c052604060c0206101805160e05260c052604060c02055610180516001602435633b9aca008110156126b55702633b9aca1001556101e0516101a051610140518082028215828483041417156126b5578090509050905081818301106126b5578082019050905063773594106101805160e05260c052604060c020556101805163773594115561014051633b9aca0b60043560e05260c052604060c0206101805160e05260c052604060c020555b6001602435633b9aca008110156126b55702633b9aca10015461047657610180516001602435633b9aca008110156126b55702633b9aca1001555b61018051633b9aca0d60043560e05260c052604060c020557ffd55b3191f9c9dd92f4f134dd700e7d76f6a0c836a08687023d6d38f03ebd8776101a080808060043581525050602081019050808060243581525050602081019050808061014051815250506060905090506101a0a1005b63c2c4c5c18114156105065760065801611b79565b6101405261014050005b63615e523781141561054b5760043560a01c6126b557600435610140526101405160065801611dd3565b6101a0526101a05060065801611b79565b6101405261014050005b636207d866811415610561574261014052610582565b63d3078c9481141561057d576020602461014037600050610582565b6105c5565b60043560a01c6126b55761014051600435610160526101405161018052610180516101605160065801611fa0565b6101e052610140526101e05160005260206000f35b6395cfcec38114156105db5742610140526105fc565b636472eee18114156105f75760206024610140376000506105fc565b61067c565b60043560a01c6126b55761014051600435610160526101605160065801611dd3565b6101c052610140526101c0506101405160065801611b79565b61016052610140526101605061014051600435610160526101405161018052610180516101605160065801611fa0565b6101e052610140526101e05160005260206000f35b6326e56d5e8114156106935760006101c0526106b4565b6392d0d2328114156106af57602060246101c0376000506106b4565b61085f565b606060043560040161014037604060043560040135116126b5576000543314156126b5576004546101e0526101408060066101e05160e05260c052604060c020602082510161012060006003818352015b826101205160200211156107185761073a565b61012051602002850151610120518501555b8151600101808352811415610705575b5050505050506101e051600180820180607f1d8160801d14156126b5578090509050905060045560006101c051181561085d576101405161016051610180516101a0516101c0516101e0516101e051610200526101c051610220526102205161020051600658016120f2565b6101e0526101c0526101a0526101805261016052610140526000507f6fbe76157c712f16b5a3c44ed48baa04e3450bc3fab0c020e848aca72bbccc8461020080604080825280830180610140805160200180838284600060045af1156126b55750508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f8201039050905090508101905060208201915081806101e0518152505080905090509050610200a15b005b63db1ca2608114156108ae5760043580607f1d8160801d14156126b557809050506000543314156126b55760043561014052602435610160526101605161014051600658016120f2565b600050005b63d4d2646e8114156108f25760043560a01c6126b5576000543314156126b5576004356101405260243561016052610160516101405160065801612347565b600050005b63d71363288114156112cf5760043560a01c6126b5576003546101405260206102006024637c74a17461018052336101a05261019c610140515afa156126b557601f3d11156126b55760005061020051600081126126b557610160526020610220602463adc635896101a052336101c0526101bc610140515afa156126b557601f3d11156126b55760005061022051610180526005546101a0524262093a8081818301106126b5578082019050905062093a808082049050905062093a808082028215828483041417156126b557809050905090506101c0526101c0516101805111610a1d576308c379a06101e0526020610200526020610220527f596f757220746f6b656e206c6f636b206578706972657320746f6f20736f6f6e610240526102205060646101fcfd5b600060243510610a34576127106024351115610a37565b60005b610a80576308c379a06101e052602061020052601e610220527f596f75207573656420616c6c20796f757220766f74696e6720706f7765720000610240526102205060646101fcfd5b633b9aca0a3360e05260c052604060c02060043560e05260c052604060c02054620d2f0081818301106126b55780820190509050421015610b00576308c379a06101e0526020610200526014610220527f43616e6e6f7420766f746520736f206f6674656e000000000000000000000000610240526102205060646101fcfd5b633b9aca0760043560e05260c052604060c02054600180820380607f1d8160801d14156126b557809050905090506101e05260006101e0511215610b83576308c379a061020052602061022052600f610240527f4761756765206e6f7420616464656400000000000000000000000000000000006102605261024050606461021cfd5b610200633b9aca083360e05260c052604060c02060043560e05260c052604060c02080548252600181015482602001526002810154826040015250506000610260526101c051610240511115610bee57610240516101c0518082106126b55780820390509050610260525b61020051610260518082028215828483041417156126b55780905090509050610280526102a0610160516024358082028215828483041417156126b55780905090509050612710808204905090508152602435816020015261018051816040015250610180516101c0518082106126b55780820390509050610300526102a051610300518082028215828483041417156126b5578090509050905061032052633b9aca093360e05260c052604060c0205461034052610340516102c05181818301106126b55780820190509050610220518082106126b557808203905090506103405261034051633b9aca093360e05260c052604060c0205560006103405110610d0057612710610340511115610d03565b60005b610d4c576308c379a06103605260206103805260136103a0527f5573656420746f6f206d75636820706f776572000000000000000000000000006103c0526103a050606461037cfd5b610140610380525b61038051516020610380510161038052610380610380511015610d7657610d54565b6004356103a0526103a05160065801611dd3565b61040052610360610380525b610380515260206103805103610380526101406103805110610db757610d96565b61040051610360526001633b9aca0b60043560e05260c052604060c0206101c05160e05260c052604060c0200154610380526101406103c0525b6103c0515160206103c051016103c0526103c06103c0511015610e1357610df1565b6101e0516103e0526103e051600658016119a2565b610440526103a06103c0525b6103c0515260206103c051036103c0526101406103c05110610e5557610e34565b610440516103a0526001633b9aca0e6101e05160e05260c052604060c0206101c05160e05260c052604060c02001546103c052610360516103205181818301106126b557808201905090506102805180821015610eb25780610eb4565b815b90509050610280518082106126b55780820390509050633b9aca0b60043560e05260c052604060c0206101c05160e05260c052604060c020556103a0516103205181818301106126b557808201905090506102805180821015610f175780610f19565b815b90509050610280518082106126b55780820390509050633b9aca0e6101e05160e05260c052604060c0206101c05160e05260c052604060c020556101c05161024051111561103757610380516102a05181818301106126b557808201905090506102005180821015610f8b5780610f8d565b815b90509050610200518082106126b557808203905090506001633b9aca0b60043560e05260c052604060c0206101c05160e05260c052604060c02001556103c0516102a05181818301106126b557808201905090506102005180821015610ff35780610ff5565b815b90509050610200518082106126b557808203905090506001633b9aca0e6101e05160e05260c052604060c0206101c05160e05260c052604060c02001556110b5565b6001633b9aca0b60043560e05260c052604060c0206101c05160e05260c052604060c0200180546102a05181818301106126b557808201905090508155506001633b9aca0e6101e05160e05260c052604060c0206101c05160e05260c052604060c0200180546102a05181818301106126b557808201905090508155505b4261024051111561113457633b9aca0c60043560e05260c052604060c0206102405160e05260c052604060c0208054610200518082106126b55780820390509050815550633b9aca0f6101e05160e05260c052604060c0206102405160e05260c052604060c0208054610200518082106126b557808203905090508155505b633b9aca0c60043560e05260c052604060c0206102e05160e05260c052604060c02080546102a05181818301106126b55780820190509050815550633b9aca0f6101e05160e05260c052604060c0206102e05160e05260c052604060c02080546102a05181818301106126b557808201905090508155506101406103e0525b6103e0515160206103e051016103e0526103e06103e05110156111d5576111b3565b60065801611b79565b610400526103c06103e0525b6103e0515260206103e051036103e0526101406103e0511061120b576111ea565b61040050633b9aca083360e05260c052604060c02060043560e05260c052604060c0206102a0805182558060200151600183015580604001516002830155505042633b9aca0a3360e05260c052604060c02060043560e05260c052604060c020557f45ca9a4c8d0119eb329e580d28fe689e484e1be230da8037ade9547d2d25cc916103e08080804281525050602081019050808033815250506020810190508080600435815250506020810190508080602435815250506080905090506103e0a1005b634e791a3a8114156113215760043560a01c6126b557633b9aca0b60043560e05260c052604060c020633b9aca0d60043560e05260c052604060c0205460e05260c052604060c0205460005260206000f35b6372fdccfa8114156113835760043580607f1d8160801d14156126b55780905050637735941260043560e05260c052604060c0206001600435633b9aca008110156126b557026377359413015460e05260c052604060c0205460005260206000f35b636977ff928114156113af57637735941063773594115460e05260c052604060c0205460005260206000f35b636f214a6a8114156114115760043580607f1d8160801d14156126b55780905050633b9aca0e60043560e05260c052604060c0206001600435633b9aca008110156126b55702633b9aca10015460e05260c052604060c0205460005260206000f35b63f851a4408114156114295760005460005260206000f35b6317f7182a8114156114415760015460005260206000f35b63fc0c546a8114156114595760025460005260206000f35b63dfe050318114156114715760035460005260206000f35b639fba03a18114156114895760045460005260206000f35b63e93841d08114156114a15760055460005260206000f35b63d958a8fc8114156115615760043580607f1d8160801d14156126b55780905050600660043560e05260c052604060c02080610180602082540161012060006003818352015b826101205160200211156114fa5761151c565b61012051850154610120516020028501525b81516001018083528114156114e7575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b63b053918781141561158c576001600435633b9aca008110156126b557026007015460005260206000f35b630f467f9881141561160c5760043560a01c6126b55760243560a01c6126b557633b9aca0860043560e05260c052604060c02060243560e05260c052604060c0206101408080808454815250506020810190508080600185015481525050602081019050808060028501548152505060609050905060c05260c051610140f35b63411e74b581141561163f5760043560a01c6126b557633b9aca0960043560e05260c052604060c0205460005260206000f35b637e418fa081141561168a5760043560a01c6126b55760243560a01c6126b557633b9aca0a60043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b63edba52738114156116ef5760043560a01c6126b557633b9aca0b60043560e05260c052604060c02060243560e05260c052604060c020610140808080845481525050602081019050808060018501548152505060409050905060c05260c051610140f35b63a4d7a2508114156117225760043560a01c6126b557633b9aca0d60043560e05260c052604060c0205460005260206000f35b63a9b48c018114156117925760043580607f1d8160801d14156126b55780905050633b9aca0e60043560e05260c052604060c02060243560e05260c052604060c020610140808080845481525050602081019050808060018501548152505060409050905060c05260c051610140f35b635a5491588114156117c0576001600435633b9aca008110156126b55702633b9aca10015460005260206000f35b631142916b8114156117e957637735941060043560e05260c052604060c0205460005260206000f35b63513872bd8114156118045763773594115460005260206000f35b63afd2bb498114156118505760043580607f1d8160801d14156126b55780905050637735941260043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b6351ce6b5981141561187e576001600435633b9aca008110156126b557026377359413015460005260206000f35b505b60006000fd5b6101605261014052600161014051633b9aca008110156126b55702637735941301546101805260006101805111156119925763773594126101405160e05260c052604060c0206101805160e05260c052604060c020546101a0526101c060006101f4818352015b426101805111156118fd5761197c565b610180805162093a8081818301106126b557808201905090508152506101a05163773594126101405160e05260c052604060c0206101805160e05260c052604060c020554261018051111561196b5761018051600161014051633b9aca008110156126b55702637735941301555b5b81516001018083528114156118ed575b50506101a05160005260005161016051566119a0565b600060005260005161016051565b005b6101605261014052600161014051633b9aca008110156126b55702633b9aca100154610180526000610180511115611b69576101a0633b9aca0e6101405160e05260c052604060c0206101805160e05260c052604060c020805482526001810154826020015250506101e060006101f4818352015b42610180511115611a2757611b53565b610180805162093a8081818301106126b557808201905090508152506101c05162093a808082028215828483041417156126b5578090509050905061020052610200516101a0511115611ad5576101a08051610200518082106126b55780820390509050815250633b9aca0f6101405160e05260c052604060c0206101805160e05260c052604060c02054610220526101c08051610220518082106126b55780820390509050815250611ae2565b60006101a05260006101c0525b633b9aca0e6101405160e05260c052604060c0206101805160e05260c052604060c0206101a08051825580602001516001830155505042610180511115611b425761018051600161014051633b9aca008110156126b55702633b9aca1001555b5b8151600101808352811415611a17575b50506101a0516000526000516101605156611b77565b600060005260005161016051565b005b61014052637735941154610160526004546101805242610160511115611bb457610160805162093a808082106126b557808203905090508152505b63773594106101605160e05260c052604060c020546101a0526101c060006064818352015b610180516101c0511415611bec57611c87565b6101405161016051610180516101a0516101c0516101c0516101e0526101e051600658016119a2565b610240526101c0526101a052610180526101605261014052610240506101405161016051610180516101a0516101c0516101c0516101e0526101e05160065801611886565b610240526101c0526101a052610180526101605261014052610240505b8151600101808352811415611bd9575b50506101c060006101f4818352015b42610160511115611ca657611dc1565b610160805162093a8081818301106126b5578082019050905081525060006101a0526101e060006064818352015b610180516101e0511415611ce757611d7f565b633b9aca0e6101e05160e05260c052604060c0206101605160e05260c052604060c020546102005263773594126101e05160e05260c052604060c0206101605160e05260c052604060c02054610220526101a0805161020051610220518082028215828483041417156126b5578090509050905081818301106126b557808201905090508152505b8151600101808352811415611cd4575b50506101a05163773594106101605160e05260c052604060c0205542610160511115611db057610160516377359411555b5b8151600101808352811415611c96575b50506101a05160005260005161014051565b6101605261014052633b9aca0d6101405160e05260c052604060c02054610180526000610180511115611f90576101a0633b9aca0b6101405160e05260c052604060c0206101805160e05260c052604060c020805482526001810154826020015250506101e060006101f4818352015b42610180511115611e5357611f7a565b610180805162093a8081818301106126b557808201905090508152506101c05162093a808082028215828483041417156126b5578090509050905061020052610200516101a0511115611f01576101a08051610200518082106126b55780820390509050815250633b9aca0c6101405160e05260c052604060c0206101805160e05260c052604060c02054610220526101c08051610220518082106126b55780820390509050815250611f0e565b60006101a05260006101c0525b633b9aca0b6101405160e05260c052604060c0206101805160e05260c052604060c0206101a08051825580602001516001830155505042610180511115611f695761018051633b9aca0d6101405160e05260c052604060c020555b5b8151600101808352811415611e43575b50506101a0516000526000516101605156611f9e565b600060005260005161016051565b005b6101805261014052610160526101605162093a808082049050905062093a808082028215828483041417156126b557809050905090506101a05263773594106101a05160e05260c052604060c020546101c05260006101c05111156120e257633b9aca076101405160e05260c052604060c02054600180820380607f1d8160801d14156126b557809050905090506101e05263773594126101e05160e05260c052604060c0206101a05160e05260c052604060c0205461020052633b9aca0b6101405160e05260c052604060c0206101a05160e05260c052604060c0205461022052670de0b6b3a7640000610200518082028215828483041417156126b55780905090509050610220518082028215828483041417156126b557809050905090506101c0518080156126b55782049050905060005260005161018051566120f0565b600060005260005161018051565b005b6101805261014052610160526101405161016051610180516101a051610140516101c0526101c05160065801611886565b610220526101a052610180526101605261014052610220516101a0526101405161016051610180516101a0516101c051610140516101e0526101e051600658016119a2565b610240526101c0526101a052610180526101605261014052610240516101c0526101405161016051610180516101a0516101c0516101e05160065801611b79565b610200526101e0526101c0526101a052610180526101605261014052610200516101e0524262093a8081818301106126b5578082019050905062093a808082049050905062093a808082028215828483041417156126b55780905090509050610200526101e0516101c051610160518082028215828483041417156126b5578090509050905081818301106126b557808201905090506101c0516101a0518082028215828483041417156126b557809050905090508082106126b557808203905090506101e0526101e05163773594106102005160e05260c052604060c020556101605163773594126101405160e05260c052604060c0206102005160e05260c052604060c020556102005163773594115561020051600161014051633b9aca008110156126b55702637735941301557e170bcdc909b6ac6e12d020fe8942256312cdcd555fb6d712899eba56d2f9016102208080806101405181525050602081019050808061020051815250506020810190508080610160518152505060208101905080806101e05181525050608090509050610220a161018051565b610180526101405261016052633b9aca076101405160e05260c052604060c02054600180820380607f1d8160801d14156126b557809050905090506101a0526101405161016051610180516101a0516101c051610140516101e0526101e05160065801611dd3565b610240526101c0526101a052610180526101605261014052610240516101c0526101405161016051610180516101a0516101c0516101e0516101a051610200526102005160065801611886565b610260526101e0526101c0526101a052610180526101605261014052610260516101e0526101405161016051610180516101a0516101c0516101e051610200516101a0516102205261022051600658016119a2565b61028052610200526101e0526101c0526101a05261018052610160526101405261028051610200526101405161016051610180516101a0516101c0516101e051610200516102205160065801611b79565b6102405261022052610200526101e0526101c0526101a05261018052610160526101405261024051610220524262093a8081818301106126b5578082019050905062093a808082049050905062093a808082028215828483041417156126b557809050905090506102405261016051633b9aca0b6101405160e05260c052604060c0206102405160e05260c052604060c0205561024051633b9aca0d6101405160e05260c052604060c02055610200516101605181818301106126b557808201905090506101c0518082106126b557808203905090506102605261026051633b9aca0e6101a05160e05260c052604060c0206102405160e05260c052604060c020556102405160016101a051633b9aca008110156126b55702633b9aca10015561022051610260516101e0518082028215828483041417156126b5578090509050905081818301106126b55780820190509050610200516101e0518082028215828483041417156126b557809050905090508082106126b55780820390509050610220526102205163773594106102405160e05260c052604060c02055610240516377359411557f54c0cf3647e6cdb2fc0a7876e60ba77563fceedf2e06c01c597f8dccb9e6bd726102808080806101405181525050602081019050808042815250506020810190508080610160518152505060208101905080806102205181525050608090509050610280a161018051565b600080fd5b6100af612769036100af6000396100af612769036000f35b600080fd00000000000000000000000073968b9a57c6e53d41345fd57a6e6ae27d6cdb2f0000000000000000000000000c30476f66034e11782938df8e4384970b6c9e8a0000000000000000000000000de5199779b43e13b3bec21e91117e18736bc1a8
Deployed Bytecode
0x600436101561000d57611880565b600035601c52600051346126b557636b441a408114156100865760043560a01c6126b5576000543314156126b557600060043518156126b5576004356001557f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e961014080808060043581525050602090509050610140a1005b63e5ea47b88114156100e65760015461014052610140513314156126b557610140516000557febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056101608080806101405181525050602090509050610160a1005b633f9095b78114156101475760043560a01c6126b557633b9aca0760043560e05260c052604060c020546101405260006101405118156126b55761014051600180820380607f1d8160801d14156126b5578090509050905060005260206000f35b633a04f90081141561015e5760006101405261017f565b6318dfe92181141561017a57602060446101403760005061017f565b6104e7565b60043560a01c6126b55760243580607f1d8160801d14156126b557809050506000543314156126b5576000602435126101be57600454602435126101c1565b60005b156126b557633b9aca0760043560e05260c052604060c020546126b5576005546101605261016051600180820180607f1d8160801d14156126b55780905090509050600555600435600161016051633b9aca008110156126b5570260070155602435600180820180607f1d8160801d14156126b55780905090509050633b9aca0760043560e05260c052604060c020554262093a8081818301106126b5578082019050905062093a808082049050905062093a808082028215828483041417156126b5578090509050905061018052600061014051111561043b576101405161016051610180516101a0516024356101c0526101c05160065801611886565b610220526101a052610180526101605261014052610220516101a0526101405161016051610180516101a0516101c0516024356101e0526101e051600658016119a2565b610240526101c0526101a052610180526101605261014052610240516101c0526101405161016051610180516101a0516101c0516101e05160065801611b79565b610200526101e0526101c0526101a052610180526101605261014052610200516101e052610140516101c05181818301106126b55780820190509050633b9aca0e60243560e05260c052604060c0206101805160e05260c052604060c02055610180516001602435633b9aca008110156126b55702633b9aca1001556101e0516101a051610140518082028215828483041417156126b5578090509050905081818301106126b5578082019050905063773594106101805160e05260c052604060c020556101805163773594115561014051633b9aca0b60043560e05260c052604060c0206101805160e05260c052604060c020555b6001602435633b9aca008110156126b55702633b9aca10015461047657610180516001602435633b9aca008110156126b55702633b9aca1001555b61018051633b9aca0d60043560e05260c052604060c020557ffd55b3191f9c9dd92f4f134dd700e7d76f6a0c836a08687023d6d38f03ebd8776101a080808060043581525050602081019050808060243581525050602081019050808061014051815250506060905090506101a0a1005b63c2c4c5c18114156105065760065801611b79565b6101405261014050005b63615e523781141561054b5760043560a01c6126b557600435610140526101405160065801611dd3565b6101a0526101a05060065801611b79565b6101405261014050005b636207d866811415610561574261014052610582565b63d3078c9481141561057d576020602461014037600050610582565b6105c5565b60043560a01c6126b55761014051600435610160526101405161018052610180516101605160065801611fa0565b6101e052610140526101e05160005260206000f35b6395cfcec38114156105db5742610140526105fc565b636472eee18114156105f75760206024610140376000506105fc565b61067c565b60043560a01c6126b55761014051600435610160526101605160065801611dd3565b6101c052610140526101c0506101405160065801611b79565b61016052610140526101605061014051600435610160526101405161018052610180516101605160065801611fa0565b6101e052610140526101e05160005260206000f35b6326e56d5e8114156106935760006101c0526106b4565b6392d0d2328114156106af57602060246101c0376000506106b4565b61085f565b606060043560040161014037604060043560040135116126b5576000543314156126b5576004546101e0526101408060066101e05160e05260c052604060c020602082510161012060006003818352015b826101205160200211156107185761073a565b61012051602002850151610120518501555b8151600101808352811415610705575b5050505050506101e051600180820180607f1d8160801d14156126b5578090509050905060045560006101c051181561085d576101405161016051610180516101a0516101c0516101e0516101e051610200526101c051610220526102205161020051600658016120f2565b6101e0526101c0526101a0526101805261016052610140526000507f6fbe76157c712f16b5a3c44ed48baa04e3450bc3fab0c020e848aca72bbccc8461020080604080825280830180610140805160200180838284600060045af1156126b55750508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f8201039050905090508101905060208201915081806101e0518152505080905090509050610200a15b005b63db1ca2608114156108ae5760043580607f1d8160801d14156126b557809050506000543314156126b55760043561014052602435610160526101605161014051600658016120f2565b600050005b63d4d2646e8114156108f25760043560a01c6126b5576000543314156126b5576004356101405260243561016052610160516101405160065801612347565b600050005b63d71363288114156112cf5760043560a01c6126b5576003546101405260206102006024637c74a17461018052336101a05261019c610140515afa156126b557601f3d11156126b55760005061020051600081126126b557610160526020610220602463adc635896101a052336101c0526101bc610140515afa156126b557601f3d11156126b55760005061022051610180526005546101a0524262093a8081818301106126b5578082019050905062093a808082049050905062093a808082028215828483041417156126b557809050905090506101c0526101c0516101805111610a1d576308c379a06101e0526020610200526020610220527f596f757220746f6b656e206c6f636b206578706972657320746f6f20736f6f6e610240526102205060646101fcfd5b600060243510610a34576127106024351115610a37565b60005b610a80576308c379a06101e052602061020052601e610220527f596f75207573656420616c6c20796f757220766f74696e6720706f7765720000610240526102205060646101fcfd5b633b9aca0a3360e05260c052604060c02060043560e05260c052604060c02054620d2f0081818301106126b55780820190509050421015610b00576308c379a06101e0526020610200526014610220527f43616e6e6f7420766f746520736f206f6674656e000000000000000000000000610240526102205060646101fcfd5b633b9aca0760043560e05260c052604060c02054600180820380607f1d8160801d14156126b557809050905090506101e05260006101e0511215610b83576308c379a061020052602061022052600f610240527f4761756765206e6f7420616464656400000000000000000000000000000000006102605261024050606461021cfd5b610200633b9aca083360e05260c052604060c02060043560e05260c052604060c02080548252600181015482602001526002810154826040015250506000610260526101c051610240511115610bee57610240516101c0518082106126b55780820390509050610260525b61020051610260518082028215828483041417156126b55780905090509050610280526102a0610160516024358082028215828483041417156126b55780905090509050612710808204905090508152602435816020015261018051816040015250610180516101c0518082106126b55780820390509050610300526102a051610300518082028215828483041417156126b5578090509050905061032052633b9aca093360e05260c052604060c0205461034052610340516102c05181818301106126b55780820190509050610220518082106126b557808203905090506103405261034051633b9aca093360e05260c052604060c0205560006103405110610d0057612710610340511115610d03565b60005b610d4c576308c379a06103605260206103805260136103a0527f5573656420746f6f206d75636820706f776572000000000000000000000000006103c0526103a050606461037cfd5b610140610380525b61038051516020610380510161038052610380610380511015610d7657610d54565b6004356103a0526103a05160065801611dd3565b61040052610360610380525b610380515260206103805103610380526101406103805110610db757610d96565b61040051610360526001633b9aca0b60043560e05260c052604060c0206101c05160e05260c052604060c0200154610380526101406103c0525b6103c0515160206103c051016103c0526103c06103c0511015610e1357610df1565b6101e0516103e0526103e051600658016119a2565b610440526103a06103c0525b6103c0515260206103c051036103c0526101406103c05110610e5557610e34565b610440516103a0526001633b9aca0e6101e05160e05260c052604060c0206101c05160e05260c052604060c02001546103c052610360516103205181818301106126b557808201905090506102805180821015610eb25780610eb4565b815b90509050610280518082106126b55780820390509050633b9aca0b60043560e05260c052604060c0206101c05160e05260c052604060c020556103a0516103205181818301106126b557808201905090506102805180821015610f175780610f19565b815b90509050610280518082106126b55780820390509050633b9aca0e6101e05160e05260c052604060c0206101c05160e05260c052604060c020556101c05161024051111561103757610380516102a05181818301106126b557808201905090506102005180821015610f8b5780610f8d565b815b90509050610200518082106126b557808203905090506001633b9aca0b60043560e05260c052604060c0206101c05160e05260c052604060c02001556103c0516102a05181818301106126b557808201905090506102005180821015610ff35780610ff5565b815b90509050610200518082106126b557808203905090506001633b9aca0e6101e05160e05260c052604060c0206101c05160e05260c052604060c02001556110b5565b6001633b9aca0b60043560e05260c052604060c0206101c05160e05260c052604060c0200180546102a05181818301106126b557808201905090508155506001633b9aca0e6101e05160e05260c052604060c0206101c05160e05260c052604060c0200180546102a05181818301106126b557808201905090508155505b4261024051111561113457633b9aca0c60043560e05260c052604060c0206102405160e05260c052604060c0208054610200518082106126b55780820390509050815550633b9aca0f6101e05160e05260c052604060c0206102405160e05260c052604060c0208054610200518082106126b557808203905090508155505b633b9aca0c60043560e05260c052604060c0206102e05160e05260c052604060c02080546102a05181818301106126b55780820190509050815550633b9aca0f6101e05160e05260c052604060c0206102e05160e05260c052604060c02080546102a05181818301106126b557808201905090508155506101406103e0525b6103e0515160206103e051016103e0526103e06103e05110156111d5576111b3565b60065801611b79565b610400526103c06103e0525b6103e0515260206103e051036103e0526101406103e0511061120b576111ea565b61040050633b9aca083360e05260c052604060c02060043560e05260c052604060c0206102a0805182558060200151600183015580604001516002830155505042633b9aca0a3360e05260c052604060c02060043560e05260c052604060c020557f45ca9a4c8d0119eb329e580d28fe689e484e1be230da8037ade9547d2d25cc916103e08080804281525050602081019050808033815250506020810190508080600435815250506020810190508080602435815250506080905090506103e0a1005b634e791a3a8114156113215760043560a01c6126b557633b9aca0b60043560e05260c052604060c020633b9aca0d60043560e05260c052604060c0205460e05260c052604060c0205460005260206000f35b6372fdccfa8114156113835760043580607f1d8160801d14156126b55780905050637735941260043560e05260c052604060c0206001600435633b9aca008110156126b557026377359413015460e05260c052604060c0205460005260206000f35b636977ff928114156113af57637735941063773594115460e05260c052604060c0205460005260206000f35b636f214a6a8114156114115760043580607f1d8160801d14156126b55780905050633b9aca0e60043560e05260c052604060c0206001600435633b9aca008110156126b55702633b9aca10015460e05260c052604060c0205460005260206000f35b63f851a4408114156114295760005460005260206000f35b6317f7182a8114156114415760015460005260206000f35b63fc0c546a8114156114595760025460005260206000f35b63dfe050318114156114715760035460005260206000f35b639fba03a18114156114895760045460005260206000f35b63e93841d08114156114a15760055460005260206000f35b63d958a8fc8114156115615760043580607f1d8160801d14156126b55780905050600660043560e05260c052604060c02080610180602082540161012060006003818352015b826101205160200211156114fa5761151c565b61012051850154610120516020028501525b81516001018083528114156114e7575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b63b053918781141561158c576001600435633b9aca008110156126b557026007015460005260206000f35b630f467f9881141561160c5760043560a01c6126b55760243560a01c6126b557633b9aca0860043560e05260c052604060c02060243560e05260c052604060c0206101408080808454815250506020810190508080600185015481525050602081019050808060028501548152505060609050905060c05260c051610140f35b63411e74b581141561163f5760043560a01c6126b557633b9aca0960043560e05260c052604060c0205460005260206000f35b637e418fa081141561168a5760043560a01c6126b55760243560a01c6126b557633b9aca0a60043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b63edba52738114156116ef5760043560a01c6126b557633b9aca0b60043560e05260c052604060c02060243560e05260c052604060c020610140808080845481525050602081019050808060018501548152505060409050905060c05260c051610140f35b63a4d7a2508114156117225760043560a01c6126b557633b9aca0d60043560e05260c052604060c0205460005260206000f35b63a9b48c018114156117925760043580607f1d8160801d14156126b55780905050633b9aca0e60043560e05260c052604060c02060243560e05260c052604060c020610140808080845481525050602081019050808060018501548152505060409050905060c05260c051610140f35b635a5491588114156117c0576001600435633b9aca008110156126b55702633b9aca10015460005260206000f35b631142916b8114156117e957637735941060043560e05260c052604060c0205460005260206000f35b63513872bd8114156118045763773594115460005260206000f35b63afd2bb498114156118505760043580607f1d8160801d14156126b55780905050637735941260043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f35b6351ce6b5981141561187e576001600435633b9aca008110156126b557026377359413015460005260206000f35b505b60006000fd5b6101605261014052600161014051633b9aca008110156126b55702637735941301546101805260006101805111156119925763773594126101405160e05260c052604060c0206101805160e05260c052604060c020546101a0526101c060006101f4818352015b426101805111156118fd5761197c565b610180805162093a8081818301106126b557808201905090508152506101a05163773594126101405160e05260c052604060c0206101805160e05260c052604060c020554261018051111561196b5761018051600161014051633b9aca008110156126b55702637735941301555b5b81516001018083528114156118ed575b50506101a05160005260005161016051566119a0565b600060005260005161016051565b005b6101605261014052600161014051633b9aca008110156126b55702633b9aca100154610180526000610180511115611b69576101a0633b9aca0e6101405160e05260c052604060c0206101805160e05260c052604060c020805482526001810154826020015250506101e060006101f4818352015b42610180511115611a2757611b53565b610180805162093a8081818301106126b557808201905090508152506101c05162093a808082028215828483041417156126b5578090509050905061020052610200516101a0511115611ad5576101a08051610200518082106126b55780820390509050815250633b9aca0f6101405160e05260c052604060c0206101805160e05260c052604060c02054610220526101c08051610220518082106126b55780820390509050815250611ae2565b60006101a05260006101c0525b633b9aca0e6101405160e05260c052604060c0206101805160e05260c052604060c0206101a08051825580602001516001830155505042610180511115611b425761018051600161014051633b9aca008110156126b55702633b9aca1001555b5b8151600101808352811415611a17575b50506101a0516000526000516101605156611b77565b600060005260005161016051565b005b61014052637735941154610160526004546101805242610160511115611bb457610160805162093a808082106126b557808203905090508152505b63773594106101605160e05260c052604060c020546101a0526101c060006064818352015b610180516101c0511415611bec57611c87565b6101405161016051610180516101a0516101c0516101c0516101e0526101e051600658016119a2565b610240526101c0526101a052610180526101605261014052610240506101405161016051610180516101a0516101c0516101c0516101e0526101e05160065801611886565b610240526101c0526101a052610180526101605261014052610240505b8151600101808352811415611bd9575b50506101c060006101f4818352015b42610160511115611ca657611dc1565b610160805162093a8081818301106126b5578082019050905081525060006101a0526101e060006064818352015b610180516101e0511415611ce757611d7f565b633b9aca0e6101e05160e05260c052604060c0206101605160e05260c052604060c020546102005263773594126101e05160e05260c052604060c0206101605160e05260c052604060c02054610220526101a0805161020051610220518082028215828483041417156126b5578090509050905081818301106126b557808201905090508152505b8151600101808352811415611cd4575b50506101a05163773594106101605160e05260c052604060c0205542610160511115611db057610160516377359411555b5b8151600101808352811415611c96575b50506101a05160005260005161014051565b6101605261014052633b9aca0d6101405160e05260c052604060c02054610180526000610180511115611f90576101a0633b9aca0b6101405160e05260c052604060c0206101805160e05260c052604060c020805482526001810154826020015250506101e060006101f4818352015b42610180511115611e5357611f7a565b610180805162093a8081818301106126b557808201905090508152506101c05162093a808082028215828483041417156126b5578090509050905061020052610200516101a0511115611f01576101a08051610200518082106126b55780820390509050815250633b9aca0c6101405160e05260c052604060c0206101805160e05260c052604060c02054610220526101c08051610220518082106126b55780820390509050815250611f0e565b60006101a05260006101c0525b633b9aca0b6101405160e05260c052604060c0206101805160e05260c052604060c0206101a08051825580602001516001830155505042610180511115611f695761018051633b9aca0d6101405160e05260c052604060c020555b5b8151600101808352811415611e43575b50506101a0516000526000516101605156611f9e565b600060005260005161016051565b005b6101805261014052610160526101605162093a808082049050905062093a808082028215828483041417156126b557809050905090506101a05263773594106101a05160e05260c052604060c020546101c05260006101c05111156120e257633b9aca076101405160e05260c052604060c02054600180820380607f1d8160801d14156126b557809050905090506101e05263773594126101e05160e05260c052604060c0206101a05160e05260c052604060c0205461020052633b9aca0b6101405160e05260c052604060c0206101a05160e05260c052604060c0205461022052670de0b6b3a7640000610200518082028215828483041417156126b55780905090509050610220518082028215828483041417156126b557809050905090506101c0518080156126b55782049050905060005260005161018051566120f0565b600060005260005161018051565b005b6101805261014052610160526101405161016051610180516101a051610140516101c0526101c05160065801611886565b610220526101a052610180526101605261014052610220516101a0526101405161016051610180516101a0516101c051610140516101e0526101e051600658016119a2565b610240526101c0526101a052610180526101605261014052610240516101c0526101405161016051610180516101a0516101c0516101e05160065801611b79565b610200526101e0526101c0526101a052610180526101605261014052610200516101e0524262093a8081818301106126b5578082019050905062093a808082049050905062093a808082028215828483041417156126b55780905090509050610200526101e0516101c051610160518082028215828483041417156126b5578090509050905081818301106126b557808201905090506101c0516101a0518082028215828483041417156126b557809050905090508082106126b557808203905090506101e0526101e05163773594106102005160e05260c052604060c020556101605163773594126101405160e05260c052604060c0206102005160e05260c052604060c020556102005163773594115561020051600161014051633b9aca008110156126b55702637735941301557e170bcdc909b6ac6e12d020fe8942256312cdcd555fb6d712899eba56d2f9016102208080806101405181525050602081019050808061020051815250506020810190508080610160518152505060208101905080806101e05181525050608090509050610220a161018051565b610180526101405261016052633b9aca076101405160e05260c052604060c02054600180820380607f1d8160801d14156126b557809050905090506101a0526101405161016051610180516101a0516101c051610140516101e0526101e05160065801611dd3565b610240526101c0526101a052610180526101605261014052610240516101c0526101405161016051610180516101a0516101c0516101e0516101a051610200526102005160065801611886565b610260526101e0526101c0526101a052610180526101605261014052610260516101e0526101405161016051610180516101a0516101c0516101e051610200516101a0516102205261022051600658016119a2565b61028052610200526101e0526101c0526101a05261018052610160526101405261028051610200526101405161016051610180516101a0516101c0516101e051610200516102205160065801611b79565b6102405261022052610200526101e0526101c0526101a05261018052610160526101405261024051610220524262093a8081818301106126b5578082019050905062093a808082049050905062093a808082028215828483041417156126b557809050905090506102405261016051633b9aca0b6101405160e05260c052604060c0206102405160e05260c052604060c0205561024051633b9aca0d6101405160e05260c052604060c02055610200516101605181818301106126b557808201905090506101c0518082106126b557808203905090506102605261026051633b9aca0e6101a05160e05260c052604060c0206102405160e05260c052604060c020556102405160016101a051633b9aca008110156126b55702633b9aca10015561022051610260516101e0518082028215828483041417156126b5578090509050905081818301106126b55780820190509050610200516101e0518082028215828483041417156126b557809050905090508082106126b55780820390509050610220526102205163773594106102405160e05260c052604060c02055610240516377359411557f54c0cf3647e6cdb2fc0a7876e60ba77563fceedf2e06c01c597f8dccb9e6bd726102808080806101405181525050602081019050808042815250506020810190508080610160518152505060208101905080806102205181525050608090509050610280a161018051565b600080fd
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.