Signaling proposal to make the governance quorums dynamic
Details
Description
Signaling proposal to make the governance quorums dynamic
This signaling proposal aims to gather community feedback on updating the x/gov
module to include the Dynamic Quorum
feature on the AtomOne chain. The Quorum is the minimum participation during a voting period required for the vote to be considered valid. Following the adoption of the Dynamic Quorum feature the Quorum will be dynamically adjusted after each proposal vote based on the actual participation.
The proposed mechanism is comparable to the quorum adjustment mechanism
used in Tezos.
IMPORTANT NOTE: a Constitution Amendment that includes several improvements and upgrades to the Constitution, including changes to the Quorum to introduce the mechanism here presented will also be submitted on-chain before any attempt to upgrade the AtomOne chain software is made.
Motivation
At the time of writing, the x/gov
module on AtomOne uses a Quorum
parameter set to 0.25
. Since AtomOne has removed delegation-based voting in favor of direct voting, lower participation with respect to the total voting power is to be expected.
One of the main reasons in favor of direct voting is that validators already have a very specific role, which is foundational for AtomOne, their participation in the consensus process. For this reason, the delegation of votes to validators determines a conflation of roles: consensus and governance.
The mechanism in this proposal allows to find the proper quorum threshold based on actual participation addressing the issue of low users participation.
Implementation
The Quorum
parameter will be replaced with a variable that is adjusted dynamically based on previous voting participation. The dynamic quorum is adjusted after every voting period.
The participation Exponential Moving Average - pEMA
- is updated according to the formula:
$$ pEMA_{t+1} = (0.8)pEMA_t + (0.2)p $$
Where:
- $pEMA_{t+1}$ is the new participation exponential moving average value.
- $pEMA_t$ is the current participation exponential moving average value.
- $p$ is the participation observed during the previous voting period.
The quorum is then computed based on pEMA
as follows:
$$ Q = Q_{min} + (Q_{max} - Q_{min}) \times pEMA $$
Where:
- $Q$ is the resulting quorum value.
- $Q_{min}$ is the minimum quorum value allowed.
- $Q_{max}$ is the maximum quorum value allowed.
- $pEMA$ is the updated participation exponential moving average.
Multiple dynamic quorums
The dynamic quorums of law and constitution amendment proposals are distinct from the other proposals. For each of these quorums there is one pEMA
state variable that is updated independently. Consequently there are 3 different dynamic quorums, one for constitution amendment proposals, one for law proposals and one for all the other proposals.
The initial participation values for each quorum are initialized with migration code during the chain upgrade that introduces dynamic quorum feature, but for a new chain they can be set from the genesis file.
Key Module Changes
The following parameters are added to the x/gov
module:
quorum_range
: struct containingMin
andMax
quorum values required to pass a proposal.law_quorum_range
: struct containingMin
andMax
quorum values required to pass a law proposal.constitution_amendment_quorum_range
: struct containingMin
andMax
quorum values required to pass a constitution amendment proposal.
The following x/gov
module parameters are deprecated, because the quorums are no longer a fixed value:
-
quorum
-
constitution_amendment_quorum
-
law_quorum
A new query endpoint will be available to fetch the current value of the quorums.
For retrocompability reason with clients like block explorer, when queried, the deprecated parameters will be set with the dynamic values.
Testing and Testnet
The Dynamic Quorum feature will be rigorously tested via unit and end-to-end tests.
Should this proposal pass, before submitting an upgrade proposal on mainnet including this new feature, the AtomOne public testnet will undergo a coordinated upgrade that will include the Dynamic Quorum feature, allowing more testing before mainnet deployment.
Potential risks
User Experience Challenges
Users will experience fluctuations in the quorum required for a proposal to pass. Moreover, higher than normal participation will increase the dynamic quorum and consequently increase the chances of failure of the successive proposal.
Audit
An audit covering the entire AtomOne codebase and the x/gov
module including the Dynamic Quorum feature has been performed and almost reached completion, and the results will be made public before the software upgrade including the presented system is submitted on the mainnet.
Upgrade Process
An upgrade proposal including the dynamic quorum will be submitted for governance voting should this signaling proposal pass.
Constitution Amendment
As already stated at the time of writing the value for the Quorum
parameter is set to 0.25
for regular proposals, laws and Constitution amendments. This already presents a source of conflict with the existing Constitution that states instead that the quorum shall be set to 40%. A Constitution amendment was already planned to fix this incosistency, but was ultimately delayed due to the intention of eventually making the quorum entirely dynamic to better respond to historic participation. Submitting multiple amendments to edit the same piece of text (alongside other changes) would have unnecessarily strained the AtomOne governance, and therefore a choice was made to submit only one amendment to directly include the dynamic quorum instead.
While it is true that this signaling proposal has been submitted prior to the amendment - in order to gather sentiment from the AtomOne stakers about the intention of including the dynamic quorum in a future upgrade - the actual software upgrade will only be submitted after the submission of a Constitution amendment that includes the necessary changes to make this system consistent with the Constitution.
Should the amendment not pass even if this proposal passes the dynamic quorum system will be considered rejected by the AtomOne governance. A Constitution amendment to pass requires an approval rate of more than 90%.
Codebase
https://github.com/atomone-hub/atomone/blob/main/docs/architecture/adr-005-dynamic-quorum.md
https://github.com/atomone-hub/atomone/pull/135
Voting options
- Yes: You are in favor of adding the Dynamic Quorum.
- No: You are against having the Dynamic Quorum.
- ABSTAIN - You wish to contribute to the quorum but you formally decline to vote either for or against the proposal.
Votes