Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 390 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Increase_unlock_... | 22827310 | 6 days ago | IN | 0 ETH | 0.00030746 | ||||
Increase_amount | 22783039 | 13 days ago | IN | 0 ETH | 0.00073925 | ||||
Increase_unlock_... | 22783027 | 13 days ago | IN | 0 ETH | 0.00084738 | ||||
Increase_unlock_... | 22783024 | 13 days ago | IN | 0 ETH | 0.00084943 | ||||
Create_lock | 22748364 | 17 days ago | IN | 0 ETH | 0.0005741 | ||||
Increase_unlock_... | 22078438 | 111 days ago | IN | 0 ETH | 0.00010102 | ||||
Increase_amount | 22078434 | 111 days ago | IN | 0 ETH | 0.00011036 | ||||
Increase_amount | 22072729 | 112 days ago | IN | 0 ETH | 0.00011308 | ||||
Increase_amount | 22072708 | 112 days ago | IN | 0 ETH | 0.00011604 | ||||
Create_lock | 22036379 | 117 days ago | IN | 0 ETH | 0.00022166 | ||||
Withdraw | 21986750 | 124 days ago | IN | 0 ETH | 0.00029889 | ||||
Increase_unlock_... | 21901886 | 136 days ago | IN | 0 ETH | 0.00022399 | ||||
Increase_unlock_... | 21852193 | 143 days ago | IN | 0 ETH | 0.00057038 | ||||
Create_lock | 21605143 | 177 days ago | IN | 0 ETH | 0.00172528 | ||||
Withdraw | 21492024 | 193 days ago | IN | 0 ETH | 0.001358 | ||||
Withdraw | 21446684 | 199 days ago | IN | 0 ETH | 0.00258072 | ||||
Withdraw | 21436719 | 201 days ago | IN | 0 ETH | 0.00427802 | ||||
Withdraw | 21412683 | 204 days ago | IN | 0 ETH | 0.00250906 | ||||
Increase_amount | 21399984 | 206 days ago | IN | 0 ETH | 0.00238144 | ||||
Increase_amount | 21399874 | 206 days ago | IN | 0 ETH | 0.00390656 | ||||
Withdraw | 21313925 | 218 days ago | IN | 0 ETH | 0.00372357 | ||||
Withdraw | 21256106 | 226 days ago | IN | 0 ETH | 0.00269476 | ||||
Increase_amount | 21147171 | 241 days ago | IN | 0 ETH | 0.0023024 | ||||
Create_lock | 21139864 | 242 days ago | IN | 0 ETH | 0.00556182 | ||||
Increase_amount | 21134468 | 243 days ago | IN | 0 ETH | 0.00390225 |
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.0
Contract Source Code (Vyper language format)
# @version 0.3.0 """ @title Moondao Stake to Vote @fork Curve 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 Vote weight decays linearly over time. Lock time cannot be more than `MAXTIME` (4 years). """ # Voting escrow to have time-weighted votes # Votes have a weight depending on time, so that users are committed # to the future of (whatever they are voting for). # The weight in this implementation is linear, and lock cannot be more than maxtime: # w ^ # 1 + / # | / # | / # | / # |/ # 0 +--------+------> time # maxtime (4 years?) struct Point: bias: int128 slope: int128 # - dweight / dt ts: uint256 blk: uint256 # block # We cannot really do block numbers per se b/c slope is per time, not per block # and per block could be fairly bad b/c Ethereum changes blocktimes. # What we can do is to extrapolate ***At functions struct LockedBalance: amount: int128 end: uint256 interface ERC20: def decimals() -> uint256: view def name() -> String[64]: view def symbol() -> String[32]: view def transfer(to: address, amount: uint256) -> bool: nonpayable def transferFrom(spender: address, to: address, amount: uint256) -> bool: nonpayable # Interface for checking whether address belongs to a whitelisted # type of a smart wallet. # When new types are added - the whole contract is changed # The check() method is modifying to be able to use caching # for individual wallet addresses interface SmartWalletChecker: def check(addr: address) -> bool: nonpayable DEPOSIT_FOR_TYPE: constant(int128) = 0 CREATE_LOCK_TYPE: constant(int128) = 1 INCREASE_LOCK_AMOUNT: constant(int128) = 2 INCREASE_UNLOCK_TIME: constant(int128) = 3 event CommitOwnership: admin: address event ApplyOwnership: admin: address event Deposit: provider: indexed(address) value: uint256 locktime: indexed(uint256) type: int128 ts: uint256 event Withdraw: provider: indexed(address) value: uint256 ts: uint256 event Supply: prevSupply: uint256 supply: 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 token: public(address) supply: public(uint256) locked: public(HashMap[address, LockedBalance]) epoch: public(uint256) point_history: public(Point[100000000000000000000000000000]) # epoch -> unsigned point user_point_history: public(HashMap[address, Point[1000000000]]) # user -> Point[user_epoch] user_point_epoch: public(HashMap[address, uint256]) slope_changes: public(HashMap[uint256, int128]) # time -> signed slope change # Aragon's view methods for compatibility controller: public(address) transfersEnabled: public(bool) name: public(String[64]) symbol: public(String[32]) version: public(String[32]) decimals: public(uint256) # Checker for whitelisted (smart contract) wallets which are allowed to deposit # The goal is to prevent tokenizing the escrow future_smart_wallet_checker: public(address) smart_wallet_checker: public(address) admin: public(address) # Can and will be a smart contract future_admin: public(address) @external def __init__(token_addr: address, _name: String[64], _symbol: String[32], _version: String[32]): """ @notice Contract constructor @param token_addr `ERC20CRV` token address @param _name Token name @param _symbol Token symbol @param _version Contract version - required for Aragon compatibility """ self.admin = msg.sender self.token = token_addr self.point_history[0].blk = block.number self.point_history[0].ts = block.timestamp self.controller = msg.sender self.transfersEnabled = True _decimals: uint256 = ERC20(token_addr).decimals() assert _decimals <= 255 self.decimals = _decimals self.name = _name self.symbol = _symbol self.version = _version @external def commit_transfer_ownership(addr: address): """ @notice Transfer ownership of VotingEscrow contract 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 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 commit_smart_wallet_checker(addr: address): """ @notice Set an external contract to check for approved smart contract wallets @param addr Address of Smart contract checker """ assert msg.sender == self.admin self.future_smart_wallet_checker = addr @external def apply_smart_wallet_checker(): """ @notice Apply setting external contract to check approved smart contract wallets """ assert msg.sender == self.admin self.smart_wallet_checker = self.future_smart_wallet_checker @internal def assert_not_contract(addr: address): """ @notice Check if the call is from a whitelisted smart contract, revert if not @param addr Address to be checked """ if addr != tx.origin: checker: address = self.smart_wallet_checker if checker != ZERO_ADDRESS: if SmartWalletChecker(checker).check(addr): return raise "Smart contract depositors not allowed" @external @view def get_last_user_slope(addr: address) -> int128: """ @notice Get the most recently recorded rate of voting power decrease for `addr` @param addr Address of the user wallet @return Value of the slope """ uepoch: uint256 = self.user_point_epoch[addr] return self.user_point_history[addr][uepoch].slope @external @view def user_point_history__ts(_addr: address, _idx: uint256) -> uint256: """ @notice Get the timestamp for checkpoint `_idx` for `_addr` @param _addr User wallet address @param _idx User epoch number @return Epoch time of the checkpoint """ return self.user_point_history[_addr][_idx].ts @external @view def locked__end(_addr: address) -> uint256: """ @notice Get timestamp when `_addr`'s lock finishes @param _addr User wallet @return Epoch time of the lock end """ return self.locked[_addr].end @internal def _checkpoint(addr: address, 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.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.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.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.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.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.point_history[_epoch] = last_point self.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.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.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.slope_changes[new_locked.end] = new_dslope # else: we recorded it already in old_dslope # Now handle user history user_epoch: uint256 = self.user_point_epoch[addr] + 1 self.user_point_epoch[addr] = user_epoch u_new.ts = block.timestamp u_new.blk = block.number self.user_point_history[addr][user_epoch] = u_new @internal def _deposit_for(_addr: address, _value: uint256, unlock_time: uint256, locked_balance: LockedBalance, type: int128): """ @notice Deposit and lock tokens for a user @param _addr User's wallet address @param _value Amount to deposit @param unlock_time New time when to unlock the tokens, or 0 if unchanged @param locked_balance Previous locked amount / timestamp """ _locked: LockedBalance = locked_balance supply_before: uint256 = self.supply self.supply = supply_before + _value old_locked: LockedBalance = _locked # Adding to existing lock, or if a lock is expired - creating a new one _locked.amount += convert(_value, int128) if unlock_time != 0: _locked.end = unlock_time self.locked[_addr] = _locked # Possibilities: # Both old_locked.end could be current or expired (>/< block.timestamp) # value == 0 (extend lock) or value > 0 (add to lock or extend lock) # _locked.end > block.timestamp (always) self._checkpoint(_addr, old_locked, _locked) if _value != 0: assert ERC20(self.token).transferFrom(_addr, self, _value) log Deposit(_addr, _value, _locked.end, type, block.timestamp) log Supply(supply_before, supply_before + _value) @external def checkpoint(): """ @notice Record global data to checkpoint """ self._checkpoint(ZERO_ADDRESS, empty(LockedBalance), empty(LockedBalance)) @external @nonreentrant('lock') def deposit_for(_addr: address, _value: uint256): """ @notice Deposit `_value` tokens for `_addr` and add to the lock @dev Anyone (even a smart contract) can deposit for someone else, but cannot extend their locktime and deposit for a brand new user @param _addr User's wallet address @param _value Amount to add to user's lock """ _locked: LockedBalance = self.locked[_addr] assert _value > 0 # dev: need non-zero value assert _locked.amount > 0, "No existing lock found" assert _locked.end > block.timestamp, "Cannot add to expired lock. Withdraw" self._deposit_for(_addr, _value, 0, self.locked[_addr], DEPOSIT_FOR_TYPE) @external @nonreentrant('lock') def create_lock(_value: uint256, _unlock_time: uint256): """ @notice Deposit `_value` tokens for `msg.sender` and lock until `_unlock_time` @param _value Amount to deposit @param _unlock_time Epoch time when tokens unlock, rounded down to whole weeks """ self.assert_not_contract(msg.sender) unlock_time: uint256 = (_unlock_time / WEEK) * WEEK # Locktime is rounded down to weeks _locked: LockedBalance = self.locked[msg.sender] assert _value > 0 # dev: need non-zero value assert _locked.amount == 0, "Withdraw old tokens first" assert unlock_time > block.timestamp, "Can only lock until time in the future" assert unlock_time <= block.timestamp + MAXTIME, "Voting lock can be 4 years max" self._deposit_for(msg.sender, _value, unlock_time, _locked, CREATE_LOCK_TYPE) @external @nonreentrant('lock') def increase_amount(_value: uint256): """ @notice Deposit `_value` additional tokens for `msg.sender` without modifying the unlock time @param _value Amount of tokens to deposit and add to the lock """ self.assert_not_contract(msg.sender) _locked: LockedBalance = self.locked[msg.sender] assert _value > 0 # dev: need non-zero value assert _locked.amount > 0, "No existing lock found" assert _locked.end > block.timestamp, "Cannot add to expired lock. Withdraw" self._deposit_for(msg.sender, _value, 0, _locked, INCREASE_LOCK_AMOUNT) @external @nonreentrant('lock') def increase_unlock_time(_unlock_time: uint256): """ @notice Extend the unlock time for `msg.sender` to `_unlock_time` @param _unlock_time New epoch time for unlocking """ self.assert_not_contract(msg.sender) _locked: LockedBalance = self.locked[msg.sender] unlock_time: uint256 = (_unlock_time / WEEK) * WEEK # Locktime is rounded down to weeks assert _locked.end > block.timestamp, "Lock expired" assert _locked.amount > 0, "Nothing is locked" assert unlock_time > _locked.end, "Can only increase lock duration" assert unlock_time <= block.timestamp + MAXTIME, "Voting lock can be 4 years max" self._deposit_for(msg.sender, 0, unlock_time, _locked, INCREASE_UNLOCK_TIME) @external @nonreentrant('lock') def withdraw(): """ @notice Withdraw all tokens for `msg.sender` @dev Only possible if the lock has expired """ _locked: LockedBalance = self.locked[msg.sender] assert block.timestamp >= _locked.end, "The lock didn't expire" value: uint256 = convert(_locked.amount, uint256) old_locked: LockedBalance = _locked _locked.end = 0 _locked.amount = 0 self.locked[msg.sender] = _locked supply_before: uint256 = self.supply self.supply = supply_before - value # old_locked can have either expired <= timestamp or zero end # _locked has only 0 end # Both can have >= 0 amount self._checkpoint(msg.sender, old_locked, _locked) assert ERC20(self.token).transfer(msg.sender, value) log Withdraw(msg.sender, value, block.timestamp) log Supply(supply_before, supply_before - value) # The following ERC20/minime-compatible methods are not real balanceOf and supply! # They measure the weights for the purpose of voting, so they don't represent # real coins. @internal @view def find_block_epoch(_block: uint256, max_epoch: uint256) -> uint256: """ @notice Binary search to estimate timestamp for block number @param _block Block to find @param max_epoch Don't go beyond this epoch @return Approximate timestamp for block """ # Binary search _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[_mid].blk <= _block: _min = _mid else: _max = _mid - 1 return _min @external @view def balanceOf(addr: address, _t: uint256 = block.timestamp) -> uint256: """ @notice Get the current voting power for `msg.sender` @dev Adheres to the ERC20 `balanceOf` interface for Aragon compatibility @param addr User wallet address @param _t Epoch time to return voting power at @return User voting power """ _epoch: uint256 = self.user_point_epoch[addr] if _epoch == 0: return 0 else: last_point: Point = self.user_point_history[addr][_epoch] last_point.bias -= last_point.slope * convert(_t - last_point.ts, int128) if last_point.bias < 0: last_point.bias = 0 return convert(last_point.bias, uint256) @external @view def balanceOfAt(addr: address, _block: uint256) -> uint256: """ @notice Measure voting power of `addr` at block height `_block` @dev Adheres to MiniMe `balanceOfAt` interface: https://github.com/Giveth/minime @param addr User's wallet address @param _block Block to calculate the voting power at @return Voting power """ # Copying and pasting totalSupply code because Vyper cannot pass by # reference yet assert _block <= block.number # Binary search _min: uint256 = 0 _max: uint256 = self.user_point_epoch[addr] 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.user_point_history[addr][_mid].blk <= _block: _min = _mid else: _max = _mid - 1 upoint: Point = self.user_point_history[addr][_min] max_epoch: uint256 = self.epoch _epoch: uint256 = self.find_block_epoch(_block, max_epoch) point_0: Point = self.point_history[_epoch] d_block: uint256 = 0 d_t: uint256 = 0 if _epoch < max_epoch: point_1: Point = self.point_history[_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 * (_block - point_0.blk) / d_block upoint.bias -= upoint.slope * convert(block_time - upoint.ts, int128) if upoint.bias >= 0: return convert(upoint.bias, uint256) else: return 0 @internal @view def 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.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 totalSupply(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.epoch last_point: Point = self.point_history[_epoch] return self.supply_at(last_point, t) @external @view def totalSupplyAt(_block: uint256) -> uint256: """ @notice Calculate total voting power at some point in the past @param _block Block to calculate the total voting power at @return Total voting power at `_block` """ assert _block <= block.number _epoch: uint256 = self.epoch target_epoch: uint256 = self.find_block_epoch(_block, _epoch) point: Point = self.point_history[target_epoch] dt: uint256 = 0 if target_epoch < _epoch: point_next: Point = self.point_history[target_epoch + 1] if point.blk != point_next.blk: dt = (_block - point.blk) * (point_next.ts - point.ts) / (point_next.blk - point.blk) else: if point.blk != block.number: dt = (_block - point.blk) * (block.timestamp - point.ts) / (block.number - point.blk) # Now dt contains info on how far are we beyond point return self.supply_at(point, point.ts + dt) # Dummy methods for compatibility with Aragon @external def changeController(_newController: address): """ @dev Dummy method required for Aragon compatibility """ assert msg.sender == self.controller self.controller = _newController
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"name":"CommitOwnership","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyOwnership","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"Deposit","inputs":[{"name":"provider","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false},{"name":"locktime","type":"uint256","indexed":true},{"name":"type","type":"int128","indexed":false},{"name":"ts","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Withdraw","inputs":[{"name":"provider","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false},{"name":"ts","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Supply","inputs":[{"name":"prevSupply","type":"uint256","indexed":false},{"name":"supply","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"token_addr","type":"address"},{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_version","type":"string"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"addr","type":"address"}],"outputs":[],"gas":39482},{"stateMutability":"nonpayable","type":"function","name":"apply_transfer_ownership","inputs":[],"outputs":[],"gas":41564},{"stateMutability":"nonpayable","type":"function","name":"commit_smart_wallet_checker","inputs":[{"name":"addr","type":"address"}],"outputs":[],"gas":37702},{"stateMutability":"nonpayable","type":"function","name":"apply_smart_wallet_checker","inputs":[],"outputs":[],"gas":39672},{"stateMutability":"view","type":"function","name":"get_last_user_slope","inputs":[{"name":"addr","type":"address"}],"outputs":[{"name":"","type":"int128"}],"gas":5196},{"stateMutability":"view","type":"function","name":"user_point_history__ts","inputs":[{"name":"_addr","type":"address"},{"name":"_idx","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":2999},{"stateMutability":"view","type":"function","name":"locked__end","inputs":[{"name":"_addr","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":2984},{"stateMutability":"nonpayable","type":"function","name":"checkpoint","inputs":[],"outputs":[],"gas":37379957},{"stateMutability":"nonpayable","type":"function","name":"deposit_for","inputs":[{"name":"_addr","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[],"gas":37566028},{"stateMutability":"nonpayable","type":"function","name":"create_lock","inputs":[{"name":"_value","type":"uint256"},{"name":"_unlock_time","type":"uint256"}],"outputs":[],"gas":37567454},{"stateMutability":"nonpayable","type":"function","name":"increase_amount","inputs":[{"name":"_value","type":"uint256"}],"outputs":[],"gas":37566827},{"stateMutability":"nonpayable","type":"function","name":"increase_unlock_time","inputs":[{"name":"_unlock_time","type":"uint256"}],"outputs":[],"gas":37567549},{"stateMutability":"nonpayable","type":"function","name":"withdraw","inputs":[],"outputs":[],"gas":37559313},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"addr","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":12776},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"addr","type":"address"},{"name":"_t","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":12776},{"stateMutability":"view","type":"function","name":"balanceOfAt","inputs":[{"name":"addr","type":"address"},{"name":"_block","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":836014},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":941448},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[{"name":"t","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":941448},{"stateMutability":"view","type":"function","name":"totalSupplyAt","inputs":[{"name":"_block","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":1345764},{"stateMutability":"nonpayable","type":"function","name":"changeController","inputs":[{"name":"_newController","type":"address"}],"outputs":[],"gas":38152},{"stateMutability":"view","type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3066},{"stateMutability":"view","type":"function","name":"supply","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3096},{"stateMutability":"view","type":"function","name":"locked","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"amount","type":"int128"},{"name":"end","type":"uint256"}]}],"gas":5561},{"stateMutability":"view","type":"function","name":"epoch","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3156},{"stateMutability":"view","type":"function","name":"point_history","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"bias","type":"int128"},{"name":"slope","type":"int128"},{"name":"ts","type":"uint256"},{"name":"blk","type":"uint256"}]}],"gas":9630},{"stateMutability":"view","type":"function","name":"user_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"}]}],"gas":9932},{"stateMutability":"view","type":"function","name":"user_point_epoch","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}],"gas":3518},{"stateMutability":"view","type":"function","name":"slope_changes","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"int128"}],"gas":3391},{"stateMutability":"view","type":"function","name":"controller","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3306},{"stateMutability":"view","type":"function","name":"transfersEnabled","inputs":[],"outputs":[{"name":"","type":"bool"}],"gas":3336},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":13733},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":11486},{"stateMutability":"view","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string"}],"gas":11516},{"stateMutability":"view","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":3456},{"stateMutability":"view","type":"function","name":"future_smart_wallet_checker","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3486},{"stateMutability":"view","type":"function","name":"smart_wallet_checker","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3516},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3546},{"stateMutability":"view","type":"function","name":"future_admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":3576}]
Contract Creation Code
6f7fffffffffffffffffffffffffffffff604052602061277360c03960c0518060a01c61276e5780905061014052602060206127730160c03960c05161277301604060208260c03960c0511161276e578060208160c03960c051602001808261016039505050602060406127730160c03960c05161277301602060208260c03960c0511161276e578060208160c03960c05160200180826101c039505050602060606127730160c03960c05161277301602060208260c03960c0511161276e578060208160c03960c051602001808261020039505050336c050c783eb9b5c8400000000018556101405160055543600c5542600b55336c050c783eb9b5c840000000000c5560016c050c783eb9b5c840000000000d5563313ce567610260526020610260600461027c610140515afa1561276e57601f3d111561276e57610260516102405260ff610240511161276e57610240516c050c783eb9b5c840000000001555610160806c050c783eb9b5c840000000000e602082510161012060006003818352015b82610120516020021115610198576101b9565b61012051602002850151610120518501558151600101808352811415610185575b5050505050506101c0806c050c783eb9b5c8400000000011602082510161012060006002818352015b826101205160200211156101f557610216565b610120516020028501516101205185015581516001018083528114156101e2575b505050505050610200806c050c783eb9b5c8400000000013602082510161012060006002818352015b8261012051602002111561025257610273565b6101205160200285015161012051850155815160010180835281141561023f575b50505050505061275656600436101561000d5761189c565b60046000601c376f7fffffffffffffffffffffffffffffff604052600051346124d357636b441a408114156100a8576004358060a01c6124d357809050610140526c050c783eb9b5c8400000000018543314156124d357610140516c050c783eb9b5c8400000000019557f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e961014051610160526020610160a1005b636a1c05ae81141561012d576c050c783eb9b5c8400000000018543314156124d3576c050c783eb9b5c8400000000019546101405260006101405118156124d357610140516c050c783eb9b5c8400000000018557febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a118910561014051610160526020610160a1005b6357f901e2811415610176576004358060a01c6124d357809050610140526c050c783eb9b5c8400000000018543314156124d357610140516c050c783eb9b5c840000000001655005b638e5b490f8114156101b8576c050c783eb9b5c8400000000018543314156124d3576c050c783eb9b5c8400000000016546c050c783eb9b5c840000000001755005b637c74a174811415610238576004358060a01c6124d357809050610140526c050c783eb9b5c840000000000a6101405160e05260c052604060c02054610160526001600461016051633b9aca008110156124d357026c050c783eb9b5c84000000000096101405160e05260c052604060c020010154610180526020610180f35b63da020a18811415610295576004358060a01c6124d3578090506101405260026004602435633b9aca008110156124d357026c050c783eb9b5c84000000000096101405160e05260c052604060c020010154610160526020610160f35b63adc635898114156102d3576004358060a01c6124d35780905061014052600160076101405160e05260c052604060c0200154610160526020610160f35b63c2c4c5c18114156102fd57600061014052604036610160376040366101a0376102fb611979565b005b633a46273e811415610462576004358060a01c6124d3578090506106c0526000546124d357600160005560076106c05160e05260c052604060c02080546106e05260018101546107005250600060243511156124d35760006106e051136103a3576308c379a0610720526020610740526016610760527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006107805261076050606461073cfd5b426107005111610417576308c379a0610720526020610740526024610760527f43616e6e6f742061646420746f2065787069726564206c6f636b2e2057697468610780527f64726177000000000000000000000000000000000000000000000000000000006107a05261076050608461073cfd5b6106c0516104e0526024356105005260006105205260076106c05160e05260c052604060c0208054610540526001810154610560525060006105805261045b6120c0565b6000600055005b6365fc387381141561063d576001546124d357600160015533610140526104876118a2565b60243562093a808082049050905062093a808082028215828483041417156124d357809050905090506106c05260073360e05260c052604060c02080546106e05260018101546107005250600060043511156124d3576106e0511561052b576308c379a0610720526020610740526019610760527f5769746864726177206f6c6420746f6b656e73206669727374000000000000006107805261076050606461073cfd5b426106c0511161059f576308c379a0610720526020610740526026610760527f43616e206f6e6c79206c6f636b20756e74696c2074696d6520696e2074686520610780527f66757475726500000000000000000000000000000000000000000000000000006107a05261076050608461073cfd5b42630784ce0081818301106124d357808201905090506106c0511115610604576308c379a061072052602061074052601e610760527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006107805261076050606461073cfd5b336104e052600435610500526106c051610520526106e0516105405261070051610560526001610580526106366120c0565b6000600155005b634957677c811415610786576002546124d357600160025533610140526106626118a2565b60073360e05260c052604060c02080546106c05260018101546106e05250600060043511156124d35760006106c051136106db576308c379a0610700526020610720526016610740527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006107605261074050606461071cfd5b426106e0511161074f576308c379a0610700526020610720526024610740527f43616e6e6f742061646420746f2065787069726564206c6f636b2e2057697468610760527f64726177000000000000000000000000000000000000000000000000000000006107805261074050608461071cfd5b336104e052600435610500526000610520526106c051610540526106e0516105605260026105805261077f6120c0565b6000600255005b63eff7a612811415610984576003546124d357600160035533610140526107ab6118a2565b60073360e05260c052604060c02080546106c05260018101546106e0525060043562093a808082049050905062093a808082028215828483041417156124d3578090509050905061070052426106e05111610845576308c379a061072052602061074052600c610760527f4c6f636b206578706972656400000000000000000000000000000000000000006107805261076050606461073cfd5b60006106c05113610895576308c379a0610720526020610740526011610760527f4e6f7468696e67206973206c6f636b65640000000000000000000000000000006107805261076050606461073cfd5b6106e05161070051116108e7576308c379a061072052602061074052601f610760527f43616e206f6e6c7920696e637265617365206c6f636b206475726174696f6e006107805261076050606461073cfd5b42630784ce0081818301106124d3578082019050905061070051111561094c576308c379a061072052602061074052601e610760527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006107805261076050606461073cfd5b336104e05260006105005261070051610520526106c051610540526106e0516105605260036105805261097d6120c0565b6000600355005b633ccfd60b811415610b64576004546124d357600160045560073360e05260c052604060c02080546104e0526001810154610500525061050051421015610a0a576308c379a0610520526020610540526016610560527f546865206c6f636b206469646e277420657870697265000000000000000000006105805261056050606461053cfd5b6104e051600081126124d357610520526104e05161054052610500516105605260006105005260006104e05260073360e05260c052604060c0206104e0518155610500516001820155506006546105805261058051610520518082106124d357808203905090506006553361014052610540516101605261056051610180526104e0516101a052610500516101c052610aa1611979565b63a9059cbb6105a052336105c052610520516105e05260206105a060446105bc60006005545af1156124d357601f3d11156124d3576105a051156124d357337ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568610520516105a052426105c05260406105a0a27f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c610580516105a05261058051610520518082106124d357808203905090506105c05260406105a0a16000600455005b6370a08231811415610b7a574261016052610b8d565b62fdd58e811415610cbb57602435610160525b6004358060a01c6124d357809050610140526c050c783eb9b5c840000000000a6101405160e05260c052604060c020546101805261018051610bdd5760006101a05260206101a0610cb956610cb8565b600461018051633b9aca008110156124d357026c050c783eb9b5c84000000000096101405160e05260c052604060c0200180546101a05260018101546101c05260028101546101e052600381015461020052506101a080516101c051610160516101e0518082106124d3578082039050905060405181116124d35780820280607f1d8160801d14156124d3578090509050905080820380607f1d8160801d14156124d3578090509050905081525060006101a0511215610c9e5760006101a0525b6101a051600081126124d357610220526020610220610cb9565b5bf35b634ee2cd7e811415611066576004358060a01c6124d3578090506102005243602435116124d3576000610220526c050c783eb9b5c840000000000a6102005160e05260c052604060c020546102405261026060006080818352015b610240516102205110610d2857610dd2565b610220516102405181818301106124d35780820190509050600181818301106124d35780820190509050600280820490509050610280526024356003600461028051633b9aca008110156124d357026c050c783eb9b5c84000000000096102005160e05260c052604060c02001015411610da9576102805161022052610dc2565b6102805160018082106124d35780820390509050610240525b8151600101808352811415610d16575b5050600461022051633b9aca008110156124d357026c050c783eb9b5c84000000000096102005160e05260c052604060c0200180546102605260018101546102805260028101546102a05260038101546102c052506008546102e052602435610140526102e05161016052610e48610320612279565b61032051610300526004610300516c01431e0fae6d7217caa00000008110156124d35702600901805461032052600181015461034052600281015461036052600381015461038052506040366103a0376102e051610300511015610f3257600461030051600181818301106124d357808201905090506c01431e0fae6d7217caa00000008110156124d3570260090180546103e0526001810154610400526002810154610420526003810154610440525061044051610380518082106124d357808203905090506103a05261042051610360518082106124d357808203905090506103c052610f61565b43610380518082106124d357808203905090506103a05242610360518082106124d357808203905090506103c0525b610360516103e05260006103a0511815610fcf576103e080516103c051602435610380518082106124d357808203905090508082028215828483041417156124d357809050905090506103a0518080156124d35782049050905081818301106124d357808201905090508152505b6102608051610280516103e0516102a0518082106124d3578082039050905060405181116124d35780820280607f1d8160801d14156124d3578090509050905080820380607f1d8160801d14156124d35780905090509050815250600061026051126110535761026051600081126124d35761040052602061040061106456611063565b6000610400526020610400611064565b5bf35b6318160ddd81141561107c57426102c052611090565b63bd85b03981141561111a576004356102c0525b6008546102e05260046102e0516c01431e0fae6d7217caa00000008110156124d3570260090180546103005260018101546103205260028101546103405260038101546103605250610300516101405261032051610160526103405161018052610360516101a0526102c0516101c05261110b610380612349565b610380516103a05260206103a0f35b63981b24d08114156113435743600435116124d3576008546102c052600435610140526102c05161016052611150610300612279565b610300516102e05260046102e0516c01431e0fae6d7217caa00000008110156124d35702600901805461030052600181015461032052600281015461034052600381015461036052506000610380526102c0516102e051101561127d5760046102e051600181818301106124d357808201905090506c01431e0fae6d7217caa00000008110156124d3570260090180546103a05260018101546103c05260028101546103e052600381015461040052506104005161036051181561127857600435610360518082106124d357808203905090506103e051610340518082106124d357808203905090508082028215828483041417156124d3578090509050905061040051610360518082106124d357808203905090508080156124d357820490509050610380525b6112ed565b436103605118156112ec57600435610360518082106124d3578082039050905042610340518082106124d357808203905090508082028215828483041417156124d3578090509050905043610360518082106124d357808203905090508080156124d357820490509050610380525b5b610300516101405261032051610160526103405161018052610360516101a052610340516103805181818301106124d357808201905090506101c0526113346103a0612349565b6103a0516103c05260206103c0f35b633cebb82381141561138c576004358060a01c6124d357809050610140526c050c783eb9b5c840000000000c543314156124d357610140516c050c783eb9b5c840000000000c55005b63fc0c546a8114156113a657600554610140526020610140f35b63047fc9aa8114156113c057600654610140526020610140f35b63cbf9fe5f811415611406576004358060a01c6124d3578090506101405260076101405160e05260c052604060c020805461016052600181015461018052506040610160f35b63900cf0cf81141561142057600854610140526020610140f35b63d1febfb98114156114735760046004356c01431e0fae6d7217caa00000008110156124d3570260090180546101405260018101546101605260028101546101805260038101546101a052506080610140f35b6328d09d478114156114ea576004358060a01c6124d357809050610140526004602435633b9aca008110156124d357026c050c783eb9b5c84000000000096101405160e05260c052604060c0200180546101605260018101546101805260028101546101a05260038101546101c052506080610160f35b63010ae757811415611531576004358060a01c6124d357809050610140526c050c783eb9b5c840000000000a6101405160e05260c052604060c02054610160526020610160f35b6371197484811415611565576c050c783eb9b5c840000000000b60043560e05260c052604060c02054610140526020610140f35b63f77c479181141561158b576c050c783eb9b5c840000000000c54610140526020610140f35b63bef97c878114156115b1576c050c783eb9b5c840000000000d54610140526020610140f35b6306fdde0381141561166a57610140806020808252808301806c050c783eb9b5c840000000000e8082602082540161012060006003818352015b826101205160200211156115fe5761161f565b610120518501546101205160200285015281516001018083528114156115eb575b5050505050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f8201039050905090508101905080905090509050610140f35b6395d89b4181141561172357610140806020808252808301806c050c783eb9b5c84000000000118082602082540161012060006002818352015b826101205160200211156116b7576116d8565b610120518501546101205160200285015281516001018083528114156116a4575b5050505050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f8201039050905090508101905080905090509050610140f35b6354fd4d508114156117dc57610140806020808252808301806c050c783eb9b5c84000000000138082602082540161012060006002818352015b8261012051602002111561177057611791565b6101205185015461012051602002850152815160010180835281141561175d575b5050505050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f8201039050905090508101905080905090509050610140f35b63313ce567811415611802576c050c783eb9b5c840000000001554610140526020610140f35b638ff36fd1811415611828576c050c783eb9b5c840000000001654610140526020610140f35b637175d4f781141561184e576c050c783eb9b5c840000000001754610140526020610140f35b63f851a440811415611874576c050c783eb9b5c840000000001854610140526020610140f35b6317f7182a81141561189a576c050c783eb9b5c840000000001954610140526020610140f35b505b60006000fd5b32610140511815611976576c050c783eb9b5c84000000000175461016052600061016051181561190c5763c23697a861018052610140516101a0526020610180602461019c6000610160515af1156124d357601f3d11156124d357610180511561190b57611977565b5b6308c379a06101805260206101a05260256101c0527f536d61727420636f6e7472616374206465706f7369746f7273206e6f7420616c6101e0527f6c6f776564000000000000000000000000000000000000000000000000000000610200526101c050608461019cfd5b5b565b610140366101e037600854610320526000610140511815611b0457426101805111156119ab57600061016051136119ae565b60005b15611a155761016051630784ce0080820580607f1d8160801d14156124d35780905090509050610200526102005161018051428082106124d3578082039050905060405181116124d35780820280607f1d8160801d14156124d357809050905090506101e0525b426101c0511115611a2c5760006101a05113611a2f565b60005b15611a96576101a051630784ce0080820580607f1d8160801d14156124d3578090509050905061028052610280516101c051428082106124d3578082039050905060405181116124d35780820280607f1d8160801d14156124d35780905090509050610260525b6c050c783eb9b5c840000000000b6101805160e05260c052604060c020546102e05260006101c0511815611b0357610180516101c0511415611adf576102e05161030052611b02565b6c050c783eb9b5c840000000000b6101c05160e05260c052604060c02054610300525b5b5b604036610340374261038052436103a0526000610320511115611b63576004610320516c01431e0fae6d7217caa00000008110156124d3570260090180546103405260018101546103605260028101546103805260038101546103a052505b610380516103c052610340516103e052610360516104005261038051610420526103a0516104405260006104605261038051421115611bf457670de0b6b3a7640000436103a0518082106124d357808203905090508082028215828483041417156124d3578090509050905042610380518082106124d357808203905090508080156124d357820490509050610460525b6103c05162093a808082049050905062093a808082028215828483041417156124d35780905090509050610480526104a0600060ff818352015b610480805162093a8081818301106124d3578082019050905081525060006104c05242610480511115611c65574261048052611c88565b6c050c783eb9b5c840000000000b6104805160e05260c052604060c020546104c0525b610340805161036051610480516103c0518082106124d3578082039050905060405181116124d35780820280607f1d8160801d14156124d3578090509050905080820380607f1d8160801d14156124d3578090509050905081525061036080516104c05180820180607f1d8160801d14156124d357809050905090508152506000610340511215611d1a576000610340525b6000610360511215611d2d576000610360525b610480516103c0526104805161038052610440516104605161048051610420518082106124d357808203905090508082028215828483041417156124d35780905090509050670de0b6b3a76400008082049050905081818301106124d357808201905090506103a0526103208051600181818301106124d3578082019050905081525042610480511415611dc957436103a052611e1b56611e0b565b6004610320516c01431e0fae6d7217caa00000008110156124d357026009016103405181556103605160018201556103805160028201556103a0516003820155505b8151600101808352811415611c2e575b5050610320516008556000610140511815611ed7576103608051610280516102005180820380607f1d8160801d14156124d3578090509050905080820180607f1d8160801d14156124d357809050905090508152506103408051610260516101e05180820380607f1d8160801d14156124d3578090509050905080820180607f1d8160801d14156124d357809050905090508152506000610360511215611ec3576000610360525b6000610340511215611ed6576000610340525b5b6004610320516c01431e0fae6d7217caa00000008110156124d357026009016103405181556103605160018201556103805160028201556103a05160038201555060006101405118156120be5742610180511115611fa9576102e080516102005180820180607f1d8160801d14156124d35780905090509050815250610180516101c0511415611f86576102e080516102805180820380607f1d8160801d14156124d357809050905090508152505b6102e0516c050c783eb9b5c840000000000b6101805160e05260c052604060c020555b426101c051111561200a57610180516101c05111156120095761030080516102805180820380607f1d8160801d14156124d35780905090509050815250610300516c050c783eb9b5c840000000000b6101c05160e05260c052604060c020555b5b6c050c783eb9b5c840000000000a6101405160e05260c052604060c02054600181818301106124d357808201905090506104a0526104a0516c050c783eb9b5c840000000000a6101405160e05260c052604060c02055426102a052436102c05260046104a051633b9aca008110156124d357026c050c783eb9b5c84000000000096101405160e05260c052604060c020016102605181556102805160018201556102a05160028201556102c0516003820155505b565b610540516105a052610560516105c0526006546105e0526105e0516105005181818301106124d357808201905090506006556105a051610600526105c051610620526105a080516105005160405181116124d35780820180607f1d8160801d14156124d35780905090509050815250600061052051181561214457610520516105c0525b60076104e05160e05260c052604060c0206105a05181556105c0516001820155506104e05161014052610600516101605261062051610180526105a0516101a0526105c0516101c052612195611979565b60006105005118156121e8576323b872dd610640526104e051610660523061068052610500516106a0526020610640606461065c60006005545af1156124d357601f3d11156124d35761064051156124d3575b6105c0516104e0517f4566dfc29f6f11d13a418c26a02bef7c28bae749d4de47e4e6a7cddea6730d596105005161064052610580516106605242610680526060610640a37f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c6105e051610640526105e0516105005181818301106124d35780820190509050610660526040610640a1565b600061018052610160516101a0526101c060006080818352015b6101a05161018051106122a55761233e565b610180516101a05181818301106124d35780820190509050600181818301106124d357808201905090506002808204905090506101e05261014051600360046101e0516c01431e0fae6d7217caa00000008110156124d35702600901015411612315576101e0516101805261232e565b6101e05160018082106124d357808203905090506101a0525b8151600101808352811415612293575b505061018051815250565b610140516101e052610160516102005261018051610220526101a051610240526102205162093a808082049050905062093a808082028215828483041417156124d3578090509050905061026052610280600060ff818352015b610260805162093a8081818301106124d3578082019050905081525060006102a0526101c0516102605111156123e0576101c05161026052612403565b6c050c783eb9b5c840000000000b6102605160e05260c052604060c020546102a0525b6101e080516102005161026051610220518082106124d3578082039050905060405181116124d35780820280607f1d8160801d14156124d3578090509050905080820380607f1d8160801d14156124d357809050905090508152506101c051610260511415612471576124ad565b61020080516102a05180820180607f1d8160801d14156124d35780905090509050815250610260516102205281516001018083528114156123a3575b505060006101e05112156124c25760006101e0525b6101e051600081126124d357815250565b600080fd5b61027e6127560361027e60003961027e612756036000f35b600080fd00000000000000000000000020d4db1946859e2adb0e5acc2eac58047ad41395000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000124d6f6f6e44414f5374616b65546f566f746500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007764d4f4f4e45590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x600436101561000d5761189c565b60046000601c376f7fffffffffffffffffffffffffffffff604052600051346124d357636b441a408114156100a8576004358060a01c6124d357809050610140526c050c783eb9b5c8400000000018543314156124d357610140516c050c783eb9b5c8400000000019557f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e961014051610160526020610160a1005b636a1c05ae81141561012d576c050c783eb9b5c8400000000018543314156124d3576c050c783eb9b5c8400000000019546101405260006101405118156124d357610140516c050c783eb9b5c8400000000018557febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a118910561014051610160526020610160a1005b6357f901e2811415610176576004358060a01c6124d357809050610140526c050c783eb9b5c8400000000018543314156124d357610140516c050c783eb9b5c840000000001655005b638e5b490f8114156101b8576c050c783eb9b5c8400000000018543314156124d3576c050c783eb9b5c8400000000016546c050c783eb9b5c840000000001755005b637c74a174811415610238576004358060a01c6124d357809050610140526c050c783eb9b5c840000000000a6101405160e05260c052604060c02054610160526001600461016051633b9aca008110156124d357026c050c783eb9b5c84000000000096101405160e05260c052604060c020010154610180526020610180f35b63da020a18811415610295576004358060a01c6124d3578090506101405260026004602435633b9aca008110156124d357026c050c783eb9b5c84000000000096101405160e05260c052604060c020010154610160526020610160f35b63adc635898114156102d3576004358060a01c6124d35780905061014052600160076101405160e05260c052604060c0200154610160526020610160f35b63c2c4c5c18114156102fd57600061014052604036610160376040366101a0376102fb611979565b005b633a46273e811415610462576004358060a01c6124d3578090506106c0526000546124d357600160005560076106c05160e05260c052604060c02080546106e05260018101546107005250600060243511156124d35760006106e051136103a3576308c379a0610720526020610740526016610760527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006107805261076050606461073cfd5b426107005111610417576308c379a0610720526020610740526024610760527f43616e6e6f742061646420746f2065787069726564206c6f636b2e2057697468610780527f64726177000000000000000000000000000000000000000000000000000000006107a05261076050608461073cfd5b6106c0516104e0526024356105005260006105205260076106c05160e05260c052604060c0208054610540526001810154610560525060006105805261045b6120c0565b6000600055005b6365fc387381141561063d576001546124d357600160015533610140526104876118a2565b60243562093a808082049050905062093a808082028215828483041417156124d357809050905090506106c05260073360e05260c052604060c02080546106e05260018101546107005250600060043511156124d3576106e0511561052b576308c379a0610720526020610740526019610760527f5769746864726177206f6c6420746f6b656e73206669727374000000000000006107805261076050606461073cfd5b426106c0511161059f576308c379a0610720526020610740526026610760527f43616e206f6e6c79206c6f636b20756e74696c2074696d6520696e2074686520610780527f66757475726500000000000000000000000000000000000000000000000000006107a05261076050608461073cfd5b42630784ce0081818301106124d357808201905090506106c0511115610604576308c379a061072052602061074052601e610760527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006107805261076050606461073cfd5b336104e052600435610500526106c051610520526106e0516105405261070051610560526001610580526106366120c0565b6000600155005b634957677c811415610786576002546124d357600160025533610140526106626118a2565b60073360e05260c052604060c02080546106c05260018101546106e05250600060043511156124d35760006106c051136106db576308c379a0610700526020610720526016610740527f4e6f206578697374696e67206c6f636b20666f756e64000000000000000000006107605261074050606461071cfd5b426106e0511161074f576308c379a0610700526020610720526024610740527f43616e6e6f742061646420746f2065787069726564206c6f636b2e2057697468610760527f64726177000000000000000000000000000000000000000000000000000000006107805261074050608461071cfd5b336104e052600435610500526000610520526106c051610540526106e0516105605260026105805261077f6120c0565b6000600255005b63eff7a612811415610984576003546124d357600160035533610140526107ab6118a2565b60073360e05260c052604060c02080546106c05260018101546106e0525060043562093a808082049050905062093a808082028215828483041417156124d3578090509050905061070052426106e05111610845576308c379a061072052602061074052600c610760527f4c6f636b206578706972656400000000000000000000000000000000000000006107805261076050606461073cfd5b60006106c05113610895576308c379a0610720526020610740526011610760527f4e6f7468696e67206973206c6f636b65640000000000000000000000000000006107805261076050606461073cfd5b6106e05161070051116108e7576308c379a061072052602061074052601f610760527f43616e206f6e6c7920696e637265617365206c6f636b206475726174696f6e006107805261076050606461073cfd5b42630784ce0081818301106124d3578082019050905061070051111561094c576308c379a061072052602061074052601e610760527f566f74696e67206c6f636b2063616e2062652034207965617273206d617800006107805261076050606461073cfd5b336104e05260006105005261070051610520526106c051610540526106e0516105605260036105805261097d6120c0565b6000600355005b633ccfd60b811415610b64576004546124d357600160045560073360e05260c052604060c02080546104e0526001810154610500525061050051421015610a0a576308c379a0610520526020610540526016610560527f546865206c6f636b206469646e277420657870697265000000000000000000006105805261056050606461053cfd5b6104e051600081126124d357610520526104e05161054052610500516105605260006105005260006104e05260073360e05260c052604060c0206104e0518155610500516001820155506006546105805261058051610520518082106124d357808203905090506006553361014052610540516101605261056051610180526104e0516101a052610500516101c052610aa1611979565b63a9059cbb6105a052336105c052610520516105e05260206105a060446105bc60006005545af1156124d357601f3d11156124d3576105a051156124d357337ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568610520516105a052426105c05260406105a0a27f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c610580516105a05261058051610520518082106124d357808203905090506105c05260406105a0a16000600455005b6370a08231811415610b7a574261016052610b8d565b62fdd58e811415610cbb57602435610160525b6004358060a01c6124d357809050610140526c050c783eb9b5c840000000000a6101405160e05260c052604060c020546101805261018051610bdd5760006101a05260206101a0610cb956610cb8565b600461018051633b9aca008110156124d357026c050c783eb9b5c84000000000096101405160e05260c052604060c0200180546101a05260018101546101c05260028101546101e052600381015461020052506101a080516101c051610160516101e0518082106124d3578082039050905060405181116124d35780820280607f1d8160801d14156124d3578090509050905080820380607f1d8160801d14156124d3578090509050905081525060006101a0511215610c9e5760006101a0525b6101a051600081126124d357610220526020610220610cb9565b5bf35b634ee2cd7e811415611066576004358060a01c6124d3578090506102005243602435116124d3576000610220526c050c783eb9b5c840000000000a6102005160e05260c052604060c020546102405261026060006080818352015b610240516102205110610d2857610dd2565b610220516102405181818301106124d35780820190509050600181818301106124d35780820190509050600280820490509050610280526024356003600461028051633b9aca008110156124d357026c050c783eb9b5c84000000000096102005160e05260c052604060c02001015411610da9576102805161022052610dc2565b6102805160018082106124d35780820390509050610240525b8151600101808352811415610d16575b5050600461022051633b9aca008110156124d357026c050c783eb9b5c84000000000096102005160e05260c052604060c0200180546102605260018101546102805260028101546102a05260038101546102c052506008546102e052602435610140526102e05161016052610e48610320612279565b61032051610300526004610300516c01431e0fae6d7217caa00000008110156124d35702600901805461032052600181015461034052600281015461036052600381015461038052506040366103a0376102e051610300511015610f3257600461030051600181818301106124d357808201905090506c01431e0fae6d7217caa00000008110156124d3570260090180546103e0526001810154610400526002810154610420526003810154610440525061044051610380518082106124d357808203905090506103a05261042051610360518082106124d357808203905090506103c052610f61565b43610380518082106124d357808203905090506103a05242610360518082106124d357808203905090506103c0525b610360516103e05260006103a0511815610fcf576103e080516103c051602435610380518082106124d357808203905090508082028215828483041417156124d357809050905090506103a0518080156124d35782049050905081818301106124d357808201905090508152505b6102608051610280516103e0516102a0518082106124d3578082039050905060405181116124d35780820280607f1d8160801d14156124d3578090509050905080820380607f1d8160801d14156124d35780905090509050815250600061026051126110535761026051600081126124d35761040052602061040061106456611063565b6000610400526020610400611064565b5bf35b6318160ddd81141561107c57426102c052611090565b63bd85b03981141561111a576004356102c0525b6008546102e05260046102e0516c01431e0fae6d7217caa00000008110156124d3570260090180546103005260018101546103205260028101546103405260038101546103605250610300516101405261032051610160526103405161018052610360516101a0526102c0516101c05261110b610380612349565b610380516103a05260206103a0f35b63981b24d08114156113435743600435116124d3576008546102c052600435610140526102c05161016052611150610300612279565b610300516102e05260046102e0516c01431e0fae6d7217caa00000008110156124d35702600901805461030052600181015461032052600281015461034052600381015461036052506000610380526102c0516102e051101561127d5760046102e051600181818301106124d357808201905090506c01431e0fae6d7217caa00000008110156124d3570260090180546103a05260018101546103c05260028101546103e052600381015461040052506104005161036051181561127857600435610360518082106124d357808203905090506103e051610340518082106124d357808203905090508082028215828483041417156124d3578090509050905061040051610360518082106124d357808203905090508080156124d357820490509050610380525b6112ed565b436103605118156112ec57600435610360518082106124d3578082039050905042610340518082106124d357808203905090508082028215828483041417156124d3578090509050905043610360518082106124d357808203905090508080156124d357820490509050610380525b5b610300516101405261032051610160526103405161018052610360516101a052610340516103805181818301106124d357808201905090506101c0526113346103a0612349565b6103a0516103c05260206103c0f35b633cebb82381141561138c576004358060a01c6124d357809050610140526c050c783eb9b5c840000000000c543314156124d357610140516c050c783eb9b5c840000000000c55005b63fc0c546a8114156113a657600554610140526020610140f35b63047fc9aa8114156113c057600654610140526020610140f35b63cbf9fe5f811415611406576004358060a01c6124d3578090506101405260076101405160e05260c052604060c020805461016052600181015461018052506040610160f35b63900cf0cf81141561142057600854610140526020610140f35b63d1febfb98114156114735760046004356c01431e0fae6d7217caa00000008110156124d3570260090180546101405260018101546101605260028101546101805260038101546101a052506080610140f35b6328d09d478114156114ea576004358060a01c6124d357809050610140526004602435633b9aca008110156124d357026c050c783eb9b5c84000000000096101405160e05260c052604060c0200180546101605260018101546101805260028101546101a05260038101546101c052506080610160f35b63010ae757811415611531576004358060a01c6124d357809050610140526c050c783eb9b5c840000000000a6101405160e05260c052604060c02054610160526020610160f35b6371197484811415611565576c050c783eb9b5c840000000000b60043560e05260c052604060c02054610140526020610140f35b63f77c479181141561158b576c050c783eb9b5c840000000000c54610140526020610140f35b63bef97c878114156115b1576c050c783eb9b5c840000000000d54610140526020610140f35b6306fdde0381141561166a57610140806020808252808301806c050c783eb9b5c840000000000e8082602082540161012060006003818352015b826101205160200211156115fe5761161f565b610120518501546101205160200285015281516001018083528114156115eb575b5050505050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f8201039050905090508101905080905090509050610140f35b6395d89b4181141561172357610140806020808252808301806c050c783eb9b5c84000000000118082602082540161012060006002818352015b826101205160200211156116b7576116d8565b610120518501546101205160200285015281516001018083528114156116a4575b5050505050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f8201039050905090508101905080905090509050610140f35b6354fd4d508114156117dc57610140806020808252808301806c050c783eb9b5c84000000000138082602082540161012060006002818352015b8261012051602002111561177057611791565b6101205185015461012051602002850152815160010180835281141561175d575b5050505050508051806020830101818260206001820306601f8201039050033682375050805160200160206001820306601f8201039050905090508101905080905090509050610140f35b63313ce567811415611802576c050c783eb9b5c840000000001554610140526020610140f35b638ff36fd1811415611828576c050c783eb9b5c840000000001654610140526020610140f35b637175d4f781141561184e576c050c783eb9b5c840000000001754610140526020610140f35b63f851a440811415611874576c050c783eb9b5c840000000001854610140526020610140f35b6317f7182a81141561189a576c050c783eb9b5c840000000001954610140526020610140f35b505b60006000fd5b32610140511815611976576c050c783eb9b5c84000000000175461016052600061016051181561190c5763c23697a861018052610140516101a0526020610180602461019c6000610160515af1156124d357601f3d11156124d357610180511561190b57611977565b5b6308c379a06101805260206101a05260256101c0527f536d61727420636f6e7472616374206465706f7369746f7273206e6f7420616c6101e0527f6c6f776564000000000000000000000000000000000000000000000000000000610200526101c050608461019cfd5b5b565b610140366101e037600854610320526000610140511815611b0457426101805111156119ab57600061016051136119ae565b60005b15611a155761016051630784ce0080820580607f1d8160801d14156124d35780905090509050610200526102005161018051428082106124d3578082039050905060405181116124d35780820280607f1d8160801d14156124d357809050905090506101e0525b426101c0511115611a2c5760006101a05113611a2f565b60005b15611a96576101a051630784ce0080820580607f1d8160801d14156124d3578090509050905061028052610280516101c051428082106124d3578082039050905060405181116124d35780820280607f1d8160801d14156124d35780905090509050610260525b6c050c783eb9b5c840000000000b6101805160e05260c052604060c020546102e05260006101c0511815611b0357610180516101c0511415611adf576102e05161030052611b02565b6c050c783eb9b5c840000000000b6101c05160e05260c052604060c02054610300525b5b5b604036610340374261038052436103a0526000610320511115611b63576004610320516c01431e0fae6d7217caa00000008110156124d3570260090180546103405260018101546103605260028101546103805260038101546103a052505b610380516103c052610340516103e052610360516104005261038051610420526103a0516104405260006104605261038051421115611bf457670de0b6b3a7640000436103a0518082106124d357808203905090508082028215828483041417156124d3578090509050905042610380518082106124d357808203905090508080156124d357820490509050610460525b6103c05162093a808082049050905062093a808082028215828483041417156124d35780905090509050610480526104a0600060ff818352015b610480805162093a8081818301106124d3578082019050905081525060006104c05242610480511115611c65574261048052611c88565b6c050c783eb9b5c840000000000b6104805160e05260c052604060c020546104c0525b610340805161036051610480516103c0518082106124d3578082039050905060405181116124d35780820280607f1d8160801d14156124d3578090509050905080820380607f1d8160801d14156124d3578090509050905081525061036080516104c05180820180607f1d8160801d14156124d357809050905090508152506000610340511215611d1a576000610340525b6000610360511215611d2d576000610360525b610480516103c0526104805161038052610440516104605161048051610420518082106124d357808203905090508082028215828483041417156124d35780905090509050670de0b6b3a76400008082049050905081818301106124d357808201905090506103a0526103208051600181818301106124d3578082019050905081525042610480511415611dc957436103a052611e1b56611e0b565b6004610320516c01431e0fae6d7217caa00000008110156124d357026009016103405181556103605160018201556103805160028201556103a0516003820155505b8151600101808352811415611c2e575b5050610320516008556000610140511815611ed7576103608051610280516102005180820380607f1d8160801d14156124d3578090509050905080820180607f1d8160801d14156124d357809050905090508152506103408051610260516101e05180820380607f1d8160801d14156124d3578090509050905080820180607f1d8160801d14156124d357809050905090508152506000610360511215611ec3576000610360525b6000610340511215611ed6576000610340525b5b6004610320516c01431e0fae6d7217caa00000008110156124d357026009016103405181556103605160018201556103805160028201556103a05160038201555060006101405118156120be5742610180511115611fa9576102e080516102005180820180607f1d8160801d14156124d35780905090509050815250610180516101c0511415611f86576102e080516102805180820380607f1d8160801d14156124d357809050905090508152505b6102e0516c050c783eb9b5c840000000000b6101805160e05260c052604060c020555b426101c051111561200a57610180516101c05111156120095761030080516102805180820380607f1d8160801d14156124d35780905090509050815250610300516c050c783eb9b5c840000000000b6101c05160e05260c052604060c020555b5b6c050c783eb9b5c840000000000a6101405160e05260c052604060c02054600181818301106124d357808201905090506104a0526104a0516c050c783eb9b5c840000000000a6101405160e05260c052604060c02055426102a052436102c05260046104a051633b9aca008110156124d357026c050c783eb9b5c84000000000096101405160e05260c052604060c020016102605181556102805160018201556102a05160028201556102c0516003820155505b565b610540516105a052610560516105c0526006546105e0526105e0516105005181818301106124d357808201905090506006556105a051610600526105c051610620526105a080516105005160405181116124d35780820180607f1d8160801d14156124d35780905090509050815250600061052051181561214457610520516105c0525b60076104e05160e05260c052604060c0206105a05181556105c0516001820155506104e05161014052610600516101605261062051610180526105a0516101a0526105c0516101c052612195611979565b60006105005118156121e8576323b872dd610640526104e051610660523061068052610500516106a0526020610640606461065c60006005545af1156124d357601f3d11156124d35761064051156124d3575b6105c0516104e0517f4566dfc29f6f11d13a418c26a02bef7c28bae749d4de47e4e6a7cddea6730d596105005161064052610580516106605242610680526060610640a37f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c6105e051610640526105e0516105005181818301106124d35780820190509050610660526040610640a1565b600061018052610160516101a0526101c060006080818352015b6101a05161018051106122a55761233e565b610180516101a05181818301106124d35780820190509050600181818301106124d357808201905090506002808204905090506101e05261014051600360046101e0516c01431e0fae6d7217caa00000008110156124d35702600901015411612315576101e0516101805261232e565b6101e05160018082106124d357808203905090506101a0525b8151600101808352811415612293575b505061018051815250565b610140516101e052610160516102005261018051610220526101a051610240526102205162093a808082049050905062093a808082028215828483041417156124d3578090509050905061026052610280600060ff818352015b610260805162093a8081818301106124d3578082019050905081525060006102a0526101c0516102605111156123e0576101c05161026052612403565b6c050c783eb9b5c840000000000b6102605160e05260c052604060c020546102a0525b6101e080516102005161026051610220518082106124d3578082039050905060405181116124d35780820280607f1d8160801d14156124d3578090509050905080820380607f1d8160801d14156124d357809050905090508152506101c051610260511415612471576124ad565b61020080516102a05180820180607f1d8160801d14156124d35780905090509050815250610260516102205281516001018083528114156123a3575b505060006101e05112156124c25760006101e0525b6101e051600081126124d357815250565b600080fd
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000020d4db1946859e2adb0e5acc2eac58047ad41395000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000124d6f6f6e44414f5374616b65546f566f746500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007764d4f4f4e45590000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013100000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : token_addr (address): 0x20d4DB1946859E2Adb0e5ACC2eac58047aD41395
Arg [1] : _name (string): MoonDAOStakeToVote
Arg [2] : _symbol (string): vMOONEY
Arg [3] : _version (string): 1
-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000020d4db1946859e2adb0e5acc2eac58047ad41395
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [5] : 4d6f6f6e44414f5374616b65546f566f74650000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [7] : 764d4f4f4e455900000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [9] : 3100000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.000278 | 162,891,359.8824 | $45,218.64 |
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.