Periodic confirmation - design

Hi all,

As promised in a previous forum post, we are following up with a more concrete design for periodic confirmation.

TL;DR

  • We follow up on the approved motion proposal on periodic confirmation and propose a design.
  • A neuron has to regularly take one of the following actions: directly vote, set following, confirm following.
  • If a neuron fails to do any of these actions for 5 months, the neurons’ voting power will be decreased until it reaches zero after 6 months of inactivity.
  • The voting power of all other neurons is not affected.

Context / Motivation

The main idea of periodic confirmation is that in order to get rewards, governance participants have to remain active voters and regularly confirm their following settings. Neurons who set following once and then never interact with the NNS again get lower, adjusted voting rewards. In particular, neurons who were created with default following and never made an active decision who to follow, have to do so in order to keep getting voting rewards.

The original proposal was adopted by the NNS community in the NNS proposal 55651.

Today, the main motivations for periodic confirmation are

  1. In order to get voting rewards, every neuron has to make an active decision who to follow - default following is not enough.
  2. Followers are regularly incentivised to reconsider their following choice.

Design

On a high level, the proposed design suggests the following.

  1. In order to get voting rewards and have voting power, a neuron has to regularly vote directly, set following, or confirm the current following settings.
  2. If a neuron does not take any of the above actions, the neuron’s voting power is adjusted. After 5 months of no action, the neuron’ voting power is linearly decreased for one month until it reaches zero at the end of 6 months without any action.

To track this, each neuron has a new field indicating the last time when it took any of the above actions.

Relevant actions

Confirmation of following is the main action that was suggested in the motion proposal.
In addition, the design includes set following and direct voting. Setting following also reflects an explicit choice by the neuron who to follow. Direct voting is included because a neuron that always votes directly and does not rely on following is a very active governance participant and should not have adjusted voting power or adjusted voting rewards.

Details Adjustment

“Sleeper” neurons, who don’t take any of the above actions for more than 6 months, should not be automatically participating in voting and getting voting rewards. This design suggests to realize this by adjusting their voting power.

Proposal lifecycle

Let’s recall the proposal life cycle to understand the new design better.

  1. When a proposal is submitted to the NNS, the NNS takes a snapshot of all neurons and
    a. Establishes which neurons are eligible, meaning that they have a dissolve delay that is at least 6 months.
    b. Stores an empty ballot for each eligible neuron with the neuron’s voting power.
    c. The sum of all neurons’ voting power is the total voting power that is taken into account for the decision.

  2. Once a day voting rewards are computed for decided proposals by
    a. Considering the reward pool for that day
    b. Looking at all proposals and neurons and considering

    • i. The total voting power that could have been used if all neurons participated
    • ii. In how much proposals and with how much voting power each neuron participated compared to this total

Voting power adjustment

This design proposes that

  • For each proposal and neuron, in the ballot (Step 1.c.) consider the adjusted voting power. That is, record less voting power for neurons that have not taken any of the above actions for the last 5 months.
  • For each proposal, distinguish
    • the total (potential) voting power, which is the sum of all neurons’ voting power if they were fully participating and without the adjustment
    • the total adjusted voting power, which is the sum of all neurons’ adjusted voting power that can contribute to the decision
  • For each proposal,
    • consider the total adjusted voting power for deciding proposals.
    • consider the (potential) voting power when computing the rewards. This is similar to Step 2.b.i in that the rewards take into account the voting power “if all neurons participated”.

Effect of the voting power adjustment

Adjusting the voting power in this way has the following consequences.

  • Sleeper-neurons are not considered in the decision making process. This means that proposals can still be decided quickly if the majority of the regularly active voters agree quickly. (Also see “Alternatives considered” below).
  • A while ago, NNS governance was changed so that the reward pool is based on the available voting power rather than just on the voting power that was exercised. This was introduced to combat spam and also has the advantage that less rewards are produced in the case where there are a lot of sleeper neurons. Considering the total potential voting power in the new design follows the same ideas and preserves these advantages.
  • If a neuron has been sleeping for more than 6 months, then the voting power recorded for the neuron in any open proposal is zero. This might be unexpected for a neuron that has been sleeping and comes back on some day to directly vote on a proposal - the direct vote would be recorded with zero voting power. However, this also has some advantages. First, to ensure this is not confusing, the behavior can be explained on frontends with a UI and can serve as an additional nudge for the neuron to reconsider and confirm the following. Second, if a neuron has not confirmed or set following or actively voted in more than 6 months, it can be an advantage for the governance process that this neuron cannot simply show up on one day and swing a proposal in an unexpected way.

Alternatives considered

Alternative 1. Reset of following: The original proposal suggested completely removing the following for neurons that don’t confirm following.

Compared to the current design, this has the disadvantage that sleepers would still be counted towards the total voting power for making decisions. As a consequence, if there are many sleepers, it would be hard or impossible to reach quick decisions for urgent proposals such as fixes to security bugs.

This is illustrated in the following graphs where the proposed design is compared with a reset of following. The lines depict voting power over time, where blue represents a sleeper neuron, pink a neuron that remains active, and purple the overall voting power. The solid lines show the voting power that can be used by the neurons and the total voting power that is considered for decisions. The dotted lines indicate the voting power that these neurons are exercising and the total voting power that can be exercised with the current level of activity. In the right graph you can see that when the total voting power for decisions includes the sleepers, the effectively used voting power cannot reach 50% of the voting power and fast decision are not possible.

When urgent proposals in the context of periodic confirmation were discussed in the past, some community members suggested taking into account the active voting power from the last few proposals. The current design follows a similar idea as it also does not account for the sleepers’ voting power in the decision making process.

Alternative 2. Adjustment of the voting rewards, but not the voting power: We also considered not adjusting the voting power and just adjusting the rewards of neurons who don’t confirm following.

This would have similar disadvantages as explained for Alternative 1. In addition, this would mean that sleeper neurons would still contribute to the decisions with their full voting power - even though they would not receive rewards for it, this still does not seem to be in line with the proposal’s intention.

Who can perform the relevant actions?

Already now, direct voting and setting of following can be done by a neuron’s controller or its hotkeys. The same permission should apply for confirmation of following.

This means that a neuron can take any of the relevant actions (which will also reset the timer) with its controller or hotkey, which is in line with the original proposal and ensures that the feature can be implemented in a user-friendly way.

NNS dapp

For the NNS dapp, the main functionality of the feature will be visible in the neuron overview page, where a user can see all their neurons. This page will include a warning if at least one of the user’s neurons has not confirmed following for the last 5 months and has adjusted voting power. It will also include a button that allows the user to confirm following for all their neurons.

In addition, the new neuron field is shown as a timer indicating how much time a neuron has left to take action before the voting power will be adjusted. Since this is a property of each individual neuron, this is shown in the neuron detail page. In the neuron detail page, in addition to a button to set following, there will also be an option to confirm following for this neuron.

In the voting view, there will be a new explanation in the case where a neuron’s voting does not have any effect due to voting power adjustment (the case discussed in Section “Effect of the voting power adjustment”). This will explain to the user why they observe the current behavior and encourage them to take action to reset their neuron’s timer.

The timer is reset if the neuron votes directly (manually using the “vote” buttons rather than by following), if the user sets following for a neuron, or if the user uses the confirm following button, either for this neuron or for all neurons on the overview page.

We are currently working on the design of this and are happy to share more information and graphics once we have them.

Next steps

If there are no concerns with the proposed design, we will start working on the implementation of the feature. One of the first steps will be to finalize the detailed APIs. For this, it is particularly important to reach as many frontend and custody providers as possible who will need to integrate with this feature.

In addition to reaching the integrating teams, this feature needs to be communicated widely to reach as many end-users as possible and ensure that they will not unexpectedly lose rewards.

We thank everyone for their feedback and look forward to taking this feature to the next step!

19 Likes

This is amazing @lara. It is very consistent with the desired outcome of the original proposal and I think the voting power adjustment feature is genius. That seems to resolve the issue with being able to reach quick decisions for urgent proposals. A lot of people should be very happy with the impact of this change.

7 Likes

Well written, @lara, as usual.

How did you arrive at the duration of 5 months before voting power begins degrading? Is there a reason this period is preferable to what might be a simpler, more rounded biannual confirmation?

1 Like

I like it overall,

I find it unnecessary / not valuable the feature of linear degrading of 1 month.

In the long term, voters will have ways to avoid ever reaching the 5 months without confirming, it doesn’t make much diff between a linear slow down of 1 month and the sudden stop at month 6. But it might be much easier and simpler on the code / implementation.

What matters is that users get warned on the frontend (NNS dApp) and with time, find effective ways to periodically confirm. The one month can be the strong warning period, no need to yet impact on the Voting Power and Rewards.

About the other alternatives considered (1 and 2), agree that the proposed one is much better.

Looking forward for it’s implementation and it’s impact both short term and long term.

Hopefully it’s a success and it can be considered to be implemented on SNSs too :smirk:

4 Likes

What is the definition of “directly vote?” Are votes via hot-key, such as on OpenChat or other services considered “directly voting?”

3 Likes

Can I ask what the point of this is, now that we have canister-controlled neurons?

Maybe my point needs to be on it’s own thread and a lot of the NNS design points need to be discussed - but since this is a new addition and requires new development work maybe we need to think about it a bit more?

I could just stake a neuron in a canister and slap in a timer to confirm the following every few weeks and come back in a few years having done nothing and never participated in governance? This would make this update pointless then right?

Or I could just create a canister with a timer and set it as my hotkey on my NNS UI neuron and confirm my following?

1 Like

If someone were to take this action, then it doesn’t seem like they would be a sleeper neuron. They would be aware of the rules and taking actions that enable them to continue to participate and get rewarded. That seems like a good thing. Why not let them do it?

I also wonder how many people could actually pull this off. Devs can do it
of course and would likely get away with it indefinitely. Some may even be willing to make it a public service. However, the internet computer protocol is a mutable system and there is always the risk that the NNS governing body could shut down a canister that is providing this service.

To be honest, the actions required to satisfy the requirements proposed here are so incredibly easy that I’m not sure why anyone, including a dev with skills, would even put in the time and energy needed to build this canister. Seems like way more work than just voting or clicking a button twice a year, which I suspect most people who care are already doing anyway.

Do you think it’s fair to give governance advantages to developers then, and not give that luxury to the users?

Ye, that’s why I’m saying, what is the point of this update then? Devs can easily overcome it and / or create a service to overcome it and it’s not really that much hassle for users to click a button twice a year?

(A canister as a hotkey that confirms the following twice a year is not much work)

2 Likes

How are you an active governance participant by clicking a confirm button twice a year. It’s like saying your an active driver by turning on your car twice a year.

2 Likes

Well, voting manually is active governance.

Also, choosing your Followees or confirming your Followees is active governance.

According to this proposal, that amounts to performing the very simple tasks of voting or clicking a button twice a year. That’s not a big ask.

If a developer wants to spend their time trying to automate a system that gets around these simple tasks, then I say more power to them. Go for it. That by no means gives them an advantage over everyone else. It just makes them willing to put in extra work that most people would likely see as unnecessary.

1 Like

Okay, I will probably create some canister functionality to overcome it. That’s why I asked what the point of this is (I am not bothered clicking a confirm button twice a year).

3 Likes

I think that’s awesome. You are an OG of the ICP ecosystem and have always been active. I suspect most people would agree that you are actively participating in NNS governance by taking this extra step.

1 Like

Thanks man, I don’t have a badge that says that but I have been around awhile :smile:

Others like me could automate this too, anyway, it does feel like we’re adding more friction sometimes to these things, I want to see things become easier, not more effort / harder (it’s not that much effort to confirm, but a user will need to now learn and understand what the confirmation means).

I like to vote sometimes on governance and SNS proposals, but I just can’t see the value on adding a confirmation button to confirm my following. I would like to see Dfinity dev effort focus on more pressing issues like atomic DeFi or adding badland boundary nodes.

3 Likes

I’d like to respectfully ask you to consider not automating a yes or no vote with your canister if you choose to satisfy the requirement of this proposal via voting with your canister. You are a known neuron rakeoff.io, so hopefully you are interested in making sure your vote is always cast in the long term best interest of the internet computer on every proposal. For any proposal topic that you don’t review and vote manually, there are other neurons that you could follow that perform due diligence on those proposal topics. It would be awesome to see you follow them with your vote. I don’t have a strongly held opinion on who you follow as long as it’s a vote that is cast in educated and informed way. I believe there are people that have already built canisters that have all the components that you need. CodeGov has code that watches for CodeGov NNS votes and relays those votes to a CodeGov WTN neuron. Taggr and WaterNeuron both have code that casts their NNS votes according to results of a poll in their respective communities. In both cases they also have backup solutions in case the polls they are watching don’t reach consensus…they end up voting no at the end of the voting period. An automated voting solution that merges this open source code would be a nice solution to your automation plans if it is based on voting.

Who said anything about automating yes or no votes? I was talking about automating the confirmation of the following.

2 Likes

That’s why is said “…if you plan to automate voting…”

By the way, if you are already voting directly or via hotkey, then you are already satisfying the requirements of this proposal. You don’t need to also confirm Followee selections. That would be unnecessary redundancy.

I don’t see it phrased like that in your post? I don’t automate any voting right now if that is your question.

It’s there twice…

Cool. So that entire thread above doesn’t apply to you. In case anyone else is thinking about automated voting, I hope they would take the suggestions into consideration.

The whole purpose of this is to provide an opportunity to reconsider your decision twice a year, assuming you are not a developer.

2 Likes

Seriously, @Lara, can we strongly consider adding a “Proof of Humanhood” to the voting process? It could help address concerns about automation and ensure fair participation.

@Jan, I imagine that Dfinity has automated the process of following and voting for The foundation’s neurons, with neurons created as they mature etc. ( Can you confirm ?). Given this, a Proof of Humanhood might complicate things. Is this the reason you’re hesitant to push this solution forward?

I’m interested in this topic, and I think GeekFactory might be as well, especially to ensure fairness between devs and non-devs. It’s definitely useful when managing multiple neurons or IDs.

End note : It’s amusing to see @wpb advocating for automation while suggesting that NNS remove entities to facilitate this automation for everyone. What a fascinating mind !