TL;DR This post proposes to update the voting eligibility definition in the NNS and SNS governance so that only neurons with positive voting power are allowed to vote. Currently, there are some edge cases where neurons without stake can cast a vote with zero voting power.
Background on voting
In the NNS and SNS governance, voting currently works as follows: anyone with an eligible neuron that has enough stake to pay for the proposal fee can submit a proposal. At the proposal submission time, the governance canister will create a ballot for each eligible neuron that stores the neuron’s voting power at this point in time. This results in all neurons voting on a proposal with the voting power that they had at the time when the proposal was submitted.
For this process, the following definitions of eligibility and voting power are currently used.
- A neuron is eligible to vote if its dissolve delay is greater or equal than the minimum dissolve delay. This design ensures that only those neurons can vote who are committed to the DAO and thus incentivized to vote in the long-term interest of the DAO.
- In the NNS this minimum dissolve delay is 6 months.
- For SNSs, each SNS community can set this value as part of the governance configurations. See the developer documentation on nervous system parameters for more details.
- A neuron’s voting power is defined by the neuron’s stake multiplied by a bonus if the neuron has a dissolve delay and a bonus if the neuron has age:
neuron_stake * dissolve_delay_bonus * age_bonus
.- In the NNS, the dissolve delay bonus is a linear function of the dissolve delay with values between 1 (for zero dissolve delay) and 2 (for 8 years dissolved delay). The age bonus in the NNS is a linear function with values between 1 for no age and 1.25 for an age of 4 years. See here for more details.
- For SNSs, each SNS community can set this value as part of the governance configurations. See the developer documentation on nervous system parameters for more details.
Drawback of the current definition
According to the current definition, the decision whether to create a ballot for a neuron is only considering the minimum dissolve delay. This has the effect that ballots may be created for neurons that do not have any stake and hence do not have any voting power.
To illustrate this on an example in the NNS, consider the following use case:
- Alice dissolves her NNS neuron and disburses the staked tokens into an account.
- Since disbursed neurons are not deleted, Alice increases the dissolve delay of the neuron to 1 year. (Note that neurons with zero stake and zero maturity are not displayed on the NNS frontend dapp, but Alice can do so if she manages her neuron with a command line tool such as quill as the neuron still exists in the backend canister).
- Bob submits a proposal. The governance canister will check Alice’s neuron and see that its dissolve delay is more than 6 months (in this check). Hence, a ballot is created for Alice’s neuron.
- Alice can cast a vote on Bob’s proposal. This vote will not count towards the result as Alice does not have any voting power due to her neuron’s stake being zero. However, Alice’s vote may still have an indirect effect on the voting result through following: if Charlie is following Alice on the topic of this proposal, then Alice’s voting will trigger a vote being cast for Charlie. Moreover, although Alice’s vote does not have an effect, casting it will use cycles in the SNS governance canister.
The main concern is that while the eligibility definition should ensure that only neurons committed to the DAO can vote, the current design allows neurons with no stake, and thus no commitment to the DAO, to vote.
Moreover, these ballots consume resources: the casting of votes for such neurons uses cycles in the case of SNS DAOs (NNS canisters do not use any cycles) and, even if no votes are cast, the ballots use memory.
New proposed definitions
For the above reasons, we propose to update the definition of eligibility to vote as follows:
- A neuron should be eligible to vote if its dissolve delay is greater or equal than the minimum dissolve delay AND if it has positive voting power. This definition implies that only neurons with stake and hence neurons that are committed to the DAO are allowed to vote and influence the voting result.
- In the NNS, this would mean that only neurons with at least 6 months dissolve delay and some stake are eligible to vote.
- For SNSs, this would mean that only neurons with the minimum dissolve delay as chosen in the SNS’s nervous system parameters that also have some stake can vote.
- A neuron’s voting power would still be defined as it is now.
How this changes behavior
Note that this change would not have an effect on voting for any neurons that have positive stake.
It would also not change any APIs as voting power is still defined in the same way.
The only differences are:
- Neurons with zero stake: cannot vote anymore.
- This includes neurons that have zero stake because they submitted a proposal and the proposal fee was subtracted from their effective stake.
- Neurons who follow a neuron that votes but has zero stake (similar to the neuron of Charlie in the above example): will not vote automatically. The behavior of the following neuron is then similar to
- following a neuron that has a dissolve delay lower than the minimum needed for voting, for example a dissolved neuron.
- following a neuron that does not vote.
Proposed Next Steps
We propose to discuss these changes in this forum thread. If there is consensus, we plan to implement them in NNS governance and SNS governance and to propose them to the NNS in regular releases of those canisters.
We are looking forward to your questions and suggestions!