Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 71533218 | 1050 days ago | 0 ETH | ||||
| 71533218 | 1050 days ago | 0 ETH | ||||
| 71533218 | 1050 days ago | 0 ETH | ||||
| 71533218 | 1050 days ago | 0 ETH | ||||
| 71109849 | 1052 days ago | 0 ETH | ||||
| 71109849 | 1052 days ago | 0 ETH | ||||
| 71109849 | 1052 days ago | 0 ETH | ||||
| 71109849 | 1052 days ago | 0 ETH | ||||
| 71109849 | 1052 days ago | 0 ETH | ||||
| 71109849 | 1052 days ago | 0 ETH | ||||
| 71109849 | 1052 days ago | 0 ETH | ||||
| 71109849 | 1052 days ago | 0 ETH | ||||
| 71109849 | 1052 days ago | 0 ETH | ||||
| 71109849 | 1052 days ago | 0 ETH | ||||
| 71109849 | 1052 days ago | 0 ETH | ||||
| 71109849 | 1052 days ago | 0 ETH | ||||
| 70589586 | 1053 days ago | 0 ETH | ||||
| 70589586 | 1053 days ago | 0 ETH | ||||
| 70589586 | 1053 days ago | 0 ETH | ||||
| 70589586 | 1053 days ago | 0 ETH | ||||
| 70589586 | 1053 days ago | 0 ETH | ||||
| 70589586 | 1053 days ago | 0 ETH | ||||
| 70589586 | 1053 days ago | 0 ETH | ||||
| 70589586 | 1053 days ago | 0 ETH | ||||
| 70589586 | 1053 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.15
Contract Source Code (Vyper language format)
# @version 0.2.15
"""
@title Mirrored Voting Escrow
@author Hundred Finance
@license MIT
"""
interface VotingEscrow:
def user_point_epoch(_user: address) -> uint256: view
def get_last_user_slope(_addr: address) -> int128: view
def user_point_history__ts(_addr: address, _idx: uint256) -> uint256: view
def locked__end(_addr: address) -> uint256: view
def totalSupply(_t: uint256) -> uint256: view
def balanceOf(_addr: address, _t: uint256) -> uint256: view
def decimals() -> uint256: view
struct Point:
bias: int128
slope: int128 # - dweight / dt
ts: uint256
blk: uint256 # block
struct LockedBalance:
amount: int128
end: uint256
struct MirroredChain:
chain_id: uint256
escrow_count: uint256
event MirrorLock:
provider: indexed(address)
chain_id: uint256
escrow_id: uint256
value: uint256
locktime: indexed(uint256)
event CommitOwnership:
admin: address
event ApplyOwnership:
admin: address
event SetMirrorWhitelist:
addr: address
is_whitelisted: bool
event AddVotingEscrow:
addr: address
admin: public(address)
future_admin: public(address)
whitelisted_mirrors: public(HashMap[address, bool])
voting_escrow_count: public(uint256)
voting_escrows: public(address[100])
mirrored_chains_count: public(uint256)
mirrored_chains: public(MirroredChain[100])
# user -> chain -> escrow_id -> lock
mirrored_locks: public(HashMap[address, HashMap[uint256, HashMap[uint256, LockedBalance]]])
# user -> chain -> escrow_id -> Point[user_epoch]
mirrored_user_point_history: public(HashMap[address, HashMap[uint256, HashMap[uint256, Point[1000000000]]]])
mirrored_user_point_epoch: public(HashMap[address, HashMap[uint256, HashMap[uint256, uint256]]])
mirrored_epoch: public(uint256)
mirrored_point_history: public(Point[100000000000000000000000000000]) # epoch -> unsigned point
mirrored_slope_changes: public(HashMap[uint256, int128]) # time -> signed slope change
name: public(String[64])
symbol: public(String[32])
version: public(String[32])
decimals: public(uint256)
WEEK: constant(uint256) = 7 * 86400 # all future times are rounded by week
MAXTIME: constant(uint256) = 4 * 365 * 86400 # 4 years
MULTIPLIER: constant(uint256) = 10 ** 18
@external
def __init__(_admin: address, _voting_escrow: address, _name: String[64], _symbol: String[32], _version: String[32]):
self.admin = _admin
self.name = _name
self.symbol = _symbol
self.version = _version
self.decimals = VotingEscrow(_voting_escrow).decimals()
self.voting_escrows[0] = _voting_escrow
self.voting_escrow_count = 1
@internal
def _checkpoint(addr: address, _chain: uint256, _escrow_id: uint256, old_locked: LockedBalance, new_locked: LockedBalance):
"""
@notice Record global and per-user data to checkpoint
@param addr User's wallet address. No user checkpoint if 0x0
@param old_locked Pevious locked amount / end lock time for the user
@param new_locked New locked amount / end lock time for the user
"""
u_old: Point = empty(Point)
u_new: Point = empty(Point)
old_dslope: int128 = 0
new_dslope: int128 = 0
_epoch: uint256 = self.mirrored_epoch
if addr != ZERO_ADDRESS:
# Calculate slopes and biases
# Kept at zero when they have to
if old_locked.end > block.timestamp and old_locked.amount > 0:
u_old.slope = old_locked.amount / MAXTIME
u_old.bias = u_old.slope * convert(old_locked.end - block.timestamp, int128)
if new_locked.end > block.timestamp and new_locked.amount > 0:
u_new.slope = new_locked.amount / MAXTIME
u_new.bias = u_new.slope * convert(new_locked.end - block.timestamp, int128)
# Read values of scheduled changes in the slope
# old_locked.end can be in the past and in the future
# new_locked.end can ONLY by in the FUTURE unless everything expired: than zeros
old_dslope = self.mirrored_slope_changes[old_locked.end]
if new_locked.end != 0:
if new_locked.end == old_locked.end:
new_dslope = old_dslope
else:
new_dslope = self.mirrored_slope_changes[new_locked.end]
last_point: Point = Point({bias: 0, slope: 0, ts: block.timestamp, blk: block.number})
if _epoch > 0:
last_point = self.mirrored_point_history[_epoch]
last_checkpoint: uint256 = last_point.ts
# initial_last_point is used for extrapolation to calculate block number
# (approximately, for *At methods) and save them
# as we cannot figure that out exactly from inside the contract
initial_last_point: Point = last_point
block_slope: uint256 = 0 # dblock/dt
if block.timestamp > last_point.ts:
block_slope = MULTIPLIER * (block.number - last_point.blk) / (block.timestamp - last_point.ts)
# If last point is already recorded in this block, slope=0
# But that's ok b/c we know the block in such case
# Go over weeks to fill history and calculate what the current point is
t_i: uint256 = (last_checkpoint / WEEK) * WEEK
for i in range(255):
# Hopefully it won't happen that this won't get used in 5 years!
# If it does, users will be able to withdraw but vote weight will be broken
t_i += WEEK
d_slope: int128 = 0
if t_i > block.timestamp:
t_i = block.timestamp
else:
d_slope = self.mirrored_slope_changes[t_i]
last_point.bias -= last_point.slope * convert(t_i - last_checkpoint, int128)
last_point.slope += d_slope
if last_point.bias < 0: # This can happen
last_point.bias = 0
if last_point.slope < 0: # This cannot happen - just in case
last_point.slope = 0
last_checkpoint = t_i
last_point.ts = t_i
last_point.blk = initial_last_point.blk + block_slope * (t_i - initial_last_point.ts) / MULTIPLIER
_epoch += 1
if t_i == block.timestamp:
last_point.blk = block.number
break
else:
self.mirrored_point_history[_epoch] = last_point
self.mirrored_epoch = _epoch
# Now point_history is filled until t=now
if addr != ZERO_ADDRESS:
# If last point was in this block, the slope change has been applied already
# But in such case we have 0 slope(s)
last_point.slope += (u_new.slope - u_old.slope)
last_point.bias += (u_new.bias - u_old.bias)
if last_point.slope < 0:
last_point.slope = 0
if last_point.bias < 0:
last_point.bias = 0
# Record the changed point into history
self.mirrored_point_history[_epoch] = last_point
if addr != ZERO_ADDRESS:
# Schedule the slope changes (slope is going down)
# We subtract new_user_slope from [new_locked.end]
# and add old_user_slope to [old_locked.end]
if old_locked.end > block.timestamp:
# old_dslope was <something> - u_old.slope, so we cancel that
old_dslope += u_old.slope
if new_locked.end == old_locked.end:
old_dslope -= u_new.slope # It was a new deposit, not extension
self.mirrored_slope_changes[old_locked.end] = old_dslope
if new_locked.end > block.timestamp:
if new_locked.end > old_locked.end:
new_dslope -= u_new.slope # old slope disappeared at this point
self.mirrored_slope_changes[new_locked.end] = new_dslope
# else: we recorded it already in old_dslope
# Now handle user history
user_epoch: uint256 = self.mirrored_user_point_epoch[addr][_chain][_escrow_id] + 1
self.mirrored_user_point_epoch[addr][_chain][_escrow_id] = user_epoch
u_new.ts = block.timestamp
u_new.blk = block.number
self.mirrored_user_point_history[addr][_chain][_escrow_id][user_epoch] = u_new
@external
def mirror_lock(_user: address, _chain: uint256, _escrow_id: uint256, _value: uint256, _unlock_time: uint256):
assert self.whitelisted_mirrors[msg.sender] == True # dev: only whitelisted address can mirror locks
old_locked: LockedBalance = self.mirrored_locks[_user][_chain][_escrow_id]
new_locked: LockedBalance = empty(LockedBalance)
new_locked.amount = convert(_value, int128)
new_locked.end = _unlock_time
self.mirrored_locks[_user][_chain][_escrow_id] = new_locked
chain_already_mirrored: bool = False
for i in range(99):
if i >= self.mirrored_chains_count:
break
if self.mirrored_chains[i].chain_id == _chain:
chain_already_mirrored = True
self.mirrored_chains[i].escrow_count = max(self.mirrored_chains[i].escrow_count, _escrow_id + 1)
break
if not chain_already_mirrored:
self.mirrored_chains[self.mirrored_chains_count] = empty(MirroredChain)
self.mirrored_chains[self.mirrored_chains_count].chain_id = _chain
self.mirrored_chains[self.mirrored_chains_count].escrow_count = _escrow_id + 1
self.mirrored_chains_count += 1
self._checkpoint(_user, _chain, _escrow_id, old_locked, new_locked)
log MirrorLock(_user, _chain, _escrow_id, _value, _unlock_time)
@external
def checkpoint():
"""
@notice Record global data to checkpoint
"""
self._checkpoint(ZERO_ADDRESS, 0, 0, empty(LockedBalance), empty(LockedBalance))
@external
@view
def user_point_epoch(_user: address, _chain: uint256 = 0, _escrow_id: uint256 = 0) -> uint256:
if _chain == 0:
return VotingEscrow(self.voting_escrows[_escrow_id]).user_point_epoch(_user)
return self.mirrored_user_point_epoch[_user][_chain][_escrow_id]
@external
@view
def user_point_history__ts(_addr: address, _idx: uint256, _chain: uint256 = 0, _escrow_id: uint256 = 0) -> uint256:
if _chain == 0:
return VotingEscrow(self.voting_escrows[_escrow_id]).user_point_history__ts(_addr, _idx)
return self.mirrored_user_point_history[_addr][_chain][_escrow_id][_idx].ts
@external
@view
def user_last_checkpoint_ts(_user: address) -> uint256:
_epoch: uint256 = 0
_ts: uint256 = 0
for i in range(99):
if i >= self.voting_escrow_count:
break
_escrow_epoch: uint256 = VotingEscrow(self.voting_escrows[i]).user_point_epoch(_user)
_escrow_ts: uint256 = VotingEscrow(self.voting_escrows[i]).user_point_history__ts(_user, _epoch)
if _escrow_ts < _ts or _ts == 0:
_ts = _escrow_ts
for i in range(99):
if i >= self.mirrored_chains_count:
break
_chain: MirroredChain = self.mirrored_chains[i]
for j in range(499):
if j >= _chain.escrow_count:
break
_escrow_epoch: uint256 = self.mirrored_user_point_epoch[_user][_chain.chain_id][j]
_escrow_ts: uint256 = self.mirrored_user_point_history[_user][_chain.chain_id][j][_escrow_epoch].ts
if _escrow_ts < _ts or _ts == 0:
_ts = _escrow_ts
return _ts
@internal
@view
def mirrored_supply_at(point: Point, t: uint256) -> uint256:
"""
@notice Calculate total voting power at some point in the past
@param point The point (bias/slope) to start search from
@param t Time to calculate the total voting power at
@return Total voting power at that time
"""
last_point: Point = point
t_i: uint256 = (last_point.ts / WEEK) * WEEK
for i in range(255):
t_i += WEEK
d_slope: int128 = 0
if t_i > t:
t_i = t
else:
d_slope = self.mirrored_slope_changes[t_i]
last_point.bias -= last_point.slope * convert(t_i - last_point.ts, int128)
if t_i == t:
break
last_point.slope += d_slope
last_point.ts = t_i
if last_point.bias < 0:
last_point.bias = 0
return convert(last_point.bias, uint256)
@external
@view
def total_mirrored_supply(t: uint256 = block.timestamp) -> uint256:
"""
@notice Calculate total voting power
@dev Adheres to the ERC20 `totalSupply` interface for Aragon compatibility
@return Total voting power
"""
_epoch: uint256 = self.mirrored_epoch
last_point: Point = self.mirrored_point_history[_epoch]
return self.mirrored_supply_at(last_point, t)
@external
@view
def totalSupply(_t: uint256 = block.timestamp) -> uint256:
_local_supply: uint256 = 0
for i in range(99):
if i >= self.voting_escrow_count:
break
_local_supply += VotingEscrow(self.voting_escrows[i]).totalSupply(_t)
_epoch: uint256 = self.mirrored_epoch
_last_point: Point = self.mirrored_point_history[_epoch]
_mirrored_supply: uint256 = self.mirrored_supply_at(_last_point, _t)
return _local_supply + _mirrored_supply
@internal
@view
def _mirrored_balance_of(addr: address, _t: uint256) -> uint256:
_chain_count: uint256 = self.mirrored_chains_count
_mirrored_balance: uint256 = 0
for i in range(99):
if i >= _chain_count:
break
_chain: MirroredChain = self.mirrored_chains[i]
for j in range(499):
if j >= _chain.escrow_count:
break
_escrow_epoch: uint256 = self.mirrored_user_point_epoch[addr][_chain.chain_id][j]
if _escrow_epoch > 0:
_last_point: Point = self.mirrored_user_point_history[addr][_chain.chain_id][j][_escrow_epoch]
_last_point.bias -= _last_point.slope * convert(_t - _last_point.ts, int128)
if _last_point.bias < 0:
_last_point.bias = 0
_mirrored_balance += convert(_last_point.bias, uint256)
return _mirrored_balance
@external
@view
def balanceOf(_addr: address, _t: uint256 = block.timestamp) -> uint256:
_local_balance: uint256 = 0
for i in range(99):
if i >= self.voting_escrow_count:
break
_local_balance += VotingEscrow(self.voting_escrows[i]).balanceOf(_addr, _t)
_mirrored_balance: uint256 = self._mirrored_balance_of(_addr, _t)
return _local_balance + _mirrored_balance
@external
@view
def mirrored_balance_of(addr: address, _t: uint256) -> uint256:
return self._mirrored_balance_of(addr, _t)
@external
@view
def locked__end(_addr: address, _chain: uint256 = 0, _escrow_id: uint256 = 0) -> uint256:
if _chain == 0:
return VotingEscrow(self.voting_escrows[_escrow_id]).locked__end(_addr)
return self.mirrored_locks[_addr][_chain][_escrow_id].end
@external
@view
def nearest_locked__end(_addr: address) -> uint256:
_lock_end: uint256 = 0
for i in range(99):
if i >= self.voting_escrow_count:
break
_escrow_lock_end: uint256 = VotingEscrow(self.voting_escrows[i]).locked__end(_addr)
if _escrow_lock_end < _lock_end or _lock_end == 0:
_lock_end = _escrow_lock_end
_chain_count: uint256 = self.mirrored_chains_count
for i in range(99):
if i >= _chain_count:
break
_chain: MirroredChain = self.mirrored_chains[i]
for j in range(499):
if j >= _chain.escrow_count:
break
_escrow_lock_end: uint256 = self.mirrored_locks[_addr][_chain.chain_id][j].end
if _escrow_lock_end != 0 and (_escrow_lock_end < _lock_end or _lock_end == 0):
_lock_end = _escrow_lock_end
return _lock_end
@external
@view
def get_last_user_slope(_addr: address, _chain: uint256 = 0, _escrow_id: uint256 = 0) -> int128:
if _chain == 0:
return VotingEscrow(self.voting_escrows[_escrow_id]).get_last_user_slope(_addr)
_chain_uepoch: uint256 = self.mirrored_user_point_epoch[_addr][_chain][_escrow_id]
return self.mirrored_user_point_history[_addr][_chain][_escrow_id][_chain_uepoch].slope
@external
def commit_transfer_ownership(addr: address):
"""
@notice Transfer ownership to `addr`
@param addr Address to have ownership transferred to
"""
assert msg.sender == self.admin # dev: admin only
self.future_admin = addr
log CommitOwnership(addr)
@external
def apply_transfer_ownership():
"""
@notice Apply pending ownership transfer
"""
assert msg.sender == self.admin # dev: admin only
_admin: address = self.future_admin
assert _admin != ZERO_ADDRESS # dev: admin not set
self.admin = _admin
log ApplyOwnership(_admin)
@external
def set_mirror_whitelist(_addr: address, _is_whitelisted: bool):
assert msg.sender == self.admin # dev: only admin
self.whitelisted_mirrors[_addr] = _is_whitelisted
log SetMirrorWhitelist(_addr, _is_whitelisted)
@external
def add_voting_escrow(_addr: address):
assert msg.sender == self.admin # dev: only admin
self.voting_escrows[self.voting_escrow_count] = _addr
self.voting_escrow_count += 1
log AddVotingEscrow(_addr)Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"name":"MirrorLock","inputs":[{"name":"provider","type":"address","indexed":true},{"name":"chain_id","type":"uint256","indexed":false},{"name":"escrow_id","type":"uint256","indexed":false},{"name":"value","type":"uint256","indexed":false},{"name":"locktime","type":"uint256","indexed":true}],"anonymous":false,"type":"event"},{"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":"SetMirrorWhitelist","inputs":[{"name":"addr","type":"address","indexed":false},{"name":"is_whitelisted","type":"bool","indexed":false}],"anonymous":false,"type":"event"},{"name":"AddVotingEscrow","inputs":[{"name":"addr","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_admin","type":"address"},{"name":"_voting_escrow","type":"address"},{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_version","type":"string"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"mirror_lock","inputs":[{"name":"_user","type":"address"},{"name":"_chain","type":"uint256"},{"name":"_escrow_id","type":"uint256"},{"name":"_value","type":"uint256"},{"name":"_unlock_time","type":"uint256"}],"outputs":[],"gas":41811079},{"stateMutability":"nonpayable","type":"function","name":"checkpoint","inputs":[],"outputs":[],"gas":37425044},{"stateMutability":"view","type":"function","name":"user_point_epoch","inputs":[{"name":"_user","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"user_point_epoch","inputs":[{"name":"_user","type":"address"},{"name":"_chain","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"user_point_epoch","inputs":[{"name":"_user","type":"address"},{"name":"_chain","type":"uint256"},{"name":"_escrow_id","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"user_point_history__ts","inputs":[{"name":"_addr","type":"address"},{"name":"_idx","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"user_point_history__ts","inputs":[{"name":"_addr","type":"address"},{"name":"_idx","type":"uint256"},{"name":"_chain","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"user_point_history__ts","inputs":[{"name":"_addr","type":"address"},{"name":"_idx","type":"uint256"},{"name":"_chain","type":"uint256"},{"name":"_escrow_id","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"user_last_checkpoint_ts","inputs":[{"name":"_user","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":261346662},{"stateMutability":"view","type":"function","name":"total_mirrored_supply","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"total_mirrored_supply","inputs":[{"name":"t","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[{"name":"_t","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"_addr","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"_addr","type":"address"},{"name":"_t","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"mirrored_balance_of","inputs":[{"name":"addr","type":"address"},{"name":"_t","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":628686267},{"stateMutability":"view","type":"function","name":"locked__end","inputs":[{"name":"_addr","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"locked__end","inputs":[{"name":"_addr","type":"address"},{"name":"_chain","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"locked__end","inputs":[{"name":"_addr","type":"address"},{"name":"_chain","type":"uint256"},{"name":"_escrow_id","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"nearest_locked__end","inputs":[{"name":"_addr","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":138077599},{"stateMutability":"view","type":"function","name":"get_last_user_slope","inputs":[{"name":"_addr","type":"address"}],"outputs":[{"name":"","type":"int128"}]},{"stateMutability":"view","type":"function","name":"get_last_user_slope","inputs":[{"name":"_addr","type":"address"},{"name":"_chain","type":"uint256"}],"outputs":[{"name":"","type":"int128"}]},{"stateMutability":"view","type":"function","name":"get_last_user_slope","inputs":[{"name":"_addr","type":"address"},{"name":"_chain","type":"uint256"},{"name":"_escrow_id","type":"uint256"}],"outputs":[{"name":"","type":"int128"}]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"addr","type":"address"}],"outputs":[],"gas":39255},{"stateMutability":"nonpayable","type":"function","name":"apply_transfer_ownership","inputs":[],"outputs":[],"gas":41394},{"stateMutability":"nonpayable","type":"function","name":"set_mirror_whitelist","inputs":[{"name":"_addr","type":"address"},{"name":"_is_whitelisted","type":"bool"}],"outputs":[],"gas":40121},{"stateMutability":"nonpayable","type":"function","name":"add_voting_escrow","inputs":[{"name":"_addr","type":"address"}],"outputs":[],"gas":78781},{"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":"whitelisted_mirrors","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":3143},{"stateMutability":"view","type":"function","name":"voting_escrow_count","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2958},{"stateMutability":"view","type":"function","name":"voting_escrows","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}],"gas":3033},{"stateMutability":"view","type":"function","name":"mirrored_chains_count","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3018},{"stateMutability":"view","type":"function","name":"mirrored_chains","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"chain_id","type":"uint256"},{"name":"escrow_count","type":"uint256"}],"gas":5483},{"stateMutability":"view","type":"function","name":"mirrored_locks","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"},{"name":"arg2","type":"uint256"}],"outputs":[{"name":"amount","type":"int128"},{"name":"end","type":"uint256"}],"gas":5913},{"stateMutability":"view","type":"function","name":"mirrored_user_point_history","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"},{"name":"arg2","type":"uint256"},{"name":"arg3","type":"uint256"}],"outputs":[{"name":"bias","type":"int128"},{"name":"slope","type":"int128"},{"name":"ts","type":"uint256"},{"name":"blk","type":"uint256"}],"gas":10408},{"stateMutability":"view","type":"function","name":"mirrored_user_point_epoch","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"},{"name":"arg2","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":3583},{"stateMutability":"view","type":"function","name":"mirrored_epoch","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3168},{"stateMutability":"view","type":"function","name":"mirrored_point_history","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"bias","type":"int128"},{"name":"slope","type":"int128"},{"name":"ts","type":"uint256"},{"name":"blk","type":"uint256"}],"gas":10053},{"stateMutability":"view","type":"function","name":"mirrored_slope_changes","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"int128"}],"gas":3343},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":13488},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":11241},{"stateMutability":"view","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":11271},{"stateMutability":"view","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3348}]Contract Creation Code
6f7fffffffffffffffffffffffffffffff60405260a06125c66101403960206125c660c03960c05160a01c6125c157602060206125c60160c03960c05160a01c6125c1576060602060406125c60160c03960c0516125c6016101e0396040602060406125c60160c03960c05160040135116125c1576040602060606125c60160c03960c0516125c601610260396020602060606125c60160c03960c05160040135116125c1576040602060806125c60160c03960c0516125c6016102c0396020602060806125c60160c03960c05160040135116125c157610140516000556101e0806c050c783eb9b5c8400000000136602082510161012060006003818352015b8261012051602002111561011357610135565b61012051602002850151610120518501555b8151600101808352811415610100575b505050505050610260806c050c783eb9b5c840000000013a602082510161012060006002818352015b8261012051602002111561017157610193565b61012051602002850151610120518501555b815160010180835281141561015e575b5050505050506102c0806c050c783eb9b5c840000000013d602082510161012060006002818352015b826101205160200211156101cf576101f1565b61012051602002850151610120518501555b81516001018083528114156101bc575b5050505050506020610380600463313ce5676103205261033c610160515afa156125c157601f3d11156125c157600050610380516c050c783eb9b5c8400000000140556101605160045560016003556125a956600436101561000d57611783565b600035601c526f7fffffffffffffffffffffffffffffff6040526000513461235f57633ad9b9678114156102f85760043560a01c61235f57600160023360e05260c052604060c02054141561235f5761014061013160043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c0208054825260018101548260200152505060403661018037606435604051811161235f57610180526084356101a05261013160043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c0206101808051825580602001516001830155505060006101c0526101e060006063818352015b6068546101e0511061011d576101ad565b60243560026101e051606481101561235f570260690154141561019c5760016101c052600160026101e051606481101561235f570260690101546044356001818183011061235f57808201905090508082101561017a578061017c565b815b90509050600160026101e051606481101561235f570260690101556101ad565b5b815160010180835281141561010c575b50506101c051610230576002606854606481101561235f57026069016000815560006001820155506024356002606854606481101561235f5702606901556044356001818183011061235f578082019050905060016002606854606481101561235f57026069010155606880546001818183011061235f57808201905090508155505b6101405161016051610180516101a0516101c051606060046101e03761024061014080518252806020015182602001525050610280610180805182528060200151826020015250506102a05161028051610260516102405161022051610200516101e05160065801611789565b6101c0526101a0526101805261016052610140526000506024356101e05260443561020052606435610220526084356004357ffc4ec19a3e0de16df8e3fbafa186f184ea96ecb19fd948f7044d88402597361160606101e0a3005b63c2c4c5c181141561038f5760403661014037604036610180376101405161016051610180516101a0516060366101c037610220610140805182528060200151826020015250506102606101808051825280602001518260200152505061028051610260516102405161022051610200516101e0516101c05160065801611789565b6101a052610180526101605261014052600050005b63010ae7578114156103ac576000610140526000610160526103f7565b63e55f04608114156103ce5760006101605260206024610140376000506103f7565b638c970b0b8114156103f257602060246101403760206044610160376000506103f7565b610490565b60043560a01c61235f5761014051610457576020610200602463010ae757610180526004356101a05261019c600161016051606481101561235f5702600401545afa1561235f57601f3d111561235f576000506102005160005260206000f35b61013360043560e05260c052604060c0206101405160e05260c052604060c0206101605160e05260c052604060c0205460005260206000f35b63da020a188114156104ad576000610140526000610160526104f8565b634cf702a08114156104cf5760006101605260206044610140376000506104f8565b63de4842c98114156104f357602060446101403760206064610160376000506104f8565b6105a8565b60043560a01c61235f5761014051610559576020610220604463da020a1861018052604060046101a03761019c600161016051606481101561235f5702600401545afa1561235f57601f3d111561235f576000506102205160005260206000f35b60026004602435633b9aca0081101561235f570261013260043560e05260c052604060c0206101405160e05260c052604060c0206101605160e05260c052604060c02001015460005260206000f35b6380c0e83e8114156107f75760043560a01c61235f576040366101403761018060006063818352015b60035461018051106105e2576106b7565b6020610240602463010ae7576101c0526004356101e0526101dc600161018051606481101561235f5702600401545afa1561235f57601f3d111561235f57600050610240516101a0526020610280604463da020a186101e0526004356102005261014051610220526101fc600161018051606481101561235f5702600401545afa1561235f57601f3d111561235f57600050610280516101c052610160516101c0511015610691576001610697565b61016051155b5b156106a6576101c051610160525b5b81516001018083528114156105d1575b505061018060006063818352015b60685461018051106106d6576107e8565b6101a0600261018051606481101561235f5702606901805482526001810154826020015250506101e060006101f3818352015b6101c0516101e0511061071b576107d5565b61013360043560e05260c052604060c0206101a05160e05260c052604060c0206101e05160e05260c052604060c02054610200526002600461020051633b9aca0081101561235f570261013260043560e05260c052604060c0206101a05160e05260c052604060c0206101e05160e05260c052604060c02001015461022052610160516102205110156107af5760016107b5565b61016051155b5b156107c45761022051610160525b5b8151600101808352811415610709575b50505b81516001018083528114156106c5575b50506101605160005260206000f35b63b73b512181141561080d57426101405261082e565b63a37198fa81141561082957602060046101403760005061082e565b61090d565b61013454610160526101806004610160516c01431e0fae6d7217caa000000081101561235f5702610135018054825260018101548260200152600281015482604001526003810154826060015250506101405161016051610180516101a0516101c0516101e0516102006101808051825280602001518260200152806040015182604001528060600151826060015250506101405161028052610280516102605161024051610220516102005160065801611fa1565b6102e0526101e0526101c0526101a0526101805261016052610140526102e05160005260206000f35b6318160ddd811415610923574261014052610944565b63bd85b03981141561093f576020600461014037600050610944565b610ae3565b60006101605261018060006063818352015b6003546101805110610967576109d6565b61016080516020610220602463bd85b0396101a052610140516101c0526101bc600161018051606481101561235f5702600401545afa1561235f57601f3d111561235f5760005061022051818183011061235f57808201905090508152505b8151600101808352811415610956575b505061013454610180526101a06004610180516c01431e0fae6d7217caa000000081101561235f5702610135018054825260018101548260200152600281015482604001526003810154826060015250506101405161016051610180516101a0516101c0516101e05161020051610220516102406101a0805182528060200151826020015280604001518260400152806060015182606001525050610140516102c0526102c0516102a05161028051610260516102405160065801611fa1565b6103205261022052610200526101e0526101c0526101a05261018052610160526101405261032051610220526101605161022051818183011061235f578082019050905060005260206000f35b6370a08231811415610af9574261014052610b19565b62fdd58e811415610b14576020602461014037600050610b19565b610c22565b60043560a01c61235f5760006101605261018060006063818352015b6003546101805110610b4657610bbb565b61016080516020610240604462fdd58e6101a0526004356101c052610140516101e0526101bc600161018051606481101561235f5702600401545afa1561235f57601f3d111561235f5760005061024051818183011061235f57808201905090508152505b8151600101808352811415610b35575b50506101405161016051610180516004356101a052610140516101c0526101c0516101a05160065801612164565b6102205261018052610160526101405261022051610180526101605161018051818183011061235f578082019050905060005260206000f35b63b76e6044811415610c685760043560a01c61235f576004356101405260243561016052610160516101405160065801612164565b6101c0526101c05160005260206000f35b63adc63589811415610c8557600061014052600061016052610cd0565b63f0914f4a811415610ca7576000610160526020602461014037600050610cd0565b63cca604d2811415610ccb5760206024610140376020604461016037600050610cd0565b610d6c565b60043560a01c61235f5761014051610d30576020610200602463adc63589610180526004356101a05261019c600161016051606481101561235f5702600401545afa1561235f57601f3d111561235f576000506102005160005260206000f35b600161013160043560e05260c052604060c0206101405160e05260c052604060c0206101605160e05260c052604060c020015460005260206000f35b63afe8dbd1811415610f3d5760043560a01c61235f5760006101405261016060006063818352015b6003546101605110610da557610e29565b6020610220602463adc635896101a0526004356101c0526101bc600161016051606481101561235f5702600401545afa1561235f57601f3d111561235f57600050610220516101805261014051610180511015610e03576001610e09565b61014051155b5b15610e185761018051610140525b5b8151600101808352811415610d94575b50506068546101605261018060006063818352015b610160516101805110610e5057610f2e565b6101a0600261018051606481101561235f5702606901805482526001810154826020015250506101e060006101f3818352015b6101c0516101e05110610e9557610f1b565b600161013160043560e05260c052604060c0206101a05160e05260c052604060c0206101e05160e05260c052604060c0200154610200526000610200511815610ef95761014051610200511015610eed576001610ef3565b61014051155b5b610efc565b60005b15610f0a5761020051610140525b5b8151600101808352811415610e83575b50505b8151600101808352811415610e3e575b50506101405160005260206000f35b637c74a174811415610f5a57600061014052600061016052610fa5565b63c422abe0811415610f7c576000610160526020602461014037600050610fa5565b633e7e92cf811415610fa05760206024610140376020604461016037600050610fa5565b611089565b60043560a01c61235f57610140516110055760206102006024637c74a174610180526004356101a05261019c600161016051606481101561235f5702600401545afa1561235f57601f3d111561235f576000506102005160005260206000f35b61013360043560e05260c052604060c0206101405160e05260c052604060c0206101605160e05260c052604060c02054610180526001600461018051633b9aca0081101561235f570261013260043560e05260c052604060c0206101405160e05260c052604060c0206101605160e05260c052604060c02001015460005260206000f35b636b441a408114156110df5760043560a01c61235f5760005433141561235f57600435600155600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae8114156111405760005433141561235f5760015461014052600061014051181561235f576101405160005561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b63b4027b048114156111b55760043560a01c61235f5760243560011c61235f5760005433141561235f57602435600260043560e05260c052604060c0205560043561014052602435610160527fc2a4c21ce00cc344718078afc8a2fb244cf57e2cd182e6870f443813408c51196040610140a1005b63ec7b5cda8114156112345760043560a01c61235f5760005433141561235f576004356001600354606481101561235f570260040155600380546001818183011061235f5780820190509050815550600435610140527fcb28779aca1175c330a0dc64a20ac1713e3d984f3e25ab20408e5d7614b6e6bc6020610140a1005b63f851a44081141561124c5760005460005260206000f35b6317f7182a8114156112645760015460005260206000f35b632e98f2668114156112945760043560a01c61235f57600260043560e05260c052604060c0205460005260206000f35b63730762b88114156112ac5760035460005260206000f35b63556e5f4f8114156112d4576001600435606481101561235f57026004015460005260206000f35b63f1d90a158114156112ec5760685460005260206000f35b6327294447811415611338576002600435606481101561235f5702606901610140808080845481525050602081019050808060018501548152505060409050905060c05260c051610140f35b63c32367978114156113a95760043560a01c61235f5761013160043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c020610140808080845481525050602081019050808060018501548152505060409050905060c05260c051610140f35b63bfac6b3e81141561144f5760043560a01c61235f576004606435633b9aca0081101561235f570261013260043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c0200161014080808084548152505060208101905080806001850154815250506020810190508080600285015481525050602081019050808060038501548152505060809050905060c05260c051610140f35b638f472cbb81141561149c5760043560a01c61235f5761013360043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c0205460005260206000f35b63a9605a028114156114b5576101345460005260206000f35b630640490f8114156115305760046004356c01431e0fae6d7217caa000000081101561235f57026101350161014080808084548152505060208101905080806001850154815250506020810190508080600285015481525050602081019050808060038501548152505060809050905060c05260c051610140f35b639cc776bd811415611562576c050c783eb9b5c840000000013560043560e05260c052604060c0205460005260206000f35b6306fdde0381141561160b576c050c783eb9b5c840000000013680610180602082540161012060006003818352015b826101205160200211156115a4576115c6565b61012051850154610120516020028501525b8151600101808352811415611591575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6395d89b418114156116b4576c050c783eb9b5c840000000013a80610180602082540161012060006002818352015b8261012051602002111561164d5761166f565b61012051850154610120516020028501525b815160010180835281141561163a575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6354fd4d5081141561175d576c050c783eb9b5c840000000013d80610180602082540161012060006002818352015b826101205160200211156116f657611718565b61012051850154610120516020028501525b81516001018083528114156116e3575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b63313ce567811415611781576c050c783eb9b5c84000000001405460005260206000f35b505b60006000fd5b610220526101405261016052610180526101a0526101c0526101e0526102005261014036610240376101345461038052600061014051181561194957426101c05111156117dc5760006101a051136117df565b60005b15611850576101a051630784ce00808205808060008112156117fd57195b607f1c61235f5790509050905061026052610260516101c0514280821061235f5780820390509050604051811161235f578082028080600081121561183e57195b607f1c61235f57905090509050610240525b426102005111156118675760006101e0511361186a565b60005b156118db576101e051630784ce008082058080600081121561188857195b607f1c61235f579050905090506102e0526102e051610200514280821061235f5780820390509050604051811161235f57808202808060008112156118c957195b607f1c61235f579050905090506102c0525b6c050c783eb9b5c84000000001356101c05160e05260c052604060c02054610340526000610200511815611948576101c051610200511415611924576103405161036052611947565b6c050c783eb9b5c84000000001356102005160e05260c052604060c02054610360525b5b5b6103a060008152600081602001524281604001524381606001525060006103805111156119b8576103a06004610380516c01431e0fae6d7217caa000000081101561235f5702610135018054825260018101548260200152600281015482604001526003810154826060015250505b6103e051610420526104406103a080518252806020015182602001528060400151826040015280606001518260600152505060006104c0526103e051421115611a5357670de0b6b3a7640000436104005180821061235f578082039050905080820282158284830414171561235f5780905090509050426103e05180821061235f578082039050905080801561235f578204905090506104c0525b6104205162093a808082049050905062093a8080820282158284830414171561235f57809050905090506104e052610500600060ff818352015b6104e0805162093a80818183011061235f5780820190509050815250600061052052426104e0511115611ac457426104e052611ae7565b6c050c783eb9b5c84000000001356104e05160e05260c052604060c02054610520525b6103a080516103c0516104e0516104205180821061235f5780820390509050604051811161235f5780820280806000811215611b1f57195b607f1c61235f5790509050905080820380806000811215611b3c57195b607f1c61235f579050905090508152506103c080516105205180820180806000811215611b6557195b607f1c61235f5790509050905081525060006103a0511215611b885760006103a0525b60006103c0511215611b9b5760006103c0525b6104e051610420526104e0516103e0526104a0516104c0516104e0516104805180821061235f578082039050905080820282158284830414171561235f5780905090509050670de0b6b3a764000080820490509050818183011061235f57808201905090506104005261038080516001818183011061235f5780820190509050815250426104e0511415611c37574361040052611c9056611c7f565b6004610380516c01431e0fae6d7217caa000000081101561235f5702610135016103a08051825580602001516001830155806040015160028301558060600151600383015550505b5b8151600101808352811415611a8d575b505061038051610134556000610140511815611d61576103c080516102e0516102605180820380806000811215611cc357195b607f1c61235f5790509050905080820180806000811215611ce057195b607f1c61235f579050905090508152506103a080516102c0516102405180820380806000811215611d0d57195b607f1c61235f5790509050905080820180806000811215611d2a57195b607f1c61235f5790509050905081525060006103c0511215611d4d5760006103c0525b60006103a0511215611d605760006103a0525b5b6004610380516c01431e0fae6d7217caa000000081101561235f5702610135016103a08051825580602001516001830155806040015160028301558060600151600383015550506000610140511815611f9b57426101c0511115611e435761034080516102605180820180806000811215611dd857195b607f1c61235f579050905090508152506101c051610200511415611e205761034080516102e05180820380806000811215611e0f57195b607f1c61235f579050905090508152505b610340516c050c783eb9b5c84000000001356101c05160e05260c052604060c020555b42610200511115611ea9576101c051610200511115611ea85761036080516102e05180820380806000811215611e7557195b607f1c61235f57905090509050815250610360516c050c783eb9b5c84000000001356102005160e05260c052604060c020555b5b6101336101405160e05260c052604060c0206101605160e05260c052604060c0206101805160e05260c052604060c020546001818183011061235f578082019050905061050052610500516101336101405160e05260c052604060c0206101605160e05260c052604060c0206101805160e05260c052604060c0205542610300524361032052600461050051633b9aca0081101561235f57026101326101405160e05260c052604060c0206101605160e05260c052604060c0206101805160e05260c052604060c020016102c08051825580602001516001830155806040015160028301558060600151600383015550505b61022051565b6101e0526101405261016052610180526101a0526101c0526102006101408051825280602001518260200152806040015182604001528060600151826060015250506102405162093a808082049050905062093a8080820282158284830414171561235f5780905090509050610280526102a0600060ff818352015b610280805162093a80818183011061235f578082019050905081525060006102c0526101c05161028051111561205a576101c0516102805261207d565b6c050c783eb9b5c84000000001356102805160e05260c052604060c020546102c0525b610200805161022051610280516102405180821061235f5780820390509050604051811161235f57808202808060008112156120b557195b607f1c61235f57905090509050808203808060008112156120d257195b607f1c61235f579050905090508152506101c0516102805114156120f557612137565b61022080516102c0518082018080600081121561210e57195b607f1c61235f5790509050905081525061028051610240525b815160010180835281141561201d575b5050600061020051121561214c576000610200525b610200516000811261235f576000526000516101e051565b6101805261014052610160526068546101a05260006101c0526101e060006063818352015b6101a0516101e0511061219b5761234d565b61020060026101e051606481101561235f57026069018054825260018101548260200152505061024060006101f3818352015b6102205161024051106121e05761233a565b6101336101405160e05260c052604060c0206102005160e05260c052604060c0206102405160e05260c052604060c0205461026052600061026051111561232957610280600461026051633b9aca0081101561235f57026101326101405160e05260c052604060c0206102005160e05260c052604060c0206102405160e05260c052604060c0200180548252600181015482602001526002810154826040015260038101548260600152505061028080516102a051610160516102c05180821061235f5780820390509050604051811161235f57808202808060008112156122c457195b607f1c61235f57905090509050808203808060008112156122e157195b607f1c61235f579050905090508152506000610280511215612304576000610280525b6101c08051610280516000811261235f57818183011061235f57808201905090508152505b5b81516001018083528114156121ce575b50505b8151600101808352811415612189575b50506101c05160005260005161018051565b600080fd5b6102456125a9036102456000396102456125a9036000f35b600080fd000000000000000000000000b982841d8caf7ccc1b5c8ec414347316f54a06c9000000000000000000000000ba57440fa35fdb671e58f6f56c1a4447ab1f6c2b00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001a4d6972726f72656420566f74652d657363726f77656420484e4400000000000000000000000000000000000000000000000000000000000000000000000000066d7665484e440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6d7665484e445f312e302e300000000000000000000000000000000000000000
Deployed Bytecode
0x600436101561000d57611783565b600035601c526f7fffffffffffffffffffffffffffffff6040526000513461235f57633ad9b9678114156102f85760043560a01c61235f57600160023360e05260c052604060c02054141561235f5761014061013160043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c0208054825260018101548260200152505060403661018037606435604051811161235f57610180526084356101a05261013160043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c0206101808051825580602001516001830155505060006101c0526101e060006063818352015b6068546101e0511061011d576101ad565b60243560026101e051606481101561235f570260690154141561019c5760016101c052600160026101e051606481101561235f570260690101546044356001818183011061235f57808201905090508082101561017a578061017c565b815b90509050600160026101e051606481101561235f570260690101556101ad565b5b815160010180835281141561010c575b50506101c051610230576002606854606481101561235f57026069016000815560006001820155506024356002606854606481101561235f5702606901556044356001818183011061235f578082019050905060016002606854606481101561235f57026069010155606880546001818183011061235f57808201905090508155505b6101405161016051610180516101a0516101c051606060046101e03761024061014080518252806020015182602001525050610280610180805182528060200151826020015250506102a05161028051610260516102405161022051610200516101e05160065801611789565b6101c0526101a0526101805261016052610140526000506024356101e05260443561020052606435610220526084356004357ffc4ec19a3e0de16df8e3fbafa186f184ea96ecb19fd948f7044d88402597361160606101e0a3005b63c2c4c5c181141561038f5760403661014037604036610180376101405161016051610180516101a0516060366101c037610220610140805182528060200151826020015250506102606101808051825280602001518260200152505061028051610260516102405161022051610200516101e0516101c05160065801611789565b6101a052610180526101605261014052600050005b63010ae7578114156103ac576000610140526000610160526103f7565b63e55f04608114156103ce5760006101605260206024610140376000506103f7565b638c970b0b8114156103f257602060246101403760206044610160376000506103f7565b610490565b60043560a01c61235f5761014051610457576020610200602463010ae757610180526004356101a05261019c600161016051606481101561235f5702600401545afa1561235f57601f3d111561235f576000506102005160005260206000f35b61013360043560e05260c052604060c0206101405160e05260c052604060c0206101605160e05260c052604060c0205460005260206000f35b63da020a188114156104ad576000610140526000610160526104f8565b634cf702a08114156104cf5760006101605260206044610140376000506104f8565b63de4842c98114156104f357602060446101403760206064610160376000506104f8565b6105a8565b60043560a01c61235f5761014051610559576020610220604463da020a1861018052604060046101a03761019c600161016051606481101561235f5702600401545afa1561235f57601f3d111561235f576000506102205160005260206000f35b60026004602435633b9aca0081101561235f570261013260043560e05260c052604060c0206101405160e05260c052604060c0206101605160e05260c052604060c02001015460005260206000f35b6380c0e83e8114156107f75760043560a01c61235f576040366101403761018060006063818352015b60035461018051106105e2576106b7565b6020610240602463010ae7576101c0526004356101e0526101dc600161018051606481101561235f5702600401545afa1561235f57601f3d111561235f57600050610240516101a0526020610280604463da020a186101e0526004356102005261014051610220526101fc600161018051606481101561235f5702600401545afa1561235f57601f3d111561235f57600050610280516101c052610160516101c0511015610691576001610697565b61016051155b5b156106a6576101c051610160525b5b81516001018083528114156105d1575b505061018060006063818352015b60685461018051106106d6576107e8565b6101a0600261018051606481101561235f5702606901805482526001810154826020015250506101e060006101f3818352015b6101c0516101e0511061071b576107d5565b61013360043560e05260c052604060c0206101a05160e05260c052604060c0206101e05160e05260c052604060c02054610200526002600461020051633b9aca0081101561235f570261013260043560e05260c052604060c0206101a05160e05260c052604060c0206101e05160e05260c052604060c02001015461022052610160516102205110156107af5760016107b5565b61016051155b5b156107c45761022051610160525b5b8151600101808352811415610709575b50505b81516001018083528114156106c5575b50506101605160005260206000f35b63b73b512181141561080d57426101405261082e565b63a37198fa81141561082957602060046101403760005061082e565b61090d565b61013454610160526101806004610160516c01431e0fae6d7217caa000000081101561235f5702610135018054825260018101548260200152600281015482604001526003810154826060015250506101405161016051610180516101a0516101c0516101e0516102006101808051825280602001518260200152806040015182604001528060600151826060015250506101405161028052610280516102605161024051610220516102005160065801611fa1565b6102e0526101e0526101c0526101a0526101805261016052610140526102e05160005260206000f35b6318160ddd811415610923574261014052610944565b63bd85b03981141561093f576020600461014037600050610944565b610ae3565b60006101605261018060006063818352015b6003546101805110610967576109d6565b61016080516020610220602463bd85b0396101a052610140516101c0526101bc600161018051606481101561235f5702600401545afa1561235f57601f3d111561235f5760005061022051818183011061235f57808201905090508152505b8151600101808352811415610956575b505061013454610180526101a06004610180516c01431e0fae6d7217caa000000081101561235f5702610135018054825260018101548260200152600281015482604001526003810154826060015250506101405161016051610180516101a0516101c0516101e05161020051610220516102406101a0805182528060200151826020015280604001518260400152806060015182606001525050610140516102c0526102c0516102a05161028051610260516102405160065801611fa1565b6103205261022052610200526101e0526101c0526101a05261018052610160526101405261032051610220526101605161022051818183011061235f578082019050905060005260206000f35b6370a08231811415610af9574261014052610b19565b62fdd58e811415610b14576020602461014037600050610b19565b610c22565b60043560a01c61235f5760006101605261018060006063818352015b6003546101805110610b4657610bbb565b61016080516020610240604462fdd58e6101a0526004356101c052610140516101e0526101bc600161018051606481101561235f5702600401545afa1561235f57601f3d111561235f5760005061024051818183011061235f57808201905090508152505b8151600101808352811415610b35575b50506101405161016051610180516004356101a052610140516101c0526101c0516101a05160065801612164565b6102205261018052610160526101405261022051610180526101605161018051818183011061235f578082019050905060005260206000f35b63b76e6044811415610c685760043560a01c61235f576004356101405260243561016052610160516101405160065801612164565b6101c0526101c05160005260206000f35b63adc63589811415610c8557600061014052600061016052610cd0565b63f0914f4a811415610ca7576000610160526020602461014037600050610cd0565b63cca604d2811415610ccb5760206024610140376020604461016037600050610cd0565b610d6c565b60043560a01c61235f5761014051610d30576020610200602463adc63589610180526004356101a05261019c600161016051606481101561235f5702600401545afa1561235f57601f3d111561235f576000506102005160005260206000f35b600161013160043560e05260c052604060c0206101405160e05260c052604060c0206101605160e05260c052604060c020015460005260206000f35b63afe8dbd1811415610f3d5760043560a01c61235f5760006101405261016060006063818352015b6003546101605110610da557610e29565b6020610220602463adc635896101a0526004356101c0526101bc600161016051606481101561235f5702600401545afa1561235f57601f3d111561235f57600050610220516101805261014051610180511015610e03576001610e09565b61014051155b5b15610e185761018051610140525b5b8151600101808352811415610d94575b50506068546101605261018060006063818352015b610160516101805110610e5057610f2e565b6101a0600261018051606481101561235f5702606901805482526001810154826020015250506101e060006101f3818352015b6101c0516101e05110610e9557610f1b565b600161013160043560e05260c052604060c0206101a05160e05260c052604060c0206101e05160e05260c052604060c0200154610200526000610200511815610ef95761014051610200511015610eed576001610ef3565b61014051155b5b610efc565b60005b15610f0a5761020051610140525b5b8151600101808352811415610e83575b50505b8151600101808352811415610e3e575b50506101405160005260206000f35b637c74a174811415610f5a57600061014052600061016052610fa5565b63c422abe0811415610f7c576000610160526020602461014037600050610fa5565b633e7e92cf811415610fa05760206024610140376020604461016037600050610fa5565b611089565b60043560a01c61235f57610140516110055760206102006024637c74a174610180526004356101a05261019c600161016051606481101561235f5702600401545afa1561235f57601f3d111561235f576000506102005160005260206000f35b61013360043560e05260c052604060c0206101405160e05260c052604060c0206101605160e05260c052604060c02054610180526001600461018051633b9aca0081101561235f570261013260043560e05260c052604060c0206101405160e05260c052604060c0206101605160e05260c052604060c02001015460005260206000f35b636b441a408114156110df5760043560a01c61235f5760005433141561235f57600435600155600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae8114156111405760005433141561235f5760015461014052600061014051181561235f576101405160005561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b63b4027b048114156111b55760043560a01c61235f5760243560011c61235f5760005433141561235f57602435600260043560e05260c052604060c0205560043561014052602435610160527fc2a4c21ce00cc344718078afc8a2fb244cf57e2cd182e6870f443813408c51196040610140a1005b63ec7b5cda8114156112345760043560a01c61235f5760005433141561235f576004356001600354606481101561235f570260040155600380546001818183011061235f5780820190509050815550600435610140527fcb28779aca1175c330a0dc64a20ac1713e3d984f3e25ab20408e5d7614b6e6bc6020610140a1005b63f851a44081141561124c5760005460005260206000f35b6317f7182a8114156112645760015460005260206000f35b632e98f2668114156112945760043560a01c61235f57600260043560e05260c052604060c0205460005260206000f35b63730762b88114156112ac5760035460005260206000f35b63556e5f4f8114156112d4576001600435606481101561235f57026004015460005260206000f35b63f1d90a158114156112ec5760685460005260206000f35b6327294447811415611338576002600435606481101561235f5702606901610140808080845481525050602081019050808060018501548152505060409050905060c05260c051610140f35b63c32367978114156113a95760043560a01c61235f5761013160043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c020610140808080845481525050602081019050808060018501548152505060409050905060c05260c051610140f35b63bfac6b3e81141561144f5760043560a01c61235f576004606435633b9aca0081101561235f570261013260043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c0200161014080808084548152505060208101905080806001850154815250506020810190508080600285015481525050602081019050808060038501548152505060809050905060c05260c051610140f35b638f472cbb81141561149c5760043560a01c61235f5761013360043560e05260c052604060c02060243560e05260c052604060c02060443560e05260c052604060c0205460005260206000f35b63a9605a028114156114b5576101345460005260206000f35b630640490f8114156115305760046004356c01431e0fae6d7217caa000000081101561235f57026101350161014080808084548152505060208101905080806001850154815250506020810190508080600285015481525050602081019050808060038501548152505060809050905060c05260c051610140f35b639cc776bd811415611562576c050c783eb9b5c840000000013560043560e05260c052604060c0205460005260206000f35b6306fdde0381141561160b576c050c783eb9b5c840000000013680610180602082540161012060006003818352015b826101205160200211156115a4576115c6565b61012051850154610120516020028501525b8151600101808352811415611591575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6395d89b418114156116b4576c050c783eb9b5c840000000013a80610180602082540161012060006002818352015b8261012051602002111561164d5761166f565b61012051850154610120516020028501525b815160010180835281141561163a575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b6354fd4d5081141561175d576c050c783eb9b5c840000000013d80610180602082540161012060006002818352015b826101205160200211156116f657611718565b61012051850154610120516020028501525b81516001018083528114156116e3575b50505050505061018051806101a001818260206001820306601f82010390500336823750506020610160526040610180510160206001820306601f8201039050610160f35b63313ce567811415611781576c050c783eb9b5c84000000001405460005260206000f35b505b60006000fd5b610220526101405261016052610180526101a0526101c0526101e0526102005261014036610240376101345461038052600061014051181561194957426101c05111156117dc5760006101a051136117df565b60005b15611850576101a051630784ce00808205808060008112156117fd57195b607f1c61235f5790509050905061026052610260516101c0514280821061235f5780820390509050604051811161235f578082028080600081121561183e57195b607f1c61235f57905090509050610240525b426102005111156118675760006101e0511361186a565b60005b156118db576101e051630784ce008082058080600081121561188857195b607f1c61235f579050905090506102e0526102e051610200514280821061235f5780820390509050604051811161235f57808202808060008112156118c957195b607f1c61235f579050905090506102c0525b6c050c783eb9b5c84000000001356101c05160e05260c052604060c02054610340526000610200511815611948576101c051610200511415611924576103405161036052611947565b6c050c783eb9b5c84000000001356102005160e05260c052604060c02054610360525b5b5b6103a060008152600081602001524281604001524381606001525060006103805111156119b8576103a06004610380516c01431e0fae6d7217caa000000081101561235f5702610135018054825260018101548260200152600281015482604001526003810154826060015250505b6103e051610420526104406103a080518252806020015182602001528060400151826040015280606001518260600152505060006104c0526103e051421115611a5357670de0b6b3a7640000436104005180821061235f578082039050905080820282158284830414171561235f5780905090509050426103e05180821061235f578082039050905080801561235f578204905090506104c0525b6104205162093a808082049050905062093a8080820282158284830414171561235f57809050905090506104e052610500600060ff818352015b6104e0805162093a80818183011061235f5780820190509050815250600061052052426104e0511115611ac457426104e052611ae7565b6c050c783eb9b5c84000000001356104e05160e05260c052604060c02054610520525b6103a080516103c0516104e0516104205180821061235f5780820390509050604051811161235f5780820280806000811215611b1f57195b607f1c61235f5790509050905080820380806000811215611b3c57195b607f1c61235f579050905090508152506103c080516105205180820180806000811215611b6557195b607f1c61235f5790509050905081525060006103a0511215611b885760006103a0525b60006103c0511215611b9b5760006103c0525b6104e051610420526104e0516103e0526104a0516104c0516104e0516104805180821061235f578082039050905080820282158284830414171561235f5780905090509050670de0b6b3a764000080820490509050818183011061235f57808201905090506104005261038080516001818183011061235f5780820190509050815250426104e0511415611c37574361040052611c9056611c7f565b6004610380516c01431e0fae6d7217caa000000081101561235f5702610135016103a08051825580602001516001830155806040015160028301558060600151600383015550505b5b8151600101808352811415611a8d575b505061038051610134556000610140511815611d61576103c080516102e0516102605180820380806000811215611cc357195b607f1c61235f5790509050905080820180806000811215611ce057195b607f1c61235f579050905090508152506103a080516102c0516102405180820380806000811215611d0d57195b607f1c61235f5790509050905080820180806000811215611d2a57195b607f1c61235f5790509050905081525060006103c0511215611d4d5760006103c0525b60006103a0511215611d605760006103a0525b5b6004610380516c01431e0fae6d7217caa000000081101561235f5702610135016103a08051825580602001516001830155806040015160028301558060600151600383015550506000610140511815611f9b57426101c0511115611e435761034080516102605180820180806000811215611dd857195b607f1c61235f579050905090508152506101c051610200511415611e205761034080516102e05180820380806000811215611e0f57195b607f1c61235f579050905090508152505b610340516c050c783eb9b5c84000000001356101c05160e05260c052604060c020555b42610200511115611ea9576101c051610200511115611ea85761036080516102e05180820380806000811215611e7557195b607f1c61235f57905090509050815250610360516c050c783eb9b5c84000000001356102005160e05260c052604060c020555b5b6101336101405160e05260c052604060c0206101605160e05260c052604060c0206101805160e05260c052604060c020546001818183011061235f578082019050905061050052610500516101336101405160e05260c052604060c0206101605160e05260c052604060c0206101805160e05260c052604060c0205542610300524361032052600461050051633b9aca0081101561235f57026101326101405160e05260c052604060c0206101605160e05260c052604060c0206101805160e05260c052604060c020016102c08051825580602001516001830155806040015160028301558060600151600383015550505b61022051565b6101e0526101405261016052610180526101a0526101c0526102006101408051825280602001518260200152806040015182604001528060600151826060015250506102405162093a808082049050905062093a8080820282158284830414171561235f5780905090509050610280526102a0600060ff818352015b610280805162093a80818183011061235f578082019050905081525060006102c0526101c05161028051111561205a576101c0516102805261207d565b6c050c783eb9b5c84000000001356102805160e05260c052604060c020546102c0525b610200805161022051610280516102405180821061235f5780820390509050604051811161235f57808202808060008112156120b557195b607f1c61235f57905090509050808203808060008112156120d257195b607f1c61235f579050905090508152506101c0516102805114156120f557612137565b61022080516102c0518082018080600081121561210e57195b607f1c61235f5790509050905081525061028051610240525b815160010180835281141561201d575b5050600061020051121561214c576000610200525b610200516000811261235f576000526000516101e051565b6101805261014052610160526068546101a05260006101c0526101e060006063818352015b6101a0516101e0511061219b5761234d565b61020060026101e051606481101561235f57026069018054825260018101548260200152505061024060006101f3818352015b6102205161024051106121e05761233a565b6101336101405160e05260c052604060c0206102005160e05260c052604060c0206102405160e05260c052604060c0205461026052600061026051111561232957610280600461026051633b9aca0081101561235f57026101326101405160e05260c052604060c0206102005160e05260c052604060c0206102405160e05260c052604060c0200180548252600181015482602001526002810154826040015260038101548260600152505061028080516102a051610160516102c05180821061235f5780820390509050604051811161235f57808202808060008112156122c457195b607f1c61235f57905090509050808203808060008112156122e157195b607f1c61235f579050905090508152506000610280511215612304576000610280525b6101c08051610280516000811261235f57818183011061235f57808201905090508152505b5b81516001018083528114156121ce575b50505b8151600101808352811415612189575b50506101c05160005260005161018051565b600080fd
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b982841d8caf7ccc1b5c8ec414347316f54a06c9000000000000000000000000ba57440fa35fdb671e58f6f56c1a4447ab1f6c2b00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001a4d6972726f72656420566f74652d657363726f77656420484e4400000000000000000000000000000000000000000000000000000000000000000000000000066d7665484e440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6d7665484e445f312e302e300000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _admin (address): 0xb982841d8Caf7cCc1b5c8ec414347316F54A06c9
Arg [1] : _voting_escrow (address): 0xBa57440fA35Fdb671E58F6F56c1A4447aB1f6C2B
Arg [2] : _name (string): Mirrored Vote-escrowed HND
Arg [3] : _symbol (string): mveHND
Arg [4] : _version (string): mveHND_1.0.0
-----Encoded View---------------
11 Constructor Arguments found :
Arg [0] : 000000000000000000000000b982841d8caf7ccc1b5c8ec414347316f54a06c9
Arg [1] : 000000000000000000000000ba57440fa35fdb671e58f6f56c1a4447ab1f6c2b
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [5] : 000000000000000000000000000000000000000000000000000000000000001a
Arg [6] : 4d6972726f72656420566f74652d657363726f77656420484e44000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [8] : 6d7665484e440000000000000000000000000000000000000000000000000000
Arg [9] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [10] : 6d7665484e445f312e302e300000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 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.