Community Discussion: Revise Governance Voting Rewards to Fix Proposal Spamming Rewards Exploit

Hi @willguest thanks for your input!

A few points:

I’m not quite clear on what you mean here, can you elaborate on this a bit?

With respect to your comment on financial disincentives if the reward is fixed by time period, I think it’s important that voters participating in governance proposals are rewarded for their time - the question what is the appropriate reward amount for a week of proposal votes is up to the community.

In the case where we have a bad actor that is not affected at all financially by the cost to create a proposal (say a whale or even a foreign country), @ArjaanBuijk had a idea that would act as a great solution

Based on this suggestion of a minimum support “signature” threshold, I’m imagining a future where the IC is massively successful and 1000s of governance proposals are created on the NNS each week. Many are spam and are caught in the filter, but let’s say 50-100 make it through. That’s still too much work for one person in any week. Proposals that have garnered the necessary support from the community will be well known, and default followee neurons/active members will search for the proposals that they support. As long as a proposal receives some minimal number/percent of votes, it would make it to the next round. The majority of spam/unpopular proposals would therefore “fall off the ballot” at this point, with no necessary action needed to be taken by the community in terms of reading/interacting with the spam proposals.

The question remains on how to motivate individuals or entities to vote on proposals that would pass that minimum threshold. Your juror-type system is an interesting and satisfactory solution, albeit a bit more active of a solution than I would like to be involved in personally, especially if I have a busy week and am chosen to review 10-20 of these incubated proposals. I believe that like a state ballot proposition, there should be enough organic support not tied to any financial compensation for an individual proposal to pass some minimum support threshold and unlock after the incubation period to make it to a “live vote”.

The property that governance rewards are fixed per time period/basis ensures that NNS voters don’t feel financially obligated to vote on proposals in incubation that have not reached a minimum support threshold. In this way, NNS participants then are not forced to read through and vote on 50-100 proposals just to find the ones they care about, but are only rewarded by voting on proposals that hit the minimum support threshold and unlock (or go “live”) on the NNS.

Definitely agree that this would be a neat feature to have to an SNS - although I’d imagine each application would want to have a lot of control over each of the “toggle-able” weights and features. I’m optimistic given the recent influx of input around this solving this proposal spam issue that the community will come to a satisfactory resolution in due time!

1 Like

On idea 1, I don’t really understand how it is different than the system today other than averaging over 7 days (or a month) instead of 1 day. Is it because voting rewards would only be derived from governance proposals and nothing else? If so, I could back that idea (it’s effectively the same as resetting default following for All Topics Except Governance). Would you please clarify further?

On idea 2, how would you decide which is the most important proposal for voting? And the second most important? Etc? Does it matter or are you assuming everyone will vote on every proposal? That may be reasonable, but I’m just trying to understand the mechanics of the proposal weight degradation.

On idea 3, I like the idea of a delay period. I have a recommendation for a slightly different twist. When the proposal is submitted to the NNS, a forum topic should be created automatically that requires deliberation for 1 week. At the end of 1 week, the proposer is required to submit a revised proposal before voting is initiated. Not perfect, but I do like the idea of ensuring deliberation. During deliberation, I suppose you could implement a Spam button to prevent the proposal from moving forward, but it seems that could be abused by people who don’t like the topic. Hence, I’m inclined to think the forced deliberation part is good, but maybe not the spam identifier. I also don’t think this disincentivizes spam proposals. People will just be willing to let them play out. The goal of spam proposals is either low cost advertising or higher voting rewards, so this idea doesn’t seem like it solves that problem.

I still think spamming will continue until the root cause is eliminated, which is people going after voting rewards of people who are not voting on governance. Eliminating default rewards for routine business proposals is one way. Another is to let the spam play out until 95% of the voting power is configured to vote on governance. I’m afraid the later will take a while.

By the way, I love how you are focused on ideas that keep proposal cost low and encourage higher voter participation. I think we have these ideals in common.

2 Likes

Governance rewards are fixed per time period…I’m trying to understand this idea. Are you saying something like 75% of total awards available for a 7 day period are dedicated to governance no matter how many proposals are submitted?

Hi @wpb, thanks for your feedback and the positive vibes!

I agree that #2 has a few flaws, specifically that this makes certain proposals more valuable than others. There may be a few tricks to make users unable to predict which proposal would be worth the most, such as delaying rewards to the end of the voting period (1 week, etc.) and then randomly assigning the decreasing rewards to each of the proposals within that period, but I agree that this would not be optimal.

I’d be happy to clarify if you can elaborate on how this would be the same as resetting default following for All Topics Except Governance, I’m a bit confused on that equivalence.

With this proposal, I’m only talking about extending the rewards for governance proposals to average over one week - this does not include other proposal topics. I believe the this change for governance proposals starts to make more sense when a 1-week incubation period is introduced in idea #3.

This fixed rewards allocation over a 1-week time period instead of a 1-day time period does several things:

  • It gives NNS participants more time to evaluate and vote on a proposal as well as allowing some predictability with respect to when a proposal will be live for voting.
  • It stabilizes the amount of governance voting rewards allocated, (which I believe are currently majority of voting rewards).
  • It requires NNS participants to stay active, but does not require them to have a part-time job as an NNS proposals reviewer. :sweat_smile:
    • NNS participants should be rewarded for staying up to date on governance proposals, but anything quicker than a weekly cadence turns into a part-time job/serious hobby.
  • It places an emphasis on requiring voters to check in and vote weekly on any governance proposals in order to maximize voting rewards, and removes the need to submit daily governance proposals in order to maximize voting rewards.

I really like this idea and support it - just a few edge cases/questions

  1. This locks the deliberation period for one week - what if the creator of the NNS proposal wants a longer deliberation period, or to post the proposal with prior to submitting it to the NNS?
  2. This requires a hook from the NNS into the forums, and centralizes the forums as the goto place to discuss Governance Proposals. What about people who want to submit a proposal on Twitter, Medium, or DSCVR?

Look into my comments above with respect to @ArjaanBuijk’s suggestion on a minimum support “signature” threshold. I think the positive filter is better than requiring people to label a post as spam, which as you say could be abused. The best approach for handling spam is putting in place an automated and unbiased mechanism or filter, which it looks like DFINITY has on the roadmap for Q2.

2 Likes

Can you be more specific about the fixed reward allocation? Voting reward allocation is already fixed every day. Are you saying a certain percentage of that allocation would go to governance? Are you thinking 25%, 50%, 75%, 100%? I understand the 7 day average part. I’m trying to figure out the fixed allocation part.

2 Likes

Yes, I think the percentage of the total voting awards attributed to participating in governance proposals over a 7 day period should be fixed to whatever the community aligns on (50%, 75%, 80%, etc.), regardless of the number of governance proposals submitted during that time period (0 to infinity).

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, I did a bit of peeking into the code behind voting rewards and found this. I could be wrong, but I’ll take each piece of code at a time in how I’m interpreting it.

The following code snippets are taken from the most recent commit as of this post (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 post. 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 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.

3 Likes

That’s a perfect explanation. I understand now and definitely agree. In fact, your initial calculation feels right to me. It seems a governance reward allocation of 75% of total available voting rewards is the right ratio. I would not be opposed to 85% either. You are definitely correct that this kind of fixed allocation would disincentivize low effort proposals.

Of course it would need to be averaged over many days instead of daily simply because there are not enough governance proposals for daily allocation (as you have pointed out). I think a 7 day (or 30 day) rolling average would work though. It doesn’t have to be a fixed 7 day time period. That way proposals can come out any day and voting rewards can be paid out every day.

1 Like

You have made an incredible work. Thank you for that !:pray:

This has been the Snowpiercer equivalent of the money train.

It should be fixed though, at least iterated upon. It’s a weird situation, exploitable by anybody to benefit those that actually have skin in the game and care about the future of the IC.

99% of those losing income as a result of spam governance proposals probably have no idea it’s happening.

2 Likes

My point here is less to do with what is gained by fixed period governance rewards, and more to do with what is lost.

In saying that, regardless of the amount of governance proposals created, the proportion of the rewards given to voters is fixed, you do indeed create a disincentive mechanism for the creation of spam proposals, but by creating a disincentive mechanism for the creation of any new proposals.

I appreciate that the motivations behind drafting and distributing proposals may be non-financial, but it seems like a shame to remove rewards-per-proposal altogether. I suppose my main point is that there may be good reasons for an increase in the number of governance proposals (e.g. an organisation facilitating community engagement) but this additional benefit could not be recognised in the form of directly increasing rewards, which seems counter to the goals of the network generally (but the NNS should know that already, right?).

Example: In one week there may be 100 really important proposals, because BTC has just been announced as the global reserve currency. The massive implications set into motion existing plans to update ICP governance and many of the “nearly there” proposals are quickly finalised and put to a vote. Let’s say 95 of these have real substance and require community consideration. A few weeks later, over the holiday period, only 1 meaningful proposal is made and voted on. From a network benefit (reward) perspective, these two periods would be the same, assuming the cap is 76% (re your calcs).

I cannot disagree with your calculation of reward proportion, but I see this as a metric of activity rather than a true measure of value. If there is lots of genuine governance to take care of, it makes sense that a greater share of neuron rewards come from this activity.

2 Likes

I think the juror-type system is essentially the same idea, but with the difference being how the reviewers are selected. In this case they are self-selecting, whereas the juror model would have the NNS assign people to the role. I was imagining a set number of reviewers, which is equivalent to @ArjaanBuijk’s unlocking value.

One benefit to this model is that it would cap the amount of time required to review new governance proposals, preventing reviewing from becoming a part time job, which i agree could make governance participation really dreary.

Random allocation of reviewers from the NNS would also hopefully prevent small groups from pushing spam proposals through and could have a per-proposal reward structure like:

review_reward * (no_of_reviewers / people_in_juror_pool)

So if 100,000 people have agreed to be called as reviewers and 100 are needed per proposal, there is a 0.1% chance of getting called up. Let’s say there is a 0.5 ICP reward for reviewing a proposal and (since this is a long term view) we estimate 100 proposals per year:

0.5 * (100 / 100000) = 0.0005 * 100 (over a year) = 0.05 ICP per person in the review pool.
Put another way, there is a 10% chance that you will review something in that year, for which you receive 0.5 ICP.

Some time later, we now receive 5,000 proposals in a year, but there are 1,000,000 people in the review pool:

0.5 * (100 / 1000000) = 0.00005 * 5,000 (one year) = 0.25 ICP per person in the review pool.
Or, there is a 50% chance you will be called up to review and earn 0.5 ICP.

This is treating all reviewers as equally qualified for all reviews. In reality, some people or organisations might show a real aptitude for review and I would hope that, in a transparent way, that could be recognised and their participation would be weighted according to demonstrable expertise or on the basis of community-driven ratings, but this adds a layer of complexity that might not be necessary.

One final thing you mentioned, @justmythoughts, is the concept of financial obligation, which I think is really important too. I can see how incentives could also become a burden. Having people opt in to a pool of possible reviewers might help to distinguish between those people who want rewards for passive (but still valuable) participation, and those who are happy to spend more time on reviewing.

1 Like

Here is my contribution …
Don’t even know if this is feasible…or to difficult to implement in the NNS
lets say, DFINITY creates a rewards NFT for Governance proposal (something like Motoko NFT).
Now, all proposal weigh value gets reset back to what is was at the beginning, all equal value, besides that Each Governance proposal would get assigned a point value equal to the amount of neuron in existence (what ever that number is), every neuron that participates in Governance proposal voting by following or by manual voting gets 1 point assigned to it, so if every neuron in existence votes in the Governance proposal every one gets a point. The left over points from the neurons that didn’t participate would get divided equally amounts the neurons that voted manually. After reaching certain amount of point ( to be determined) the NNS will airdrop one of the afore mention NFT to that neuron. In this way you are incentivized to participated knowing that you might get something of possible future great value ($1000 ICP or just a nice jpeg :slight_smile: ). This way the value of the reward is uncertain thus disincentivizing the creation of spam Governance proposals.

is this possible?

1 Like

An ICP NFT lottery… :thinking:

You are right that this is a good argument against fixed governance proposal allocations. I don’t have a good response to this yet either. To be honest, the system we have now hasn’t incentivized many people from the community to produce high quality proposals. Frankly, its a lot of work to submit a proposal. Figuring out how to submit a proposal (DFX commands today) is hard for most people, but it’s the easiest part of the whole process. Defining and documenting an idea, moderating deliberation, advocating for support, and the art of compromise are all difficult tasks and sends the proposal lead on an emotional roller coaster. If the goal is for the community to offer more proposals that are high quality and well deliberated, I’m afraid new incentive mechanisms will be required. Otherwise, it seems Dfinity is the only entity that really needs to use the governance proposal system with a few rare exceptions.

Another approach could be to add a “spam” button so we would have accept, reject and spam. If spam gets the majority then the submitter would be penalised. The penalty would have to be defined e.g. just an exclusion for a certain time.
This way we don’t create additional complexity on the reward model.

If it’s a spam proposal and spam doesn’t count as governance, then people whose first priority is voting rewards wouldn’t hit the spam button.
If it’s a spam proposal and spam does count as governance, then the spammer wins anyway.
If it’s a real proposal and there is a spam button option, then the minority side could just start calling the proposal spam to get it nullified.

So there are definitely a few downsides to having a spam button.

@willguest thanks for taking the time to explain your position :slightly_smiling_face:

While I understand your argument, I fundamentally disagree with the idea that voters should be rewarded more when more proposals are created, and less when less proposals are created.

Think about your elected officials and ballot measures wherever you live - do you want your elected officials or yourself personally to be inundated with a larger volume of proposals of varying quality, or just those that reach a certain bar of quality, thought, and community support?

What if we’ve reached a system that for is stable, or in equilibrium - should we be incentivized to propose changes to the mechanisms in place just to earn more governance rewards? Artificially rewarding the active community by the volume of proposals of that are submitted does just this.

A participant who submits a proposal to the NNS is someone who cares deeply about the IC, just like a local government official or ballot canvasser cares about the institutions they utilize - it has no direct attachment to financial reward, but there is an indirect incentive. For example, why did I create this post, and why have I spent hours doing so and responding to feedback thus far - I am both a developer and investor in the IC, and I believe that creating strong mechanisms around the IC will protect both my investment and projects by encouraging other developers, investors, and users to join and grow the IC ecosystem.

Until recently, I believe that most NNS proposals created by the community had a similar motive - to serve, improve, and build confidence in the IC. These proposals range from @skilesare’s multiple proposals trying to get ICDevs as a named default neuron in the NNS as a voice for IC developers, to @Kyle_Langham’s proposal to index all neurons in the NNS, to @wpb’s proposals trying to educate everyone on how to use the NNS and galvanize participation in the governance process. These don’t “pay off” for any of the proposal creators in the short term, but will most likely have long term benefits to the IC (well - maybe @wpb’s did have a short-term benefit :sweat_smile: , although he stopped the proposals earlier than planned after the goal of increasing NNS voting participation was reached).

Also, its important to point out that there is a pre-defined inflation rate for the amount of ICP minted and disbursed from the NNS. Proposing more governance rewards does not change this inflation rate, it simply increases the fraction of NNS rewards that are attributed to voting on governance proposals. The reason why you end up seeing more maturity is that there are still a large fraction of NNS participants that do not vote on these governance proposals - meaning that they are losing out on governance rewards, and those rewards go to the active voters. As @borovan mentioned, this is something that is directly exploitable and would result in a variable, but significant transfer of income from passive to active NNS participants, to the point where 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.

3 Likes

@justmythoughts All good points. I am not totally convinced one way or another in terms of rewards-per-proposal or not. My investor-developer interests are a bit conflicted as well.

I totally agree that having high quality proposals is the ambition (and that there should be a spam threshold), so why not make the rewards somehow reflect that, maybe with a scoring mechanism?

1 Like

Imo votes on any sort of proposal should be pretty binary (Yes/No). Features like a weighted proposal score work in terms of judging proposals against one another (ranking), but don’t work as well if you’re asking people (not algorithms) to vote on a binary outcome. It just becomes super subjective, and make the process more complicated for voters.

Now in terms of a machine learning model (automated, not involving people), adding features with specific weights works pretty well → for example, these features and weights are used when classifying your email as SPAM or HAM (not spam).

So you disagree with the principle of voting rewards? If the voting is not the thing being rewarded, then these are participation rewards and, if it is not the action of voting that determines your rewards, what does?

Can I just click “participate” once a week/month, and then I am guaranteed the same reward as someone who reads every word of every proposal, thinks about them, maybe even does more research to fact check certain points or develop their perspective, and then makes as informed a decision as possible?

Honestly I find your argument to be based on a couple of theoretical or ideal situations, neither of which exist. Election officials can be corrupt (what?!) and not everyone who submits a proposal cares so deeply, evidently.

But I do not mean to attack you - I am a huge fan of the IC, in awe of the work already done and totally dedicated to building amazing things here (hopefully for years to come). I am so grateful to you for raising this topic. This is, after all, the foundation for the discussion… I just think that removing reward per proposal will lead to less engagement at a time when it is needed the most, by removing a piece of the NNS architecture that is central to participation.

In a stable state, I completely agree with your assessment, but we are a long way from that. The governance system can also be changed and, if and when we reach that point, I may well have a different opinion.

Something does need to be done, however. As a constructive proposal, can I suggest separating the two concepts. The discussion on per-proposal or fixed-period rewards will likely always have people on both sides (and maybe it should), but the idea of reviewing proposals seems to have broad support.

2 Likes