Source Code
Latest 5 from a total of 5 transactions
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | ||||
|---|---|---|---|---|---|---|---|
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX | |||||
| 24498332 | 158 days ago | 0 FRAX |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Minter
Compiler Version
v0.8.22+commit.4fc1097e
Optimization Enabled:
Yes with 10000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.22;
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
import {IVotingEscrow} from "./interfaces/IVotingEscrow.sol";
import {IUnderlying} from "./interfaces/IUnderlying.sol";
import {IVoter} from "./interfaces/IVoter.sol";
import {IVotingEscrowDistributor} from "./interfaces/IVotingEscrowDistributor.sol";
// codifies the minting rules as per ve(3,3), abstracted from the token to support any token that allows minting
contract Minter {
uint internal constant week = 86400 * 7; // allows minting once per week (reset every Thursday 00:00 UTC)
uint public emission = 9900;
uint public tail_emission = 100;
uint internal constant target_base = 10000; // 1% per week target emission
uint internal constant tail_base = 10000; // 1% per week target emission
IUnderlying public immutable _token;
IVoter public immutable _voter;
IVotingEscrow public immutable _ve;
IVotingEscrowDistributor public immutable _ve_dist;
uint public weekly = 50000e18;
uint public active_period;
uint internal constant lock = 86400 * 7 * 52 * 4;
address internal initializer;
address public team;
address public pendingTeam;
uint public teamRate;
uint public rebaseRate;
uint public constant MAX_TEAM_RATE = 100; // 100 bps = 10%
uint public constant MAX_REBASE_RATE = 1000; // 1000 bps = 100%
address[] internal excludedAddresses;
event Mint(address indexed sender, uint weekly, uint circulating_supply, uint circulating_emission);
constructor(
address __voter, // the voting & distribution system
address __ve, // the ve(3,3) system that will be locked into
address __ve_dist // the distribution system that ensures users aren't diluted
) {
initializer = msg.sender;
team = 0x0c5D52630c982aE81b78AB2954Ddc9EC2797bB9c;
teamRate = 50; // 50 bps = 5%
rebaseRate = 1000; // 1000 bps = 100%
_token = IUnderlying(IVotingEscrow(__ve).token());
_voter = IVoter(__voter);
_ve = IVotingEscrow(__ve);
_ve_dist = IVotingEscrowDistributor(__ve_dist);
active_period = ((block.timestamp + (2 * week)) / week) * week;
}
function initialize(
address[] memory claimants,
uint[] memory amounts,
uint max // sum amounts / max = % ownership of top protocols, so if initial 20m is distributed, and target is 25% protocol ownership, then max - 4 x 20m = 80m
) external {
require(initializer == msg.sender);
_token.mint(address(this), max);
_token.approve(address(_ve), type(uint).max);
for (uint i = 0; i < claimants.length; i++) {
_ve.create_lock_for(amounts[i], lock, claimants[i]);
}
initializer = address(0);
active_period = (block.timestamp / week) * week;
}
function getExcludedAddresses() public view returns (address[] memory) {
return excludedAddresses;
}
function setExcludedAddresses(address[] memory _excludedAddresses) public {
require(msg.sender == _voter.admin(), "not voter admin");
excludedAddresses = _excludedAddresses;
}
function setTeam(address _team) external {
require(msg.sender == team, "not team");
pendingTeam = _team;
}
function acceptTeam() external {
require(msg.sender == pendingTeam, "not pending team");
team = pendingTeam;
}
function setTeamRate(uint _teamRate) external {
require(msg.sender == team, "not team");
require(_teamRate <= MAX_TEAM_RATE, "rate too high");
teamRate = _teamRate;
}
function setRebaseRate(uint _rebaseRate) external {
require(msg.sender == _voter.admin(), "not voter admin");
require(_rebaseRate <= MAX_REBASE_RATE, "rate too high");
rebaseRate = _rebaseRate;
}
function setTailEmission(uint _tailEmission) external {
require(msg.sender == _voter.admin(), "not voter admin");
require(_tailEmission <= tail_base, "tail emission is too high");
tail_emission = _tailEmission;
}
function setEmission(uint _emission) external {
require(msg.sender == _voter.admin(), "not voter admin");
require(_emission <= target_base, "emission is too high");
emission = _emission;
}
// calculates sum of all balances for excluded addresses
function excluded_circulating_supply() internal view returns (uint excludedCirculatingSupply) {
for (uint i = 0; i < excludedAddresses.length; i++) {
excludedCirculatingSupply += _token.balanceOf(excludedAddresses[i]);
}
return excludedCirculatingSupply;
}
// calculate circulating supply as total token supply - locked supply
function circulating_supply() public view returns (uint) {
return (_token.totalSupply() - excluded_circulating_supply()) - _ve.totalSupply();
}
// emission calculation is 2% of available supply to mint adjusted by circulating / total supply
function calculate_emission() public view returns (uint) {
return weekly * emission * circulating_supply() / target_base / (_token.totalSupply() - excluded_circulating_supply());
}
// weekly emission takes the max of calculated (aka target) emission versus circulating tail end emission
function weekly_emission() public view returns (uint) {
return Math.max(calculate_emission(), circulating_emission());
}
// calculates tail end (infinity) emissions as 0.2% of total supply
function circulating_emission() public view returns (uint) {
return circulating_supply() * tail_emission / tail_base;
}
// calculate inflation and adjust ve balances accordingly
function calculate_growth(uint _minted) public view returns (uint) {
return rebaseRate * (_ve.totalSupply() * _minted / (_token.totalSupply() - excluded_circulating_supply())) / MAX_REBASE_RATE;
}
// update period can only be called once per cycle (1 week)
function update_period() external returns (uint) {
uint _period = active_period;
if (block.timestamp >= _period + week && initializer == address(0)) { // only trigger if new week
_period = block.timestamp / week * week;
active_period = _period;
weekly = weekly_emission();
uint _growth = calculate_growth(weekly);
uint _teamEmissions = (teamRate * (_growth + weekly)) / 1000;
uint _required = _growth + weekly + _teamEmissions;
uint _balanceOf = _token.balanceOf(address(this));
if (_balanceOf < _required) {
_token.mint(address(this), _required - _balanceOf);
}
if(_teamEmissions > 0) {
require(_token.transfer(team, _teamEmissions));
}
if(_growth > 0) {
require(_token.transfer(address(_ve_dist), _growth));
_ve_dist.checkpoint_token(); // checkpoint token balance that was just minted in ve_dist
_ve_dist.checkpoint_total_supply(); // checkpoint supply
}
_token.approve(address(_voter), weekly);
_voter.notifyRewardAmount(weekly);
emit Mint(msg.sender, weekly, circulating_supply(), circulating_emission());
}
return _period;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)
pragma solidity ^0.8.0;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
enum Rounding {
Down, // Toward negative infinity
Up, // Toward infinity
Zero // Toward zero
}
/**
* @dev Returns the largest of two numbers.
*/
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a > b ? a : b;
}
/**
* @dev Returns the smallest of two numbers.
*/
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
/**
* @dev Returns the average of two numbers. The result is rounded towards
* zero.
*/
function average(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b) / 2 can overflow.
return (a & b) + (a ^ b) / 2;
}
/**
* @dev Returns the ceiling of the division of two numbers.
*
* This differs from standard division with `/` in that it rounds up instead
* of rounding down.
*/
function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b - 1) / b can overflow on addition, so we distribute.
return a == 0 ? 0 : (a - 1) / b + 1;
}
/**
* @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
* @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)
* with further edits by Uniswap Labs also under MIT license.
*/
function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {
unchecked {
// 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use
// use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256
// variables such that product = prod1 * 2^256 + prod0.
uint256 prod0; // Least significant 256 bits of the product
uint256 prod1; // Most significant 256 bits of the product
assembly {
let mm := mulmod(x, y, not(0))
prod0 := mul(x, y)
prod1 := sub(sub(mm, prod0), lt(mm, prod0))
}
// Handle non-overflow cases, 256 by 256 division.
if (prod1 == 0) {
// Solidity will revert if denominator == 0, unlike the div opcode on its own.
// The surrounding unchecked block does not change this fact.
// See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.
return prod0 / denominator;
}
// Make sure the result is less than 2^256. Also prevents denominator == 0.
require(denominator > prod1, "Math: mulDiv overflow");
///////////////////////////////////////////////
// 512 by 256 division.
///////////////////////////////////////////////
// Make division exact by subtracting the remainder from [prod1 prod0].
uint256 remainder;
assembly {
// Compute remainder using mulmod.
remainder := mulmod(x, y, denominator)
// Subtract 256 bit number from 512 bit number.
prod1 := sub(prod1, gt(remainder, prod0))
prod0 := sub(prod0, remainder)
}
// Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.
// See https://cs.stackexchange.com/q/138556/92363.
// Does not overflow because the denominator cannot be zero at this stage in the function.
uint256 twos = denominator & (~denominator + 1);
assembly {
// Divide denominator by twos.
denominator := div(denominator, twos)
// Divide [prod1 prod0] by twos.
prod0 := div(prod0, twos)
// Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.
twos := add(div(sub(0, twos), twos), 1)
}
// Shift in bits from prod1 into prod0.
prod0 |= prod1 * twos;
// Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such
// that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for
// four bits. That is, denominator * inv = 1 mod 2^4.
uint256 inverse = (3 * denominator) ^ 2;
// Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works
// in modular arithmetic, doubling the correct bits in each step.
inverse *= 2 - denominator * inverse; // inverse mod 2^8
inverse *= 2 - denominator * inverse; // inverse mod 2^16
inverse *= 2 - denominator * inverse; // inverse mod 2^32
inverse *= 2 - denominator * inverse; // inverse mod 2^64
inverse *= 2 - denominator * inverse; // inverse mod 2^128
inverse *= 2 - denominator * inverse; // inverse mod 2^256
// Because the division is now exact we can divide by multiplying with the modular inverse of denominator.
// This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is
// less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1
// is no longer required.
result = prod0 * inverse;
return result;
}
}
/**
* @notice Calculates x * y / denominator with full precision, following the selected rounding direction.
*/
function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {
uint256 result = mulDiv(x, y, denominator);
if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {
result += 1;
}
return result;
}
/**
* @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.
*
* Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11).
*/
function sqrt(uint256 a) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
// For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.
//
// We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have
// `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.
//
// This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`
// → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`
// → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`
//
// Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.
uint256 result = 1 << (log2(a) >> 1);
// At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,
// since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at
// every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision
// into the expected uint128 result.
unchecked {
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
result = (result + a / result) >> 1;
return min(result, a / result);
}
}
/**
* @notice Calculates sqrt(a), following the selected rounding direction.
*/
function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = sqrt(a);
return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);
}
}
/**
* @dev Return the log in base 2, rounded down, of a positive value.
* Returns 0 if given 0.
*/
function log2(uint256 value) internal pure returns (uint256) {
uint256 result = 0;
unchecked {
if (value >> 128 > 0) {
value >>= 128;
result += 128;
}
if (value >> 64 > 0) {
value >>= 64;
result += 64;
}
if (value >> 32 > 0) {
value >>= 32;
result += 32;
}
if (value >> 16 > 0) {
value >>= 16;
result += 16;
}
if (value >> 8 > 0) {
value >>= 8;
result += 8;
}
if (value >> 4 > 0) {
value >>= 4;
result += 4;
}
if (value >> 2 > 0) {
value >>= 2;
result += 2;
}
if (value >> 1 > 0) {
result += 1;
}
}
return result;
}
/**
* @dev Return the log in base 2, following the selected rounding direction, of a positive value.
* Returns 0 if given 0.
*/
function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = log2(value);
return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);
}
}
/**
* @dev Return the log in base 10, rounded down, of a positive value.
* Returns 0 if given 0.
*/
function log10(uint256 value) internal pure returns (uint256) {
uint256 result = 0;
unchecked {
if (value >= 10 ** 64) {
value /= 10 ** 64;
result += 64;
}
if (value >= 10 ** 32) {
value /= 10 ** 32;
result += 32;
}
if (value >= 10 ** 16) {
value /= 10 ** 16;
result += 16;
}
if (value >= 10 ** 8) {
value /= 10 ** 8;
result += 8;
}
if (value >= 10 ** 4) {
value /= 10 ** 4;
result += 4;
}
if (value >= 10 ** 2) {
value /= 10 ** 2;
result += 2;
}
if (value >= 10 ** 1) {
result += 1;
}
}
return result;
}
/**
* @dev Return the log in base 10, following the selected rounding direction, of a positive value.
* Returns 0 if given 0.
*/
function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = log10(value);
return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);
}
}
/**
* @dev Return the log in base 256, rounded down, of a positive value.
* Returns 0 if given 0.
*
* Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.
*/
function log256(uint256 value) internal pure returns (uint256) {
uint256 result = 0;
unchecked {
if (value >> 128 > 0) {
value >>= 128;
result += 16;
}
if (value >> 64 > 0) {
value >>= 64;
result += 8;
}
if (value >> 32 > 0) {
value >>= 32;
result += 4;
}
if (value >> 16 > 0) {
value >>= 16;
result += 2;
}
if (value >> 8 > 0) {
result += 1;
}
}
return result;
}
/**
* @dev Return the log in base 256, following the selected rounding direction, of a positive value.
* Returns 0 if given 0.
*/
function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {
unchecked {
uint256 result = log256(value);
return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);
}
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.22;
interface IUnderlying {
function approve(address spender, uint value) external returns (bool);
function mint(address, uint) external;
function totalSupply() external view returns (uint);
function balanceOf(address) external view returns (uint);
function transfer(address, uint) external returns (bool);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.22;
interface IVoter {
function attachTokenToGauge(uint tokenId, address account) external;
function detachTokenFromGauge(uint tokenId, address account) external;
function emitDeposit(uint tokenId, address account, uint amount) external;
function emitWithdraw(uint tokenId, address account, uint amount) external;
function notifyRewardAmount(uint amount) external;
function _ve() external view returns (address);
function createGauge(address _pair) external returns (address);
function factory() external view returns (address);
function whitelistingFee() external view returns (uint256);
function setWhitelistingFee(uint256 _fee) external;
function whitelist(address _token) external;
function isWhitelisted(address _token) external view returns (bool);
function delist(address _token) external;
function bribeFactory() external view returns (address);
function bribes(address gauge) external view returns (address);
function gauges(address pair) external view returns (address);
function isGauge(address gauge) external view returns (bool);
function allGauges(uint index) external view returns (address);
function vote(uint tokenId, address[] calldata gaugeVote, uint[] calldata weights) external;
function gaugeVote(uint tokenId) external view returns (address[] memory);
function votes(uint tokenId, address gauge) external view returns (uint);
function weights(address gauge) external view returns (uint);
function usedWeights(uint tokenId) external view returns (uint);
function claimable(address gauge) external view returns (uint);
function totalWeight() external view returns (uint);
function reset(uint _tokenId) external;
function claimFees(address[] memory _fees, address[][] memory _tokens, uint _tokenId) external;
function claimBribes(address[] memory _bribes, address[][] memory _tokens, uint _tokenId) external;
function distributeFees(address[] memory _gauges) external;
function updateGauge(address _gauge) external;
function poke(uint _tokenId) external;
function initialize(address[] memory _tokens, address _minter) external;
function minter() external view returns (address);
function admin() external view returns (address);
function feeManagers(address feeManager) external view returns (bool);
function claimRewards(address[] memory _gauges, address[][] memory _tokens) external;
function isReward(address gauge, address token) external view returns (bool);
function isBribe(address bribe, address token) external view returns (bool);
function isLive(address gauge) external view returns (bool);
function setBribe(address _bribe, address _token, bool _status) external;
function setReward(address _gauge, address _token, bool _status) external;
function killGauge(address _gauge) external;
function reviveGauge(address _gauge) external;
function distroFees() external;
function distro() external;
function distribute(address _gauge) external;
function distributeRange(uint start, uint finish) external;
function distributeGauges(address[] memory _gauges) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.22;
interface IVotingEscrow {
struct Point {
int128 bias;
int128 slope; // # -dweight / dt
uint256 ts;
uint256 blk; // block
}
function user_point_epoch(uint tokenId) external view returns (uint);
function epoch() external view returns (uint);
function user_point_history(uint tokenId, uint loc) external view returns (Point memory);
function point_history(uint loc) external view returns (Point memory);
function checkpoint() external;
function deposit_for(uint tokenId, uint value) external;
function token() external view returns (address);
function user_point_history__ts(uint tokenId, uint idx) external view returns (uint);
function locked__end(uint _tokenId) external view returns (uint);
function locked__amount(uint _tokenId) external view returns (uint);
function approve(address spender, uint tokenId) external;
function balanceOfNFT(uint) external view returns (uint);
function isApprovedOrOwner(address, uint) external view returns (bool);
function ownerOf(uint) external view returns (address);
function transferFrom(address, address, uint) external;
function totalSupply() external view returns (uint);
function supply() external view returns (uint);
function create_lock_for(uint, uint, address) external returns (uint);
function lockVote(uint tokenId) external;
function isVoteExpired(uint tokenId) external view returns (bool);
function voteExpiry(uint _tokenId) external view returns (uint);
function attach(uint tokenId) external;
function detach(uint tokenId) external;
function voting(uint tokenId) external;
function abstain(uint tokenId) external;
function voted(uint tokenId) external view returns (bool);
function withdraw(uint tokenId) external;
function create_lock(uint value, uint duration) external returns (uint);
function setVoter(address voter) external;
function balanceOf(address owner) external view returns (uint);
function safeTransferFrom(address from, address to, uint tokenId) external;
function burn(uint _tokenId) external;
function setAdmin(address _admin) external;
function setArtProxy(address _proxy) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.22;
interface IVotingEscrowDistributor {
function checkpoint_token() external;
function checkpoint_total_supply() external;
}{
"evmVersion": "paris",
"optimizer": {
"enabled": true,
"runs": 10000
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"__voter","type":"address"},{"internalType":"address","name":"__ve","type":"address"},{"internalType":"address","name":"__ve_dist","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"weekly","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"circulating_supply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"circulating_emission","type":"uint256"}],"name":"Mint","type":"event"},{"inputs":[],"name":"MAX_REBASE_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TEAM_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_token","outputs":[{"internalType":"contract IUnderlying","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ve","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ve_dist","outputs":[{"internalType":"contract IVotingEscrowDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_voter","outputs":[{"internalType":"contract IVoter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"active_period","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calculate_emission","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minted","type":"uint256"}],"name":"calculate_growth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulating_emission","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulating_supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emission","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getExcludedAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimants","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pendingTeam","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebaseRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_emission","type":"uint256"}],"name":"setEmission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_excludedAddresses","type":"address[]"}],"name":"setExcludedAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rebaseRate","type":"uint256"}],"name":"setRebaseRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tailEmission","type":"uint256"}],"name":"setTailEmission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"}],"name":"setTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_teamRate","type":"uint256"}],"name":"setTeamRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tail_emission","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"team","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"update_period","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weekly","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weekly_emission","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
6101006040526126ac6000556064600155690a968163f0a57b4000006002553480156200002b57600080fd5b5060405162002193380380620021938339810160408190526200004e9162000175565b600480546001600160a01b03199081163317825560058054909116730c5d52630c982ae81b78ab2954ddc9ec2797bb9c17905560326007556103e860085560408051637e062a3560e11b815290516001600160a01b0385169263fc0c546a928082019260209290918290030181865afa158015620000d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f69190620001bf565b6001600160a01b0390811660805283811660a05282811660c052811660e05262093a808062000127816002620001fa565b6200013390426200021a565b6200013f919062000230565b6200014b9190620001fa565b6003555062000253915050565b80516001600160a01b03811681146200017057600080fd5b919050565b6000806000606084860312156200018b57600080fd5b620001968462000158565b9250620001a66020850162000158565b9150620001b66040850162000158565b90509250925092565b600060208284031215620001d257600080fd5b620001dd8262000158565b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620002145762000214620001e4565b92915050565b80820180821115620002145762000214620001e4565b6000826200024e57634e487b7160e01b600052601260045260246000fd5b500490565b60805160a05160c05160e051611e5e620003356000396000818161021a01528181611547015281816115ee015261166101526000818161032a015281816108bf0152818161098b01528181610cc701526111200152600081816102740152818161066e01528181610ac001528181610d7a01528181610fb10152818161173301526117e60152600081816103bd015281816105b30152818161082d0152818161090d01528181610c3a015281816111aa0152818161132b015281816113aa01528181611499015281816115760152818161170601526118c00152611e5e6000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638517081311610104578063b5cc143a116100a2578063de588aa011610071578063de588aa0146103a7578063e038c75a146103b0578063ecd0c0c3146103b8578063ed29fc11146103df57600080fd5b8063b5cc143a1461037b578063cfc6c8ff14610383578063d13996081461038b578063ddce102f1461039457600080fd5b80638dd598fb116100de5780638dd598fb146103255780638e01fbfa1461034c57806393225df21461035f5780639b4eaff31461036857600080fd5b806385170813146102ec57806385f2aef2146102ff5780638c4f598b1461031257600080fd5b80633db9b42a116101715780635fdf199a1161014b5780635fdf199a146102bc57806378ef7f02146102d15780637cb95d00146102da578063827c049e146102e357600080fd5b80633db9b42a1461026f57806359d46ffc146102965780635b225dcb146102a957600080fd5b806326cfc17b116101ad57806326cfc17b1461020c5780632c6b2f0c146102155780632e8f7b1f1461025457806336d96faf1461026757600080fd5b806301c8e6fd146101d4578063095cf5c6146101ef5780631eebae8014610204575b600080fd5b6101dc606481565b6040519081526020015b60405180910390f35b6102026101fd366004611a5d565b6103e7565b005b6101dc61049a565b6101dc60025481565b61023c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e6565b610202610262366004611a7a565b6104c3565b6101dc6105a7565b61023c7f000000000000000000000000000000000000000000000000000000000000000081565b60065461023c906001600160a01b031681565b6102026102b7366004611bad565b61066c565b6102c461077f565b6040516101e69190611bea565b6101dc60075481565b6101dc60085481565b6101dc60005481565b6102026102fa366004611c37565b6107e1565b60055461023c906001600160a01b031681565b610202610320366004611a7a565b610abe565b61023c7f000000000000000000000000000000000000000000000000000000000000000081565b6101dc61035a366004611a7a565b610c2b565b6101dc60015481565b610202610376366004611a7a565b610d78565b610202610ee5565b6101dc610f95565b6101dc60035481565b6102026103a2366004611a7a565b610faf565b6101dc6103e881565b6101dc61111c565b61023c7f000000000000000000000000000000000000000000000000000000000000000081565b6101dc61123e565b6005546001600160a01b03163314610460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6e6f74207465616d00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60006127106001546104aa61111c565b6104b49190611d29565b6104be9190611d40565b905090565b6005546001600160a01b03163314610537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6e6f74207465616d0000000000000000000000000000000000000000000000006044820152606401610457565b60648111156105a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f7261746520746f6f2068696768000000000000000000000000000000000000006044820152606401610457565b600755565b60006105b16118b0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106339190611d7b565b61063d9190611d94565b61271061064861111c565b6000546002546106589190611d29565b6106629190611d29565b6104b49190611d40565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ee9190611da7565b6001600160a01b0316336001600160a01b031614610768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420766f7465722061646d696e00000000000000000000000000000000006044820152606401610457565b805161077b9060099060208401906119bc565b5050565b606060098054806020026020016040519081016040528092919081815260200182805480156107d757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107b9575b5050505050905090565b6004546001600160a01b031633146107f857600080fd5b6040517f40c10f19000000000000000000000000000000000000000000000000000000008152306004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f1990604401600060405180830381600087803b15801561087957600080fd5b505af115801561088d573d6000803e3d6000fd5b50506040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301527f000000000000000000000000000000000000000000000000000000000000000016925063095ea7b391506044016020604051808303816000875af1158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c9190611dc4565b5060005b8351811015610a75577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d4e54c3b8483815181106109ca576109ca611de6565b602002602001015163077f88008785815181106109e9576109e9611de6565b60200260200101516040518463ffffffff1660e01b8152600401610a299392919092835260208301919091526001600160a01b0316604082015260600190565b6020604051808303816000875af1158015610a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6c9190611d7b565b50600101610980565b50600480547fffffffffffffffffffffffff000000000000000000000000000000000000000016905562093a80610aac8142611d40565b610ab69190611d29565b600355505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b409190611da7565b6001600160a01b0316336001600160a01b031614610bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420766f7465722061646d696e00000000000000000000000000000000006044820152606401610457565b612710811115610c26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f7461696c20656d697373696f6e20697320746f6f2068696768000000000000006044820152606401610457565b600155565b60006103e8610c386118b0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba9190611d7b565b610cc49190611d94565b837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d479190611d7b565b610d519190611d29565b610d5b9190611d40565b600854610d689190611d29565b610d729190611d40565b92915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfa9190611da7565b6001600160a01b0316336001600160a01b031614610e74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420766f7465722061646d696e00000000000000000000000000000000006044820152606401610457565b6103e8811115610ee0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f7261746520746f6f2068696768000000000000000000000000000000000000006044820152606401610457565b600855565b6006546001600160a01b03163314610f59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6e6f742070656e64696e67207465616d000000000000000000000000000000006044820152606401610457565b600654600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055565b60006104be610fa26105a7565b610faa61049a565b6119a4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110319190611da7565b6001600160a01b0316336001600160a01b0316146110ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420766f7465722061646d696e00000000000000000000000000000000006044820152606401610457565b612710811115611117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f656d697373696f6e20697320746f6f20686967680000000000000000000000006044820152606401610457565b600055565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561117c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a09190611d7b565b6111a86118b0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611206573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122a9190611d7b565b6112349190611d94565b6104be9190611d94565b60035460009061125162093a8082611e15565b421015801561126957506004546001600160a01b0316155b156118ab5762093a8061127c8142611d40565b6112869190611d29565b60038190559050611295610f95565b60028190556000906112a690610c2b565b905060006103e8600254836112bb9190611e15565b6007546112c89190611d29565b6112d29190611d40565b9050600081600254846112e59190611e15565b6112ef9190611e15565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611372573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113969190611d7b565b905081811015611451576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166340c10f19306113da8486611d94565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561143857600080fd5b505af115801561144c573d6000803e3d6000fd5b505050505b8215611511576005546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018590527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af11580156114e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115089190611dc4565b61151157600080fd5b83156116d3576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018690527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156115bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e39190611dc4565b6115ec57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663811a40fe6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561164757600080fd5b505af115801561165b573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b21ed5026040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b505050505b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163095ea7b39161176f917f0000000000000000000000000000000000000000000000000000000000000000916004016001600160a01b03929092168252602082015260400190565b6020604051808303816000875af115801561178e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b29190611dc4565b506002546040517f3c6b16ab00000000000000000000000000000000000000000000000000000000815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633c6b16ab90602401600060405180830381600087803b15801561183257600080fd5b505af1158015611846573d6000803e3d6000fd5b50505050336001600160a01b03167fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb60025461188061111c565b61188861049a565b6040805193845260208401929092529082015260600160405180910390a2505050505b919050565b6000805b6009548110156119a0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082316009838154811061190057611900611de6565b60009182526020909120015460405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b039091166004820152602401602060405180830381865afa158015611968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198c9190611d7b565b6119969083611e15565b91506001016118b4565b5090565b60008183116119b357816119b5565b825b9392505050565b828054828255906000526020600020908101928215611a29579160200282015b82811115611a2957825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039091161782556020909201916001909101906119dc565b506119a09291505b808211156119a05760008155600101611a31565b6001600160a01b0381168114611a5a57600080fd5b50565b600060208284031215611a6f57600080fd5b81356119b581611a45565b600060208284031215611a8c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611b0957611b09611a93565b604052919050565b600067ffffffffffffffff821115611b2b57611b2b611a93565b5060051b60200190565b600082601f830112611b4657600080fd5b81356020611b5b611b5683611b11565b611ac2565b8083825260208201915060208460051b870101935086841115611b7d57600080fd5b602086015b84811015611ba2578035611b9581611a45565b8352918301918301611b82565b509695505050505050565b600060208284031215611bbf57600080fd5b813567ffffffffffffffff811115611bd657600080fd5b611be284828501611b35565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c2b5783516001600160a01b031683529284019291840191600101611c06565b50909695505050505050565b600080600060608486031215611c4c57600080fd5b833567ffffffffffffffff80821115611c6457600080fd5b611c7087838801611b35565b9450602091508186013581811115611c8757600080fd5b86019050601f81018713611c9a57600080fd5b8035611ca8611b5682611b11565b81815260059190911b82018301908381019089831115611cc757600080fd5b928401925b82841015611ce557833582529284019290840190611ccc565b96999698505050506040949094013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610d7257610d72611cfa565b600082611d76577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215611d8d57600080fd5b5051919050565b81810381811115610d7257610d72611cfa565b600060208284031215611db957600080fd5b81516119b581611a45565b600060208284031215611dd657600080fd5b815180151581146119b557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610d7257610d72611cfa56fea2646970667358221220abb35cc3282812f90beb9171001e85f2b3f602c981c278f0459100bac40eb30364736f6c634300081600330000000000000000000000000b1481fe6fd74a6449064163604d712dff9bc6dd0000000000000000000000006aca098fa93dad7a872f6dcb989f8b4a3afc33420000000000000000000000000361a173dc338c32e57079b2c51cef36f8a982f1
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638517081311610104578063b5cc143a116100a2578063de588aa011610071578063de588aa0146103a7578063e038c75a146103b0578063ecd0c0c3146103b8578063ed29fc11146103df57600080fd5b8063b5cc143a1461037b578063cfc6c8ff14610383578063d13996081461038b578063ddce102f1461039457600080fd5b80638dd598fb116100de5780638dd598fb146103255780638e01fbfa1461034c57806393225df21461035f5780639b4eaff31461036857600080fd5b806385170813146102ec57806385f2aef2146102ff5780638c4f598b1461031257600080fd5b80633db9b42a116101715780635fdf199a1161014b5780635fdf199a146102bc57806378ef7f02146102d15780637cb95d00146102da578063827c049e146102e357600080fd5b80633db9b42a1461026f57806359d46ffc146102965780635b225dcb146102a957600080fd5b806326cfc17b116101ad57806326cfc17b1461020c5780632c6b2f0c146102155780632e8f7b1f1461025457806336d96faf1461026757600080fd5b806301c8e6fd146101d4578063095cf5c6146101ef5780631eebae8014610204575b600080fd5b6101dc606481565b6040519081526020015b60405180910390f35b6102026101fd366004611a5d565b6103e7565b005b6101dc61049a565b6101dc60025481565b61023c7f0000000000000000000000000361a173dc338c32e57079b2c51cef36f8a982f181565b6040516001600160a01b0390911681526020016101e6565b610202610262366004611a7a565b6104c3565b6101dc6105a7565b61023c7f0000000000000000000000000b1481fe6fd74a6449064163604d712dff9bc6dd81565b60065461023c906001600160a01b031681565b6102026102b7366004611bad565b61066c565b6102c461077f565b6040516101e69190611bea565b6101dc60075481565b6101dc60085481565b6101dc60005481565b6102026102fa366004611c37565b6107e1565b60055461023c906001600160a01b031681565b610202610320366004611a7a565b610abe565b61023c7f0000000000000000000000006aca098fa93dad7a872f6dcb989f8b4a3afc334281565b6101dc61035a366004611a7a565b610c2b565b6101dc60015481565b610202610376366004611a7a565b610d78565b610202610ee5565b6101dc610f95565b6101dc60035481565b6102026103a2366004611a7a565b610faf565b6101dc6103e881565b6101dc61111c565b61023c7f000000000000000000000000e8876189a80b2079d8c0a7867e46c50361d972c181565b6101dc61123e565b6005546001600160a01b03163314610460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6e6f74207465616d00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60006127106001546104aa61111c565b6104b49190611d29565b6104be9190611d40565b905090565b6005546001600160a01b03163314610537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f6e6f74207465616d0000000000000000000000000000000000000000000000006044820152606401610457565b60648111156105a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f7261746520746f6f2068696768000000000000000000000000000000000000006044820152606401610457565b600755565b60006105b16118b0565b7f000000000000000000000000e8876189a80b2079d8c0a7867e46c50361d972c16001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106339190611d7b565b61063d9190611d94565b61271061064861111c565b6000546002546106589190611d29565b6106629190611d29565b6104b49190611d40565b7f0000000000000000000000000b1481fe6fd74a6449064163604d712dff9bc6dd6001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ee9190611da7565b6001600160a01b0316336001600160a01b031614610768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420766f7465722061646d696e00000000000000000000000000000000006044820152606401610457565b805161077b9060099060208401906119bc565b5050565b606060098054806020026020016040519081016040528092919081815260200182805480156107d757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107b9575b5050505050905090565b6004546001600160a01b031633146107f857600080fd5b6040517f40c10f19000000000000000000000000000000000000000000000000000000008152306004820152602481018290527f000000000000000000000000e8876189a80b2079d8c0a7867e46c50361d972c16001600160a01b0316906340c10f1990604401600060405180830381600087803b15801561087957600080fd5b505af115801561088d573d6000803e3d6000fd5b50506040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000006aca098fa93dad7a872f6dcb989f8b4a3afc3342811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301527f000000000000000000000000e8876189a80b2079d8c0a7867e46c50361d972c116925063095ea7b391506044016020604051808303816000875af1158015610958573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097c9190611dc4565b5060005b8351811015610a75577f0000000000000000000000006aca098fa93dad7a872f6dcb989f8b4a3afc33426001600160a01b031663d4e54c3b8483815181106109ca576109ca611de6565b602002602001015163077f88008785815181106109e9576109e9611de6565b60200260200101516040518463ffffffff1660e01b8152600401610a299392919092835260208301919091526001600160a01b0316604082015260600190565b6020604051808303816000875af1158015610a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6c9190611d7b565b50600101610980565b50600480547fffffffffffffffffffffffff000000000000000000000000000000000000000016905562093a80610aac8142611d40565b610ab69190611d29565b600355505050565b7f0000000000000000000000000b1481fe6fd74a6449064163604d712dff9bc6dd6001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b409190611da7565b6001600160a01b0316336001600160a01b031614610bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420766f7465722061646d696e00000000000000000000000000000000006044820152606401610457565b612710811115610c26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f7461696c20656d697373696f6e20697320746f6f2068696768000000000000006044820152606401610457565b600155565b60006103e8610c386118b0565b7f000000000000000000000000e8876189a80b2079d8c0a7867e46c50361d972c16001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba9190611d7b565b610cc49190611d94565b837f0000000000000000000000006aca098fa93dad7a872f6dcb989f8b4a3afc33426001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d479190611d7b565b610d519190611d29565b610d5b9190611d40565b600854610d689190611d29565b610d729190611d40565b92915050565b7f0000000000000000000000000b1481fe6fd74a6449064163604d712dff9bc6dd6001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfa9190611da7565b6001600160a01b0316336001600160a01b031614610e74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420766f7465722061646d696e00000000000000000000000000000000006044820152606401610457565b6103e8811115610ee0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f7261746520746f6f2068696768000000000000000000000000000000000000006044820152606401610457565b600855565b6006546001600160a01b03163314610f59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6e6f742070656e64696e67207465616d000000000000000000000000000000006044820152606401610457565b600654600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055565b60006104be610fa26105a7565b610faa61049a565b6119a4565b7f0000000000000000000000000b1481fe6fd74a6449064163604d712dff9bc6dd6001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110319190611da7565b6001600160a01b0316336001600160a01b0316146110ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f7420766f7465722061646d696e00000000000000000000000000000000006044820152606401610457565b612710811115611117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f656d697373696f6e20697320746f6f20686967680000000000000000000000006044820152606401610457565b600055565b60007f0000000000000000000000006aca098fa93dad7a872f6dcb989f8b4a3afc33426001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561117c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a09190611d7b565b6111a86118b0565b7f000000000000000000000000e8876189a80b2079d8c0a7867e46c50361d972c16001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611206573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122a9190611d7b565b6112349190611d94565b6104be9190611d94565b60035460009061125162093a8082611e15565b421015801561126957506004546001600160a01b0316155b156118ab5762093a8061127c8142611d40565b6112869190611d29565b60038190559050611295610f95565b60028190556000906112a690610c2b565b905060006103e8600254836112bb9190611e15565b6007546112c89190611d29565b6112d29190611d40565b9050600081600254846112e59190611e15565b6112ef9190611e15565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b037f000000000000000000000000e8876189a80b2079d8c0a7867e46c50361d972c116906370a0823190602401602060405180830381865afa158015611372573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113969190611d7b565b905081811015611451576001600160a01b037f000000000000000000000000e8876189a80b2079d8c0a7867e46c50361d972c1166340c10f19306113da8486611d94565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561143857600080fd5b505af115801561144c573d6000803e3d6000fd5b505050505b8215611511576005546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018590527f000000000000000000000000e8876189a80b2079d8c0a7867e46c50361d972c19091169063a9059cbb906044016020604051808303816000875af11580156114e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115089190611dc4565b61151157600080fd5b83156116d3576040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000361a173dc338c32e57079b2c51cef36f8a982f181166004830152602482018690527f000000000000000000000000e8876189a80b2079d8c0a7867e46c50361d972c1169063a9059cbb906044016020604051808303816000875af11580156115bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e39190611dc4565b6115ec57600080fd5b7f0000000000000000000000000361a173dc338c32e57079b2c51cef36f8a982f16001600160a01b031663811a40fe6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561164757600080fd5b505af115801561165b573d6000803e3d6000fd5b505050507f0000000000000000000000000361a173dc338c32e57079b2c51cef36f8a982f16001600160a01b031663b21ed5026040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156116ba57600080fd5b505af11580156116ce573d6000803e3d6000fd5b505050505b6002546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b037f000000000000000000000000e8876189a80b2079d8c0a7867e46c50361d972c1169163095ea7b39161176f917f0000000000000000000000000b1481fe6fd74a6449064163604d712dff9bc6dd916004016001600160a01b03929092168252602082015260400190565b6020604051808303816000875af115801561178e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b29190611dc4565b506002546040517f3c6b16ab00000000000000000000000000000000000000000000000000000000815260048101919091527f0000000000000000000000000b1481fe6fd74a6449064163604d712dff9bc6dd6001600160a01b031690633c6b16ab90602401600060405180830381600087803b15801561183257600080fd5b505af1158015611846573d6000803e3d6000fd5b50505050336001600160a01b03167fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb60025461188061111c565b61188861049a565b6040805193845260208401929092529082015260600160405180910390a2505050505b919050565b6000805b6009548110156119a0577f000000000000000000000000e8876189a80b2079d8c0a7867e46c50361d972c16001600160a01b03166370a082316009838154811061190057611900611de6565b60009182526020909120015460405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b039091166004820152602401602060405180830381865afa158015611968573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198c9190611d7b565b6119969083611e15565b91506001016118b4565b5090565b60008183116119b357816119b5565b825b9392505050565b828054828255906000526020600020908101928215611a29579160200282015b82811115611a2957825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039091161782556020909201916001909101906119dc565b506119a09291505b808211156119a05760008155600101611a31565b6001600160a01b0381168114611a5a57600080fd5b50565b600060208284031215611a6f57600080fd5b81356119b581611a45565b600060208284031215611a8c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611b0957611b09611a93565b604052919050565b600067ffffffffffffffff821115611b2b57611b2b611a93565b5060051b60200190565b600082601f830112611b4657600080fd5b81356020611b5b611b5683611b11565b611ac2565b8083825260208201915060208460051b870101935086841115611b7d57600080fd5b602086015b84811015611ba2578035611b9581611a45565b8352918301918301611b82565b509695505050505050565b600060208284031215611bbf57600080fd5b813567ffffffffffffffff811115611bd657600080fd5b611be284828501611b35565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015611c2b5783516001600160a01b031683529284019291840191600101611c06565b50909695505050505050565b600080600060608486031215611c4c57600080fd5b833567ffffffffffffffff80821115611c6457600080fd5b611c7087838801611b35565b9450602091508186013581811115611c8757600080fd5b86019050601f81018713611c9a57600080fd5b8035611ca8611b5682611b11565b81815260059190911b82018301908381019089831115611cc757600080fd5b928401925b82841015611ce557833582529284019290840190611ccc565b96999698505050506040949094013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610d7257610d72611cfa565b600082611d76577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215611d8d57600080fd5b5051919050565b81810381811115610d7257610d72611cfa565b600060208284031215611db957600080fd5b81516119b581611a45565b600060208284031215611dd657600080fd5b815180151581146119b557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610d7257610d72611cfa56fea2646970667358221220abb35cc3282812f90beb9171001e85f2b3f602c981c278f0459100bac40eb30364736f6c63430008160033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000b1481fe6fd74a6449064163604d712dff9bc6dd0000000000000000000000006aca098fa93dad7a872f6dcb989f8b4a3afc33420000000000000000000000000361a173dc338c32e57079b2c51cef36f8a982f1
-----Decoded View---------------
Arg [0] : __voter (address): 0x0B1481fE6Fd74a6449064163604d712DFf9bc6DD
Arg [1] : __ve (address): 0x6ACa098fa93DAD7A872F6dcb989F8b4A3aFC3342
Arg [2] : __ve_dist (address): 0x0361a173dC338c32E57079b2c51cEf36f8A982f1
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000b1481fe6fd74a6449064163604d712dff9bc6dd
Arg [1] : 0000000000000000000000006aca098fa93dad7a872f6dcb989f8b4a3afc3342
Arg [2] : 0000000000000000000000000361a173dc338c32e57079b2c51cef36f8a982f1
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in FRAX
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.