To refine and further decentralize the governance of the Internet Computer Protocol (ICP), and in the context of the regular confirmation follow feature of the Network Nervous System (NNS), we share the planned API changes and release plans for the NNS governance container.
This is particularly important for users with neurons configured to follow other neurons. To help them take the necessary actions, the frontend and products integrated with governance will need to implement the required changes on their end. The DFINITY Foundation plans to propose the necessary changes to the NNS dapp in early 2025.
Motivation and background
The main idea of regular confirmation following is that to receive rewards, governance participants must maintain an active voter status and regularly confirm their following settings. Neurons that set a follow once and never interact with the NNS again will receive lower adjusted voting rewards. Neurons that default to following upon creation and have never actively decided whom to follow must do so to continue receiving voting rewards.
The idea of regular confirmation was proposed by the community in a motion proposal, and this design was discussed with the community on the forum, leading to another motion proposal that refined the original proposal with a more specific design.
Before sharing the API changes and release plans, let's summarize the high-level design. For more detailed information, please refer to the above forum posts and proposals.
High-level design
To have voting power and receive voting rewards, neurons must regularly perform one of the following actions: directly vote, set follow, or confirm their current following settings.
"Dormant" neurons, which have not taken any of the above actions for several months, should not automatically participate in voting and receive voting rewards. This is achieved by adjusting their voting power and resetting their followers: after six months of inactivity, the voting power of the neuron will linearly decrease over a month until it reaches zero at the end of the seventh month. After this seven-month period, the neuron's follower settings will be completely reset to zero.
New neuron attributes
Governance will remember the timestamp of the last time each neuron performed any relevant action, which is stored in a new neuron attribute called voting_power_refreshed_timestamp_seconds.
Voting power adjustment
The adjustment of voting power for dormant neurons is implemented as follows:
For each proposal and neuron, voting will consider the adjusted voting power, meaning governance will record the reduced voting power of neurons that have not taken any of the above actions in the past 6 months.
For each proposal, governance distinguishes between the following two types of voting power:
Total (potential) voting power, i.e., the total amount of voting power of all neurons, without adjustment;
Total adjusted voting power, i.e., the total amount of adjusted voting power of all neurons capable of participating in decision-making.
For each proposal, governance will consider the total adjusted voting power deciding the proposal. Governance will consider the total (potential) voting power when calculating rewards, similar to the current design, i.e., if all neurons participate, the rewards will consider voting power.
Adjusting voting power in this way will have the following consequences: dormant neurons will not be included in the decision-making process, meaning if most regularly active voters quickly agree, proposals can still be quickly decided. From the neuron's perspective, if a neuron has been dormant for more than 7 months, the voting power recorded for that neuron in any public proposal will be zero.
What this means for ICP stakers
If you are an active governance participant and vote manually on NNS proposals, this change will not affect you. If you have set neurons to follow other voting neurons, you must regularly confirm or change your following configuration.
To avoid losing any voting power and rewards, you must perform at least once every six months. To ensure your followers vote according to your preferences and that they do not miss proposals, you can check the known neuron list on vpGeek.
What this means for developers
If you have a product that allows users to participate in NNS governance, you may need to update it to warn users before their neurons start losing voting rewards due to inactivity. You may also consider providing users with a simple interface to confirm or edit their following.
Governance API
You can find detailed API changes regarding governance changes in this PR draft:
github.com/dfinity/ic/pull/2568/files
Here is a summary of the main changes:
Neuron attributes
Each neuron has a new field voting_power_refreshed_timestamp_seconds, which records the last time the neuron took any actions related to voting, setting follow, or confirming follow.
If the neuron performs any of these actions, the timestamp will be set to the current time now.
This field is initialized with a timestamp representing midnight UTC on September 1, 2024.
New neurons will set this field to the same value as created_timestamp_seconds.
For each neuron, there are two new fields representing the neuron's voting power.
A. deciding_voting_power represents the voting power exercised by the neuron on proposals, which is adjusted if the neuron has not directly voted, set follow, or confirmed follow for more than 6 months.
B. potential_voting_power represents the voting power a neuron has when regularly confirming following (or voting or setting follow).
Unlike the current field voting_power, for neurons that are not qualified to vote (dissolution delay of less than 6 months), deciding_voting_power and potential_voting_power will both display as zero.
The existing field voting_power will be deprecated. For backward compatibility, it will now be retained and will now display zero for neurons that do not qualify.
Neuron activity
There is a new governance neuron command RefreshVotingPower to confirm the following on the neuron, which is referred to as "refresh voting power" because this endpoint will refresh the new neuron field voting_power_refreshed_timestamp_seconds to now.
Note: Please note that even without this new action (and before implementation), the same effect can be achieved by reading the neuron's followers and setting the neuron's followers to the same choice or voting directly.
Proposal attributes
Each proposal has a new field total_potential_voting_power, representing the total potential voting power of all eligible neurons, which will serve as the basis for reward distribution as outlined in the design.
Neuron parameters
There are two new neuron system parameters: start_reducing_voting_power_after_seconds defines the time period for adjusting neuron voting power after the neuron timer refresh, and clear_following_after_seconds determines the time period from the start of voting power adjustment until the neuron voting power reaches zero and its followers are reset.
start_reducing_voting_power_after_seconds will be initialized to 0.5 years and clear_following_after_seconds to 1/12 years (as defined in governance code for one month).
Release plan
This is our current target release plan, depending on whether the NNS adopts the relevant proposals. Submitted proposals may undergo slight modifications, and we will communicate more detailed dates to the community on the forum.
This week (as of November 18, 2024)
Each neuron has a new timestamp voting_power_refreshed_timestamp_seconds, set to September 1, 2024.
New neuron system parameters are available.
In the coming weeks
When a neuron directly votes, sets follow, or confirms following, it refreshes the neuron's voting_power_refreshed_timestamp_seconds, or confirm => user: The user can already take any of these actions to confirm their neuron, and when they do, they have 6 months until the neuron adjusts voting power.
New API (as above), => integrators: Those who want to integrate this feature or build a frontend for it have all the APIs needed to do so.
Approaching the end of the year
The effect of implementing this feature, i.e., behind the feature flag, is that some neurons will adjust the voting power of proposals, meaning the code is already in place but has not yet produced any effect. This is to allow all integrators time to implement this feature on their end.
Early 2025
Open the feature flag to activate the feature, => If users using the NNS dapp have less than 1 month to take action before their one neuron adjusts voting power, they will see a warning.
March 2025
=> Neurons that have not taken any action so far will begin to adjust their voting power.
April 2025
=> Neurons that have not taken any action up to now will have their followers removed.
Progress update
We are actively working on the above changes, and we have also shared the API changes and release plans on the forum, planning to share updates in the same forum thread. If you want to stay updated, we invite you to follow!
We appreciate the community for proposing this feature and contributing many excellent suggestions that facilitated this design. We look forward to more enthusiastic discussions and further improvement of the NNS together!
IC content you care about
Technical progress | Project information | Global events
Follow the IC Binance channel
Stay updated