Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
BitxenGovernor
Compiler Version
v0.8.34+commit.80d5c536
Optimization Enabled:
Yes with 200 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.34;
/*
* BitxenGovernor — On-chain DAO for the Bitxen Protocol
*
* Activation: Only becomes operational once Bitxen.totalRecordsStored()
* reaches DAO_ACTIVATION_THRESHOLD (5,000,000 vaults).
*
* Voting power: BITXEN token balance at the block snapshot captured when
* each proposal is created (via ERC20Votes.getPastVotes).
*
* Proposal types:
* UPDATE_FEE_PARAMS — change baseFeePhase1, feeIncrementPhase1/2
* UPDATE_BURN_PARAMS — change baseBurnPercent, burnIncrement1/2, maxBurnCap
* UPDATE_TREASURY — change the treasury address
* UPDATE_GOVERNOR — replace this governor contract with a new one
*
* Lifecycle:
* propose() → [VOTING_PERIOD] → queue() → [TIMELOCK_DELAY] → execute()
* Any state: cancel() by proposer (before execution)
*
* Governance parameters (themselves changeable by governance after deployment):
* • votingPeriod — blocks during which votes are accepted (default ≈ 7 days)
* • timelockDelay — blocks between queue and execute (default ≈ 2 days)
* • quorumBps — minimum FOR votes as % of total supply (default 4.00%)
* • proposalThreshold — min tokens required to submit a proposal (default 100k)
*/
interface IBitxen {
function totalRecordsStored() external view returns (uint256);
function DAO_ACTIVATION_THRESHOLD() external view returns (uint256);
function totalSupply() external view returns (uint256);
function getPastVotes(address account, uint256 timepoint) external view returns (uint256);
function clock() external view returns (uint48);
// Governance-callable setters on Bitxen
function setFeeParams(uint256 baseFeePhase1, uint256 feeIncrementPhase1, uint256 feeIncrementPhase2) external;
function setBurnParams(uint256 baseBurnPercent, uint256 burnIncrementPhase1, uint256 burnIncrementPhase2, uint256 maxBurnCap) external;
function setTreasuryByGovernor(address newTreasury) external;
function setGovernor(address newGovernor) external;
}
contract BitxenGovernor {
// -------------------------------------------------------------------------
// Types
// -------------------------------------------------------------------------
enum ProposalType {
UPDATE_FEE_PARAMS, // 0
UPDATE_BURN_PARAMS, // 1
UPDATE_TREASURY, // 2
UPDATE_GOVERNOR // 3
}
enum ProposalState {
Pending, // 0 — waiting for voting to start (1-block delay)
Active, // 1 — vote is open
Defeated, // 2 — vote closed, quorum not met or majority against
Succeeded, // 3 — vote passed, not yet queued
Queued, // 4 — in timelock
Executed, // 5 — successfully executed
Cancelled // 6 — cancelled by proposer
}
struct FeeParams {
uint256 baseFeePhase1;
uint256 feeIncrementPhase1;
uint256 feeIncrementPhase2;
}
struct BurnParams {
uint256 baseBurnPercent;
uint256 burnIncrementPhase1;
uint256 burnIncrementPhase2;
uint256 maxBurnCap;
}
struct Proposal {
uint256 id;
address proposer;
ProposalType proposalType;
// Encoded payload — decoded according to proposalType on execution
bytes payload;
// Human-readable description stored off-chain; only hash stored on-chain
bytes32 descriptionHash;
// Voting window (in block numbers)
uint256 snapshotBlock; // getPastVotes queried at this block
uint256 voteStart; // first block votes are accepted
uint256 voteEnd; // last block votes are accepted (inclusive)
// Timelock
uint256 eta; // block number after which execution is allowed (0 = not queued)
// Tallies
uint256 votesFor;
uint256 votesAgainst;
uint256 votesAbstain;
// State flags
bool executed;
bool cancelled;
}
// -------------------------------------------------------------------------
// State
// -------------------------------------------------------------------------
IBitxen public immutable bitxen;
uint256 public proposalCount;
mapping(uint256 => Proposal) public proposals;
// voter => proposalId => has voted
mapping(address => mapping(uint256 => bool)) public hasVoted;
// voter => proposalId => vote (0=Against, 1=For, 2=Abstain)
mapping(address => mapping(uint256 => uint8)) public voteChoice;
// Governance parameters (all updatable by governance itself)
uint256 public votingPeriod; // in blocks
uint256 public timelockDelay; // in blocks
uint256 public quorumBps; // basis points of total supply (e.g. 400 = 4%)
uint256 public proposalThreshold; // min voting power to create a proposal
// Constants
uint256 public constant VOTING_DELAY = 1; // 1 block before voting starts
uint256 public constant MIN_VOTING_PERIOD = 1_800; // ≈ 6 hours (assuming 12s blocks)
uint256 public constant MAX_VOTING_PERIOD = 100_800; // ≈ 14 days
uint256 public constant MIN_TIMELOCK = 900; // ≈ 3 hours
uint256 public constant MAX_TIMELOCK = 50_400; // ≈ 7 days
uint256 public constant MAX_QUORUM_BPS = 3000; // 30% ceiling
uint256 public constant BPS_DENOMINATOR = 10_000;
// -------------------------------------------------------------------------
// Events
// -------------------------------------------------------------------------
event ProposalCreated(
uint256 indexed proposalId,
address indexed proposer,
ProposalType proposalType,
bytes32 descriptionHash,
uint256 voteStart,
uint256 voteEnd
);
event VoteCast(
uint256 indexed proposalId,
address indexed voter,
uint8 support, // 0=Against, 1=For, 2=Abstain
uint256 weight
);
event ProposalQueued(uint256 indexed proposalId, uint256 eta);
event ProposalExecuted(uint256 indexed proposalId);
event ProposalCancelled(uint256 indexed proposalId);
event GovernanceParamsUpdated(
uint256 votingPeriod,
uint256 timelockDelay,
uint256 quorumBps,
uint256 proposalThreshold
);
// -------------------------------------------------------------------------
// Modifiers
// -------------------------------------------------------------------------
modifier daoActive() {
require(
bitxen.totalRecordsStored() >= bitxen.DAO_ACTIVATION_THRESHOLD(),
"Governor: DAO not yet active (< 5M vaults)"
);
_;
}
modifier onlySelf() {
require(msg.sender == address(this), "Governor: caller must be governor");
_;
}
// -------------------------------------------------------------------------
// Constructor
// -------------------------------------------------------------------------
constructor(
address _bitxen,
uint256 _votingPeriod, // recommended: 50_400 ≈ 7 days
uint256 _timelockDelay, // recommended: 14_400 ≈ 2 days
uint256 _quorumBps, // recommended: 400 = 4%
uint256 _proposalThreshold // recommended: 100_000 * 1e18
) {
require(_bitxen != address(0), "Governor: invalid bitxen address");
require(_votingPeriod >= MIN_VOTING_PERIOD && _votingPeriod <= MAX_VOTING_PERIOD, "Governor: voting period out of range");
require(_timelockDelay >= MIN_TIMELOCK && _timelockDelay <= MAX_TIMELOCK, "Governor: timelock out of range");
require(_quorumBps <= MAX_QUORUM_BPS, "Governor: quorum too high");
require(_proposalThreshold > 0, "Governor: threshold must be > 0");
bitxen = IBitxen(_bitxen);
votingPeriod = _votingPeriod;
timelockDelay = _timelockDelay;
quorumBps = _quorumBps;
proposalThreshold = _proposalThreshold;
}
// -------------------------------------------------------------------------
// Proposal Creation
// -------------------------------------------------------------------------
/// @notice Create a fee parameter update proposal.
/// @param _baseFeePhase1 New base fee (scaled by 1e18).
/// @param _feeIncrementPhase1 New fee increment per epoch in Phase 1.
/// @param _feeIncrementPhase2 New fee increment per epoch in Phase 2.
/// @param _descriptionHash keccak256 of the off-chain proposal description.
function proposeFeeUpdate(
uint256 _baseFeePhase1,
uint256 _feeIncrementPhase1,
uint256 _feeIncrementPhase2,
bytes32 _descriptionHash
) external daoActive returns (uint256) {
bytes memory payload = abi.encode(_baseFeePhase1, _feeIncrementPhase1, _feeIncrementPhase2);
return _createProposal(ProposalType.UPDATE_FEE_PARAMS, payload, _descriptionHash);
}
/// @notice Create a burn parameter update proposal.
function proposeBurnUpdate(
uint256 _baseBurnPercent,
uint256 _burnIncrementPhase1,
uint256 _burnIncrementPhase2,
uint256 _maxBurnCap,
bytes32 _descriptionHash
) external daoActive returns (uint256) {
bytes memory payload = abi.encode(_baseBurnPercent, _burnIncrementPhase1, _burnIncrementPhase2, _maxBurnCap);
return _createProposal(ProposalType.UPDATE_BURN_PARAMS, payload, _descriptionHash);
}
/// @notice Create a treasury address update proposal.
function proposeTreasuryUpdate(
address _newTreasury,
bytes32 _descriptionHash
) external daoActive returns (uint256) {
require(_newTreasury != address(0), "Governor: invalid treasury");
bytes memory payload = abi.encode(_newTreasury);
return _createProposal(ProposalType.UPDATE_TREASURY, payload, _descriptionHash);
}
/// @notice Create a proposal to replace this governor with a new one.
/// @dev The new governor must already be deployed. The Bitxen owner
/// will need to call setGovernor() after this executes, OR this
/// governor can call it directly if it holds the owner role.
function proposeGovernorUpdate(
address _newGovernor,
bytes32 _descriptionHash
) external daoActive returns (uint256) {
require(_newGovernor != address(0) && _newGovernor != address(this), "Governor: invalid address");
bytes memory payload = abi.encode(_newGovernor);
return _createProposal(ProposalType.UPDATE_GOVERNOR, payload, _descriptionHash);
}
/// @notice Create a proposal to update governance parameters themselves.
/// Encoded as UPDATE_GOVERNOR type but routed to _updateGovernanceParams.
/// Call via proposeGovernanceParamsUpdate for clarity.
function proposeGovernanceParamsUpdate(
uint256 _newVotingPeriod,
uint256 _newTimelockDelay,
uint256 _newQuorumBps,
uint256 _newProposalThreshold,
bytes32 _descriptionHash
) external daoActive returns (uint256) {
require(_newVotingPeriod >= MIN_VOTING_PERIOD && _newVotingPeriod <= MAX_VOTING_PERIOD, "Governor: voting period out of range");
require(_newTimelockDelay >= MIN_TIMELOCK && _newTimelockDelay <= MAX_TIMELOCK, "Governor: timelock out of range");
require(_newQuorumBps <= MAX_QUORUM_BPS, "Governor: quorum too high");
require(_newProposalThreshold > 0, "Governor: threshold must be > 0");
// We re-use a bytes-encoded call to the internal setter which is
// executed via onlySelf in _executeProposal.
bytes memory payload = abi.encodeWithSelector(
this.updateGovernanceParams.selector,
_newVotingPeriod,
_newTimelockDelay,
_newQuorumBps,
_newProposalThreshold
);
return _createProposal(ProposalType.UPDATE_GOVERNOR, payload, _descriptionHash);
}
// -------------------------------------------------------------------------
// Voting
// -------------------------------------------------------------------------
/// @notice Cast a vote on an active proposal.
/// @param _proposalId Proposal to vote on.
/// @param _support 0 = Against, 1 = For, 2 = Abstain.
function castVote(uint256 _proposalId, uint8 _support) external daoActive {
require(_support <= 2, "Governor: invalid vote type");
require(state(_proposalId) == ProposalState.Active, "Governor: proposal not active");
require(!hasVoted[msg.sender][_proposalId], "Governor: already voted");
Proposal storage p = proposals[_proposalId];
uint256 weight = bitxen.getPastVotes(msg.sender, p.snapshotBlock);
require(weight > 0, "Governor: no voting power at snapshot");
hasVoted[msg.sender][_proposalId] = true;
voteChoice[msg.sender][_proposalId] = _support;
if (_support == 1) p.votesFor += weight;
else if (_support == 0) p.votesAgainst += weight;
else p.votesAbstain += weight;
emit VoteCast(_proposalId, msg.sender, _support, weight);
}
// -------------------------------------------------------------------------
// Queue & Execute
// -------------------------------------------------------------------------
/// @notice Move a succeeded proposal into the timelock queue.
function queue(uint256 _proposalId) external daoActive {
require(state(_proposalId) == ProposalState.Succeeded, "Governor: proposal not succeeded");
Proposal storage p = proposals[_proposalId];
p.eta = block.number + timelockDelay;
emit ProposalQueued(_proposalId, p.eta);
}
/// @notice Execute a queued proposal whose timelock has elapsed.
function execute(uint256 _proposalId) external daoActive {
require(state(_proposalId) == ProposalState.Queued, "Governor: proposal not queued");
Proposal storage p = proposals[_proposalId];
require(block.number >= p.eta, "Governor: timelock not elapsed");
p.executed = true;
_executeProposal(p);
emit ProposalExecuted(_proposalId);
}
/// @notice Cancel a proposal. Only the original proposer may cancel, and
/// only while the proposal has not yet been executed.
function cancel(uint256 _proposalId) external {
Proposal storage p = proposals[_proposalId];
require(p.proposer == msg.sender, "Governor: not proposer");
require(!p.executed, "Governor: already executed");
require(!p.cancelled, "Governor: already cancelled");
ProposalState s = state(_proposalId);
require(
s == ProposalState.Pending ||
s == ProposalState.Active ||
s == ProposalState.Succeeded ||
s == ProposalState.Queued,
"Governor: cannot cancel in current state"
);
p.cancelled = true;
emit ProposalCancelled(_proposalId);
}
// -------------------------------------------------------------------------
// Self-callable Governance Param Update (executed via proposal)
// -------------------------------------------------------------------------
/// @notice Update core governance parameters.
/// @dev Can only be called by this contract itself (via an executed proposal).
function updateGovernanceParams(
uint256 _votingPeriod,
uint256 _timelockDelay,
uint256 _quorumBps,
uint256 _proposalThreshold
) external onlySelf {
require(_votingPeriod >= MIN_VOTING_PERIOD && _votingPeriod <= MAX_VOTING_PERIOD, "Governor: voting period out of range");
require(_timelockDelay >= MIN_TIMELOCK && _timelockDelay <= MAX_TIMELOCK, "Governor: timelock out of range");
require(_quorumBps <= MAX_QUORUM_BPS, "Governor: quorum too high");
require(_proposalThreshold > 0, "Governor: threshold must be > 0");
votingPeriod = _votingPeriod;
timelockDelay = _timelockDelay;
quorumBps = _quorumBps;
proposalThreshold = _proposalThreshold;
emit GovernanceParamsUpdated(_votingPeriod, _timelockDelay, _quorumBps, _proposalThreshold);
}
// -------------------------------------------------------------------------
// Views
// -------------------------------------------------------------------------
/// @notice Derive the current state of a proposal from its stored data.
function state(uint256 _proposalId) public view returns (ProposalState) {
Proposal storage p = proposals[_proposalId];
require(p.id != 0, "Governor: unknown proposal");
if (p.cancelled) return ProposalState.Cancelled;
if (p.executed) return ProposalState.Executed;
if (block.number < p.voteStart) return ProposalState.Pending;
if (block.number <= p.voteEnd) return ProposalState.Active;
// Voting closed — check result
if (!_quorumReached(p) || !_voteSucceeded(p)) return ProposalState.Defeated;
if (p.eta == 0) return ProposalState.Succeeded;
return ProposalState.Queued;
}
/// @notice Returns voting tallies and quorum requirement for a proposal.
function getProposalVotes(uint256 _proposalId)
external view
returns (
uint256 forVotes,
uint256 againstVotes,
uint256 abstainVotes,
uint256 quorumRequired
)
{
Proposal storage p = proposals[_proposalId];
require(p.id != 0, "Governor: unknown proposal");
// Quorum is calculated against the total supply at the snapshot block.
// We approximate with current total supply for the view (exact value
// is enforced in _quorumReached using the snapshot approach).
uint256 snapshotSupply = bitxen.totalSupply();
return (
p.votesFor,
p.votesAgainst,
p.votesAbstain,
(snapshotSupply * quorumBps) / BPS_DENOMINATOR
);
}
/// @notice Returns true if the DAO activation threshold has been reached.
function isDaoActive() external view returns (bool) {
return bitxen.totalRecordsStored() >= bitxen.DAO_ACTIVATION_THRESHOLD();
}
/// @notice Returns a summary of a proposal's key metadata.
function getProposal(uint256 _proposalId)
external view
returns (
address proposer,
ProposalType proposalType,
bytes32 descriptionHash,
uint256 voteStart,
uint256 voteEnd,
uint256 eta,
ProposalState proposalState
)
{
Proposal storage p = proposals[_proposalId];
require(p.id != 0, "Governor: unknown proposal");
return (
p.proposer,
p.proposalType,
p.descriptionHash,
p.voteStart,
p.voteEnd,
p.eta,
state(_proposalId)
);
}
// -------------------------------------------------------------------------
// Internal
// -------------------------------------------------------------------------
function _createProposal(
ProposalType _type,
bytes memory _payload,
bytes32 _descriptionHash
) internal returns (uint256) {
address proposer = msg.sender;
uint256 snapshot = block.number; // snapshot at creation block
uint256 weight = bitxen.getPastVotes(proposer, snapshot > 0 ? snapshot - 1 : 0);
require(weight >= proposalThreshold, "Governor: below proposal threshold");
uint256 id = ++proposalCount;
uint256 voteStart = block.number + VOTING_DELAY;
uint256 voteEnd = voteStart + votingPeriod - 1;
proposals[id] = Proposal({
id: id,
proposer: proposer,
proposalType: _type,
payload: _payload,
descriptionHash: _descriptionHash,
snapshotBlock: snapshot,
voteStart: voteStart,
voteEnd: voteEnd,
eta: 0,
votesFor: 0,
votesAgainst: 0,
votesAbstain: 0,
executed: false,
cancelled: false
});
emit ProposalCreated(id, proposer, _type, _descriptionHash, voteStart, voteEnd);
return id;
}
function _executeProposal(Proposal storage p) internal {
if (p.proposalType == ProposalType.UPDATE_FEE_PARAMS) {
(uint256 baseFee, uint256 incr1, uint256 incr2) =
abi.decode(p.payload, (uint256, uint256, uint256));
bitxen.setFeeParams(baseFee, incr1, incr2);
} else if (p.proposalType == ProposalType.UPDATE_BURN_PARAMS) {
(uint256 baseB, uint256 bi1, uint256 bi2, uint256 cap) =
abi.decode(p.payload, (uint256, uint256, uint256, uint256));
bitxen.setBurnParams(baseB, bi1, bi2, cap);
} else if (p.proposalType == ProposalType.UPDATE_TREASURY) {
address newTreasury = abi.decode(p.payload, (address));
bitxen.setTreasuryByGovernor(newTreasury);
} else if (p.proposalType == ProposalType.UPDATE_GOVERNOR) {
// May be a governor replacement OR a governance params update
// (distinguished by the selector encoded in payload).
bytes4 selector;
if (p.payload.length >= 4) {
selector = bytes4(p.payload[0]) | (bytes4(p.payload[1]) >> 8) |
(bytes4(p.payload[2]) >> 16) | (bytes4(p.payload[3]) >> 24);
}
if (selector == this.updateGovernanceParams.selector) {
// Self-call to update governance params
(bool ok, ) = address(this).call(p.payload);
require(ok, "Governor: governance params update failed");
} else {
// Governor replacement — update the Bitxen contract's governor pointer
address newGov = abi.decode(p.payload, (address));
bitxen.setGovernor(newGov);
}
}
}
function _quorumReached(Proposal storage p) internal view returns (bool) {
// Quorum is based on total supply at the snapshot block.
// ERC20Votes does not provide getPastTotalSupply by default in all OZ versions;
// we use current totalSupply as a conservative approximation. For a production
// deployment, integrate IVotes.getPastTotalSupply if available.
uint256 supply = bitxen.totalSupply();
uint256 quorum = (supply * quorumBps) / BPS_DENOMINATOR;
return p.votesFor + p.votesAbstain >= quorum;
}
function _voteSucceeded(Proposal storage p) internal view returns (bool) {
return p.votesFor > p.votesAgainst;
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"evmVersion": "shanghai",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_bitxen","type":"address"},{"internalType":"uint256","name":"_votingPeriod","type":"uint256"},{"internalType":"uint256","name":"_timelockDelay","type":"uint256"},{"internalType":"uint256","name":"_quorumBps","type":"uint256"},{"internalType":"uint256","name":"_proposalThreshold","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"votingPeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timelockDelay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"quorumBps","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"proposalThreshold","type":"uint256"}],"name":"GovernanceParamsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"enum BitxenGovernor.ProposalType","name":"proposalType","type":"uint8"},{"indexed":false,"internalType":"bytes32","name":"descriptionHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"voteStart","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"voteEnd","type":"uint256"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"eta","type":"uint256"}],"name":"ProposalQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":true,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"uint8","name":"support","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"weight","type":"uint256"}],"name":"VoteCast","type":"event"},{"inputs":[],"name":"BPS_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_QUORUM_BPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TIMELOCK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_VOTING_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_TIMELOCK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_VOTING_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTING_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bitxen","outputs":[{"internalType":"contract IBitxen","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"uint8","name":"_support","type":"uint8"}],"name":"castVote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"getProposal","outputs":[{"internalType":"address","name":"proposer","type":"address"},{"internalType":"enum BitxenGovernor.ProposalType","name":"proposalType","type":"uint8"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"},{"internalType":"uint256","name":"voteStart","type":"uint256"},{"internalType":"uint256","name":"voteEnd","type":"uint256"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"enum BitxenGovernor.ProposalState","name":"proposalState","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"getProposalVotes","outputs":[{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"},{"internalType":"uint256","name":"abstainVotes","type":"uint256"},{"internalType":"uint256","name":"quorumRequired","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"hasVoted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDaoActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"enum BitxenGovernor.ProposalType","name":"proposalType","type":"uint8"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"bytes32","name":"descriptionHash","type":"bytes32"},{"internalType":"uint256","name":"snapshotBlock","type":"uint256"},{"internalType":"uint256","name":"voteStart","type":"uint256"},{"internalType":"uint256","name":"voteEnd","type":"uint256"},{"internalType":"uint256","name":"eta","type":"uint256"},{"internalType":"uint256","name":"votesFor","type":"uint256"},{"internalType":"uint256","name":"votesAgainst","type":"uint256"},{"internalType":"uint256","name":"votesAbstain","type":"uint256"},{"internalType":"bool","name":"executed","type":"bool"},{"internalType":"bool","name":"cancelled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_baseBurnPercent","type":"uint256"},{"internalType":"uint256","name":"_burnIncrementPhase1","type":"uint256"},{"internalType":"uint256","name":"_burnIncrementPhase2","type":"uint256"},{"internalType":"uint256","name":"_maxBurnCap","type":"uint256"},{"internalType":"bytes32","name":"_descriptionHash","type":"bytes32"}],"name":"proposeBurnUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_baseFeePhase1","type":"uint256"},{"internalType":"uint256","name":"_feeIncrementPhase1","type":"uint256"},{"internalType":"uint256","name":"_feeIncrementPhase2","type":"uint256"},{"internalType":"bytes32","name":"_descriptionHash","type":"bytes32"}],"name":"proposeFeeUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newVotingPeriod","type":"uint256"},{"internalType":"uint256","name":"_newTimelockDelay","type":"uint256"},{"internalType":"uint256","name":"_newQuorumBps","type":"uint256"},{"internalType":"uint256","name":"_newProposalThreshold","type":"uint256"},{"internalType":"bytes32","name":"_descriptionHash","type":"bytes32"}],"name":"proposeGovernanceParamsUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newGovernor","type":"address"},{"internalType":"bytes32","name":"_descriptionHash","type":"bytes32"}],"name":"proposeGovernorUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newTreasury","type":"address"},{"internalType":"bytes32","name":"_descriptionHash","type":"bytes32"}],"name":"proposeTreasuryUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"queue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quorumBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum BitxenGovernor.ProposalState","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelockDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_votingPeriod","type":"uint256"},{"internalType":"uint256","name":"_timelockDelay","type":"uint256"},{"internalType":"uint256","name":"_quorumBps","type":"uint256"},{"internalType":"uint256","name":"_proposalThreshold","type":"uint256"}],"name":"updateGovernanceParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"voteChoice","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"votingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60a060405234801561000f575f5ffd5b5060405161336d38038061336d83398101604081905261002e91610219565b6001600160a01b0385166100895760405162461bcd60e51b815260206004820181905260248201527f476f7665726e6f723a20696e76616c69642062697478656e206164647265737360448201526064015b60405180910390fd5b610708841015801561009e5750620189c08411155b6100f65760405162461bcd60e51b8152602060048201526024808201527f476f7665726e6f723a20766f74696e6720706572696f64206f7574206f662072604482015263616e676560e01b6064820152608401610080565b610384831015801561010a575061c4e08311155b6101565760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a2074696d656c6f636b206f7574206f662072616e6765006044820152606401610080565b610bb88211156101a85760405162461bcd60e51b815260206004820152601960248201527f476f7665726e6f723a2071756f72756d20746f6f2068696768000000000000006044820152606401610080565b5f81116101f75760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a207468726573686f6c64206d757374206265203e2030006044820152606401610080565b6001600160a01b03909416608052600492909255600555600655600755610269565b5f5f5f5f5f60a0868803121561022d575f5ffd5b85516001600160a01b0381168114610243575f5ffd5b602087015160408801516060890151608090990151929a91995097965090945092505050565b6080516130366103375f395f8181610421015281816105890152818161060901528181610843015281816108c301528181610d1b01528181610dd901528181610e5901528181610f3801528181610fb8015281816111af01528181611552015281816115d201528181611740015281816117c0015281816118fe0152818161197e01528181611ae001528181611b6001528181611be701528181611c6701528181611e210152818161214c0152818161230401528181612466015281816125ac015261295401526130365ff3fe608060405234801561000f575f5ffd5b50600436106101d1575f3560e01c8063a64e024a116100fe578063dae95e0d1161009e578063e64ef85e1161006e578063e64ef85e1461041c578063eef09bad1461045b578063fb0c754914610464578063fe0d94c11461046d575f5ffd5b8063dae95e0d146103e5578063ddf0b009146103f8578063de15ae041461040b578063e1a4521814610413575f5ffd5b8063c94b7693116100d9578063c94b7693146103c3578063cd2ddd0c146103cc578063d6159fe5146103d5578063da35c664146103dd575f5ffd5b8063a64e024a1461038a578063b58131b014610394578063c7f758a81461039d575f5ffd5b806340e58ee511610174578063567813881161014457806356781388146103485780636a05c8bb1461035b57806394f1825b1461036e5780639dcfe1cd14610377575f5ffd5b806340e58ee5146102b057806342545825146102c557806347c66140146103025780634b87bc8a14610335575f5ffd5b8063215809ca116101af578063215809ca146102615780633c8f683a1461026a5780633cf23e7c1461027d5780633e4f49e614610290575f5ffd5b8063013cf08b146101d557806302a251a31461020b5780631b82fcf814610222575b5f5ffd5b6101e86101e33660046129b4565b610480565b6040516102029e9d9c9b9a99989796959493929190612a36565b60405180910390f35b61021460045481565b604051908152602001610202565b61024f610230366004612ae1565b600360209081525f928352604080842090915290825290205460ff1681565b60405160ff9091168152602001610202565b61021461070881565b610214610278366004612b0b565b610586565b61021461028b366004612ae1565b610840565b6102a361029e3660046129b4565b6109f2565b6040516102029190612b52565b6102c36102be3660046129b4565b610ac0565b005b6102f26102d3366004612ae1565b600260209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610202565b6103156103103660046129b4565b610ce4565b604080519485526020850193909352918301526060820152608001610202565b610214610343366004612b0b565b610dd6565b6102c3610356366004612b60565b610f36565b6102c3610369366004612b93565b611366565b61021461c4e081565b610214610385366004612b93565b61154f565b610214620189c081565b61021460075481565b6103b06103ab3660046129b4565b6116b1565b6040516102029796959493929190612bc2565b610214610bb881565b61021460065481565b610214600181565b6102145f5481565b6102146103f3366004612ae1565b61173d565b6102c36104063660046129b4565b6118fc565b6102f2611add565b61021461271081565b6104437f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610202565b61021460055481565b61021461038481565b6102c361047b3660046129b4565b611be5565b600160208190525f91825260409091208054918101546002820180546001600160a01b03831693600160a01b90930460ff169291906104be90612c10565b80601f01602080910402602001604051908101604052809291908181526020018280546104ea90612c10565b80156105355780601f1061050c57610100808354040283529160200191610535565b820191905f5260205f20905b81548152906001019060200180831161051857829003601f168201915b50505060038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b909b0154999a96999598509396509194909391929160ff808216916101009004168e565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106079190612c48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa158015610663573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106879190612c48565b10156106ae5760405162461bcd60e51b81526004016106a590612c5f565b60405180910390fd5b61070886101580156106c35750620189c08611155b6106df5760405162461bcd60e51b81526004016106a590612ca9565b61038485101580156106f3575061c4e08511155b61073f5760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a2074696d656c6f636b206f7574206f662072616e67650060448201526064016106a5565b610bb884111561078d5760405162461bcd60e51b815260206004820152601960248201527808edeeccae4dcdee47440e2eadee4eada40e8dede40d0d2ced603b1b60448201526064016106a5565b5f83116107dc5760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a207468726573686f6c64206d757374206265203e20300060448201526064016106a5565b6040805160248101889052604481018790526064810186905260848082018690528251808303909101815260a49091019091526020810180516001600160e01b0316636a05c8bb60e01b17905261083560038285611e13565b979650505050505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c19190612c48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109419190612c48565b101561095f5760405162461bcd60e51b81526004016106a590612c5f565b6001600160a01b0383166109b55760405162461bcd60e51b815260206004820152601a60248201527f476f7665726e6f723a20696e76616c696420747265617375727900000000000060448201526064016106a5565b604080516001600160a01b03851660208201525f910160405160208183030381529060405290506109e860028285611e13565b9150505b92915050565b5f81815260016020526040812080548203610a1f5760405162461bcd60e51b81526004016106a590612ced565b600b810154610100900460ff1615610a3a5750600692915050565b600b81015460ff1615610a505750600592915050565b8060050154431015610a6457505f92915050565b80600601544311610a785750600192915050565b610a8181612148565b1580610a9557506009810154600882015411155b15610aa35750600292915050565b80600701545f03610ab75750600392915050565b50600492915050565b5f818152600160208190526040909120908101546001600160a01b03163314610b245760405162461bcd60e51b815260206004820152601660248201527523b7bb32b93737b91d103737ba10383937b837b9b2b960511b60448201526064016106a5565b600b81015460ff1615610b795760405162461bcd60e51b815260206004820152601a60248201527f476f7665726e6f723a20616c726561647920657865637574656400000000000060448201526064016106a5565b600b810154610100900460ff1615610bd35760405162461bcd60e51b815260206004820152601b60248201527f476f7665726e6f723a20616c72656164792063616e63656c6c6564000000000060448201526064016106a5565b5f610bdd836109f2565b90505f816006811115610bf257610bf26129cb565b1480610c0f57506001816006811115610c0d57610c0d6129cb565b145b80610c2b57506003816006811115610c2957610c296129cb565b145b80610c4757506004816006811115610c4557610c456129cb565b145b610ca45760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f723a2063616e6e6f742063616e63656c20696e2063757272656044820152676e7420737461746560c01b60648201526084016106a5565b600b8201805461ff00191661010017905560405183907f416e669c63d9a3a5e36ee7cc7e2104b8db28ccd286aa18966e98fa230c73b08c905f90a2505050565b5f8181526001602052604081208054829182918291908203610d185760405162461bcd60e51b81526004016106a590612ced565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d999190612c48565b90508160080154826009015483600a015461271060065485610dbb9190612d38565b610dc59190612d4f565b955095509550955050509193509193565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e33573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e579190612c48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed79190612c48565b1015610ef55760405162461bcd60e51b81526004016106a590612c5f565b604080516020810188905290810186905260608101859052608081018490525f9060a001604051602081830303815290604052905061083560018285611e13565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb69190612c48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa158015611012573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110369190612c48565b10156110545760405162461bcd60e51b81526004016106a590612c5f565b60028160ff1611156110a85760405162461bcd60e51b815260206004820152601b60248201527f476f7665726e6f723a20696e76616c696420766f74652074797065000000000060448201526064016106a5565b60016110b3836109f2565b60068111156110c4576110c46129cb565b146111115760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f742061637469766500000060448201526064016106a5565b335f90815260026020908152604080832085845290915290205460ff161561117b5760405162461bcd60e51b815260206004820152601760248201527f476f7665726e6f723a20616c726561647920766f74656400000000000000000060448201526064016106a5565b5f828152600160205260408082206004808201549251630748d63560e31b81523391810191909152602481019290925291907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633a46b1a890604401602060405180830381865afa1580156111fc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112209190612c48565b90505f811161127f5760405162461bcd60e51b815260206004820152602560248201527f476f7665726e6f723a206e6f20766f74696e6720706f77657220617420736e616044820152641c1cda1bdd60da1b60648201526084016106a5565b335f8181526002602090815260408083208884528252808320805460ff19908116600190811790925594845260038352818420898552909252909120805460ff8716931683179055036112ea5780826008015f8282546112df9190612d6e565b909155506113209050565b8260ff165f036113075780826009015f8282546112df9190612d6e565b8082600a015f82825461131a9190612d6e565b90915550505b6040805160ff8516815260208101839052339186917fb83d25c6a5d258561330739951487acb4bd09ba5190b5d32c4f261817d906792910160405180910390a350505050565b3330146113bf5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2063616c6c6572206d75737420626520676f7665726e6f6044820152603960f91b60648201526084016106a5565b61070884101580156113d45750620189c08411155b6113f05760405162461bcd60e51b81526004016106a590612ca9565b6103848310158015611404575061c4e08311155b6114505760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a2074696d656c6f636b206f7574206f662072616e67650060448201526064016106a5565b610bb882111561149e5760405162461bcd60e51b815260206004820152601960248201527808edeeccae4dcdee47440e2eadee4eada40e8dede40d0d2ced603b1b60448201526064016106a5565b5f81116114ed5760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a207468726573686f6c64206d757374206265203e20300060448201526064016106a5565b60048490556005839055600682905560078190556040805185815260208101859052908101839052606081018290527f62893e3337cca0ca70f83df6d7ed52e7850a915a9ca420cc60eaa47d753e982d9060800160405180910390a150505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d09190612c48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa15801561162c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116509190612c48565b101561166e5760405162461bcd60e51b81526004016106a590612c5f565b6040805160208101879052908101859052606081018490525f9060800160405160208183030381529060405290506116a75f8285611e13565b9695505050505050565b5f818152600160205260408120805482918291829182918291829182036116ea5760405162461bcd60e51b81526004016106a590612ced565b600181015460038201546005830154600684015460078501546001600160a01b03851694600160a01b900460ff16939291906117258f6109f2565b959f949e50929c50909a509850965090945092505050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561179a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117be9190612c48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa15801561181a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183e9190612c48565b101561185c5760405162461bcd60e51b81526004016106a590612c5f565b6001600160a01b0383161580159061187d57506001600160a01b0383163014155b6118c95760405162461bcd60e51b815260206004820152601960248201527f476f7665726e6f723a20696e76616c696420616464726573730000000000000060448201526064016106a5565b604080516001600160a01b03851660208201525f910160405160208183030381529060405290506109e860038285611e13565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611958573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197c9190612c48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119fc9190612c48565b1015611a1a5760405162461bcd60e51b81526004016106a590612c5f565b6003611a25826109f2565b6006811115611a3657611a366129cb565b14611a835760405162461bcd60e51b815260206004820181905260248201527f476f7665726e6f723a2070726f706f73616c206e6f742073756363656564656460448201526064016106a5565b5f818152600160205260409020600554611a9d9043612d6e565b6007820181905560405190815282907f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28929060200160405180910390a25050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b3a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5e9190612c48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bba573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bde9190612c48565b1015905090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c41573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c659190612c48565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce59190612c48565b1015611d035760405162461bcd60e51b81526004016106a590612c5f565b6004611d0e826109f2565b6006811115611d1f57611d1f6129cb565b14611d6c5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f742071756575656400000060448201526064016106a5565b5f8181526001602052604090206007810154431015611dcd5760405162461bcd60e51b815260206004820152601e60248201527f476f7665726e6f723a2074696d656c6f636b206e6f7420656c6170736564000060448201526064016106a5565b600b8101805460ff19166001179055611de581612209565b60405182907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f905f90a25050565b5f3343826001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633a46b1a88484611e52575f611e5d565b611e5d600186612d81565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015611ea4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ec89190612c48565b9050600754811015611f275760405162461bcd60e51b815260206004820152602260248201527f476f7665726e6f723a2062656c6f772070726f706f73616c207468726573686f6044820152611b1960f21b60648201526084016106a5565b5f5f5f8154611f3590612d94565b918290555090505f611f48600143612d6e565b90505f600160045483611f5b9190612d6e565b611f659190612d81565b9050604051806101c00160405280848152602001876001600160a01b031681526020018b6003811115611f9a57611f9a6129cb565b815260208082018c905260408083018c9052606083018990526080830186905260a083018590525f60c0840181905260e08401819052610100840181905261012084018190526101408401819052610160909301839052868352600180835292819020845181559184015192820180546001600160a01b031981166001600160a01b03909516948517825591850151929390916001600160a81b03191617600160a01b83600381111561204f5761204f6129cb565b0217905550606082015160028201906120689082612e13565b506080820151600382015560a0820151600482015560c0820151600582015560e0820151600682015561010080830151600783015561012083015160088301556101408301516009830155610160830151600a830155610180830151600b90920180546101a09094015161ffff1990941692151561ff00191692909217921515029190911790556040516001600160a01b0387169084907f43f220a44660542fbb31088290557df43dd379ae408911c767d43023bb436de890612132908e908d9088908890612ed2565b60405180910390a3509098975050505050505050565b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ca9190612c48565b90505f612710600654836121de9190612d38565b6121e89190612d4f565b90508084600a015485600801546121ff9190612d6e565b1015949350505050565b5f6001820154600160a01b900460ff16600381111561222a5761222a6129cb565b03612361575f5f5f83600201805461224190612c10565b80601f016020809104026020016040519081016040528092919081815260200182805461226d90612c10565b80156122b85780601f1061228f576101008083540402835291602001916122b8565b820191905f5260205f20905b81548152906001019060200180831161229b57829003601f168201915b50505050508060200190518101906122d09190612efb565b6040516345f4f87160e11b815260048101849052602481018390526044810182905292955090935091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638be9f0e2906064015f604051808303815f87803b158015612345575f5ffd5b505af1158015612357573d5f5f3e3d5ffd5b5050505050505050565b600180820154600160a01b900460ff166003811115612382576123826129cb565b036124c4575f5f5f5f84600201805461239a90612c10565b80601f01602080910402602001604051908101604052809291908181526020018280546123c690612c10565b80156124115780601f106123e857610100808354040283529160200191612411565b820191905f5260205f20905b8154815290600101906020018083116123f457829003601f168201915b50505050508060200190518101906124299190612f26565b604051635d27d88f60e11b815260048101859052602481018490526044810183905260648101829052939750919550935091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba4fb11e906084015f604051808303815f87803b1580156124a7575f5ffd5b505af11580156124b9573d5f5f3e3d5ffd5b505050505050505050565b60026001820154600160a01b900460ff1660038111156124e6576124e66129cb565b03612609575f8160020180546124fb90612c10565b80601f016020809104026020016040519081016040528092919081815260200182805461252790612c10565b80156125725780601f1061254957610100808354040283529160200191612572565b820191905f5260205f20905b81548152906001019060200180831161255557829003601f168201915b505050505080602001905181019061258a9190612f59565b6040516303cf508b60e31b81526001600160a01b0380831660048301529192507f000000000000000000000000000000000000000000000000000000000000000090911690631e7a8458906024015f604051808303815f87803b1580156125ef575f5ffd5b505af1158015612601573d5f5f3e3d5ffd5b505050505050565b60036001820154600160a01b900460ff16600381111561262b5761262b6129cb565b036129b1575f600482600201805461264290612c10565b9050106127b8576018826002016003815461265c90612c10565b811061266a5761266a612f7b565b81546001161561268757905f5260205f2090602091828204019190065b9054901a600160f81b026001600160f81b0319166001600160e01b031916901c601083600201600281546126ba90612c10565b81106126c8576126c8612f7b565b8154600116156126e557905f5260205f2090602091828204019190065b9054901a600160f81b026001600160f81b0319166001600160e01b031916901c6008846002016001815461271890612c10565b811061272657612726612f7b565b81546001161561274357905f5260205f2090602091828204019190065b9054901a600160f81b026001600160f81b0319166001600160e01b031916901c846002015f815461277390612c10565b811061278157612781612f7b565b81546001161561279e57905f5260205f2090602091828204019190065b9054901a600160f81b026001600160f81b03191617171790505b6395fa374560e01b6001600160e01b0319821601612893575f306001600160a01b0316836002016040516127ec9190612f8f565b5f604051808303815f865af19150503d805f8114612825576040519150601f19603f3d011682016040523d82523d5f602084013e61282a565b606091505b505090508061288d5760405162461bcd60e51b815260206004820152602960248201527f476f7665726e6f723a20676f7665726e616e636520706172616d7320757064616044820152681d194819985a5b195960ba1b60648201526084016106a5565b506129af565b5f8260020180546128a390612c10565b80601f01602080910402602001604051908101604052809291908181526020018280546128cf90612c10565b801561291a5780601f106128f15761010080835404028352916020019161291a565b820191905f5260205f20905b8154815290600101906020018083116128fd57829003601f168201915b50505050508060200190518101906129329190612f59565b60405163c42cf53560e01b81526001600160a01b0380831660048301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063c42cf535906024015f604051808303815f87803b158015612997575f5ffd5b505af11580156129a9573d5f5f3e3d5ffd5b50505050505b505b50565b5f602082840312156129c4575f5ffd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b600481106129ef576129ef6129cb565b9052565b5f81518084525f5b81811015612a17576020818501810151868301820152016129fb565b505f602082860101526020601f19601f83011685010191505092915050565b8e81526001600160a01b038e166020820152612a55604082018e6129df565b6101c060608201525f612a6c6101c083018e6129f3565b90508b60808301528a60a08301528960c08301528860e083015287610100830152866101208301528561014083015284610160830152612ab161018083018515159052565b8215156101a08301529f9e505050505050505050505050505050565b6001600160a01b03811681146129b1575f5ffd5b5f5f60408385031215612af2575f5ffd5b8235612afd81612acd565b946020939093013593505050565b5f5f5f5f5f60a08688031215612b1f575f5ffd5b505083359560208501359550604085013594606081013594506080013592509050565b600781106129ef576129ef6129cb565b602081016109ec8284612b42565b5f5f60408385031215612b71575f5ffd5b82359150602083013560ff81168114612b88575f5ffd5b809150509250929050565b5f5f5f5f60808587031215612ba6575f5ffd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b038816815260e08101612bdf60208301896129df565b8660408301528560608301528460808301528360a0830152612c0460c0830184612b42565b98975050505050505050565b600181811c90821680612c2457607f821691505b602082108103612c4257634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215612c58575f5ffd5b5051919050565b6020808252602a908201527f476f7665726e6f723a2044414f206e6f74207965742061637469766520283c20604082015269354d207661756c74732960b01b606082015260800190565b60208082526024908201527f476f7665726e6f723a20766f74696e6720706572696f64206f7574206f662072604082015263616e676560e01b606082015260800190565b6020808252601a908201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c000000000000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109ec576109ec612d24565b5f82612d6957634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109ec576109ec612d24565b818103818111156109ec576109ec612d24565b5f60018201612da557612da5612d24565b5060010190565b634e487b7160e01b5f52604160045260245ffd5b601f821115612e0e5782821115612e0e57805f5260205f20601f840160051c6020851015612deb57505f5b90810190601f840160051c035f5b81811015612601575f83820155600101612df9565b505050565b815167ffffffffffffffff811115612e2d57612e2d612dac565b612e4181612e3b8454612c10565b84612dc0565b6020601f821160018114612e73575f8315612e5c5750848201515b5f19600385901b1c1916600184901b178455612ecb565b5f84815260208120601f198516915b82811015612ea25787850151825560209485019460019092019101612e82565b5084821015612ebf57868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b60808101612ee082876129df565b84602083015283604083015282606083015295945050505050565b5f5f5f60608486031215612f0d575f5ffd5b5050815160208301516040909301519094929350919050565b5f5f5f5f60808587031215612f39575f5ffd5b505082516020840151604085015160609095015191969095509092509050565b5f60208284031215612f69575f5ffd5b8151612f7481612acd565b9392505050565b634e487b7160e01b5f52603260045260245ffd5b5f5f8354612f9c81612c10565b600182168015612fb35760018114612fc857612ff5565b60ff1983168652811515820286019350612ff5565b865f5260205f205f5b83811015612fed57815488820152600190910190602001612fd1565b505081860193505b50919594505050505056fea26469706673582212201a055060ac3a08db3c7565df0af73652861a9104accb81ad10a0e01b7792e63e64736f6c634300082200330000000000000000000000002885477436f1e80a7690bf22878d31eac97e0244000000000000000000000000000000000000000000000000000000000000c4e00000000000000000000000000000000000000000000000000000000000003840000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000152d02c7e14af6800000
Deployed Bytecode
0x608060405234801561000f575f5ffd5b50600436106101d1575f3560e01c8063a64e024a116100fe578063dae95e0d1161009e578063e64ef85e1161006e578063e64ef85e1461041c578063eef09bad1461045b578063fb0c754914610464578063fe0d94c11461046d575f5ffd5b8063dae95e0d146103e5578063ddf0b009146103f8578063de15ae041461040b578063e1a4521814610413575f5ffd5b8063c94b7693116100d9578063c94b7693146103c3578063cd2ddd0c146103cc578063d6159fe5146103d5578063da35c664146103dd575f5ffd5b8063a64e024a1461038a578063b58131b014610394578063c7f758a81461039d575f5ffd5b806340e58ee511610174578063567813881161014457806356781388146103485780636a05c8bb1461035b57806394f1825b1461036e5780639dcfe1cd14610377575f5ffd5b806340e58ee5146102b057806342545825146102c557806347c66140146103025780634b87bc8a14610335575f5ffd5b8063215809ca116101af578063215809ca146102615780633c8f683a1461026a5780633cf23e7c1461027d5780633e4f49e614610290575f5ffd5b8063013cf08b146101d557806302a251a31461020b5780631b82fcf814610222575b5f5ffd5b6101e86101e33660046129b4565b610480565b6040516102029e9d9c9b9a99989796959493929190612a36565b60405180910390f35b61021460045481565b604051908152602001610202565b61024f610230366004612ae1565b600360209081525f928352604080842090915290825290205460ff1681565b60405160ff9091168152602001610202565b61021461070881565b610214610278366004612b0b565b610586565b61021461028b366004612ae1565b610840565b6102a361029e3660046129b4565b6109f2565b6040516102029190612b52565b6102c36102be3660046129b4565b610ac0565b005b6102f26102d3366004612ae1565b600260209081525f928352604080842090915290825290205460ff1681565b6040519015158152602001610202565b6103156103103660046129b4565b610ce4565b604080519485526020850193909352918301526060820152608001610202565b610214610343366004612b0b565b610dd6565b6102c3610356366004612b60565b610f36565b6102c3610369366004612b93565b611366565b61021461c4e081565b610214610385366004612b93565b61154f565b610214620189c081565b61021460075481565b6103b06103ab3660046129b4565b6116b1565b6040516102029796959493929190612bc2565b610214610bb881565b61021460065481565b610214600181565b6102145f5481565b6102146103f3366004612ae1565b61173d565b6102c36104063660046129b4565b6118fc565b6102f2611add565b61021461271081565b6104437f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e024481565b6040516001600160a01b039091168152602001610202565b61021460055481565b61021461038481565b6102c361047b3660046129b4565b611be5565b600160208190525f91825260409091208054918101546002820180546001600160a01b03831693600160a01b90930460ff169291906104be90612c10565b80601f01602080910402602001604051908101604052809291908181526020018280546104ea90612c10565b80156105355780601f1061050c57610100808354040283529160200191610535565b820191905f5260205f20905b81548152906001019060200180831161051857829003601f168201915b50505060038401546004850154600586015460068701546007880154600889015460098a0154600a8b0154600b909b0154999a96999598509396509194909391929160ff808216916101009004168e565b5f7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106079190612c48565b7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa158015610663573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106879190612c48565b10156106ae5760405162461bcd60e51b81526004016106a590612c5f565b60405180910390fd5b61070886101580156106c35750620189c08611155b6106df5760405162461bcd60e51b81526004016106a590612ca9565b61038485101580156106f3575061c4e08511155b61073f5760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a2074696d656c6f636b206f7574206f662072616e67650060448201526064016106a5565b610bb884111561078d5760405162461bcd60e51b815260206004820152601960248201527808edeeccae4dcdee47440e2eadee4eada40e8dede40d0d2ced603b1b60448201526064016106a5565b5f83116107dc5760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a207468726573686f6c64206d757374206265203e20300060448201526064016106a5565b6040805160248101889052604481018790526064810186905260848082018690528251808303909101815260a49091019091526020810180516001600160e01b0316636a05c8bb60e01b17905261083560038285611e13565b979650505050505050565b5f7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561089d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c19190612c48565b7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa15801561091d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109419190612c48565b101561095f5760405162461bcd60e51b81526004016106a590612c5f565b6001600160a01b0383166109b55760405162461bcd60e51b815260206004820152601a60248201527f476f7665726e6f723a20696e76616c696420747265617375727900000000000060448201526064016106a5565b604080516001600160a01b03851660208201525f910160405160208183030381529060405290506109e860028285611e13565b9150505b92915050565b5f81815260016020526040812080548203610a1f5760405162461bcd60e51b81526004016106a590612ced565b600b810154610100900460ff1615610a3a5750600692915050565b600b81015460ff1615610a505750600592915050565b8060050154431015610a6457505f92915050565b80600601544311610a785750600192915050565b610a8181612148565b1580610a9557506009810154600882015411155b15610aa35750600292915050565b80600701545f03610ab75750600392915050565b50600492915050565b5f818152600160208190526040909120908101546001600160a01b03163314610b245760405162461bcd60e51b815260206004820152601660248201527523b7bb32b93737b91d103737ba10383937b837b9b2b960511b60448201526064016106a5565b600b81015460ff1615610b795760405162461bcd60e51b815260206004820152601a60248201527f476f7665726e6f723a20616c726561647920657865637574656400000000000060448201526064016106a5565b600b810154610100900460ff1615610bd35760405162461bcd60e51b815260206004820152601b60248201527f476f7665726e6f723a20616c72656164792063616e63656c6c6564000000000060448201526064016106a5565b5f610bdd836109f2565b90505f816006811115610bf257610bf26129cb565b1480610c0f57506001816006811115610c0d57610c0d6129cb565b145b80610c2b57506003816006811115610c2957610c296129cb565b145b80610c4757506004816006811115610c4557610c456129cb565b145b610ca45760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f723a2063616e6e6f742063616e63656c20696e2063757272656044820152676e7420737461746560c01b60648201526084016106a5565b600b8201805461ff00191661010017905560405183907f416e669c63d9a3a5e36ee7cc7e2104b8db28ccd286aa18966e98fa230c73b08c905f90a2505050565b5f8181526001602052604081208054829182918291908203610d185760405162461bcd60e51b81526004016106a590612ced565b5f7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d999190612c48565b90508160080154826009015483600a015461271060065485610dbb9190612d38565b610dc59190612d4f565b955095509550955050509193509193565b5f7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e33573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e579190612c48565b7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed79190612c48565b1015610ef55760405162461bcd60e51b81526004016106a590612c5f565b604080516020810188905290810186905260608101859052608081018490525f9060a001604051602081830303815290604052905061083560018285611e13565b7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb69190612c48565b7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa158015611012573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110369190612c48565b10156110545760405162461bcd60e51b81526004016106a590612c5f565b60028160ff1611156110a85760405162461bcd60e51b815260206004820152601b60248201527f476f7665726e6f723a20696e76616c696420766f74652074797065000000000060448201526064016106a5565b60016110b3836109f2565b60068111156110c4576110c46129cb565b146111115760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f742061637469766500000060448201526064016106a5565b335f90815260026020908152604080832085845290915290205460ff161561117b5760405162461bcd60e51b815260206004820152601760248201527f476f7665726e6f723a20616c726561647920766f74656400000000000000000060448201526064016106a5565b5f828152600160205260408082206004808201549251630748d63560e31b81523391810191909152602481019290925291907f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b031690633a46b1a890604401602060405180830381865afa1580156111fc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112209190612c48565b90505f811161127f5760405162461bcd60e51b815260206004820152602560248201527f476f7665726e6f723a206e6f20766f74696e6720706f77657220617420736e616044820152641c1cda1bdd60da1b60648201526084016106a5565b335f8181526002602090815260408083208884528252808320805460ff19908116600190811790925594845260038352818420898552909252909120805460ff8716931683179055036112ea5780826008015f8282546112df9190612d6e565b909155506113209050565b8260ff165f036113075780826009015f8282546112df9190612d6e565b8082600a015f82825461131a9190612d6e565b90915550505b6040805160ff8516815260208101839052339186917fb83d25c6a5d258561330739951487acb4bd09ba5190b5d32c4f261817d906792910160405180910390a350505050565b3330146113bf5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2063616c6c6572206d75737420626520676f7665726e6f6044820152603960f91b60648201526084016106a5565b61070884101580156113d45750620189c08411155b6113f05760405162461bcd60e51b81526004016106a590612ca9565b6103848310158015611404575061c4e08311155b6114505760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a2074696d656c6f636b206f7574206f662072616e67650060448201526064016106a5565b610bb882111561149e5760405162461bcd60e51b815260206004820152601960248201527808edeeccae4dcdee47440e2eadee4eada40e8dede40d0d2ced603b1b60448201526064016106a5565b5f81116114ed5760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a207468726573686f6c64206d757374206265203e20300060448201526064016106a5565b60048490556005839055600682905560078190556040805185815260208101859052908101839052606081018290527f62893e3337cca0ca70f83df6d7ed52e7850a915a9ca420cc60eaa47d753e982d9060800160405180910390a150505050565b5f7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d09190612c48565b7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa15801561162c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116509190612c48565b101561166e5760405162461bcd60e51b81526004016106a590612c5f565b6040805160208101879052908101859052606081018490525f9060800160405160208183030381529060405290506116a75f8285611e13565b9695505050505050565b5f818152600160205260408120805482918291829182918291829182036116ea5760405162461bcd60e51b81526004016106a590612ced565b600181015460038201546005830154600684015460078501546001600160a01b03851694600160a01b900460ff16939291906117258f6109f2565b959f949e50929c50909a509850965090945092505050565b5f7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561179a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117be9190612c48565b7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa15801561181a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183e9190612c48565b101561185c5760405162461bcd60e51b81526004016106a590612c5f565b6001600160a01b0383161580159061187d57506001600160a01b0383163014155b6118c95760405162461bcd60e51b815260206004820152601960248201527f476f7665726e6f723a20696e76616c696420616464726573730000000000000060448201526064016106a5565b604080516001600160a01b03851660208201525f910160405160208183030381529060405290506109e860038285611e13565b7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611958573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197c9190612c48565b7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119fc9190612c48565b1015611a1a5760405162461bcd60e51b81526004016106a590612c5f565b6003611a25826109f2565b6006811115611a3657611a366129cb565b14611a835760405162461bcd60e51b815260206004820181905260248201527f476f7665726e6f723a2070726f706f73616c206e6f742073756363656564656460448201526064016106a5565b5f818152600160205260409020600554611a9d9043612d6e565b6007820181905560405190815282907f9a2e42fd6722813d69113e7d0079d3d940171428df7373df9c7f7617cfda28929060200160405180910390a25050565b5f7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b3a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5e9190612c48565b7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bba573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bde9190612c48565b1015905090565b7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b0316639cf304cb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c41573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c659190612c48565b7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b031663157849566040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cc1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce59190612c48565b1015611d035760405162461bcd60e51b81526004016106a590612c5f565b6004611d0e826109f2565b6006811115611d1f57611d1f6129cb565b14611d6c5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f742071756575656400000060448201526064016106a5565b5f8181526001602052604090206007810154431015611dcd5760405162461bcd60e51b815260206004820152601e60248201527f476f7665726e6f723a2074696d656c6f636b206e6f7420656c6170736564000060448201526064016106a5565b600b8101805460ff19166001179055611de581612209565b60405182907f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f905f90a25050565b5f3343826001600160a01b037f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e024416633a46b1a88484611e52575f611e5d565b611e5d600186612d81565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015611ea4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ec89190612c48565b9050600754811015611f275760405162461bcd60e51b815260206004820152602260248201527f476f7665726e6f723a2062656c6f772070726f706f73616c207468726573686f6044820152611b1960f21b60648201526084016106a5565b5f5f5f8154611f3590612d94565b918290555090505f611f48600143612d6e565b90505f600160045483611f5b9190612d6e565b611f659190612d81565b9050604051806101c00160405280848152602001876001600160a01b031681526020018b6003811115611f9a57611f9a6129cb565b815260208082018c905260408083018c9052606083018990526080830186905260a083018590525f60c0840181905260e08401819052610100840181905261012084018190526101408401819052610160909301839052868352600180835292819020845181559184015192820180546001600160a01b031981166001600160a01b03909516948517825591850151929390916001600160a81b03191617600160a01b83600381111561204f5761204f6129cb565b0217905550606082015160028201906120689082612e13565b506080820151600382015560a0820151600482015560c0820151600582015560e0820151600682015561010080830151600783015561012083015160088301556101408301516009830155610160830151600a830155610180830151600b90920180546101a09094015161ffff1990941692151561ff00191692909217921515029190911790556040516001600160a01b0387169084907f43f220a44660542fbb31088290557df43dd379ae408911c767d43023bb436de890612132908e908d9088908890612ed2565b60405180910390a3509098975050505050505050565b5f5f7f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02446001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ca9190612c48565b90505f612710600654836121de9190612d38565b6121e89190612d4f565b90508084600a015485600801546121ff9190612d6e565b1015949350505050565b5f6001820154600160a01b900460ff16600381111561222a5761222a6129cb565b03612361575f5f5f83600201805461224190612c10565b80601f016020809104026020016040519081016040528092919081815260200182805461226d90612c10565b80156122b85780601f1061228f576101008083540402835291602001916122b8565b820191905f5260205f20905b81548152906001019060200180831161229b57829003601f168201915b50505050508060200190518101906122d09190612efb565b6040516345f4f87160e11b815260048101849052602481018390526044810182905292955090935091506001600160a01b037f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02441690638be9f0e2906064015f604051808303815f87803b158015612345575f5ffd5b505af1158015612357573d5f5f3e3d5ffd5b5050505050505050565b600180820154600160a01b900460ff166003811115612382576123826129cb565b036124c4575f5f5f5f84600201805461239a90612c10565b80601f01602080910402602001604051908101604052809291908181526020018280546123c690612c10565b80156124115780601f106123e857610100808354040283529160200191612411565b820191905f5260205f20905b8154815290600101906020018083116123f457829003601f168201915b50505050508060200190518101906124299190612f26565b604051635d27d88f60e11b815260048101859052602481018490526044810183905260648101829052939750919550935091506001600160a01b037f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e0244169063ba4fb11e906084015f604051808303815f87803b1580156124a7575f5ffd5b505af11580156124b9573d5f5f3e3d5ffd5b505050505050505050565b60026001820154600160a01b900460ff1660038111156124e6576124e66129cb565b03612609575f8160020180546124fb90612c10565b80601f016020809104026020016040519081016040528092919081815260200182805461252790612c10565b80156125725780601f1061254957610100808354040283529160200191612572565b820191905f5260205f20905b81548152906001019060200180831161255557829003601f168201915b505050505080602001905181019061258a9190612f59565b6040516303cf508b60e31b81526001600160a01b0380831660048301529192507f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e024490911690631e7a8458906024015f604051808303815f87803b1580156125ef575f5ffd5b505af1158015612601573d5f5f3e3d5ffd5b505050505050565b60036001820154600160a01b900460ff16600381111561262b5761262b6129cb565b036129b1575f600482600201805461264290612c10565b9050106127b8576018826002016003815461265c90612c10565b811061266a5761266a612f7b565b81546001161561268757905f5260205f2090602091828204019190065b9054901a600160f81b026001600160f81b0319166001600160e01b031916901c601083600201600281546126ba90612c10565b81106126c8576126c8612f7b565b8154600116156126e557905f5260205f2090602091828204019190065b9054901a600160f81b026001600160f81b0319166001600160e01b031916901c6008846002016001815461271890612c10565b811061272657612726612f7b565b81546001161561274357905f5260205f2090602091828204019190065b9054901a600160f81b026001600160f81b0319166001600160e01b031916901c846002015f815461277390612c10565b811061278157612781612f7b565b81546001161561279e57905f5260205f2090602091828204019190065b9054901a600160f81b026001600160f81b03191617171790505b6395fa374560e01b6001600160e01b0319821601612893575f306001600160a01b0316836002016040516127ec9190612f8f565b5f604051808303815f865af19150503d805f8114612825576040519150601f19603f3d011682016040523d82523d5f602084013e61282a565b606091505b505090508061288d5760405162461bcd60e51b815260206004820152602960248201527f476f7665726e6f723a20676f7665726e616e636520706172616d7320757064616044820152681d194819985a5b195960ba1b60648201526084016106a5565b506129af565b5f8260020180546128a390612c10565b80601f01602080910402602001604051908101604052809291908181526020018280546128cf90612c10565b801561291a5780601f106128f15761010080835404028352916020019161291a565b820191905f5260205f20905b8154815290600101906020018083116128fd57829003601f168201915b50505050508060200190518101906129329190612f59565b60405163c42cf53560e01b81526001600160a01b0380831660048301529192507f0000000000000000000000002885477436f1e80a7690bf22878d31eac97e02449091169063c42cf535906024015f604051808303815f87803b158015612997575f5ffd5b505af11580156129a9573d5f5f3e3d5ffd5b50505050505b505b50565b5f602082840312156129c4575f5ffd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b600481106129ef576129ef6129cb565b9052565b5f81518084525f5b81811015612a17576020818501810151868301820152016129fb565b505f602082860101526020601f19601f83011685010191505092915050565b8e81526001600160a01b038e166020820152612a55604082018e6129df565b6101c060608201525f612a6c6101c083018e6129f3565b90508b60808301528a60a08301528960c08301528860e083015287610100830152866101208301528561014083015284610160830152612ab161018083018515159052565b8215156101a08301529f9e505050505050505050505050505050565b6001600160a01b03811681146129b1575f5ffd5b5f5f60408385031215612af2575f5ffd5b8235612afd81612acd565b946020939093013593505050565b5f5f5f5f5f60a08688031215612b1f575f5ffd5b505083359560208501359550604085013594606081013594506080013592509050565b600781106129ef576129ef6129cb565b602081016109ec8284612b42565b5f5f60408385031215612b71575f5ffd5b82359150602083013560ff81168114612b88575f5ffd5b809150509250929050565b5f5f5f5f60808587031215612ba6575f5ffd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b038816815260e08101612bdf60208301896129df565b8660408301528560608301528460808301528360a0830152612c0460c0830184612b42565b98975050505050505050565b600181811c90821680612c2457607f821691505b602082108103612c4257634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215612c58575f5ffd5b5051919050565b6020808252602a908201527f476f7665726e6f723a2044414f206e6f74207965742061637469766520283c20604082015269354d207661756c74732960b01b606082015260800190565b60208082526024908201527f476f7665726e6f723a20766f74696e6720706572696f64206f7574206f662072604082015263616e676560e01b606082015260800190565b6020808252601a908201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c000000000000604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109ec576109ec612d24565b5f82612d6957634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109ec576109ec612d24565b818103818111156109ec576109ec612d24565b5f60018201612da557612da5612d24565b5060010190565b634e487b7160e01b5f52604160045260245ffd5b601f821115612e0e5782821115612e0e57805f5260205f20601f840160051c6020851015612deb57505f5b90810190601f840160051c035f5b81811015612601575f83820155600101612df9565b505050565b815167ffffffffffffffff811115612e2d57612e2d612dac565b612e4181612e3b8454612c10565b84612dc0565b6020601f821160018114612e73575f8315612e5c5750848201515b5f19600385901b1c1916600184901b178455612ecb565b5f84815260208120601f198516915b82811015612ea25787850151825560209485019460019092019101612e82565b5084821015612ebf57868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b60808101612ee082876129df565b84602083015283604083015282606083015295945050505050565b5f5f5f60608486031215612f0d575f5ffd5b5050815160208301516040909301519094929350919050565b5f5f5f5f60808587031215612f39575f5ffd5b505082516020840151604085015160609095015191969095509092509050565b5f60208284031215612f69575f5ffd5b8151612f7481612acd565b9392505050565b634e487b7160e01b5f52603260045260245ffd5b5f5f8354612f9c81612c10565b600182168015612fb35760018114612fc857612ff5565b60ff1983168652811515820286019350612ff5565b865f5260205f205f5b83811015612fed57815488820152600190910190602001612fd1565b505081860193505b50919594505050505056fea26469706673582212201a055060ac3a08db3c7565df0af73652861a9104accb81ad10a0e01b7792e63e64736f6c63430008220033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002885477436f1e80a7690bf22878d31eac97e0244000000000000000000000000000000000000000000000000000000000000c4e00000000000000000000000000000000000000000000000000000000000003840000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000152d02c7e14af6800000
-----Decoded View---------------
Arg [0] : _bitxen (address): 0x2885477436f1e80a7690bf22878D31eAC97e0244
Arg [1] : _votingPeriod (uint256): 50400
Arg [2] : _timelockDelay (uint256): 14400
Arg [3] : _quorumBps (uint256): 400
Arg [4] : _proposalThreshold (uint256): 100000000000000000000000
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000002885477436f1e80a7690bf22878d31eac97e0244
Arg [1] : 000000000000000000000000000000000000000000000000000000000000c4e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000003840
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000190
Arg [4] : 00000000000000000000000000000000000000000000152d02c7e14af6800000
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.