ReProposal: Spam Prevention - Convert from system-based rewards to voter based rewards

If we could clarify this, I personally would appreciate it. Right now I am following DFINITY for all except governance because I am not familiar with the higher level knowledge (yet) to be able to determine if the code is malicious. Thus, I appreciated the ability to follow DFINTY for this reason. Now, if the way I have it setup does not make me “passive”, I would prefer to keep it this way, or perhaps I will follow @paulyoung or others with the higher level knowledge so if somehow someone does try to shoot through malicious code My vote will be to block it. Not allow it.

I do want to point out though, I also want to maximize my rewards and would appreciate the overall clarification on what the ramifications would be for any of these implementations.

Or, if you want to be direct you could just tell me the best way to vote and increase decentralization, yet, not blindly vote on code for reasons I mentioned.

Following DFINITY for All Topics Except Governance is an excellent choice.

Maximizing voting rewards today means you also have to be following a neuron you trust to always vote on Governance topics. There are now many options. DFINITY is a good choice because they vote on almost all Governance proposals. The same is true for other names neurons. Just make sure you set up your neuron with a Followee for the Governance topic.

This is excellent feedback for where I am. Sorry if I diverted the topic.

I was mainly focusing on this proposal though. If it was implemented would my current situation “follow DFINTY for all topics except governance” consider me “passive”? I do want to reserve the right to vote for governance proposals as they arise. However, as mentioned I want to still say “yes” on healthy updates, and “no” on anything that may ever be malicious. Does that make more sense?

This looks like a well thought out fix to the current situation. I agree with @wpb regarding the additions. Esp. the 20x Governance proposal weight. Creating a treasury for the outlined reasons is also a good idea. I was never a fan of “burning” and rather think putting resources to a use via ecosystem funding etc. is a way bigger value driver.

1 Like

Regarding the follow-up questions

  1. Tracking of un-allocated voting rewards: I agree that this would a sensible addition to the proposal and I will check with the dashboard team next week on their thoughts & potential effort. Aligned with @skilesare’s point, I think this could also be implemented slightly later, i.e., I do not see a hard dependency.
  2. Governance weights to 20: This also makes sense to me. I think this could be part of the motion proposal but the implementation could come slightly later. (The effort is not be big but requires as usual some sanity checks & testing).
  3. Rejection fee back to 1 ICP: I assume that this is obsolete given the latest developments discussed here.
1 Like

@skilesare
I agree with @bjoernek here

My point number 4 above should be deleted since this proposal does not eliminate the potential for spam for the purpose of advertisement.

Also, I see this proposal as a framework for a path forward, not the final solution that will be implemented as written. Hence, I would rather see some of these key elements incorporated into the proposal now even if implementation comes in stages. I don’t see a need for a rushed implementation of this proposal, especially when an increased proposal reject fee is a quicker and easier temporary solution to any increased risk of weekend spam when exchange rate proposals are removed from the NNS.

To me, this proposal is a very good way to build an NNS treasury that can fund a lot of efforts that drive governance participation and decentralization. I think this proposal and periodic confirmation of followees are two solutions to the spam problem (for financial gain) that each have a higher value use case beyond spam prevention. Hence, it’s not critical to sell this proposal as a spam prevention mechanism.

1 Like

I’m in line with all of this…I’ll put together some
More formal text on Monday and post it here for discussion.

As far as non-incentive based spam spam, I still think that Proposal to restrict rewards qualification to a threshold - #2 by wpb is the fastest path forward.

2 Likes

Gotcha I am sorry for everyone I diverted the topic from! I’m now understand the differences in proposals. I’m sorry about the confusion!

Thanks for being kind

1 Like

This is an elegant proposal which I heartily support. An independent, NNS controlled treasury is a great idea, for the reason @skilesare has mentioned and also as a possible source of funding for experts voting through the community neurons proposed by @lastmjs .

Updated Proposal Text - Please let me know if you think there should be any more changes:

Proposal: Convert from a system-based rewards model to a voter-based reward model.

The current system determines a reward rate, total supply, and then determines the total reward to give each day by multiplying the (reward rate * the total_supply)/day. The total rewards are then handed out based on each neuron’s share of the total voting weight for the day.

The new system will determine the reward rate and multiply the rate by the weighted vote-completion percentage and bonus rate of each voting neuron.

This will also allow us to move the governance weight back to 20 without incetivising spame. We propose this occur as part of this proposal.

A result of this proposal will be a reduction in total minted ICP due to the fact that some voters do not vote on all proposals or follow a voter for all proposals. In a follow-on proposal, the NNS can determine what to do with that “abandoned” ICP. We suggest an NNS treasury but will leave it to a future proposal to finalize that. The following illustration shows the handing out of rewards in the old vs new system.

NOTE: “Passive” here means someone who has not elected to follow anyone on the governance proposal topic and who does not manually vote. We do not consider people that pro-actively follow experts to be passive and appreciate the time and effort they take to find qualified voters.

Spam is neutralized because additional proposals will not affect the ability of a neuron to gain rewards. Any neuron’s maximum reward for the day is generated by Reward Rate *(Actual Vote Weight/Possible Vote Weight) * Age Bonus. Adding extra, superfluous heavy weighted votes only increases the Possible Vote denominator and thus does not increase the number of rewards handed out in a day.

Weights can remain in the calculations to encourage participation due to the fact that each voter is only competing against themselves to achieve 100% voting for the day.

This scheme can be easily implemented in the existing code by manipulating the distribute_rewards function to iterate over all considered_proposals, finding the weight of each proposal and creating a target sum. Instead of creating a map of voters_to_used_voting_rights, the map will also need to keep track of each vote’s absolute weight. The reward function on ic/governance.rs at 73983e05ebbab239ce39492a05fb39a83ce5dce5 · dfinity/ic · GitHub will need to be adjusted to be used_voting_rights * (total absolute vote weight/target vote weight). The used_voting_rights has the age and lock bonuses built in. (Note - The reward function is mapping twice as much data, so performance may be an issue here).

A worked example:

4 proposals are eligible for rewards on a day. The reward rate is 15%.

Proposal 1 - XDR Exchange Rate - Weight 0.01

Proposal 2 - Subnet management - Weight 1

Proposal 3 - Node Rewards - Weight 1

Proposal 4 - Governance Proposal - Weight 20

Total Possible Vote weight: 22.01.

Voter 1 - Passive whale votes with 10,000 voting reward on proposals 1-3. Total executed weight is 2.01. Thus the reward is 10,000 * (.15/365) *(2.01/22.01 = 0.3752 ICP(~1.3%)

Voter 2 - Active holder votes with 100 voting reward on proposals 1-4. Total executed weight is 22.01. Thus the reward is 100 * (.15/365) *(22.01/22.01 = 0.041 ICP (~15%)

Why Now?

The new exchange rate mechanism(New Exchange Rate Mechanism - #28 by THLO ) will make spam much more attractive. We need a quick fix and this is the quickest route to implementation.

A few more notes from the discussion with the community/foundation(h/t to @bjoernek for compiling):

  • Proposal: The reward mechanism assumes that everybody votes on all proposals. If you vote on all proposals you get rewards corresponding to your share of voting power compared to the total voting power. You get reduced rewards if you miss votes, but those lost rewards don’t go to active voters.
  • Impact on total rewards/inflation: This proposal reduces the rewards which are allocated on a daily basis, depending on how many participants miss votes. This reduces inflation. In a second stage (out of scope of this proposal) we could consider allocating these un-distributed rewards to an NNS treasury.
  • Impact on financial incentives: This proposal removes the direct financial incentive to submit spam proposals, i.e., active votes will not gain additional rewards in case of spam proposals. However there is still an indirect financial incentive as the new mechanism reduces the inflation; this creates a benefit for ICP holders (staked/unstaked)
  • Impact on reward weights: As this proposal removes the direct financial incentive for spam we could consider to reset the reward weight for governance proposals back to 20.
  • Implementation effort: This proposal requires only an update of a few lines of code within the function distribute_rewards in governance.rs. Thus this can be implemented relatively quickly.
  • Why bring up this proposal now again?
    • In connection with the new exchange rate mechanism we require a quick solution.
    • Earlier concerns on the ability to influence the inflation rate (and thus also reduce the predictability of total supply) are much less of an issue now, given that maturity modulation included anyway further uncertainty on this.
  • Connection to periodic confirmation of following: We already have an approved motion proposal for spam prevention namely periodic confirmation of followees. However, this still requires some enhancements wrt to the handling of time-sensitive proposals (for which a few ideas are under discussion). Periodic confirmation of followees could still be valuable, even if this proposal is implemented because it strengthens active voting participation.

Vote Accept to:

  1. Convert from system-based rewards to voter-based rewards
  2. Change the weight of governance proposals back to 20.
  3. Keep track of “abandoned” ICP as a governance-tracked variable.
6 Likes

I know it’s technically not a part of this proposal but there should also be a note on implementing a system to track lost rewards from days with no proposals, I’m fine with not getting an higher APY especially if those tokens go in some kind of treasury, but getting a lower APY than the one displayed on the dashboard cause there are days without proposals kinda suck.

Someone already noted that rewards roll to the next day so there should not be any lost rewards due to no proposals.

1 Like

Oh ok that’s news to me, last time I talked to bjoernek about it I was under the impression that wasn’t the case

See the above post…

1 Like

I think this is a fantastic idea and kills many birds with one stone.

  1. It reduces the incentive for spam
  2. It increases the incentive for governance participation
  3. It reduces inflation
  4. It tees up the grounds for a NNS treasury proposal as we are will be tracking undisbursed maturity from non-voters

I think number 4) the NNS treasury proposal which is out of scope for this proposal should come swiftly after this proposal is approved. I believe the NNS treasury could be the biggest game changer for the future of ICP.

@skilesare at current rates do you have a way of doing a quick and dirty back of the envelope calculation as to how much undisbursed maturity could be generated at today’s rates (from non-governance voters) over the course of the next year and next couple years? If total market cap is $3.4BN and inflation is roughly 10% today, total maturity is $340M. If no-one voted, that is the theoretical annual limit for the NNS treasury at today’s prices. I am not sure what % votes but either way the NNS treasury could get absolutely enormous extremely quickly presenting us with incredible opportunities for decentralization.

Imagine if we had sister foundations popping up globally to support the future of ICP in every which way imaginable. It is truly amazing to consider the possibilities that a NNS treasury could create. Dfinity could have guaranteed funding. We could have multiple contributors to the replica code and multiple parties turning ICP into the future of the internet. There is simply no other blockchain that has anything like it. Money makes the world go around and ICP is too complicated to rely exclusively on Dfinity.

Over and above the stated benefits, an NNS treasury funded from undisbursed maturity of non-voters would not negatively impact voters. No one would cry out against taxation because it would be easy to not be taxed by participating in governance.

@skilesare @wpb if you’d like to discuss the NNS treasury idea offline I’d love to get your thoughts on it. All that said above, the idea of hundreds of millions floating around in a NNS treasury does strike me as risky too and rife with potentials for abuse and scams. So I agree it should be its own proposal that is properly considered rather than lumped in with this one.

3 Likes

Please reach out. I think @Kyle_Langham said there would be almost 250,000 ICP a day that was not distributed…but I’ll let him confirm because that seems absurdly high and I may be misremembering.

I’ve mentioned elsewhere…and I have no expectation of anything like this happening…but as a real example I’ll state that about a week and a half of that going into an #8yeargang neuron benefiting ICDevs would permanently endow almost all of what I wanted to do with the organization. So I think you’re right and there are a ton of things we can do all across the landscape with those funds. One caveat is that we don’t want it to go on forever…ultimately full participation and decentralization is the goal.

3 Likes

Based on the analysis on which Kyle & me worked on, it is currently approx 250k of maturity per week which would not be allocated. This analysis is using the same assumptions as the spam analysis here, i.e., assuming on average approx 0.5 governance and 6 non-governance proposal per day (in addition to 144 exchange rate proposals).

1 Like

Thanks. 250,000 ICP per week at $7 per ICP is close to $2M a week (with a little bit of rounding up). $2M a week = $100M a year. Now that’s a pretty penny. And we all hope to revisit a world soon in the next 5 years of a $100+ ICP token.

And that’s just one year. We could easily have a treasury of over a billion dollars. That’s a big opportunity and a big responsibility. The community can discuss it but honestly @bjoernek when talking about those kinds of sums I think Dfinity should really have a heavy hand in thinking through how this should work.

Now, @Kyle_Langham time for you to confirm the numbers!

4 Likes

Yup, 250k ICP a week is correct (based on historic data). @bjoernek did some phenomenal work in running scenarios and compiling data. His analyses are very strong.

That number will drift lower with each passing week as (a) the inflation rate of ICP decreases and (b) voting participation increases. So it might be good to move sooner rather than later to ensure the treasury is well funded long term.

Given that an NNS treasury would provide the Internet Computer community options to change the protocol and advertise the IC outside of DFINITY, I would recommend the community have a heady hand in creating the framework of the treasury :slight_smile:

5 Likes

That’s fair. Ok will have a think about how to best deliberate on it. Perhaps a community driven working group makes sense.

Feels like a big responsibility.

1 Like