(May 8th, 2022) Recent Edit: This proposal has been changed after feedback to fix governance proposal rewards on a daily basis (originally was on weekly basis). All other mechanisms of the proposal remain the same. For clarity, the terminology of a completed proposal or one reaching completion means that voting has finished and the proposal has moved from a status of “Open” to a status of completion (i.e. Rejected/Executed).
Goal
As a community, revise the current governance voting rewards system to disincentivize proposal spamming for profit, while still incentivizing voter participation and allowing anyone to easily submit an NNS proposal (no censorship).
Why you should approve this proposal: (TLDR Value Proposition)
Fixing governance rewards on a daily basis removes the financial incentives from creating governance proposals without raising the proposal reject cost or lowering governance voting rewards
The Solution
Fix governance voting rewards at 75% of all voting rewards disbursed on a daily basis (UTC Time). Regardless of the number of governance proposals that reach completion in a given day, the voters are rewarded for their participation divided by the number of proposals completed in that day, and these rewards are disbursed at the end of the day to ensure the correct voting reward per vote cast, and that no vote on a single proposal is worth more than any other proposal with that time period.
If the NNS receives 1 or 1000 proposals that reach completion on a single day, a participant that votes on all proposals will receive the same voting rewards. The governance rewards paid out over time will therefore be predictable and stable, and the fixed governance rewards will remove any financial incentives or potential conflicts of interest in creating an NNS proposal.
What this Proposal does not do
- This proposal does not remove the incentives to spam the NNS for visibility or advertising
- This proposal does not give less or greater governance rewards to voters if there are more governance proposals submitted that reach completion on a given day. The governance rewards remain constant, regardless if there are 0 or 100 governance proposals that reach completion on that day.
How does this affect me as a voter
- Nothing changes - keep voting on governance proposals and you will receive the same rewards as if one proposal was submitted each day (75% of your rewards will from governance proposals)
- You will receive rewards proportional to the
(# governance votes participated in / # governance votes total)
for proposals that are completed during that same day.
How does this affect me as a proposal creator
- Nothing changes
**End of what will be submitted to the NNS**
Explanation of the Current Problem, and Why Fixing Governance Rewards is the Solution
(If you want to understand how governance rewards currently work in the code, keep reading)
→ The following explanation is copied from this post on 4/5/22
I’m arguably not an expert on governance voting rewards and do not work for DFINITY, so my initial observations have simply come from noticing my mergable maturity, and following discussions on the forums.
Therefore, out of curiosity I did a bit of peeking into the code behind how voting rewards are distributed and found this. My interpretation could be off and I welcome anyone from DFINITY to correct me (@jwiegley @diegop), but I’ll take each piece of code at a time in how I’m interpreting it.
The following code snippets are taken from this commit as of 4/5/22 (commit 4ed64eb628db52d378c2b3c7db09f9f0ab6c3331)
This essentially means a governance vote is 20x any other vote, and 2000x an exchange rate vote. Based on the estimates in the code, the breakdowns per day assuming a single governance proposal is cast each day look like this
- governance = 1 * 20 = 20
- exchange = ~100 * 0.01 = 1
- others = (a handful) 5 * 1 = 5;
Therefore, if one governance proposal per day is submitted we would have roughly 20/(20+1+5) or 76% of all voting rewards attributed to governance.
This piece of code calls the aforementioned reward_weight()
function for each proposal, and then for each voter ballot increments the voting rights by the reward weight for both the individual voter, and the total voting rights of all voters on the NNS.
This piece of code calculates the reward for each voter based on (used_voting_rights * distributed_e8s_equivalent_float / total_voting_rights)
What this says to me is that even though total daily voting rewards on the NNS are capped by the distributed_e8s_equivalent_float
, the more governance proposals there are per day, the more that percentage reward allocation due to governance proposals could go up. For example, let’s look at if we now have 2 governance proposals per day.
- governance = 2 * 20 = 40
- exchange = ~100 * 0.01 = 1
- others = (a handful) 5 * 1 = 5;
All other proposal topics equal, if 2 governance proposals are introduced per day then roughly 40/(40+1+5) or 86% of all voting rewards are attributed to governance.
One can imagine if then someone submits, 5, 10, 20, etc. governance proposals per day that are voted - which may very well happen if someone reads this far. In fact, if 50 governance proposals were submitted in a day, over 99% of rewards would be given to active voters, and passive voters would recieve less than 1% of the rewards, which is broken in my opinion.
If 50 proposals were submitted per day, people will not have the time to keep up and vote on everything, which will cause more centralization around followee neurons in order to ensure NNS participants don’t miss a vote. Those submitting the spam proposals would be counting on NNS participants missing a vote, and therefore taking rewards from those who missed a vote in this zero-sum game.
This is another strong reason of why governance proposal voting rewards per time period should be fixed. The current logic shifts the incentives towards creating more governance proposals, instead of placing a focus on the NNS participants voting on the governance proposals that are created, regardless of how many proposals are created in a given time period.