Source Code
Overview
MOVR Balance
MOVR Value
$0.00View more zero value Internal Transactions in Advanced View mode
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.12
Contract Source Code (Vyper language format)
# @version 0.2.12
"""
@title HND DAO Token proxy
@author Hundred Finanace
@license MIT
@notice configurable ERC20 with piecewise-linear mining supply.
@dev Based on the ERC-20 token standard as defined at
https://eips.ethereum.org/EIPS/eip-20
"""
from vyper.interfaces import ERC20
event SetAdmin:
admin: address
admin: public(address)
first_epoch_time: public(uint256)
epoch_length: public(uint256)
rewards: public(uint256[100000000000000000000000000000])
@external
def __init__(_epoch_length: uint256):
"""
@notice Contract constructor
"""
self.admin = msg.sender
self.epoch_length = _epoch_length
self.first_epoch_time = block.timestamp / _epoch_length * _epoch_length - _epoch_length
@internal
@view
def _epoch_at(_timestamp: uint256) -> uint256:
"""
@notice gives epoch number for a given time (0 for first epoch)
@return uint256 epoch number
"""
if _timestamp < self.first_epoch_time:
return 0
return (_timestamp - self.first_epoch_time) / self.epoch_length
@internal
@view
def _current_epoch() -> uint256:
"""
@notice gives current reward epoch number (0 for first epoch)
@return uint256 epoch number
"""
return self._epoch_at(block.timestamp)
@internal
@view
def _epoch_start_time() -> uint256:
"""
@notice Get timestamp of the current mining epoch start
@return Timestamp of the epoch
"""
return self.first_epoch_time + self._current_epoch() * self.epoch_length
@external
@view
def epoch_at(_timestamp: uint256) -> uint256:
"""
@notice gives epoch number for a given time (0 for first epoch)
@return uint256 epoch number
"""
return self._epoch_at(_timestamp)
@external
@view
def epoch_start_time(_epoch: uint256) -> uint256:
"""
@notice gives epoch start time for a given epoch number
@return uint256 epoch timestamp
"""
return self.first_epoch_time + _epoch * self.epoch_length
@external
@view
def rate_at(_timestamp: uint256) -> uint256:
"""
@notice give rewards emission rate for timestamp
@return uint256 epoch rate
"""
if _timestamp < self.first_epoch_time:
return 0
return self.rewards[self._epoch_at(_timestamp)] / self.epoch_length
@external
@view
def current_epoch() -> uint256:
"""
@notice gives current reward epoch number (0 for first epoch)
@return uint256 epoch number
"""
return self._current_epoch()
@external
@view
def future_epoch_time() -> uint256:
"""
@notice Get timestamp of the next mining epoch start
@return Timestamp of the next epoch
"""
return self._epoch_start_time() + self.epoch_length
@external
@view
def future_epoch_rate() -> uint256:
"""
@notice Get reward rate of the next mining epoch
@return reward rate
"""
return self.rewards[self._current_epoch() + 1] / self.epoch_length
@external
def set_admin(_admin: address):
"""
@notice Set the new admin
@param _admin New admin address
"""
assert msg.sender == self.admin # dev: admin only
self.admin = _admin
log SetAdmin(_admin)
@external
def set_rewards_at(_epoch: uint256, _reward: uint256):
"""
@notice set future epoch reward
"""
assert msg.sender == self.admin # dev: admin only
assert _epoch > self._current_epoch() # dev: can only modify future rates
self.rewards[_epoch] = _reward
@external
def set_rewards_starting_at(_epoch: uint256, _rewards: uint256[10]):
"""
@notice set future rewards starting at epoch _epoch
"""
assert msg.sender == self.admin # dev: admin only
assert _epoch > self._current_epoch() # dev: can only modify future rewards
for index in range(10):
self.rewards[_epoch + index] = _rewards[index]Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"name":"SetAdmin","inputs":[{"name":"admin","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_epoch_length","type":"uint256"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"epoch_at","inputs":[{"name":"_timestamp","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":7475},{"stateMutability":"view","type":"function","name":"epoch_start_time","inputs":[{"name":"_epoch","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":4918},{"stateMutability":"view","type":"function","name":"rate_at","inputs":[{"name":"_timestamp","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":14134},{"stateMutability":"view","type":"function","name":"current_epoch","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":14997},{"stateMutability":"view","type":"function","name":"future_epoch_time","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":36854},{"stateMutability":"view","type":"function","name":"future_epoch_rate","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":19623},{"stateMutability":"nonpayable","type":"function","name":"set_admin","inputs":[{"name":"_admin","type":"address"}],"outputs":[],"gas":39075},{"stateMutability":"nonpayable","type":"function","name":"set_rewards_at","inputs":[{"name":"_epoch","type":"uint256"},{"name":"_reward","type":"uint256"}],"outputs":[],"gas":52480},{"stateMutability":"nonpayable","type":"function","name":"set_rewards_starting_at","inputs":[{"name":"_epoch","type":"uint256"},{"name":"_rewards","type":"uint256[10]"}],"outputs":[],"gas":371612},{"stateMutability":"view","type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":2658},{"stateMutability":"view","type":"function","name":"first_epoch_time","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2688},{"stateMutability":"view","type":"function","name":"epoch_length","inputs":[],"outputs":[{"name":"","type":"uint256"}],"gas":2718},{"stateMutability":"view","type":"function","name":"rewards","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":2857}]Contract Creation Code
60206105736101403933600055610140516002554261014051808061002357600080fd5b82049050905061014051808202821582848304141761004157600080fd5b80905090509050610140518082101561005957600080fd5b8082039050905060015561055b56600436101561000d576103fd565b600035601c52600051341561002157600080fd5b639a1586ef81141561005257600435610140526101405160065801610403565b6101a0526101a05160005260206000f35b6322026ada8114156100a157600154600435600254808202821582848304141761007b57600080fd5b8090509050905081818301101561009157600080fd5b8082019050905060005260206000f35b6339935cf08114156101225760015460043510156100c457600060005260206000f35b600435610140526101405160065801610403565b6101a0526101a0516c01431e0fae6d7217caa000000081106100f957600080fd5b600360c052602060c0200154600254808061011357600080fd5b82049050905060005260206000f35b639372b4e48114156101485760065801610461565b610140526101405160005260206000f35b63be5d1be98114156101875760065801610493565b610140526101405160025481818301101561017757600080fd5b8082019050905060005260206000f35b63c67f46e08114156101fe5760065801610461565b610140526101405160018181830110156101b557600080fd5b808201905090506c01431e0fae6d7217caa000000081106101d557600080fd5b600360c052602060c020015460025480806101ef57600080fd5b82049050905060005260206000f35b63e9333fab81141561025e5760043560a01c1561021a57600080fd5b600054331461022857600080fd5b600435600055600435610140527f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a16020610140a1005b63d284abbb8114156102c357600054331461027857600080fd5b60065801610461565b61014052610140516004351161029657600080fd5b6024356004356c01431e0fae6d7217caa000000081106102b557600080fd5b600360c052602060c0200155005b6341eec7ab8114156103765760005433146102dd57600080fd5b60065801610461565b6101405261014051600435116102fb57600080fd5b6101406000600a818352015b602461014051600a811061031a57600080fd5b60200201356004356101405181818301101561033557600080fd5b808201905090506c01431e0fae6d7217caa0000000811061035557600080fd5b600360c052602060c02001555b8151600101808352811415610307575b5050005b63f851a44081141561038e5760005460005260206000f35b6310ca275a8114156103a65760015460005260206000f35b634231bfe18114156103be5760025460005260206000f35b63f301af428114156103fb576004356c01431e0fae6d7217caa000000081106103e657600080fd5b600360c052602060c020015460005260206000f35b505b60006000fd5b610160526101405260015461014051101561042657600060005260005161016051565b610140516001548082101561043a57600080fd5b80820390509050600254808061044f57600080fd5b82049050905060005260005161016051565b610140526101405142610160526101605160065801610403565b6101c052610140526101c05160005260005161014051565b610140526001546101405160065801610461565b61016052610140526101605160025480820282158284830414176104ca57600080fd5b809050905090508181830110156104e057600080fd5b8082019050905060005260005161014051565b61006861055b0361006860003961006861055b036000f30000000000000000000000000000000000000000000000000000000000093a80
Deployed Bytecode
0x600436101561000d576103fd565b600035601c52600051341561002157600080fd5b639a1586ef81141561005257600435610140526101405160065801610403565b6101a0526101a05160005260206000f35b6322026ada8114156100a157600154600435600254808202821582848304141761007b57600080fd5b8090509050905081818301101561009157600080fd5b8082019050905060005260206000f35b6339935cf08114156101225760015460043510156100c457600060005260206000f35b600435610140526101405160065801610403565b6101a0526101a0516c01431e0fae6d7217caa000000081106100f957600080fd5b600360c052602060c0200154600254808061011357600080fd5b82049050905060005260206000f35b639372b4e48114156101485760065801610461565b610140526101405160005260206000f35b63be5d1be98114156101875760065801610493565b610140526101405160025481818301101561017757600080fd5b8082019050905060005260206000f35b63c67f46e08114156101fe5760065801610461565b610140526101405160018181830110156101b557600080fd5b808201905090506c01431e0fae6d7217caa000000081106101d557600080fd5b600360c052602060c020015460025480806101ef57600080fd5b82049050905060005260206000f35b63e9333fab81141561025e5760043560a01c1561021a57600080fd5b600054331461022857600080fd5b600435600055600435610140527f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a16020610140a1005b63d284abbb8114156102c357600054331461027857600080fd5b60065801610461565b61014052610140516004351161029657600080fd5b6024356004356c01431e0fae6d7217caa000000081106102b557600080fd5b600360c052602060c0200155005b6341eec7ab8114156103765760005433146102dd57600080fd5b60065801610461565b6101405261014051600435116102fb57600080fd5b6101406000600a818352015b602461014051600a811061031a57600080fd5b60200201356004356101405181818301101561033557600080fd5b808201905090506c01431e0fae6d7217caa0000000811061035557600080fd5b600360c052602060c02001555b8151600101808352811415610307575b5050005b63f851a44081141561038e5760005460005260206000f35b6310ca275a8114156103a65760015460005260206000f35b634231bfe18114156103be5760025460005260206000f35b63f301af428114156103fb576004356c01431e0fae6d7217caa000000081106103e657600080fd5b600360c052602060c020015460005260206000f35b505b60006000fd5b610160526101405260015461014051101561042657600060005260005161016051565b610140516001548082101561043a57600080fd5b80820390509050600254808061044f57600080fd5b82049050905060005260005161016051565b610140526101405142610160526101605160065801610403565b6101c052610140526101c05160005260005161014051565b610140526001546101405160065801610461565b61016052610140526101605160025480820282158284830414176104ca57600080fd5b809050905090508181830110156104e057600080fd5b808201905090506000526000516101405156
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000093a80
-----Decoded View---------------
Arg [0] : _epoch_length (uint256): 604800
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000093a80
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in MOVR
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.