Governance - Overview
This page provides an overview of the On-chain Governance module that will be available on the v1.6.x release.
Table of contents
| Name | Description |
|---|---|
| Interacting with the on-chain governance SC | Interacting with the governance system smart contract. |
Overview
The MultiversX network enables on-chain governance by issuing special types of transactions. This mechanism increases decentralization by allowing community members to directly propose and vote on changes, such as protocol upgrades or configuration adjustments.
- Anyone can create a proposal by paying the proposal fee and specifying:
- a commit hash (unique identifier, usually a GitHub commit or spec reference)
- a start epoch and an end epoch (the voting window).
- Any staked user (direct or delegated) can vote during the active period.
- Voting power is proportional to stake:
voting_power = staked_value(linear voting).
Implementation details
Proposals
In order for a proposal to be submitted, the following requirements need to be met:
- For a period of at least 15 days, the proposal needs to be published on Agora for public debate and analysis;
- Each proposal requires paying a
ProposalFee(currently 500 EGLD); - Each proposal costs around 51 million of gas units to be submitted.
- The starting epoch of the proposal's voting period needs to be set inside an interval of 30 epochs from the epoch in which the proposal was submitted;
After a proposal is created, the following rules will apply:
- If the proposal passes, the fee is refunded to the issuer.
- If the proposal fails, a penalty fee (called
LostProposalFee) is deducted from the initial proposal fee, and the remaining amount is returned to the proposer. - If the proposal is vetoed, the fee is slashed (transferred to the Community Governance Pool) or reduced by the configured
LostProposalFee. - Proposals cannot be duplicated: the same commit hash cannot be submitted twice.
- Proposals can be cancelled by the issuer before the voting period starts. (introduced in v1.10.0 Barnard release)
- Lost proposal fees may either be accumulated in the governance contract (retrievable by the contract owner) or redirected to a Community Governance Pool, depending on configuration.
Voting
- The voting starts from the provided starting epoch and lasts at most 10 days.
- There are four vote types: Yes, No, Abstain, and Veto.
- Voting consumes gas (approx. 6 million units).
- Voting power is derived from staked and delegated EGLD.
- Delegation and liquid staking contracts can forward user votes.
- Voting power is linear with stake: the more EGLD staked or delegated, the higher the voting power.
- The contract tracks both used voting power/stake (applied in a proposal) and total available voting power/stake for each address.
Quorum and thresholds
A proposal can pass only if all conditions are met:
- Quorum: at least
MinQuorum%of the total voting power must participate. (currently at least 20% of total voting power) - Acceptance threshold: YES / (YES + NO + VETO) ≥ 66.67% (
MinPassThreshold) - Veto threshold: if VETO votes exceed 33% of total participating voting power, the proposal is rejected and the proposal fee is slashed.
Closing and cleanup
Proposal closing permissions:
- Before voting starts: Only the proposal issuer can close the proposal.
- After voting ends: Any user can close the proposal.
Effects of closing:
- Finalizes the proposal outcome (passed/failed/vetoed).
- Unlocks any locked funds.
- Updates the proposal status in the governance system.
Cleanup options:
- The
clearEndedProposalsfunction can be called to clean up expired but unclosed proposals. - This helps maintain system efficiency by removing inactive proposals.
Governance configuration
All thresholds and fees are defined in GovernanceConfigV2:
MinQuorumMinPassThresholdMinVetoThresholdProposalFeeLostProposalFeeLastProposalNonce
These values are set by the system and can be updated by contract owner calls.
Example
Let's suppose we have the following addresses that cast the following votes:
alice: staked value 2000 EGLD that vote Yesbob: staked value 3000 EGLD that vote Yescharlie: staked value 4000 EGLD that vote Yesdelta: staked value 1500 EGLD that vote No
The totals are:
- Quorum =
(2000+3000+4000+1500) = 10,500 EGLD - Yes =
9000 EGLD - No =
1500 EGLD - Abstain =
0 - Veto =
0
Assume:
- total staked in the system =
20,000 EGLD MinQuorum= 20%MinPassThreshold= 50%MinVetoThreshold= 33%
Evaluation:
- Quorum is satisfied:
10,500 > 4000 - Yes > No:
9000 > 1500 - Yes is ≥ 50% of votes:
9000 / 10,500 = 85.7% - Veto is below 33%:
0 < 3465
To sum it all, the proposal passes.