More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 67 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 20597125 | 4 days ago | IN | 0 ETH | 0.0000562 | ||||
Claim | 20597120 | 4 days ago | IN | 0 ETH | 0.00005975 | ||||
Claim | 20597116 | 4 days ago | IN | 0 ETH | 0.00005879 | ||||
Claim | 20597112 | 4 days ago | IN | 0 ETH | 0.0000586 | ||||
Claim | 20597108 | 4 days ago | IN | 0 ETH | 0.00007896 | ||||
Claim | 20503738 | 17 days ago | IN | 0 ETH | 0.00005794 | ||||
Claim | 20503732 | 17 days ago | IN | 0 ETH | 0.00006528 | ||||
Claim | 20503729 | 17 days ago | IN | 0 ETH | 0.00006563 | ||||
Claim | 20503725 | 17 days ago | IN | 0 ETH | 0.00006575 | ||||
Claim | 20503722 | 17 days ago | IN | 0 ETH | 0.00008339 | ||||
Claim | 20404789 | 31 days ago | IN | 0 ETH | 0.00008113 | ||||
Claim | 20404786 | 31 days ago | IN | 0 ETH | 0.00007795 | ||||
Claim | 20404782 | 31 days ago | IN | 0 ETH | 0.0000769 | ||||
Claim | 20404779 | 31 days ago | IN | 0 ETH | 0.00008466 | ||||
Claim | 20404776 | 31 days ago | IN | 0 ETH | 0.00010912 | ||||
Claim | 20292654 | 47 days ago | IN | 0 ETH | 0.00014468 | ||||
Claim | 20292651 | 47 days ago | IN | 0 ETH | 0.0001459 | ||||
Claim | 20292646 | 47 days ago | IN | 0 ETH | 0.00013724 | ||||
Claim | 20292642 | 47 days ago | IN | 0 ETH | 0.00014912 | ||||
Claim | 20292639 | 47 days ago | IN | 0 ETH | 0.00018614 | ||||
Claim | 20198828 | 60 days ago | IN | 0 ETH | 0.00014136 | ||||
Claim | 20198824 | 60 days ago | IN | 0 ETH | 0.00014388 | ||||
Claim | 20198820 | 60 days ago | IN | 0 ETH | 0.00014257 | ||||
Claim | 20198817 | 60 days ago | IN | 0 ETH | 0.00016698 | ||||
Claim | 20198814 | 60 days ago | IN | 0 ETH | 0.00021501 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Gauge controller
Compiler Version
vyper:0.3.10
Contract Source Code (Vyper language format)
# @version 0.3.10 """ @title Gauge controller @author Yearn Finance @license GNU AGPLv3 @notice Controls gauge emissions as defined in YIP-73. - Gauges can be whitelisted, making them eligible for emissions in future epochs - Accounts with a vote weight can distribute their weight over whitelisted gauges every epoch - At the end of the epoch the tokens are minted and distributed according to their received vote weights - Governance can reserve a percentage of emissions to specific gauges, prior to any votes - These reserved emissions are taken out of the pool of votable emissions - Votes can be blank. Emissions due to blank votes are partially burned and partially reallocated to next epoch """ from vyper.interfaces import ERC20 interface Minter: def mint(_epoch: uint256) -> uint256: nonpayable interface Burner: def burn(_epoch: uint256, _amount: uint256): nonpayable interface Measure: def total_vote_weight() -> uint256: view def vote_weight(_account: address) -> uint256: view genesis: public(immutable(uint256)) token: public(immutable(ERC20)) management: public(address) pending_management: public(address) whitelister: public(address) legacy_operator: public(address) measure: public(Measure) minter: public(Minter) burner: public(Burner) packed_emission: uint256 # (epoch, global cumulative emission, global current emission) blank_emission: public(uint256) packed_epoch_emission: HashMap[uint256, uint256] # epoch => (_, emission, reserved) packed_gauge_emission: HashMap[address, uint256] # gauge => (epoch, cumulative emission, current emission) gauge_claimed: public(HashMap[address, uint256]) # gauge => claimed blank_burn_points: public(uint256) reserved_points: public(uint256) packed_gauge_reserved: HashMap[address, uint256] # gauge => (_, points, last global cumulative emission) gauge_whitelisted: public(HashMap[address, bool]) # gauge => whitelisted? legacy_gauge: public(HashMap[address, bool]) # gauge => legacy? votes: public(HashMap[uint256, uint256]) # epoch => total votes votes_user: public(HashMap[address, HashMap[uint256, uint256]]) # user => epoch => votes gauge_votes: public(HashMap[uint256, HashMap[address, uint256]]) # epoch => gauge => votes gauge_votes_user: public(HashMap[address, HashMap[uint256, HashMap[address, uint256]]]) # user => epoch => gauge => votes event NewEpoch: epoch: uint256 emission: uint256 reserved: uint256 burned: uint256 blank: uint256 event Claim: gauge: indexed(address) amount: uint256 event Vote: epoch: uint256 account: indexed(address) gauge: indexed(address) votes: uint256 event Whitelist: gauge: indexed(address) whitelisted: bool event SetReservedPoints: gauge: indexed(address) points: uint256 event SetBlankBurnPoints: points: uint256 event SetLegacyGauge: gauge: indexed(address) legacy: bool event SetWhitelister: whitelister: address event SetLegacyOperator: operator: address event SetMeasure: measure: address event SetMinter: minter: address event SetBurner: burner: address event PendingManagement: management: indexed(address) event SetManagement: management: indexed(address) WEEK_LENGTH: constant(uint256) = 7 * 24 * 60 * 60 EPOCH_LENGTH: constant(uint256) = 2 * WEEK_LENGTH POINTS_SCALE: constant(uint256) = 10_000 MASK: constant(uint256) = 2**112 - 1 EPOCH_MASK: constant(uint256) = 2**32 - 1 @external def __init__(_genesis: uint256, _token: address, _measure: address, _minter: address, _burner: address): """ @notice Constructor @param _genesis Genesis timestamp @param _token Reward token address @param _measure Vote weight measure @param _minter Reward token minter @param _burner Reward token burner @dev Genesis should be picked at least one full epoch in the past """ genesis = _genesis token = ERC20(_token) self.management = msg.sender self.whitelister = msg.sender self.legacy_operator = msg.sender self.measure = Measure(_measure) self.minter = Minter(_minter) self.burner = Burner(_burner) epoch: uint256 = self._epoch() self.packed_emission = self._pack(epoch - 1, 0, 0) @external @view def epoch() -> uint256: """ @notice Get the current epoch @return Current epoch """ return self._epoch() @internal @view def _epoch() -> uint256: return (block.timestamp - genesis) / EPOCH_LENGTH @external @view def vote_open() -> bool: """ @notice Check whether the vote is currently open @return True: vote is open, False: vote is closed """ return self._vote_open() @internal @view def _vote_open() -> bool: return (block.timestamp - genesis) % EPOCH_LENGTH >= WEEK_LENGTH @external @view def votes_available(_account: address) -> uint256: """ @notice Get amount of votes still available @param _account Account to check for @return Amount of votes still available """ total: uint256 = self.measure.vote_weight(_account) epoch: uint256 = self._epoch() return total - self.votes_user[_account][epoch] @external @view def emission() -> (uint256, uint256, uint256): """ @notice Get overall emission information @return Tuple with: - Last finalized epoch. At most one behind the current epoch - Cumulative emission for all gauges until the last finalized epoch - Emission for all gauges in the last finalized epoch """ return self._unpack(self.packed_emission) @external @view def epoch_emission(_epoch: uint256) -> (uint256, uint256): """ @notice Get emission information for a specific epoch @param _epoch Epoch @return Tuple with: - Emission for all gauges in the epoch - Reserved emission in the epoch @dev The total emission is inclusive of the reserved emission """ return self._unpack_two(self.packed_epoch_emission[_epoch]) @external @view def gauge_emission(_gauge: address) -> (uint256, uint256, uint256): """ @notice Get emission information for a specific gauge @param _gauge Gauge address @return Tuple with: - Last updated epoch. At most equal to the last finalized epoch - Cumulative emission for this gauge until the last updated epoch - Emission for this gauge in the last finalized epoch """ return self._unpack(self.packed_gauge_emission[_gauge]) @external @view def gauge_reserved_points(_gauge: address) -> uint256: """ @notice Get reserved points for a gauge @param _gauge Gauge address @return Reserved points (bps) @dev Gauges with reserved emissions receive a fixed percentage of all the emissions, which is subtracted from the available emissions for votes """ return self._unpack_two(self.packed_gauge_reserved[_gauge])[0] @external @view def gauge_reserved_last_cumulative(_gauge: address) -> uint256: """ @notice Get gauge's last known overall cumulative emissions @param _gauge Gauge address @return Last known overall cumulative emission @dev Used to fast-forward gauge emissions without having to iterate """ return self._unpack_two(self.packed_gauge_reserved[_gauge])[1] @external def vote(_gauges: DynArray[address, 32], _votes: DynArray[uint256, 32]): """ @notice Vote for specific gauges @param _gauges Gauge addresses @param _votes Votes as a fraction of users total vote weight (bps) @dev Can be called multiple times @dev Votes are additive, they cant be undone @dev Votes can be blank by using the zero address """ assert len(_gauges) == len(_votes) assert self._vote_open() assert self._update_emission() available: uint256 = self.measure.vote_weight(msg.sender) epoch: uint256 = self._epoch() used: uint256 = 0 for i in range(32): if i == len(_gauges): break gauge: address = _gauges[i] votes: uint256 = available * _votes[i] / POINTS_SCALE if gauge != empty(address): assert self.gauge_whitelisted[gauge] self._update_gauge_emission(gauge) self.gauge_votes[epoch][gauge] += votes self.gauge_votes_user[msg.sender][epoch][gauge] += votes used += votes log Vote(epoch, msg.sender, gauge, votes) assert used > 0 self.votes[epoch] += used used += self.votes_user[msg.sender][epoch] assert used <= available self.votes_user[msg.sender][epoch] = used @external def claim(_gauge: address = empty(address), _recipient: address = empty(address)) -> (uint256, uint256, uint256): """ @notice Claim rewards for distribution by a gauge @param _gauge Gauge address to claim for @param _recipient Recipient of legacy gauge rewards @dev Certain gauges are considered legacy, for which claiming is permissioned """ gauge: address = _gauge if _gauge == empty(address): gauge = msg.sender recipient: address = gauge if self.legacy_gauge[gauge]: assert msg.sender == self.legacy_operator assert _recipient != empty(address) recipient = _recipient assert self._update_emission() gauge_epoch: uint256 = 0 cumulative: uint256 = 0 current: uint256 = 0 gauge_epoch, cumulative, current = self._update_gauge_emission(gauge) claimed: uint256 = self.gauge_claimed[gauge] claim: uint256 = cumulative - claimed if claim > 0: self.gauge_claimed[gauge] = cumulative assert token.transfer(recipient, claim, default_return_value=True) log Claim(_gauge, claim) epoch_start: uint256 = genesis + self._epoch() * EPOCH_LENGTH return cumulative, current, epoch_start @external def update_emission(): """ @notice Update overall emissions @dev Should be called by anyone to catch-up overall emissions if no calls to this contract have been made for more than a full epoch """ for _ in range(32): if self._update_emission(): return @external def whitelist(_gauge: address, _whitelisted: bool): """ @notice Add or remove a gauge to the whitelist @param _gauge Gauge address @param _whitelisted True: add to whitelist, False: remove from whitelist @dev Only callable by the whitelister """ assert msg.sender == self.whitelister assert _gauge != empty(address) assert self._update_emission() if _whitelisted == self.gauge_whitelisted[_gauge]: return if not _whitelisted: self._update_gauge_emission(_gauge) points: uint256 = 0 last: uint256 = 0 points, last = self._unpack_two(self.packed_gauge_reserved[_gauge]) if points > 0: self.reserved_points -= points self.packed_gauge_reserved[_gauge] = 0 self.gauge_whitelisted[_gauge] = _whitelisted log Whitelist(_gauge, _whitelisted) @external def set_reserved_points(_gauge: address, _points: uint256): """ @notice Set the fraction of reserved emissions for a gauge @param _gauge Gauge address @param _points Reserved emission fraction (bps) @dev Only callable by management """ assert msg.sender == self.management assert self.gauge_whitelisted[_gauge] assert self._update_emission() self._update_gauge_emission(_gauge) prev_points: uint256 = 0 last: uint256 = 0 prev_points, last = self._unpack_two(self.packed_gauge_reserved[_gauge]) if prev_points == 0: # to save gas the cumulative amount is never updated for gauges without # reserved points, so we have to do it here last = self._unpack_two(self.packed_emission)[0] total_points: uint256 = self.reserved_points - prev_points + _points assert total_points <= POINTS_SCALE self.reserved_points = total_points self.packed_gauge_reserved[_gauge] = self._pack(0, _points, last) log SetReservedPoints(_gauge, _points) @external def set_blank_burn_points(_points: uint256): """ @notice Set fraction of blank emissions to be burned @param _points Blank burn fraction (bps) @dev Only callable by management """ assert msg.sender == self.management assert _points <= POINTS_SCALE assert self._update_emission() self.blank_burn_points = _points log SetBlankBurnPoints(_points) @external def set_legacy_gauge(_gauge: address, _legacy: bool): """ @notice Set legacy status for a gauge @param _gauge Gauge address @param _legacy True: legacy, False: no legacy @dev Only callable by management """ assert msg.sender == self.management assert self.gauge_whitelisted[_gauge] self.legacy_gauge[_gauge] = _legacy log SetLegacyGauge(_gauge, _legacy) @external def set_whitelister(_whitelister: address): """ @notice Set new whitelister address @param _whitelister New whitelister address @dev Only callable by management """ assert msg.sender == self.management self.whitelister = _whitelister log SetWhitelister(_whitelister) @external def set_legacy_operator(_operator: address): """ @notice Set new legacy operator @param _operator New operator address @dev Only callable by management """ assert msg.sender == self.management self.legacy_operator = _operator log SetLegacyOperator(_operator) @external def set_measure(_measure: address): """ @notice Set vote weight measure @param _measure Measure address @dev Only callable by management """ assert msg.sender == self.management assert _measure != empty(address) assert not self._vote_open() self.measure = Measure(_measure) log SetMeasure(_measure) @external def set_minter(_minter: address): """ @notice Set new reward minter @param _minter New minter address @dev Only callable by management """ assert msg.sender == self.management assert _minter != empty(address) assert self._update_emission() self.minter = Minter(_minter) log SetMinter(_minter) @external def set_burner(_burner: address): """ @notice Set new reward burner @param _burner New burner address @dev Only callable by management """ assert msg.sender == self.management assert _burner != empty(address) assert self._update_emission() self.burner = Burner(_burner) log SetBurner(_burner) @external def set_management(_management: address): """ @notice Set the pending management address. Needs to be accepted by that account separately to transfer management over @param _management New pending management address """ assert msg.sender == self.management self.pending_management = _management log PendingManagement(_management) @external def accept_management(): """ @notice Accept management role. Can only be called by account previously marked as pending management by current management """ assert msg.sender == self.pending_management self.pending_management = empty(address) self.management = msg.sender log SetManagement(msg.sender) @internal def _update_emission() -> bool: """ @notice Update global emission. Must be called before: - Any gauge is updated - Any gauge receives votes - Any gauge reserved points is changed - Blank vote burn points is changed """ last_epoch: uint256 = self._epoch() - 1 global_epoch: uint256 = 0 global_cumulative: uint256 = 0 global_current: uint256 = 0 global_epoch, global_cumulative, global_current = self._unpack(self.packed_emission) if global_epoch == last_epoch: return True global_epoch += 1 minted: uint256 = self.minter.mint(global_epoch) + self.blank_emission reserved: uint256 = minted * self.reserved_points / POINTS_SCALE blank_votes: uint256 = self.gauge_votes[global_epoch][empty(address)] total_votes: uint256 = self.votes[global_epoch] blank_emission: uint256 = 0 if blank_votes > 0: blank_emission = (minted - reserved) * blank_votes / total_votes elif total_votes == 0: # no votes: all non-reserved emissions are considered blank blank_emission = minted - reserved burn_amount: uint256 = 0 if blank_emission > 0: # blank emission is partially burned and partially added to next epoch burn_amount = blank_emission * self.blank_burn_points / POINTS_SCALE if burn_amount > 0: blank_emission -= burn_amount assert token.approve(self.burner.address, burn_amount, default_return_value=True) self.burner.burn(global_epoch, burn_amount) global_cumulative += minted global_current = minted self.packed_emission = self._pack(global_epoch, global_cumulative, global_current) self.blank_emission = blank_emission self.packed_epoch_emission[global_epoch] = self._pack(0, minted, reserved) log NewEpoch(global_epoch, minted, reserved, burn_amount, blank_emission) return global_epoch == last_epoch @internal def _update_gauge_emission(_gauge: address) -> (uint256, uint256, uint256): """ @notice Update gauge emission. Must be called before: - Gauge receives votes - Gauge claim - Gauge reserved points changes Assumes global emission is up to date """ last_epoch: uint256 = self._epoch() - 1 gauge_epoch: uint256 = 0 cumulative: uint256 = 0 current: uint256 = 0 gauge_epoch, cumulative, current = self._unpack(self.packed_gauge_emission[_gauge]) if gauge_epoch == last_epoch: return gauge_epoch, cumulative, current # emission from last updated epoch last_updated_epoch: uint256 = gauge_epoch + 1 current = self.gauge_votes[last_updated_epoch][_gauge] if current > 0: epoch_emission: uint256 = 0 epoch_reserved: uint256 = 0 epoch_emission, epoch_reserved = self._unpack_two(self.packed_epoch_emission[last_updated_epoch]) current = (epoch_emission - epoch_reserved) * current / self.votes[last_updated_epoch] cumulative += current if last_updated_epoch != last_epoch: # last update was more than 1 epoch ago. the full amount is immediately available. # we know the other missing epochs did not have any votes for this gauge because # the gauge emissions would have been updated current = 0 # fast-forward reserved emission points: uint256 = 0 last: uint256 = 0 points, last = self._unpack_two(self.packed_gauge_reserved[_gauge]) if points > 0: # we know that reserved points for this gauge has remained unchanged since the last # gauge update, so we can safely get reserved rewards from potentially multiple epochs # by applying the points to the change in global cumulative emission global_cumulative: uint256 = 0 global_current: uint256 = 0 global_cumulative, global_current = self._unpack_two(self.packed_emission) current += global_current * points / POINTS_SCALE cumulative += (global_cumulative - last) * points / POINTS_SCALE self.packed_gauge_reserved[_gauge] = self._pack(0, points, global_cumulative) self.packed_gauge_emission[_gauge] = self._pack(last_epoch, cumulative, current) return last_epoch, cumulative, current @internal @pure def _pack(_epoch: uint256, _a: uint256, _b: uint256) -> uint256: """ @notice Pack a 32 bit number with two 112 bit numbers """ assert _epoch <= EPOCH_MASK and _a <= MASK and _b <= MASK return (_epoch << 224) | (_a << 112) | _b @internal @pure def _unpack(_packed: uint256) -> (uint256, uint256, uint256): """ @notice Unpack a 32 bit number followed by two 112 bit numbers """ return _packed >> 224, (_packed >> 112) & MASK, _packed & MASK @internal @pure def _unpack_two(_packed: uint256) -> (uint256, uint256): """ @notice Unpack last two 112 bit numbers """ return (_packed >> 112) & MASK, _packed & MASK
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"NewEpoch","inputs":[{"name":"epoch","type":"uint256","indexed":false},{"name":"emission","type":"uint256","indexed":false},{"name":"reserved","type":"uint256","indexed":false},{"name":"burned","type":"uint256","indexed":false},{"name":"blank","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Claim","inputs":[{"name":"gauge","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Vote","inputs":[{"name":"epoch","type":"uint256","indexed":false},{"name":"account","type":"address","indexed":true},{"name":"gauge","type":"address","indexed":true},{"name":"votes","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Whitelist","inputs":[{"name":"gauge","type":"address","indexed":true},{"name":"whitelisted","type":"bool","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetReservedPoints","inputs":[{"name":"gauge","type":"address","indexed":true},{"name":"points","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetBlankBurnPoints","inputs":[{"name":"points","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetLegacyGauge","inputs":[{"name":"gauge","type":"address","indexed":true},{"name":"legacy","type":"bool","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetWhitelister","inputs":[{"name":"whitelister","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetLegacyOperator","inputs":[{"name":"operator","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetMeasure","inputs":[{"name":"measure","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetMinter","inputs":[{"name":"minter","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetBurner","inputs":[{"name":"burner","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"PendingManagement","inputs":[{"name":"management","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"SetManagement","inputs":[{"name":"management","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_genesis","type":"uint256"},{"name":"_token","type":"address"},{"name":"_measure","type":"address"},{"name":"_minter","type":"address"},{"name":"_burner","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"epoch","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"vote_open","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"votes_available","inputs":[{"name":"_account","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"emission","inputs":[],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"epoch_emission","inputs":[{"name":"_epoch","type":"uint256"}],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"gauge_emission","inputs":[{"name":"_gauge","type":"address"}],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"gauge_reserved_points","inputs":[{"name":"_gauge","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"gauge_reserved_last_cumulative","inputs":[{"name":"_gauge","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"vote","inputs":[{"name":"_gauges","type":"address[]"},{"name":"_votes","type":"uint256[]"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"claim","inputs":[],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"claim","inputs":[{"name":"_gauge","type":"address"}],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"claim","inputs":[{"name":"_gauge","type":"address"},{"name":"_recipient","type":"address"}],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"update_emission","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"whitelist","inputs":[{"name":"_gauge","type":"address"},{"name":"_whitelisted","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_reserved_points","inputs":[{"name":"_gauge","type":"address"},{"name":"_points","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_blank_burn_points","inputs":[{"name":"_points","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_legacy_gauge","inputs":[{"name":"_gauge","type":"address"},{"name":"_legacy","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_whitelister","inputs":[{"name":"_whitelister","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_legacy_operator","inputs":[{"name":"_operator","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_measure","inputs":[{"name":"_measure","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_minter","inputs":[{"name":"_minter","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_burner","inputs":[{"name":"_burner","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_management","inputs":[{"name":"_management","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"accept_management","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"genesis","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"management","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"pending_management","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"whitelister","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"legacy_operator","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"measure","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"minter","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"burner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"blank_emission","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"gauge_claimed","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"blank_burn_points","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"reserved_points","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"gauge_whitelisted","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"legacy_gauge","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"votes","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"votes_user","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"gauge_votes","inputs":[{"name":"arg0","type":"uint256"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"gauge_votes_user","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"uint256"},{"name":"arg2","type":"address"}],"outputs":[{"name":"","type":"uint256"}]}]
Contract Creation Code
611a0f51503461015f576020611b885f395f518060a01c61015f5760a0526020611ba85f395f518060a01c61015f5760c0526020611bc85f395f518060a01c61015f5760e0526020611be85f395f518060a01c61015f57610100526020611b685f395f516119ef5260a051611a0f52335f55336002553360035560c05160045560e051600555610100516006556100976101406100dd565b6101405161012052610120516001810381811161015f5790506040526040366060376100c46101406100fd565b610140516007556119ef61016361000039611a2f610000f35b426119ef5180820382811161015f57905090506212750081049050815250565b63ffffffff6040511115610111575f610144565b6dffffffffffffffffffffffffffff606051111561012f575f610144565b6dffffffffffffffffffffffffffff60805111155b1561015f5760805160605160701b60405160e01b1717815250565b5f80fd5f3560e01c60026025820660011b6119a501601e395f51565b63a7f0b3de811861003657346119a15760206119ef60403960206040f35b6327810b6e811861005257346119a15760065460405260206040f35b632941f808811861121f57346119a1575f6020905b80610280526100776102a0611345565b6102a05115610087575050610094565b6001018181186100675750505b0061121f565b63fc0c546a811861121f57346119a1576020611a0f60403960206040f361121f565b6388a8d60281186100d757346119a1575f5460405260206040f35b63efa9a1ad811861121f57346119a15760045460405260206040f361121f565b63770817ec811861121f57346119a15760015460405260206040f361121f565b6322758a4a811861013357346119a15760025460405260206040f35b63786370ba811861121f57346119a157602061014f60406112aa565b6040f361121f565b634a3cfeff811861017357346119a15760035460405260206040f35b637152d5f781186101bd576044361034176119a1576024358060a01c6119a15760405260136004356020525f5260405f20806040516020525f5260405f2090505460605260206060f35b6321c0b342811861121f576044361034176119a1576004358060a01c6119a157610280526024358060a01c6119a1576102a0525b610280516102c0526102805161020757336102c0525b6102c0516102e05260106102c0516020525f5260405f20541561023f5760035433186119a1576102a051156119a1576102a0516102e0525b61024a610300611345565b61030051156119a157606036610300376102c05160a05261026c6103606116be565b61036080516103005260208101516103205260408101516103405250600b6102c0516020525f5260405f20546103605261032051610360518082038281116119a1579050905061038052610380511561037e5761032051600b6102c0516020525f5260405f20556020611a0f5f395f5163a9059cbb6103a0526102e0516103c052610380516103e05260206103a060446103bc5f855af161030f573d5f5f3e3d5ffd5b3d61032657803b156119a15760016104005261033f565b60203d106119a1576103a0518060011c6119a157610400525b610400905051156119a157610280517f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4610380516103a05260206103a0a25b60206119ef5f395f516103926103c0611223565b6103c05162127500810281621275008204186119a15790508082018281106119a157905090506103a052610320516103c052610340516103e0526103a0516104005260606103c0f361121f565b6307546172811861121f57346119a15760055460405260206040f361121f565b63a834caa4811861041b57346119a15760085460405260206040f35b631dea4f418118610456576024361034176119a1576004358060a01c6119a157604052600b6040516020525f5260405f205460605260206060f35b63866b8d9f811861121f576024361034176119a157604060096004356020525f5260405f20546040526104896060611312565b6060f361121f565b63123ac9ae81186104ad57346119a157600c5460405260206040f35b63014edde0811861121f576024361034176119a1576004358060a01c6119a1576040525f5433186119a1576040516002557f0ca44eaf19ec8e07aaa42c7f82892b8ff7de9faf7b420a750585730a0b0b387860405160605260206060a10061121f565b6352b89898811861121f57346119a157600d5460405260206040f361121f565b6379d26215811861056b576024361034176119a1576004358060a01c6119a157604052600f6040516020525f5260405f205460605260206060f35b63759be10c811861121f57346119a15760015433186119a1575f600155335f55337fafe23f9e1f603b288748a507d5a993957e9f14313a5889d5a070851299939d595f6040a20061121f565b63ed73855981186105f2576024361034176119a1576004358060a01c6119a15760405260106040516020525f5260405f205460605260206060f35b636f816a20811861121f576084361034176119a15760043560040160208135116119a15780355f81602081116119a157801561065057905b8060051b6020850101358060a01c6119a1578160051b6102a0015260010181811861062a575b50508061028052505060243560040160208135116119a157803560208160051b0180836106a0375050506106a05161028051186119a157610692610ac06112aa565b610ac051156119a1576106a6610ac0611345565b610ac051156119a15760045463f49ec310610ae05233610b00526020610ae06024610afc845afa6106d9573d5f5f3e3d5ffd5b60203d106119a157610ae0905051610ac0526106f6610b00611223565b610b0051610ae0525f610b00525f6020905b80610b205261028051610b20511861071f57610883565b610b2051610280518110156119a15760051b6102a00151610b4052610ac051610b20516106a0518110156119a15760051b6106c001518082028115838383041417156119a1579050905061271081049050610b6052610b4051156107a957600f610b40516020525f5260405f2054156119a157610b405160a0526107a4610b806116be565b610b80505b6013610ae0516020525f5260405f2080610b40516020525f5260405f2090508054610b60518082018281106119a157905090508155506014336020525f5260405f2080610ae0516020525f5260405f20905080610b40516020525f5260405f2090508054610b60518082018281106119a15790509050815550610b0051610b60518082018281106119a15790509050610b0052610b4051337fd3e566fa4d4d8b17c007ba24b9dbb382c9185a03c9ef59477ee3c6132ca0a306610ae051610b8052610b6051610ba0526040610b80a3600101818118610708575b5050610b0051156119a1576011610ae0516020525f5260405f208054610b00518082018281106119a15790509050815550610b00516012336020525f5260405f2080610ae0516020525f5260405f209050548082018281106119a15790509050610b0052610ac051610b0051116119a157610b00516012336020525f5260405f2080610ae0516020525f5260405f209050550061121f565b635df81330811861121f576024361034176119a15760116004356020525f5260405f205460405260206040f361121f565b63b3b17fa5811861121f576044361034176119a1576004358060a01c6119a15760405260126040516020525f5260405f20806024356020525f5260405f2090505460605260206060f361121f565b63b5a4cfdc8118610a01576064361034176119a1576004358060a01c6119a1576040526044358060a01c6119a15760605260146040516020525f5260405f20806024356020525f5260405f209050806060516020525f5260405f2090505460805260206080f35b63900cf0cf811861121f57346119a1576020610a1d6040611223565b6040f361121f565b63fab5a02c8118610ac8576024361034176119a1576004358060a01c6119a15760405260045463f49ec31060805260405160a052602060806024609c845afa610a70573d5f5f3e3d5ffd5b60203d106119a1576080905051606052610a8a60a0611223565b60a05160805260605160126040516020525f5260405f20806080516020525f5260405f209050548082038281116119a1579050905060a052602060a0f35b631652e9fc811861121f576024361034176119a1576004358060a01c6119a157610280525f5433186119a15761028051156119a157610b086102a0611345565b6102a051156119a157610280516005557fcec52196e972044edde8689a1b608e459c5946b7f3e5c8cd3d6d8e126d422e1c610280516102a05260206102a0a10061121f565b63827c049e811861121f57346119a1576060600754604052610b6f60606112d4565b6060f361121f565b63b3a37c2c811861121f576024361034176119a1576004358060a01c6119a1576060526060600a6060516020525f5260405f2054604052610bb860806112d4565b6080f361121f565b6332571387811861121f576024361034176119a1576004358060a01c6119a1576060526020600e6060516020525f5260405f2054604052610c016080611312565b6080f361121f565b634314a225811861121f576024361034176119a1576004358060a01c6119a1576060526020600e6060516020525f5260405f2054604052610c4a6080611312565b6080602081019050f361121f565b634e71d92d8118610c7457346119a157604036610280376101f1565b63f0a89f32811861121f576044361034176119a1576004358060a01c6119a1576040526024358060011c6119a1576060525f5433186119a157600f6040516020525f5260405f2054156119a15760605160106040516020525f5260405f20556040517f47d1b7289f3c0e512b700ae0edb12c25eef30d145270caa1a79f2f36eab9cb0c60605160805260206080a20061121f565b631e83409a811861121f576024361034176119a1576004358060a01c6119a157610280525f6102a0526101f15661121f565b63f59c37088118610e84576044361034176119a1576004358060a01c6119a157610280526024358060011c6119a1576102a05260025433186119a15761028051156119a157610d8a6102c0611345565b6102c051156119a157600f610280516020525f5260405f20546102a05118610db157610e82565b6102a051610e3a576102805160a052610dcb6102c06116be565b6102c0506040366102c037600e610280516020525f5260405f2054604052610df4610300611312565b61030080516102c05260208101516102e052506102c05115610e3a57600d546102c0518082038281116119a15790509050600d555f600e610280516020525f5260405f20555b6102a051600f610280516020525f5260405f2055610280517f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d6102a0516102c05260206102c0a25b005b633fc1efc5811861121f576044361034176119a1576004358060a01c6119a157610280525f5433186119a157600f610280516020525f5260405f2054156119a157610ed06102a0611345565b6102a051156119a1576102805160a052610eeb6102a06116be565b6102a0506040366102a037600e610280516020525f5260405f2054604052610f146102e0611312565b6102e080516102a05260208101516102c052506102a051610f4957600754604052610f406102e0611312565b6102e0516102c0525b600d546102a0518082038281116119a157905090506024358082018281106119a157905090506102e0526127106102e051116119a1576102e051600d555f6040526024356060526102c051608052610fa2610300611248565b61030051600e610280516020525f5260405f2055610280517f1740a8c019d07e73482183a637eac534c2702c6f202bc983f1ab4ec8561a4408602435610300526020610300a20061121f565b63ab31eca1811861121f576024361034176119a1575f5433186119a157612710600435116119a157611021610280611345565b61028051156119a157600435600c557fb2fda0078e02acae6669719034c78985ff77c5c6d87d357900ec18dcddb73067600435610280526020610280a10061121f565b63d10a4d97811861121f576024361034176119a1576004358060a01c6119a1576040525f5433186119a1576040516003557f5b840b7adf82f47c86f6fac63972c7058423bcbdfcdfca8349a556b67c33986960405160605260206060a10061121f565b63c764c59f811861113f576024361034176119a1576004358060a01c6119a1576040525f5433186119a157604051156119a15761110460606112aa565b6060516119a1576040516004557f602e8126584dd3551a170697ca62a8225945d42068a7ac49f200b7a60110aca960405160605260206060a1005b63fd066ecc811861121f576024361034176119a1576004358060a01c6119a1576040525f5433186119a1576040516001556040517fe7b5cc087e6e47e33e86bdfe4720b7e849891938b18ff6e0c3f92299de79e60c5f6060a20061121f565b63e0774862811861121f576024361034176119a1576004358060a01c6119a157610280525f5433186119a15761028051156119a1576111de6102a0611345565b6102a051156119a157610280516006557f5d02513563a6890385b0d6684a867cbf8032b19adbd10bca1f78f430db041e37610280516102a05260206102a0a1005b5f5ffd5b4260206119ef5f395f518082038281116119a157905090506212750081049050815250565b63ffffffff604051111561125c575f61128f565b6dffffffffffffffffffffffffffff606051111561127a575f61128f565b6dffffffffffffffffffffffffffff60805111155b156119a15760805160605160701b60405160e01b1717815250565b62093a7f4260206119ef5f395f518082038281116119a15790509050621275008106905011815250565b60405160e01c81526dffffffffffffffffffffffffffff60405160701c1660208201526dffffffffffffffffffffffffffff60405116604082015250565b6dffffffffffffffffffffffffffff60405160701c1681526dffffffffffffffffffffffffffff60405116602082015250565b61134f60c0611223565b60c051600181038181116119a157905060a05260603660c0376007546040526113796101206112d4565b610120805160c052602081015160e0526040810151610100525060a05160c051186113a85760018152506116bc565b60c051600181018181106119a157905060c05260055463a0712d686101405260c051610160526020610140602461015c5f855af16113e8573d5f5f3e3d5ffd5b60203d106119a1576101409050516008548082018281106119a157905090506101205261012051600d548082028115838383041417156119a157905090506127108104905061014052601360c0516020525f5260405f20805f6020525f5260405f2090505461016052601160c0516020525f5260405f2054610180525f6101a05261016051156114ba5761012051610140518082038281116119a15790509050610160518082028115838383041417156119a157905090506101805180156119a157808204905090506101a0526114dd565b610180516114dd5761012051610140518082038281116119a157905090506101a0525b5f6101c0526101a051156115e7576101a051600c548082028115838383041417156119a15790509050612710810490506101c0526101c051156115e7576101a0516101c0518082038281116119a157905090506101a0526020611a0f5f395f5163095ea7b36101e052600654610200526101c0516102205260206101e060446101fc5f855af161156f573d5f5f3e3d5ffd5b3d61158657803b156119a15760016102405261159f565b60203d106119a1576101e0518060011c6119a157610240525b610240905051156119a15760065463b390c0ab6101e05260c051610200526101c05161022052803b156119a1575f6101e060446101fc5f855af16115e5573d5f5f3e3d5ffd5b505b60e051610120518082018281106119a1579050905060e052610120516101005260c05160405260e051606052610100516080526116256101e0611248565b6101e0516007556101a0516008555f60405261012051606052610140516080526116506101e0611248565b6101e051600960c0516020525f5260405f20557f94a78dd0a56cb5963bffd05b40ba5cf0aaf7c65c74005e7ca2c1dcb7f69ea44060c0516101e052610120516102005261014051610220526101c051610240526101a0516102605260a06101e0a160a05160c051148152505b565b6116c860e0611223565b60e051600181038181116119a157905060c05260603660e037600a60a0516020525f5260405f20546040526116fe6101406112d4565b610140805160e0526020810151610100526040810151610120525060c05160e051186117415760e05181526101005160208201526101205160408201525061199f565b60e051600181018181106119a1579050610140526013610140516020525f5260405f208060a0516020525f5260405f2090505461012052610120511561183457604036610160376009610140516020525f5260405f20546040526117a66101a0611312565b6101a08051610160526020810151610180525061016051610180518082038281116119a15790509050610120518082028115838383041417156119a157905090506011610140516020525f5260405f205480156119a157808204905090506101205261010051610120518082018281106119a157905090506101005260c0516101405114611834575f610120525b60403661016037600e60a0516020525f5260405f20546040526118586101a0611312565b6101a0805161016052602081015161018052506101605115611954576040366101a03760075460405261188c6101e0611312565b6101e080516101a05260208101516101c05250610120516101c051610160518082028115838383041417156119a15790509050612710810490508082018281106119a1579050905061012052610100516101a051610180518082038281116119a15790509050610160518082028115838383041417156119a15790509050612710810490508082018281106119a15790509050610100525f604052610160516060526101a0516080526119406101e0611248565b6101e051600e60a0516020525f5260405f20555b60c05160405261010051606052610120516080526119736101a0611248565b6101a051600a60a0516020525f5260405f205560c0518152610100516020820152610120516040820152505b565b5f80fd0018121f121f009a03ff121f0b770c58091b0b4d121f119e00bc0fee0491053010c70117121f121f03df121f094c00f705b7121f0510121f10640bc00a250c09121f01570d3a0d08099a841919ef81184a1840a16576797065728300030a001600000000000000000000000000000000000000000000000000000000650b878000000000000000000000000041252e8691e964f7de35156b68493bab6797a275000000000000000000000000992122bc6f7fed14edc4a564d57039452c63cc88000000000000000000000000c65ac814056fd097ca28850c8466ece7bb3a8bf5000000000000000000000000cac873e93cfe5c79325e73c22975b665c6177f40
Deployed Bytecode
0x5f3560e01c60026025820660011b6119a501601e395f51565b63a7f0b3de811861003657346119a15760206119ef60403960206040f35b6327810b6e811861005257346119a15760065460405260206040f35b632941f808811861121f57346119a1575f6020905b80610280526100776102a0611345565b6102a05115610087575050610094565b6001018181186100675750505b0061121f565b63fc0c546a811861121f57346119a1576020611a0f60403960206040f361121f565b6388a8d60281186100d757346119a1575f5460405260206040f35b63efa9a1ad811861121f57346119a15760045460405260206040f361121f565b63770817ec811861121f57346119a15760015460405260206040f361121f565b6322758a4a811861013357346119a15760025460405260206040f35b63786370ba811861121f57346119a157602061014f60406112aa565b6040f361121f565b634a3cfeff811861017357346119a15760035460405260206040f35b637152d5f781186101bd576044361034176119a1576024358060a01c6119a15760405260136004356020525f5260405f20806040516020525f5260405f2090505460605260206060f35b6321c0b342811861121f576044361034176119a1576004358060a01c6119a157610280526024358060a01c6119a1576102a0525b610280516102c0526102805161020757336102c0525b6102c0516102e05260106102c0516020525f5260405f20541561023f5760035433186119a1576102a051156119a1576102a0516102e0525b61024a610300611345565b61030051156119a157606036610300376102c05160a05261026c6103606116be565b61036080516103005260208101516103205260408101516103405250600b6102c0516020525f5260405f20546103605261032051610360518082038281116119a1579050905061038052610380511561037e5761032051600b6102c0516020525f5260405f20556020611a0f5f395f5163a9059cbb6103a0526102e0516103c052610380516103e05260206103a060446103bc5f855af161030f573d5f5f3e3d5ffd5b3d61032657803b156119a15760016104005261033f565b60203d106119a1576103a0518060011c6119a157610400525b610400905051156119a157610280517f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4610380516103a05260206103a0a25b60206119ef5f395f516103926103c0611223565b6103c05162127500810281621275008204186119a15790508082018281106119a157905090506103a052610320516103c052610340516103e0526103a0516104005260606103c0f361121f565b6307546172811861121f57346119a15760055460405260206040f361121f565b63a834caa4811861041b57346119a15760085460405260206040f35b631dea4f418118610456576024361034176119a1576004358060a01c6119a157604052600b6040516020525f5260405f205460605260206060f35b63866b8d9f811861121f576024361034176119a157604060096004356020525f5260405f20546040526104896060611312565b6060f361121f565b63123ac9ae81186104ad57346119a157600c5460405260206040f35b63014edde0811861121f576024361034176119a1576004358060a01c6119a1576040525f5433186119a1576040516002557f0ca44eaf19ec8e07aaa42c7f82892b8ff7de9faf7b420a750585730a0b0b387860405160605260206060a10061121f565b6352b89898811861121f57346119a157600d5460405260206040f361121f565b6379d26215811861056b576024361034176119a1576004358060a01c6119a157604052600f6040516020525f5260405f205460605260206060f35b63759be10c811861121f57346119a15760015433186119a1575f600155335f55337fafe23f9e1f603b288748a507d5a993957e9f14313a5889d5a070851299939d595f6040a20061121f565b63ed73855981186105f2576024361034176119a1576004358060a01c6119a15760405260106040516020525f5260405f205460605260206060f35b636f816a20811861121f576084361034176119a15760043560040160208135116119a15780355f81602081116119a157801561065057905b8060051b6020850101358060a01c6119a1578160051b6102a0015260010181811861062a575b50508061028052505060243560040160208135116119a157803560208160051b0180836106a0375050506106a05161028051186119a157610692610ac06112aa565b610ac051156119a1576106a6610ac0611345565b610ac051156119a15760045463f49ec310610ae05233610b00526020610ae06024610afc845afa6106d9573d5f5f3e3d5ffd5b60203d106119a157610ae0905051610ac0526106f6610b00611223565b610b0051610ae0525f610b00525f6020905b80610b205261028051610b20511861071f57610883565b610b2051610280518110156119a15760051b6102a00151610b4052610ac051610b20516106a0518110156119a15760051b6106c001518082028115838383041417156119a1579050905061271081049050610b6052610b4051156107a957600f610b40516020525f5260405f2054156119a157610b405160a0526107a4610b806116be565b610b80505b6013610ae0516020525f5260405f2080610b40516020525f5260405f2090508054610b60518082018281106119a157905090508155506014336020525f5260405f2080610ae0516020525f5260405f20905080610b40516020525f5260405f2090508054610b60518082018281106119a15790509050815550610b0051610b60518082018281106119a15790509050610b0052610b4051337fd3e566fa4d4d8b17c007ba24b9dbb382c9185a03c9ef59477ee3c6132ca0a306610ae051610b8052610b6051610ba0526040610b80a3600101818118610708575b5050610b0051156119a1576011610ae0516020525f5260405f208054610b00518082018281106119a15790509050815550610b00516012336020525f5260405f2080610ae0516020525f5260405f209050548082018281106119a15790509050610b0052610ac051610b0051116119a157610b00516012336020525f5260405f2080610ae0516020525f5260405f209050550061121f565b635df81330811861121f576024361034176119a15760116004356020525f5260405f205460405260206040f361121f565b63b3b17fa5811861121f576044361034176119a1576004358060a01c6119a15760405260126040516020525f5260405f20806024356020525f5260405f2090505460605260206060f361121f565b63b5a4cfdc8118610a01576064361034176119a1576004358060a01c6119a1576040526044358060a01c6119a15760605260146040516020525f5260405f20806024356020525f5260405f209050806060516020525f5260405f2090505460805260206080f35b63900cf0cf811861121f57346119a1576020610a1d6040611223565b6040f361121f565b63fab5a02c8118610ac8576024361034176119a1576004358060a01c6119a15760405260045463f49ec31060805260405160a052602060806024609c845afa610a70573d5f5f3e3d5ffd5b60203d106119a1576080905051606052610a8a60a0611223565b60a05160805260605160126040516020525f5260405f20806080516020525f5260405f209050548082038281116119a1579050905060a052602060a0f35b631652e9fc811861121f576024361034176119a1576004358060a01c6119a157610280525f5433186119a15761028051156119a157610b086102a0611345565b6102a051156119a157610280516005557fcec52196e972044edde8689a1b608e459c5946b7f3e5c8cd3d6d8e126d422e1c610280516102a05260206102a0a10061121f565b63827c049e811861121f57346119a1576060600754604052610b6f60606112d4565b6060f361121f565b63b3a37c2c811861121f576024361034176119a1576004358060a01c6119a1576060526060600a6060516020525f5260405f2054604052610bb860806112d4565b6080f361121f565b6332571387811861121f576024361034176119a1576004358060a01c6119a1576060526020600e6060516020525f5260405f2054604052610c016080611312565b6080f361121f565b634314a225811861121f576024361034176119a1576004358060a01c6119a1576060526020600e6060516020525f5260405f2054604052610c4a6080611312565b6080602081019050f361121f565b634e71d92d8118610c7457346119a157604036610280376101f1565b63f0a89f32811861121f576044361034176119a1576004358060a01c6119a1576040526024358060011c6119a1576060525f5433186119a157600f6040516020525f5260405f2054156119a15760605160106040516020525f5260405f20556040517f47d1b7289f3c0e512b700ae0edb12c25eef30d145270caa1a79f2f36eab9cb0c60605160805260206080a20061121f565b631e83409a811861121f576024361034176119a1576004358060a01c6119a157610280525f6102a0526101f15661121f565b63f59c37088118610e84576044361034176119a1576004358060a01c6119a157610280526024358060011c6119a1576102a05260025433186119a15761028051156119a157610d8a6102c0611345565b6102c051156119a157600f610280516020525f5260405f20546102a05118610db157610e82565b6102a051610e3a576102805160a052610dcb6102c06116be565b6102c0506040366102c037600e610280516020525f5260405f2054604052610df4610300611312565b61030080516102c05260208101516102e052506102c05115610e3a57600d546102c0518082038281116119a15790509050600d555f600e610280516020525f5260405f20555b6102a051600f610280516020525f5260405f2055610280517f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d6102a0516102c05260206102c0a25b005b633fc1efc5811861121f576044361034176119a1576004358060a01c6119a157610280525f5433186119a157600f610280516020525f5260405f2054156119a157610ed06102a0611345565b6102a051156119a1576102805160a052610eeb6102a06116be565b6102a0506040366102a037600e610280516020525f5260405f2054604052610f146102e0611312565b6102e080516102a05260208101516102c052506102a051610f4957600754604052610f406102e0611312565b6102e0516102c0525b600d546102a0518082038281116119a157905090506024358082018281106119a157905090506102e0526127106102e051116119a1576102e051600d555f6040526024356060526102c051608052610fa2610300611248565b61030051600e610280516020525f5260405f2055610280517f1740a8c019d07e73482183a637eac534c2702c6f202bc983f1ab4ec8561a4408602435610300526020610300a20061121f565b63ab31eca1811861121f576024361034176119a1575f5433186119a157612710600435116119a157611021610280611345565b61028051156119a157600435600c557fb2fda0078e02acae6669719034c78985ff77c5c6d87d357900ec18dcddb73067600435610280526020610280a10061121f565b63d10a4d97811861121f576024361034176119a1576004358060a01c6119a1576040525f5433186119a1576040516003557f5b840b7adf82f47c86f6fac63972c7058423bcbdfcdfca8349a556b67c33986960405160605260206060a10061121f565b63c764c59f811861113f576024361034176119a1576004358060a01c6119a1576040525f5433186119a157604051156119a15761110460606112aa565b6060516119a1576040516004557f602e8126584dd3551a170697ca62a8225945d42068a7ac49f200b7a60110aca960405160605260206060a1005b63fd066ecc811861121f576024361034176119a1576004358060a01c6119a1576040525f5433186119a1576040516001556040517fe7b5cc087e6e47e33e86bdfe4720b7e849891938b18ff6e0c3f92299de79e60c5f6060a20061121f565b63e0774862811861121f576024361034176119a1576004358060a01c6119a157610280525f5433186119a15761028051156119a1576111de6102a0611345565b6102a051156119a157610280516006557f5d02513563a6890385b0d6684a867cbf8032b19adbd10bca1f78f430db041e37610280516102a05260206102a0a1005b5f5ffd5b4260206119ef5f395f518082038281116119a157905090506212750081049050815250565b63ffffffff604051111561125c575f61128f565b6dffffffffffffffffffffffffffff606051111561127a575f61128f565b6dffffffffffffffffffffffffffff60805111155b156119a15760805160605160701b60405160e01b1717815250565b62093a7f4260206119ef5f395f518082038281116119a15790509050621275008106905011815250565b60405160e01c81526dffffffffffffffffffffffffffff60405160701c1660208201526dffffffffffffffffffffffffffff60405116604082015250565b6dffffffffffffffffffffffffffff60405160701c1681526dffffffffffffffffffffffffffff60405116602082015250565b61134f60c0611223565b60c051600181038181116119a157905060a05260603660c0376007546040526113796101206112d4565b610120805160c052602081015160e0526040810151610100525060a05160c051186113a85760018152506116bc565b60c051600181018181106119a157905060c05260055463a0712d686101405260c051610160526020610140602461015c5f855af16113e8573d5f5f3e3d5ffd5b60203d106119a1576101409050516008548082018281106119a157905090506101205261012051600d548082028115838383041417156119a157905090506127108104905061014052601360c0516020525f5260405f20805f6020525f5260405f2090505461016052601160c0516020525f5260405f2054610180525f6101a05261016051156114ba5761012051610140518082038281116119a15790509050610160518082028115838383041417156119a157905090506101805180156119a157808204905090506101a0526114dd565b610180516114dd5761012051610140518082038281116119a157905090506101a0525b5f6101c0526101a051156115e7576101a051600c548082028115838383041417156119a15790509050612710810490506101c0526101c051156115e7576101a0516101c0518082038281116119a157905090506101a0526020611a0f5f395f5163095ea7b36101e052600654610200526101c0516102205260206101e060446101fc5f855af161156f573d5f5f3e3d5ffd5b3d61158657803b156119a15760016102405261159f565b60203d106119a1576101e0518060011c6119a157610240525b610240905051156119a15760065463b390c0ab6101e05260c051610200526101c05161022052803b156119a1575f6101e060446101fc5f855af16115e5573d5f5f3e3d5ffd5b505b60e051610120518082018281106119a1579050905060e052610120516101005260c05160405260e051606052610100516080526116256101e0611248565b6101e0516007556101a0516008555f60405261012051606052610140516080526116506101e0611248565b6101e051600960c0516020525f5260405f20557f94a78dd0a56cb5963bffd05b40ba5cf0aaf7c65c74005e7ca2c1dcb7f69ea44060c0516101e052610120516102005261014051610220526101c051610240526101a0516102605260a06101e0a160a05160c051148152505b565b6116c860e0611223565b60e051600181038181116119a157905060c05260603660e037600a60a0516020525f5260405f20546040526116fe6101406112d4565b610140805160e0526020810151610100526040810151610120525060c05160e051186117415760e05181526101005160208201526101205160408201525061199f565b60e051600181018181106119a1579050610140526013610140516020525f5260405f208060a0516020525f5260405f2090505461012052610120511561183457604036610160376009610140516020525f5260405f20546040526117a66101a0611312565b6101a08051610160526020810151610180525061016051610180518082038281116119a15790509050610120518082028115838383041417156119a157905090506011610140516020525f5260405f205480156119a157808204905090506101205261010051610120518082018281106119a157905090506101005260c0516101405114611834575f610120525b60403661016037600e60a0516020525f5260405f20546040526118586101a0611312565b6101a0805161016052602081015161018052506101605115611954576040366101a03760075460405261188c6101e0611312565b6101e080516101a05260208101516101c05250610120516101c051610160518082028115838383041417156119a15790509050612710810490508082018281106119a1579050905061012052610100516101a051610180518082038281116119a15790509050610160518082028115838383041417156119a15790509050612710810490508082018281106119a15790509050610100525f604052610160516060526101a0516080526119406101e0611248565b6101e051600e60a0516020525f5260405f20555b60c05160405261010051606052610120516080526119736101a0611248565b6101a051600a60a0516020525f5260405f205560c0518152610100516020820152610120516040820152505b565b5f80fd0018121f121f009a03ff121f0b770c58091b0b4d121f119e00bc0fee0491053010c70117121f121f03df121f094c00f705b7121f0510121f10640bc00a250c09121f01570d3a0d08099a00000000000000000000000000000000000000000000000000000000650b878000000000000000000000000041252e8691e964f7de35156b68493bab6797a275
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000650b878000000000000000000000000041252e8691e964f7de35156b68493bab6797a275000000000000000000000000992122bc6f7fed14edc4a564d57039452c63cc88000000000000000000000000c65ac814056fd097ca28850c8466ece7bb3a8bf5000000000000000000000000cac873e93cfe5c79325e73c22975b665c6177f40
-----Decoded View---------------
Arg [0] : _genesis (uint256): 1695254400
Arg [1] : _token (address): 0x41252E8691e964f7DE35156B68493bAb6797a275
Arg [2] : _measure (address): 0x992122bC6f7fed14EDC4a564D57039452C63CC88
Arg [3] : _minter (address): 0xC65ac814056fd097ca28850c8466EcE7BB3A8bF5
Arg [4] : _burner (address): 0xCac873E93cFe5c79325e73c22975b665C6177f40
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000650b8780
Arg [1] : 00000000000000000000000041252e8691e964f7de35156b68493bab6797a275
Arg [2] : 000000000000000000000000992122bc6f7fed14edc4a564d57039452c63cc88
Arg [3] : 000000000000000000000000c65ac814056fd097ca28850c8466ece7bb3a8bf5
Arg [4] : 000000000000000000000000cac873e93cfe5c79325e73c22975b665c6177f40
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.