Governance V2.1
🗳️ Quadratic
📊 4× Ceiling
⏱️ Timelock
🛡️ Veto
🔗 Related Pages
💻OverviewGovernancehttps://github.com/urbanarray/builtbydocs/blob/main/docs/developers/contracts/voting-registry.md🗳️OverviewLast updated
Last updated
function _getVotingPower(address voter) internal view returns (uint256) {
uint256 eqtbltBalance = IERC20(eqtbltToken).balanceOf(voter);
uint256 basePower = Math.sqrt(eqtbltBalance) * 100;
uint256 multiplier = rankRegistry.getMultiplier(voter);
return (basePower * multiplier) / 10000;
}// Calculate ceiling
uint256 medianMemberPower = _calculateMedianMemberPower();
uint256 investorCeiling = medianMemberPower * 4;
// Apply ceiling to investor
uint256 rawPower = _getRawInvestorPower(investor);
uint256 effectivePower = Math.min(rawPower, investorCeiling);Draft → Active → Succeeded/Defeated → Queued → Executedfunction propose(
address[] memory targets,
uint256[] memory values,
bytes[] memory calldatas,
string memory description
) external returns (uint256 proposalId);function castVote(uint256 proposalId, uint8 support)
external returns (uint256 weight);
function castVoteWithReason(
uint256 proposalId,
uint8 support,
string memory reason
) external returns (uint256 weight);function delegate(address delegatee) external;
function delegateBySig(
address delegatee,
uint256 nonce,
uint256 expiry,
uint8 v, bytes32 r, bytes32 s
) external;Proposal Passed
↓
Queue in Timelock
↓
Wait for Delay
↓
Anyone Can Execute
↓
Targets Calledfunction queue(uint256 proposalId) external;
function execute(uint256 proposalId) external payable;function cancel(uint256 proposalId) external;// Voting
uint256 public constant VOTING_DELAY = 1 days;
uint256 public constant VOTING_PERIOD = 5 days;
uint256 public constant PROPOSAL_THRESHOLD = 2e18; // 2 BLTBY
// Quorum (basis points)
uint256 public constant QUORUM_OPERATIONAL = 1000; // 10%
uint256 public constant QUORUM_FINANCIAL = 1500; // 15%
uint256 public constant QUORUM_GOVERNANCE = 2000; // 20%
// Pass Threshold (basis points)
uint256 public constant THRESHOLD_OPERATIONAL = 5000; // 50%
uint256 public constant THRESHOLD_FINANCIAL = 6000; // 60%
uint256 public constant THRESHOLD_GOVERNANCE = 6500; // 65%
// Investor Ceiling
uint256 public constant INVESTOR_CEILING_MULTIPLIER = 4;