Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 430 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 21346732 | 5 hrs ago | IN | 0 ETH | 0.00380083 | ||||
Modify_lock | 21340418 | 26 hrs ago | IN | 0 ETH | 0.00459507 | ||||
Withdraw | 21335195 | 43 hrs ago | IN | 0 ETH | 0.00588827 | ||||
Withdraw | 21300816 | 6 days ago | IN | 0 ETH | 0.00187617 | ||||
Modify_lock | 21295588 | 7 days ago | IN | 0 ETH | 0.00335372 | ||||
Withdraw | 21295576 | 7 days ago | IN | 0 ETH | 0.00241804 | ||||
Modify_lock | 21291716 | 7 days ago | IN | 0 ETH | 0.00171614 | ||||
Modify_lock | 21290140 | 8 days ago | IN | 0 ETH | 0.00145297 | ||||
Modify_lock | 21285419 | 8 days ago | IN | 0 ETH | 0.00186255 | ||||
Modify_lock | 21285378 | 8 days ago | IN | 0 ETH | 0.00209514 | ||||
Withdraw | 21283931 | 8 days ago | IN | 0 ETH | 0.00151552 | ||||
Modify_lock | 21236241 | 15 days ago | IN | 0 ETH | 0.0096063 | ||||
Withdraw | 21212568 | 18 days ago | IN | 0 ETH | 0.00219857 | ||||
Modify_lock | 21203652 | 20 days ago | IN | 0 ETH | 0.00276485 | ||||
Modify_lock | 21199666 | 20 days ago | IN | 0 ETH | 0.00386234 | ||||
Withdraw | 21168584 | 25 days ago | IN | 0 ETH | 0.00677518 | ||||
Withdraw | 21159950 | 26 days ago | IN | 0 ETH | 0.00565378 | ||||
Withdraw | 21156646 | 26 days ago | IN | 0 ETH | 0.00283574 | ||||
Modify_lock | 21115991 | 32 days ago | IN | 0 ETH | 0.00208959 | ||||
Modify_lock | 21098123 | 34 days ago | IN | 0 ETH | 0.00105724 | ||||
Modify_lock | 21097945 | 34 days ago | IN | 0 ETH | 0.00090056 | ||||
Modify_lock | 21097941 | 34 days ago | IN | 0 ETH | 0.00099616 | ||||
Withdraw | 21087121 | 36 days ago | IN | 0 ETH | 0.00577197 | ||||
Modify_lock | 21071007 | 38 days ago | IN | 0 ETH | 0.0021732 | ||||
Modify_lock | 21058884 | 40 days ago | IN | 0 ETH | 0.00237022 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.3.7
Contract Source Code (Vyper language format)
# @version 0.3.7 """ @title Voting YFI @author Curve Finance, Yearn Finance @license MIT @notice Votes have a weight depending on time, so that users are committed to the future of whatever they are voting for. @dev The voting power is capped at 4 years, but the lock can exceed that duration. Vote weight decays linearly over time. A user can unlock funds early incurring a penalty. """ from vyper.interfaces import ERC20 interface RewardPool: def burn(amount: uint256) -> bool: nonpayable struct Point: bias: int128 slope: int128 # - dweight / dt ts: uint256 blk: uint256 # block struct LockedBalance: amount: uint256 end: uint256 struct Kink: slope: int128 ts: uint256 struct Withdrawn: amount: uint256 penalty: uint256 event ModifyLock: sender: indexed(address) user: indexed(address) amount: uint256 locktime: uint256 ts: uint256 event Withdraw: user: indexed(address) amount: uint256 ts: uint256 event Penalty: user: indexed(address) amount: uint256 ts: uint256 event Supply: old_supply: uint256 new_supply: uint256 ts: uint256 event Initialized: token: ERC20 reward_pool: RewardPool YFI: immutable(ERC20) REWARD_POOL: immutable(RewardPool) DAY: constant(uint256) = 86400 WEEK: constant(uint256) = 7 * 86400 # all future times are rounded by week MAX_LOCK_DURATION: constant(uint256) = 4 * 365 * 86400 / WEEK * WEEK # 4 years SCALE: constant(uint256) = 10 ** 18 MAX_PENALTY_RATIO: constant(uint256) = SCALE * 3 / 4 # 75% for early exit of max lock MAX_N_WEEKS: constant(uint256) = 522 supply: public(uint256) locked: public(HashMap[address, LockedBalance]) # history epoch: public(HashMap[address, uint256]) point_history: public(HashMap[address, HashMap[uint256, Point]]) # epoch -> unsigned point slope_changes: public(HashMap[address, HashMap[uint256, int128]]) # time -> signed slope change @external def __init__(token: ERC20, reward_pool: RewardPool): """ @notice Contract constructor @param token YFI token address @param reward_pool Pool for early exit penalties """ YFI = token REWARD_POOL = reward_pool self.point_history[self][0].blk = block.number self.point_history[self][0].ts = block.timestamp log Initialized(token, reward_pool) @view @external def get_last_user_point(addr: address) -> Point: """ @notice Get the most recently recorded point for a user @param addr Address of the user wallet @return Last recorded point """ epoch: uint256 = self.epoch[addr] return self.point_history[addr][epoch] @pure @internal def round_to_week(ts: uint256) -> uint256: return ts / WEEK * WEEK @view @internal def lock_to_point(lock: LockedBalance) -> Point: point: Point = Point({bias: 0, slope: 0, ts: block.timestamp, blk: block.number}) if lock.amount > 0: # the lock is longer than the max duration slope: int128 = convert(lock.amount / MAX_LOCK_DURATION, int128) if lock.end > block.timestamp + MAX_LOCK_DURATION: point.slope = 0 point.bias = slope * convert(MAX_LOCK_DURATION, int128) # the lock ends in the future but shorter than max duration elif lock.end > block.timestamp: point.slope = slope point.bias = slope * convert(lock.end - block.timestamp, int128) return point @view @internal def lock_to_kink(lock: LockedBalance) -> Kink: kink: Kink = empty(Kink) # the lock is longer than the max duration if lock.amount > 0 and lock.end > self.round_to_week(block.timestamp + MAX_LOCK_DURATION): kink.ts = self.round_to_week(lock.end - MAX_LOCK_DURATION) kink.slope = convert(lock.amount / MAX_LOCK_DURATION, int128) return kink @internal def _checkpoint_user(user: address, old_lock: LockedBalance, new_lock: LockedBalance) -> Point[2]: old_point: Point = self.lock_to_point(old_lock) new_point: Point = self.lock_to_point(new_lock) old_kink: Kink = self.lock_to_kink(old_lock) new_kink: Kink = self.lock_to_kink(new_lock) # schedule slope changes for the lock end if old_point.slope != 0 and old_lock.end > block.timestamp: self.slope_changes[self][old_lock.end] += old_point.slope self.slope_changes[user][old_lock.end] += old_point.slope if new_point.slope != 0 and new_lock.end > block.timestamp: self.slope_changes[self][new_lock.end] -= new_point.slope self.slope_changes[user][new_lock.end] -= new_point.slope # schedule kinks for locks longer than max duration if old_kink.slope != 0: self.slope_changes[self][old_kink.ts] -= old_kink.slope self.slope_changes[user][old_kink.ts] -= old_kink.slope self.slope_changes[self][old_lock.end] += old_kink.slope self.slope_changes[user][old_lock.end] += old_kink.slope if new_kink.slope != 0: self.slope_changes[self][new_kink.ts] += new_kink.slope self.slope_changes[user][new_kink.ts] += new_kink.slope self.slope_changes[self][new_lock.end] -= new_kink.slope self.slope_changes[user][new_lock.end] -= new_kink.slope self.epoch[user] += 1 self.point_history[user][self.epoch[user]] = new_point return [old_point, new_point] @internal def _checkpoint_global() -> Point: last_point: Point = Point({bias: 0, slope: 0, ts: block.timestamp, blk: block.number}) epoch: uint256 = self.epoch[self] if epoch > 0: last_point = self.point_history[self][epoch] last_checkpoint: uint256 = last_point.ts # initial_last_point is used for extrapolation to calculate block number initial_last_point: Point = last_point block_slope: uint256 = 0 # dblock/dt if block.timestamp > last_checkpoint: block_slope = SCALE * (block.number - last_point.blk) / (block.timestamp - last_checkpoint) # apply weekly slope changes and record weekly global snapshots t_i: uint256 = self.round_to_week(last_checkpoint) for i in range(255): t_i = min(t_i + WEEK, block.timestamp) last_point.bias -= last_point.slope * convert(t_i - last_checkpoint, int128) last_point.slope += self.slope_changes[self][t_i] # will read 0 if not aligned to week last_point.bias = max(0, last_point.bias) # this can happen last_point.slope = max(0, last_point.slope) # this shouldn't happen last_checkpoint = t_i last_point.ts = t_i last_point.blk = initial_last_point.blk + block_slope * (t_i - initial_last_point.ts) / SCALE epoch += 1 if t_i < block.timestamp: self.point_history[self][epoch] = last_point # skip last week else: last_point.blk = block.number break self.epoch[self] = epoch return last_point @internal def _checkpoint(user: address, old_lock: LockedBalance, new_lock: LockedBalance): """ @notice Record global and per-user data to checkpoint @param user User's wallet address. No user checkpoint if 0x0 @param old_lock Pevious locked amount / end lock time for the user @param new_lock New locked amount / end lock time for the user """ user_points: Point[2] = empty(Point[2]) if user != empty(address): user_points = self._checkpoint_user(user, old_lock, new_lock) # fill point_history until t=now last_point: Point = self._checkpoint_global() # only affects the last checkpoint at t=now if user != empty(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 += (user_points[1].slope - user_points[0].slope) last_point.bias += (user_points[1].bias - user_points[0].bias) last_point.slope = max(0, last_point.slope) last_point.bias = max(0, last_point.bias) # Record the changed point into history epoch: uint256 = self.epoch[self] self.point_history[self][epoch] = last_point @external def checkpoint(): """ @notice Record global data to checkpoint """ self._checkpoint(empty(address), empty(LockedBalance), empty(LockedBalance)) @external def modify_lock(amount: uint256, unlock_time: uint256, user: address = msg.sender) -> LockedBalance: """ @notice Create or modify a lock for a user. Support deposits on behalf of a user. @dev Minimum deposit to create a lock is 1 YFI. You can lock for longer than 4 years, but less than 10 years, the max voting power is capped at 4 years. You can only increase lock duration if it has less than 4 years remaining. You can decrease lock duration if it has more than 4 years remaining. @param amount YFI amount to add to a lock. 0 to not modify. @param unlock_time Unix timestamp when the lock ends, must be in the future. 0 to not modify. @param user A user to deposit to. If different from msg.sender, unlock_time has no effect """ old_lock: LockedBalance = self.locked[user] new_lock: LockedBalance = old_lock new_lock.amount += amount unlock_week: uint256 = 0 # only a user can modify their own unlock time if msg.sender == user: if unlock_time != 0: unlock_week = self.round_to_week(unlock_time) # locktime is rounded down to weeks assert ((unlock_week - self.round_to_week(block.timestamp)) / WEEK) < MAX_N_WEEKS # lock can't exceed 10 years assert unlock_week > block.timestamp # dev: unlock time must be in the future if unlock_week - block.timestamp < MAX_LOCK_DURATION: assert unlock_week > old_lock.end # dev: can only increase lock duration else: assert unlock_week > block.timestamp + MAX_LOCK_DURATION # dev: can only decrease to ≥4 years new_lock.end = unlock_week # create lock if old_lock.amount == 0 and old_lock.end == 0: assert msg.sender == user # dev: you can only create a lock for yourself assert amount >= 10 ** 18 # dev: minimum amount is 1 YFI assert unlock_week != 0 # dev: must specify unlock time in the future # modify lock else: assert old_lock.end > block.timestamp # dev: lock expired supply_before: uint256 = self.supply self.supply = supply_before + amount self.locked[user] = new_lock self._checkpoint(user, old_lock, new_lock) if amount > 0: assert YFI.transferFrom(msg.sender, self, amount) log Supply(supply_before, supply_before + amount, block.timestamp) log ModifyLock(msg.sender, user, new_lock.amount, new_lock.end, block.timestamp) return new_lock @external def withdraw() -> Withdrawn: """ @notice Withdraw lock for a sender @dev If a lock has expired, sends a full amount to the sender. If a lock is still active, the sender pays a 75% penalty during the first year and a linearly decreasing penalty from 75% to 0 based on the remaining lock time. """ old_locked: LockedBalance = self.locked[msg.sender] assert old_locked.amount > 0 # dev: create a lock first to withdraw time_left: uint256 = 0 penalty: uint256 = 0 if old_locked.end > block.timestamp: time_left = min(old_locked.end - block.timestamp, MAX_LOCK_DURATION) penalty_ratio: uint256 = min(time_left * SCALE / MAX_LOCK_DURATION, MAX_PENALTY_RATIO) penalty = old_locked.amount * penalty_ratio / SCALE zero_locked: LockedBalance = empty(LockedBalance) self.locked[msg.sender] = zero_locked supply_before: uint256 = self.supply self.supply = supply_before - old_locked.amount self._checkpoint(msg.sender, old_locked, zero_locked) assert YFI.transfer(msg.sender, old_locked.amount - penalty) if penalty > 0: assert YFI.approve(REWARD_POOL.address, penalty) assert REWARD_POOL.burn(penalty) log Penalty(msg.sender, penalty, block.timestamp) log Withdraw(msg.sender, old_locked.amount - penalty, block.timestamp) log Supply(supply_before, supply_before - old_locked.amount, block.timestamp) return Withdrawn({amount: old_locked.amount - penalty, penalty: penalty}) @view @internal def find_epoch_by_block(user: address, height: uint256, max_epoch: uint256) -> uint256: """ @notice Binary search to estimate epoch height number @param height Block to find @param max_epoch Don't go beyond this epoch @return Epoch the block is in """ _min: uint256 = 0 _max: uint256 = max_epoch for i in range(128): # Will be always enough for 128-bit numbers if _min >= _max: break _mid: uint256 = (_min + _max + 1) / 2 if self.point_history[user][_mid].blk <= height: _min = _mid else: _max = _mid - 1 return _min @view @external def find_epoch_by_timestamp(user: address, ts: uint256) -> uint256: return self._find_epoch_by_timestamp(user, ts, self.epoch[user]) @view @internal def _find_epoch_by_timestamp(user: address, ts: uint256, max_epoch: uint256) -> uint256: """ @notice Binary search to estimate epoch timestamp @param ts Timestamp to find @param max_epoch Don't go beyond this epoch @return Epoch the timestamp is in """ _min: uint256 = 0 _max: uint256 = max_epoch for i in range(128): # Will be always enough for 128-bit numbers if _min >= _max: break _mid: uint256 = (_min + _max + 1) / 2 if self.point_history[user][_mid].ts <= ts: _min = _mid else: _max = _mid - 1 return _min @view @internal def replay_slope_changes(user: address, point: Point, ts: uint256) -> Point: """ @dev If the `ts` is higher than MAX_N_WEEKS weeks ago, this function will return the balance at exactly MAX_N_WEEKS weeks instead of `ts`. MAX_N_WEEKS weeks is considered sufficient to cover the `MAX_LOCK_DURATION` period. """ upoint: Point = point t_i: uint256 = self.round_to_week(upoint.ts) for i in range(MAX_N_WEEKS): t_i += WEEK d_slope: int128 = 0 if t_i > ts: t_i = ts else: d_slope = self.slope_changes[user][t_i] upoint.bias -= upoint.slope * convert(t_i - upoint.ts, int128) if t_i == ts: break upoint.slope += d_slope upoint.ts = t_i upoint.bias = max(0, upoint.bias) return upoint @view @internal def _balanceOf(user: address, ts: uint256 = block.timestamp) -> uint256: """ @notice Get the current voting power for `user` @param user User wallet address @param ts Epoch time to return voting power at @return User voting power """ epoch: uint256 = self.epoch[user] if epoch == 0: return 0 if ts != block.timestamp: epoch = self._find_epoch_by_timestamp(user, ts, epoch) upoint: Point = self.point_history[user][epoch] upoint = self.replay_slope_changes(user, upoint, ts) return convert(upoint.bias, uint256) @view @external def balanceOf(user: address, ts: uint256 = block.timestamp) -> uint256: """ @notice Get the current voting power for `user` @param user User wallet address @param ts Epoch time to return voting power at @return User voting power """ return self._balanceOf(user, ts) @view @external def getPriorVotes(user: address, height: uint256) -> uint256: """ @notice Measure voting power of `user` at block height `height` @dev Compatible with GovernorAlpha. `user`can be self to get total supply at height. @param user User's wallet address @param height Block to calculate the voting power at @return Voting power """ assert height <= block.number uepoch: uint256 = self.epoch[user] uepoch = self.find_epoch_by_block(user, height, uepoch) upoint: Point = self.point_history[user][uepoch] max_epoch: uint256 = self.epoch[self] epoch: uint256 = self.find_epoch_by_block(self, height, max_epoch) point_0: Point = self.point_history[self][epoch] d_block: uint256 = 0 d_t: uint256 = 0 if epoch < max_epoch: point_1: Point = self.point_history[self][epoch + 1] d_block = point_1.blk - point_0.blk d_t = point_1.ts - point_0.ts else: d_block = block.number - point_0.blk d_t = block.timestamp - point_0.ts block_time: uint256 = point_0.ts if d_block != 0: block_time += d_t * (height - point_0.blk) / d_block upoint = self.replay_slope_changes(user, upoint, block_time) return convert(upoint.bias, uint256) @view @external def totalSupply(ts: uint256 = block.timestamp) -> uint256: """ @notice Calculate total voting power @dev Adheres to the ERC20 `totalSupply` interface for Aragon compatibility @param ts Epoch time to return voting power at @return Total voting power """ return self._balanceOf(self, ts) @view @external def totalSupplyAt(height: uint256) -> uint256: """ @notice Calculate total voting power at some point in the past @param height Block to calculate the total voting power at @return Total voting power at `height` """ assert height <= block.number epoch: uint256 = self.epoch[self] target_epoch: uint256 = self.find_epoch_by_block(self, height, epoch) point: Point = self.point_history[self][target_epoch] dt: uint256 = 0 if target_epoch < epoch: point_next: Point = self.point_history[self][target_epoch + 1] if point.blk != point_next.blk: dt = (height - point.blk) * (point_next.ts - point.ts) / (point_next.blk - point.blk) else: if point.blk != block.number: dt = (height - point.blk) * (block.timestamp - point.ts) / (block.number - point.blk) # Now dt contains info on how far are we beyond point point = self.replay_slope_changes(self, point, point.ts + dt) return convert(point.bias, uint256) @view @external def token() -> ERC20: return YFI @view @external def reward_pool() -> RewardPool: return REWARD_POOL @view @external def name() -> String[10]: return "Voting YFI" @view @external def symbol() -> String[5]: return "veYFI" @view @external def decimals() -> uint8: return 18
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"ModifyLock","inputs":[{"name":"sender","type":"address","indexed":true},{"name":"user","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false},{"name":"locktime","type":"uint256","indexed":false},{"name":"ts","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Withdraw","inputs":[{"name":"user","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false},{"name":"ts","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Penalty","inputs":[{"name":"user","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false},{"name":"ts","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Supply","inputs":[{"name":"old_supply","type":"uint256","indexed":false},{"name":"new_supply","type":"uint256","indexed":false},{"name":"ts","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Initialized","inputs":[{"name":"token","type":"address","indexed":false},{"name":"reward_pool","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"token","type":"address"},{"name":"reward_pool","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"get_last_user_point","inputs":[{"name":"addr","type":"address"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"bias","type":"int128"},{"name":"slope","type":"int128"},{"name":"ts","type":"uint256"},{"name":"blk","type":"uint256"}]}]},{"stateMutability":"nonpayable","type":"function","name":"checkpoint","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"modify_lock","inputs":[{"name":"amount","type":"uint256"},{"name":"unlock_time","type":"uint256"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"amount","type":"uint256"},{"name":"end","type":"uint256"}]}]},{"stateMutability":"nonpayable","type":"function","name":"modify_lock","inputs":[{"name":"amount","type":"uint256"},{"name":"unlock_time","type":"uint256"},{"name":"user","type":"address"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"amount","type":"uint256"},{"name":"end","type":"uint256"}]}]},{"stateMutability":"nonpayable","type":"function","name":"withdraw","inputs":[],"outputs":[{"name":"","type":"tuple","components":[{"name":"amount","type":"uint256"},{"name":"penalty","type":"uint256"}]}]},{"stateMutability":"view","type":"function","name":"find_epoch_by_timestamp","inputs":[{"name":"user","type":"address"},{"name":"ts","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"user","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"user","type":"address"},{"name":"ts","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"getPriorVotes","inputs":[{"name":"user","type":"address"},{"name":"height","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":"ts","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"totalSupplyAt","inputs":[{"name":"height","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"reward_pool","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8"}]},{"stateMutability":"view","type":"function","name":"supply","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"locked","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"amount","type":"uint256"},{"name":"end","type":"uint256"}]}]},{"stateMutability":"view","type":"function","name":"epoch","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"point_history","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"bias","type":"int128"},{"name":"slope","type":"int128"},{"name":"ts","type":"uint256"},{"name":"blk","type":"uint256"}]}]},{"stateMutability":"view","type":"function","name":"slope_changes","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"}],"outputs":[{"name":"","type":"int128"}]}]
Contract Creation Code
60206120016000396000518060a01c611ffc5760405260206120216000396000518060a01c611ffc5760605234611ffc57604051611f2d52606051611f4d52436003306020526000526040600020806000602052600052604060002090506003810190505542600330602052600052604060002080600060205260005260406000209050600281019050557f3cd5ec01b1ae7cfec6ca1863e2cd6aa25d6d1702825803ff2b7cc95010fffdc260405160805260605160a05260406080a1611f2d6100ce61000039611f6d610000f36003361161000c5761106a565b60003560e01c34611f1b5763a7afdcae81186100915760243610611f1b576004358060a01c611f1b5760405260026040516020526000526040600020546060526003604051602052600052604060002080606051602052600052604060002090508054608052600181015460a052600281015460c052600381015460e0525060806080f35b63c2c4c5c181186100b55760043610611f1b5760a036610380376100b3611985565b005b63622b6d9681186100d25760443610611f1b5733610620526100f5565b6314557b8c81186103c85760643610611f1b576044358060a01c611f1b57610620525b6001610620516020526000526040600020805461064052600181015461066052506106405161068052610660516106a05261068051600435808201828110611f1b57905090506106805260006106c0526106205133186102065760243515610206576024356040526101686106e0611070565b6106e0516106c0526102096106c051426040526101866106e0611070565b6106e051808203828111611f1b579050905062093a808104905011611f1b57426106c0511115611f1b5763077f87ff6106c05142808203828111611f1b579050905011156101ee574263077f88008101818110611f1b5790506106c0511115611f1b576101fd565b610660516106c0511115611f1b575b6106c0516106a0525b6106405161021857610660511561021b565b60005b61022f5742610660511115611f1b57610254565b610620513318611f1b57670de0b6b3a764000060043510611f1b576106c05115611f1b575b6000546106e0526106e051600435808201828110611f1b579050905060005560016106205160205260005260406000206106805181556106a0516001820155506106205161038052610640516103a052610660516103c052610680516103e0526106a051610400526102c4611985565b60043515610333576020611f2d6000396000516323b872dd6107005233610720523061074052600435610760526020610700606461071c6000855af161030f573d600060003e3d6000fd5b60203d10611f1b57610700518060011c611f1b576107805261078090505115611f1b575b7f21e69d6eb75b6c23bbc769d20f147b2d4bd10ffdaef330c7bf634c2686302fa76106e051610700526106e051600435808201828110611f1b57905090506107205242610740526060610700a161062051337f01affbd18fb24fa23763acc978a6bb9b9cd159b1cc733a15f3ea571d691cabc161068051610700526106a0516107205242610740526060610700a36040610680f35b633ccfd60b81186107625760043610611f1b576001336020526000526040600020805461062052600181015461064052506106205115611f1b5760403661066037426106405111156104b6576106405142808203828111611f1b579050905063077f880081811863077f88008310021890506106605261066051670de0b6b3a7640000810281670de0b6b3a7640000820418611f1b57905063077f880081049050670a688906bd8b0000818118670a688906bd8b00008310021890506106a052610620516106a051808202811583838304141715611f1b5790509050670de0b6b3a764000081049050610680525b6040366106a03760013360205260005260406000206106a05181556106c0516001820155506000546106e0526106e05161062051808203828111611f1b57905090506000553361038052610620516103a052610640516103c0526106a0516103e0526106c05161040052610528611985565b6020611f2d60003960005163a9059cbb6107005233610720526106205161068051808203828111611f1b5790509050610740526020610700604461071c6000855af1610579573d600060003e3d6000fd5b60203d10611f1b57610700518060011c611f1b576107605261076090505115611f1b5761068051156106a4576020611f2d60003960005163095ea7b3610700526020611f4d6000396000516107205261068051610740526020610700604461071c6000855af16105ee573d600060003e3d6000fd5b60203d10611f1b57610700518060011c611f1b576107605261076090505115611f1b576020611f4d6000396000516342966c686107005261068051610720526020610700602461071c6000855af161064b573d600060003e3d6000fd5b60203d10611f1b57610700518060011c611f1b576107405261074090505115611f1b57337fc25dcb745945a227e2139cc3f70645f2b61a352fe9e7f8d44ac19571f4b89eff610680516107005242610720526040610700a25b337ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5686106205161068051808203828111611f1b57905090506107005242610720526040610700a27f21e69d6eb75b6c23bbc769d20f147b2d4bd10ffdaef330c7bf634c2686302fa76106e051610700526106e05161062051808203828111611f1b57905090506107205242610740526060610700a16106205161068051808203828111611f1b57905090506107005261068051610720526040610700f35b63b5418e3f81186107b85760443610611f1b576004358060a01c611f1b57610120526020610120516040526024356060526002610120516020526000526040600020546080526107b3610140611bec565b610140f35b6370a0823181186107d55760243610611f1b5742610380526107ef565b62fdd58e81186108205760443610611f1b57602435610380525b6004358060a01c611f1b576103605260206103605161020052610380516102205261081b6103a0611e0e565b6103a0f35b63782d6fe18118610ae95760443610611f1b576004358060a01c611f1b57610200524360243511611f1b57600261020051602052600052604060002054610220526102005160405260243560605261022051608052610880610240611b34565b6102405161022052600361020051602052600052604060002080610220516020526000526040600020905080546102405260018101546102605260028101546102805260038101546102a052506002306020526000526040600020546102c052306040526024356060526102c0516080526108fc610300611b34565b610300516102e0526003306020526000526040600020806102e0516020526000526040600020905080546103005260018101546103205260028101546103405260038101546103605250604036610380376102c0516102e0511061098d574361036051808203828111611f1b5790509050610380524261034051808203828111611f1b57905090506103a052610a11565b6003306020526000526040600020806102e05160018101818110611f1b5790506020526000526040600020905080546103c05260018101546103e052600281015461040052600381015461042052506104205161036051808203828111611f1b5790509050610380526104005161034051808203828111611f1b57905090506103a0525b610340516103c0526103805115610a77576103c0516103a05160243561036051808203828111611f1b5790509050808202811583838304141715611f1b5790509050610380518015611f1b5780820490509050808201828110611f1b57905090506103c0525b61020051606052610240516080526102605160a0526102805160c0526102a05160e0526103c05161010052610aad6103e0611ca4565b6103e080516102405260208101516102605260408101516102805260608101516102a052506102405160008112611f1b576103e05260206103e0f35b6318160ddd8118610b065760043610611f1b574261036052610b21565b63bd85b0398118610b405760243610611f1b57600435610360525b602030610200526103605161022052610b3b610380611e0e565b610380f35b63981b24d08118610d9b5760243610611f1b574360043511611f1b57600230602052600052604060002054610200523060405260043560605261020051608052610b8b610240611b34565b6102405161022052600330602052600052604060002080610220516020526000526040600020905080546102405260018101546102605260028101546102805260038101546102a0525060006102c052610200516102205110610c5757436102a05114610d1a576004356102a051808203828111611f1b57905090504261028051808203828111611f1b5790509050808202811583838304141715611f1b5790509050436102a051808203828111611f1b57905090508015611f1b57808204905090506102c052610d1a565b6003306020526000526040600020806102205160018101818110611f1b5790506020526000526040600020905080546102e05260018101546103005260028101546103205260038101546103405250610340516102a05114610d1a576004356102a051808203828111611f1b57905090506103205161028051808203828111611f1b5790509050808202811583838304141715611f1b5790509050610340516102a051808203828111611f1b57905090508015611f1b57808204905090506102c0525b30606052610240516080526102605160a0526102805160c0526102a05160e052610280516102c051808201828110611f1b579050905061010052610d5f6102e0611ca4565b6102e080516102405260208101516102605260408101516102805260608101516102a052506102405160008112611f1b576102e05260206102e0f35b63fc0c546a8118610dc25760043610611f1b576020611f2d60003960005160405260206040f35b6316bfdd568118610de95760043610611f1b576020611f4d60003960005160405260206040f35b6306fdde038118610e715760043610611f1b57602080608052600a6040527f566f74696e67205946490000000000000000000000000000000000000000000060605260408160800181518082526020830160208301815181525050508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f35b6395d89b418118610ef95760043610611f1b5760208060805260056040527f766559464900000000000000000000000000000000000000000000000000000060605260408160800181518082526020830160208301815181525050508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f35b63313ce5678118610f175760043610611f1b57601260405260206040f35b63047fc9aa8118610f365760043610611f1b5760005460405260206040f35b63cbf9fe5f8118610f7b5760243610611f1b576004358060a01c611f1b5760405260016040516020526000526040600020805460605260018101546080525060406060f35b638b810c368118610fb65760243610611f1b576004358060a01c611f1b57604052600260405160205260005260406000205460605260206060f35b63613a6bea811861101c5760443610611f1b576004358060a01c611f1b5760405260036040516020526000526040600020806024356020526000526040600020905080546060526001810154608052600281015460a052600381015460c0525060806060f35b63bfa7fa8981186110685760443610611f1b576004358060a01c611f1b576040526004604051602052600052604060002080602435602052600052604060002090505460605260206060f35b505b60006000fd5b60405162093a808104905062093a8081028162093a80820418611f1b579050815250565b6040366080374260c0524360e052604051156111435760405163077f88008104905080607f1c611f1b57610100524263077f88008101818110611f1b5790506060511161112357426060511115611143576101005160a0526101005160605142808203828111611f1b579050905080607f1c611f1b5780820280600f0b8118611f1b5790509050608052611143565b600060a0526101005163077f8800810280600f0b8118611f1b5790506080525b608051815260a051602082015260c051604082015260e051606082015250565b60403660a0376060511561119b574263077f88008101818110611f1b57905060405261118f60e0611070565b60e0516080511161119e565b60005b156111e35760805163077f88008103818111611f1b5790506040526111c4610100611070565b6101005160c05260605163077f88008104905080607f1c611f1b5760a0525b60a051815260c051602082015250565b610140516040526101605160605261120c610240611094565b61024080516101c05260208101516101e05260408101516102005260608101516102205250610180516040526101a05160605261124a6102c0611094565b6102c080516102405260208101516102605260408101516102805260608101516102a052506101405160605261016051608052611288610300611163565b61030080516102c05260208101516102e05250610180516060526101a0516080526112b4610340611163565b610340805161030052602081015161032052506101e051156112db574261016051116112de565b60005b1561135b57600430602052600052604060002080610160516020526000526040600020905080546101e05180820180600f0b8118611f1b5790509050815550600461012051602052600052604060002080610160516020526000526040600020905080546101e05180820180600f0b8118611f1b57905090508155505b610260511561136f57426101a05111611372565b60005b156113ef576004306020526000526040600020806101a0516020526000526040600020905080546102605180820380600f0b8118611f1b57905090508155506004610120516020526000526040600020806101a0516020526000526040600020905080546102605180820380600f0b8118611f1b57905090508155505b6102c051156114e7576004306020526000526040600020806102e0516020526000526040600020905080546102c05180820380600f0b8118611f1b57905090508155506004610120516020526000526040600020806102e0516020526000526040600020905080546102c05180820380600f0b8118611f1b5790509050815550600430602052600052604060002080610160516020526000526040600020905080546102c05180820180600f0b8118611f1b5790509050815550600461012051602052600052604060002080610160516020526000526040600020905080546102c05180820180600f0b8118611f1b57905090508155505b61030051156115df57600430602052600052604060002080610320516020526000526040600020905080546103005180820180600f0b8118611f1b5790509050815550600461012051602052600052604060002080610320516020526000526040600020905080546103005180820180600f0b8118611f1b57905090508155506004306020526000526040600020806101a0516020526000526040600020905080546103005180820380600f0b8118611f1b57905090508155506004610120516020526000526040600020806101a0516020526000526040600020905080546103005180820380600f0b8118611f1b57905090508155505b6002610120516020526000526040600020805460018101818110611f1b579050815550600361012051602052600052604060002080600261012051602052600052604060002054602052600052604060002090506102405181556102605160018201556102805160028201556102a0516003820155506101c05181526101e0516020820152610200516040820152610220516060820152608081016102405181526102605160208201526102805160408201526102a05160608201525050565b6040366060374260a0524360c05260023060205260005260406000205460e05260e051156117055760033060205260005260406000208060e0516020526000526040600020905080546060526001810154608052600281015460a052600381015460c052505b60a05161010052606051610120526080516101405260a0516101605260c0516101805260006101a0526101005142111561178e574360c051808203828111611f1b5790509050670de0b6b3a7640000810281670de0b6b3a7640000820418611f1b5790504261010051808203828111611f1b57905090508015611f1b57808204905090506101a0525b610100516040526117a06101e0611070565b6101e0516101c052600060ff905b806101e0526101c05162093a808101818110611f1b57905042808281188284100218905090506101c0526060516080516101c05161010051808203828111611f1b579050905080607f1c611f1b5780820280600f0b8118611f1b579050905080820380600f0b8118611f1b57905090506060526080516004306020526000526040600020806101c051602052600052604060002090505480820180600f0b8118611f1b579050905060805260605180600081188260001302189050606052608051806000811882600013021890506080526101c051610100526101c05160a052610180516101a0516101c05161016051808203828111611f1b5790509050808202811583838304141715611f1b5790509050670de0b6b3a764000081049050808201828110611f1b579050905060c05260e05160018101818110611f1b57905060e052426101c05110611908574360c05261195156611946565b60033060205260005260406000208060e051602052600052604060002090506060518155608051600182015560a051600282015560c0516003820155505b6001018181186117ae575b505060e0516002306020526000526040600020556060518152608051602082015260a051604082015260c051606082015250565b61010036610420376103805115611a155761038051610120526103a051610140526103c051610160526103e05161018052610400516101a0526119c96105206111f3565b6105208051610420526020810151610440526040810151610460526060810151610480526080810180516104a05260208101516104c05260408101516104e05260608101516105005250505b611a206105a061169f565b6105a0805161052052602081015161054052604081015161056052606081015161058052506103805115611add57610540516104c0516104405180820380600f0b8118611f1b579050905080820180600f0b8118611f1b579050905061054052610520516104a0516104205180820380600f0b8118611f1b579050905080820180600f0b8118611f1b5790509050610520526105405180600081188260001302189050610540526105205180600081188260001302189050610520525b6002306020526000526040600020546105a0526003306020526000526040600020806105a0516020526000526040600020905061052051815561054051600182015561056051600282015561058051600382015550565b600060a05260805160c05260006080905b8060e05260c05160a05110611b5957611be2565b60a05160c051808201828110611f1b579050905060018101818110611f1b5790508060011c90506101005260605160036040516020526000526040600020806101005160205260005260406000209050600381019050541115611bcf576101005160018103818111611f1b57905060c052611bd7565b6101005160a0525b600101818118611b45575b505060a051815250565b600060a05260805160c05260006080905b8060e05260c05160a05110611c1157611c9a565b60a05160c051808201828110611f1b579050905060018101818110611f1b5790508060011c90506101005260605160036040516020526000526040600020806101005160205260005260406000209050600281019050541115611c87576101005160018103818111611f1b57905060c052611c8f565b6101005160a0525b600101818118611bfd575b505060a051815250565b6080516101205260a0516101405260c0516101605260e0516101805261016051604052611cd26101c0611070565b6101c0516101a052600061020a905b806101c0526101a05162093a808101818110611f1b5790506101a05260006101e052610100516101a05111611d3c5760046060516020526000526040600020806101a05160205260005260406000209050546101e052611d45565b610100516101a0525b61012051610140516101a05161016051808203828111611f1b579050905080607f1c611f1b5780820280600f0b8118611f1b579050905080820380600f0b8118611f1b579050905061012052610100516101a05118611da357611dd3565b610140516101e05180820180600f0b8118611f1b5790509050610140526101a05161016052600101818118611ce1575b505061012051806000811882600013021890506101205261012051815261014051602082015261016051604082015261018051606082015250565b6002610200516020526000526040600020546102405261024051611e36576000815250611f19565b426102205114611e6957610200516040526102205160605261024051608052611e60610260611bec565b61026051610240525b600361020051602052600052604060002080610240516020526000526040600020905080546102605260018101546102805260028101546102a05260038101546102c0525061020051606052610260516080526102805160a0526102a05160c0526102c05160e0526102205161010052611ee46102e0611ca4565b6102e080516102605260208101516102805260408101516102a05260608101516102c052506102605160008112611f1b578152505b565b600080fda165767970657283000307000b005b600080fd0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e000000000000000000000000b287a1964aee422911c7b8409f5e5a273c1412fa
Deployed Bytecode
0x6003361161000c5761106a565b60003560e01c34611f1b5763a7afdcae81186100915760243610611f1b576004358060a01c611f1b5760405260026040516020526000526040600020546060526003604051602052600052604060002080606051602052600052604060002090508054608052600181015460a052600281015460c052600381015460e0525060806080f35b63c2c4c5c181186100b55760043610611f1b5760a036610380376100b3611985565b005b63622b6d9681186100d25760443610611f1b5733610620526100f5565b6314557b8c81186103c85760643610611f1b576044358060a01c611f1b57610620525b6001610620516020526000526040600020805461064052600181015461066052506106405161068052610660516106a05261068051600435808201828110611f1b57905090506106805260006106c0526106205133186102065760243515610206576024356040526101686106e0611070565b6106e0516106c0526102096106c051426040526101866106e0611070565b6106e051808203828111611f1b579050905062093a808104905011611f1b57426106c0511115611f1b5763077f87ff6106c05142808203828111611f1b579050905011156101ee574263077f88008101818110611f1b5790506106c0511115611f1b576101fd565b610660516106c0511115611f1b575b6106c0516106a0525b6106405161021857610660511561021b565b60005b61022f5742610660511115611f1b57610254565b610620513318611f1b57670de0b6b3a764000060043510611f1b576106c05115611f1b575b6000546106e0526106e051600435808201828110611f1b579050905060005560016106205160205260005260406000206106805181556106a0516001820155506106205161038052610640516103a052610660516103c052610680516103e0526106a051610400526102c4611985565b60043515610333576020611f2d6000396000516323b872dd6107005233610720523061074052600435610760526020610700606461071c6000855af161030f573d600060003e3d6000fd5b60203d10611f1b57610700518060011c611f1b576107805261078090505115611f1b575b7f21e69d6eb75b6c23bbc769d20f147b2d4bd10ffdaef330c7bf634c2686302fa76106e051610700526106e051600435808201828110611f1b57905090506107205242610740526060610700a161062051337f01affbd18fb24fa23763acc978a6bb9b9cd159b1cc733a15f3ea571d691cabc161068051610700526106a0516107205242610740526060610700a36040610680f35b633ccfd60b81186107625760043610611f1b576001336020526000526040600020805461062052600181015461064052506106205115611f1b5760403661066037426106405111156104b6576106405142808203828111611f1b579050905063077f880081811863077f88008310021890506106605261066051670de0b6b3a7640000810281670de0b6b3a7640000820418611f1b57905063077f880081049050670a688906bd8b0000818118670a688906bd8b00008310021890506106a052610620516106a051808202811583838304141715611f1b5790509050670de0b6b3a764000081049050610680525b6040366106a03760013360205260005260406000206106a05181556106c0516001820155506000546106e0526106e05161062051808203828111611f1b57905090506000553361038052610620516103a052610640516103c0526106a0516103e0526106c05161040052610528611985565b6020611f2d60003960005163a9059cbb6107005233610720526106205161068051808203828111611f1b5790509050610740526020610700604461071c6000855af1610579573d600060003e3d6000fd5b60203d10611f1b57610700518060011c611f1b576107605261076090505115611f1b5761068051156106a4576020611f2d60003960005163095ea7b3610700526020611f4d6000396000516107205261068051610740526020610700604461071c6000855af16105ee573d600060003e3d6000fd5b60203d10611f1b57610700518060011c611f1b576107605261076090505115611f1b576020611f4d6000396000516342966c686107005261068051610720526020610700602461071c6000855af161064b573d600060003e3d6000fd5b60203d10611f1b57610700518060011c611f1b576107405261074090505115611f1b57337fc25dcb745945a227e2139cc3f70645f2b61a352fe9e7f8d44ac19571f4b89eff610680516107005242610720526040610700a25b337ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5686106205161068051808203828111611f1b57905090506107005242610720526040610700a27f21e69d6eb75b6c23bbc769d20f147b2d4bd10ffdaef330c7bf634c2686302fa76106e051610700526106e05161062051808203828111611f1b57905090506107205242610740526060610700a16106205161068051808203828111611f1b57905090506107005261068051610720526040610700f35b63b5418e3f81186107b85760443610611f1b576004358060a01c611f1b57610120526020610120516040526024356060526002610120516020526000526040600020546080526107b3610140611bec565b610140f35b6370a0823181186107d55760243610611f1b5742610380526107ef565b62fdd58e81186108205760443610611f1b57602435610380525b6004358060a01c611f1b576103605260206103605161020052610380516102205261081b6103a0611e0e565b6103a0f35b63782d6fe18118610ae95760443610611f1b576004358060a01c611f1b57610200524360243511611f1b57600261020051602052600052604060002054610220526102005160405260243560605261022051608052610880610240611b34565b6102405161022052600361020051602052600052604060002080610220516020526000526040600020905080546102405260018101546102605260028101546102805260038101546102a052506002306020526000526040600020546102c052306040526024356060526102c0516080526108fc610300611b34565b610300516102e0526003306020526000526040600020806102e0516020526000526040600020905080546103005260018101546103205260028101546103405260038101546103605250604036610380376102c0516102e0511061098d574361036051808203828111611f1b5790509050610380524261034051808203828111611f1b57905090506103a052610a11565b6003306020526000526040600020806102e05160018101818110611f1b5790506020526000526040600020905080546103c05260018101546103e052600281015461040052600381015461042052506104205161036051808203828111611f1b5790509050610380526104005161034051808203828111611f1b57905090506103a0525b610340516103c0526103805115610a77576103c0516103a05160243561036051808203828111611f1b5790509050808202811583838304141715611f1b5790509050610380518015611f1b5780820490509050808201828110611f1b57905090506103c0525b61020051606052610240516080526102605160a0526102805160c0526102a05160e0526103c05161010052610aad6103e0611ca4565b6103e080516102405260208101516102605260408101516102805260608101516102a052506102405160008112611f1b576103e05260206103e0f35b6318160ddd8118610b065760043610611f1b574261036052610b21565b63bd85b0398118610b405760243610611f1b57600435610360525b602030610200526103605161022052610b3b610380611e0e565b610380f35b63981b24d08118610d9b5760243610611f1b574360043511611f1b57600230602052600052604060002054610200523060405260043560605261020051608052610b8b610240611b34565b6102405161022052600330602052600052604060002080610220516020526000526040600020905080546102405260018101546102605260028101546102805260038101546102a0525060006102c052610200516102205110610c5757436102a05114610d1a576004356102a051808203828111611f1b57905090504261028051808203828111611f1b5790509050808202811583838304141715611f1b5790509050436102a051808203828111611f1b57905090508015611f1b57808204905090506102c052610d1a565b6003306020526000526040600020806102205160018101818110611f1b5790506020526000526040600020905080546102e05260018101546103005260028101546103205260038101546103405250610340516102a05114610d1a576004356102a051808203828111611f1b57905090506103205161028051808203828111611f1b5790509050808202811583838304141715611f1b5790509050610340516102a051808203828111611f1b57905090508015611f1b57808204905090506102c0525b30606052610240516080526102605160a0526102805160c0526102a05160e052610280516102c051808201828110611f1b579050905061010052610d5f6102e0611ca4565b6102e080516102405260208101516102605260408101516102805260608101516102a052506102405160008112611f1b576102e05260206102e0f35b63fc0c546a8118610dc25760043610611f1b576020611f2d60003960005160405260206040f35b6316bfdd568118610de95760043610611f1b576020611f4d60003960005160405260206040f35b6306fdde038118610e715760043610611f1b57602080608052600a6040527f566f74696e67205946490000000000000000000000000000000000000000000060605260408160800181518082526020830160208301815181525050508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f35b6395d89b418118610ef95760043610611f1b5760208060805260056040527f766559464900000000000000000000000000000000000000000000000000000060605260408160800181518082526020830160208301815181525050508051806020830101601f82600003163682375050601f19601f8251602001011690509050810190506080f35b63313ce5678118610f175760043610611f1b57601260405260206040f35b63047fc9aa8118610f365760043610611f1b5760005460405260206040f35b63cbf9fe5f8118610f7b5760243610611f1b576004358060a01c611f1b5760405260016040516020526000526040600020805460605260018101546080525060406060f35b638b810c368118610fb65760243610611f1b576004358060a01c611f1b57604052600260405160205260005260406000205460605260206060f35b63613a6bea811861101c5760443610611f1b576004358060a01c611f1b5760405260036040516020526000526040600020806024356020526000526040600020905080546060526001810154608052600281015460a052600381015460c0525060806060f35b63bfa7fa8981186110685760443610611f1b576004358060a01c611f1b576040526004604051602052600052604060002080602435602052600052604060002090505460605260206060f35b505b60006000fd5b60405162093a808104905062093a8081028162093a80820418611f1b579050815250565b6040366080374260c0524360e052604051156111435760405163077f88008104905080607f1c611f1b57610100524263077f88008101818110611f1b5790506060511161112357426060511115611143576101005160a0526101005160605142808203828111611f1b579050905080607f1c611f1b5780820280600f0b8118611f1b5790509050608052611143565b600060a0526101005163077f8800810280600f0b8118611f1b5790506080525b608051815260a051602082015260c051604082015260e051606082015250565b60403660a0376060511561119b574263077f88008101818110611f1b57905060405261118f60e0611070565b60e0516080511161119e565b60005b156111e35760805163077f88008103818111611f1b5790506040526111c4610100611070565b6101005160c05260605163077f88008104905080607f1c611f1b5760a0525b60a051815260c051602082015250565b610140516040526101605160605261120c610240611094565b61024080516101c05260208101516101e05260408101516102005260608101516102205250610180516040526101a05160605261124a6102c0611094565b6102c080516102405260208101516102605260408101516102805260608101516102a052506101405160605261016051608052611288610300611163565b61030080516102c05260208101516102e05250610180516060526101a0516080526112b4610340611163565b610340805161030052602081015161032052506101e051156112db574261016051116112de565b60005b1561135b57600430602052600052604060002080610160516020526000526040600020905080546101e05180820180600f0b8118611f1b5790509050815550600461012051602052600052604060002080610160516020526000526040600020905080546101e05180820180600f0b8118611f1b57905090508155505b610260511561136f57426101a05111611372565b60005b156113ef576004306020526000526040600020806101a0516020526000526040600020905080546102605180820380600f0b8118611f1b57905090508155506004610120516020526000526040600020806101a0516020526000526040600020905080546102605180820380600f0b8118611f1b57905090508155505b6102c051156114e7576004306020526000526040600020806102e0516020526000526040600020905080546102c05180820380600f0b8118611f1b57905090508155506004610120516020526000526040600020806102e0516020526000526040600020905080546102c05180820380600f0b8118611f1b5790509050815550600430602052600052604060002080610160516020526000526040600020905080546102c05180820180600f0b8118611f1b5790509050815550600461012051602052600052604060002080610160516020526000526040600020905080546102c05180820180600f0b8118611f1b57905090508155505b61030051156115df57600430602052600052604060002080610320516020526000526040600020905080546103005180820180600f0b8118611f1b5790509050815550600461012051602052600052604060002080610320516020526000526040600020905080546103005180820180600f0b8118611f1b57905090508155506004306020526000526040600020806101a0516020526000526040600020905080546103005180820380600f0b8118611f1b57905090508155506004610120516020526000526040600020806101a0516020526000526040600020905080546103005180820380600f0b8118611f1b57905090508155505b6002610120516020526000526040600020805460018101818110611f1b579050815550600361012051602052600052604060002080600261012051602052600052604060002054602052600052604060002090506102405181556102605160018201556102805160028201556102a0516003820155506101c05181526101e0516020820152610200516040820152610220516060820152608081016102405181526102605160208201526102805160408201526102a05160608201525050565b6040366060374260a0524360c05260023060205260005260406000205460e05260e051156117055760033060205260005260406000208060e0516020526000526040600020905080546060526001810154608052600281015460a052600381015460c052505b60a05161010052606051610120526080516101405260a0516101605260c0516101805260006101a0526101005142111561178e574360c051808203828111611f1b5790509050670de0b6b3a7640000810281670de0b6b3a7640000820418611f1b5790504261010051808203828111611f1b57905090508015611f1b57808204905090506101a0525b610100516040526117a06101e0611070565b6101e0516101c052600060ff905b806101e0526101c05162093a808101818110611f1b57905042808281188284100218905090506101c0526060516080516101c05161010051808203828111611f1b579050905080607f1c611f1b5780820280600f0b8118611f1b579050905080820380600f0b8118611f1b57905090506060526080516004306020526000526040600020806101c051602052600052604060002090505480820180600f0b8118611f1b579050905060805260605180600081188260001302189050606052608051806000811882600013021890506080526101c051610100526101c05160a052610180516101a0516101c05161016051808203828111611f1b5790509050808202811583838304141715611f1b5790509050670de0b6b3a764000081049050808201828110611f1b579050905060c05260e05160018101818110611f1b57905060e052426101c05110611908574360c05261195156611946565b60033060205260005260406000208060e051602052600052604060002090506060518155608051600182015560a051600282015560c0516003820155505b6001018181186117ae575b505060e0516002306020526000526040600020556060518152608051602082015260a051604082015260c051606082015250565b61010036610420376103805115611a155761038051610120526103a051610140526103c051610160526103e05161018052610400516101a0526119c96105206111f3565b6105208051610420526020810151610440526040810151610460526060810151610480526080810180516104a05260208101516104c05260408101516104e05260608101516105005250505b611a206105a061169f565b6105a0805161052052602081015161054052604081015161056052606081015161058052506103805115611add57610540516104c0516104405180820380600f0b8118611f1b579050905080820180600f0b8118611f1b579050905061054052610520516104a0516104205180820380600f0b8118611f1b579050905080820180600f0b8118611f1b5790509050610520526105405180600081188260001302189050610540526105205180600081188260001302189050610520525b6002306020526000526040600020546105a0526003306020526000526040600020806105a0516020526000526040600020905061052051815561054051600182015561056051600282015561058051600382015550565b600060a05260805160c05260006080905b8060e05260c05160a05110611b5957611be2565b60a05160c051808201828110611f1b579050905060018101818110611f1b5790508060011c90506101005260605160036040516020526000526040600020806101005160205260005260406000209050600381019050541115611bcf576101005160018103818111611f1b57905060c052611bd7565b6101005160a0525b600101818118611b45575b505060a051815250565b600060a05260805160c05260006080905b8060e05260c05160a05110611c1157611c9a565b60a05160c051808201828110611f1b579050905060018101818110611f1b5790508060011c90506101005260605160036040516020526000526040600020806101005160205260005260406000209050600281019050541115611c87576101005160018103818111611f1b57905060c052611c8f565b6101005160a0525b600101818118611bfd575b505060a051815250565b6080516101205260a0516101405260c0516101605260e0516101805261016051604052611cd26101c0611070565b6101c0516101a052600061020a905b806101c0526101a05162093a808101818110611f1b5790506101a05260006101e052610100516101a05111611d3c5760046060516020526000526040600020806101a05160205260005260406000209050546101e052611d45565b610100516101a0525b61012051610140516101a05161016051808203828111611f1b579050905080607f1c611f1b5780820280600f0b8118611f1b579050905080820380600f0b8118611f1b579050905061012052610100516101a05118611da357611dd3565b610140516101e05180820180600f0b8118611f1b5790509050610140526101a05161016052600101818118611ce1575b505061012051806000811882600013021890506101205261012051815261014051602082015261016051604082015261018051606082015250565b6002610200516020526000526040600020546102405261024051611e36576000815250611f19565b426102205114611e6957610200516040526102205160605261024051608052611e60610260611bec565b61026051610240525b600361020051602052600052604060002080610240516020526000526040600020905080546102605260018101546102805260028101546102a05260038101546102c0525061020051606052610260516080526102805160a0526102a05160c0526102c05160e0526102205161010052611ee46102e0611ca4565b6102e080516102605260208101516102805260408101516102a05260608101516102c052506102605160008112611f1b578152505b565b600080fda165767970657283000307000b0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e000000000000000000000000b287a1964aee422911c7b8409f5e5a273c1412fa
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e000000000000000000000000b287a1964aee422911c7b8409f5e5a273c1412fa
-----Decoded View---------------
Arg [0] : token (address): 0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e
Arg [1] : reward_pool (address): 0xb287a1964AEE422911c7b8409f5E5A273c1412fA
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e
Arg [1] : 000000000000000000000000b287a1964aee422911c7b8409f5e5a273c1412fa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $13,446.31 | 1,688.7334 | $22,707,232.99 |
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.