NNS Dapp Features — Periodic Confirmation, $ Values in Neuron Staking (134771)

Happy Friday ICPeople! Today, a very exciting proposal just went live (134771), so let’s get to it. As always, please consider voting. :ballot_box:

Upgrade frontend NNS Dapp canister to commit 47eccace32d19baaf56d51304100f08a797e82a4

Wasm sha256 hash: 4a2fc0f21c94a8beb7d6232881147090c3e2c52a33b10bfd8f8eacf060ecc91e (https://github.com/dfinity/nns-dapp/actions/runs/12668687720)

TLDR;

  • Periodic confirmation warnings in the NNS dapp
  • New section to confirm neuron following
  • Reporting to allow for TX date ranges
  • $ Values in Neuron Staking
  • Fixed QR code issue on Coinbase ICP TXs

Changes

Periodic confirmation

The main idea of periodic confirmation of following 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 or were created with default following and never interact with the NNS again get lower, adjusted voting rewards. To find more information about the feature and community discussions around it, please see this blog post, the forum discussion about its high level design, and the adopted motion proposal.

How this affects you

To keep voting power of your neurons and thus to keep getting voting rewards, you are required to take at least one of the following three actions once every 6 months for each of your neurons:

  1. Vote directly
  2. Set following
  3. Confirm the current following settings

In particular, according to how the feature initialized the neurons’ settings, all users must take one of the above actions before March 2025 to avoid missing voting rewards.

If this proposal is adopted and you have neurons that have not been active, you will see a warning to confirm following on them. In the example below, a user had voted with all their neurons on the 5th of August, 2024 and not taken any action since.

By clicking “Confirm Following”, you will be prompted to review your following, and confirm if you are still happy with your voting delegation. If you wish to change following on any of your neurons, you can click the neuron and edit following on the neuron details page.

You will also see a new field on the neuron details page for single neurons that shows the time remaining before your neuron becomes inactive. You can confirm following anytime, and as often as you wish. Please review your following before confirming to ensure you agree with your prior decisions. Note, that in order to follow on all topics, you need to set up following for the following three topics:

  • All Except Governance, and SNS & Neurons’ Fund
  • Governance
  • SNS & Neurons’ Fund

Otherwise, you need to vote manually on certain topics in order to receive all voting rewards. You can always choose to vote manually on all proposals.

Note that you can also vote manually with all of your neurons, or edit following. Both actions will reset the activity timer.

$ Values in Neuron Staking

Late last year, USD values were added for tokens. Now, they are coming to the neurons table. If adopted, the NNS dapp will show fiat values of the stake of your neurons using ICPSwap’s public exchange rate API.

Reporting improvements

The NNS dapp currently allows users to export a CSV snapshot of their ICP token balances, and a list of ICP transactions, including spawned neurons with minting transactions. If this proposal is adopted you will be able to pick one of three date ranges for these transactions.

Coinbase QR code

You can send ICP to a Coinbase account using either account ID shown, or by scanning a QR code using an NNS dapp feature that allows the scanning of recipient ICP addresses. The QR code shown by Coinbase includes a prefix, which resulted in an error in the NNS dapp.

If this proposal is adopted, ICP TXs sent to Coinbase should also work using the QR code.

Change Log

This is a repeat from before. Adding it for transparency, as this is the change log stated in the proposal description.

Added

  • Reporting: Full period filter, year-to-date, and last year
  • Show USD values of neuron stakes.
  • Periodic confirmation warnings in the NNS dapp for inactive neurons.
  • New section in neuron details to confirm following.

Changed

  • Allow dfinity: token prefix in QR code for ICP payment.

Removed

  • Remove hardcoding of “DFINITY Foundation” and “Internet Computer Association” in the displayed list of known neurons.

Wasm Verification

To build the wasm module yourself and verify its hash, run the following commands from the root of the nns-dapp repo:

git fetch  # to ensure you have the latest changes.
git checkout "47eccace32d19baaf56d51304100f08a797e82a4"
git merge-base --is-ancestor HEAD origin/main && echo "OK" || echo "Commit is not on main branch!"
./scripts/docker-build
sha256sum nns-dapp.wasm.gz

You may also want to verify the canister arguments. In the proposal they are
binary, which is not very readable. Docker provides both binary and text formats
and you can verify that the text format corresponds to the binary arg_hex
field in the proposal.

cat nns-dapp-arg-mainnet.did
didc encode "$(cat nns-dapp-arg-mainnet.did)" | xxd -r -p | sha256sum
9 Likes

Congrats, these look like very good UI/UX on a very sensitive experience.

Think you solved it pretty elegantly :+1: :clap:

6 Likes

Thank you for the update @chepreghy
The NNS gets better with every update and I appreciate the hard work of you and the Dfinity community. Awesome work!

2 Likes

Proposal #134771 — Zack | CodeGov

Vote: Adopted

Reason:
Builds fine and both hashes for wasm and arguments match.
All the commits LGTM and nothing stood out.
Periodic confirmation warnings and the addition to reporting are great.

About CodeGov (click to expand).

CodeGov has a team of developers who review and vote independently on the following proposal topics: IC-OS Version Election, Protocol Canister Management, Subnet Management, Node Admin, and Participant Management. The CodeGov NNS known neuron is configured to follow our reviewers on these topics and Synapse on most other topics. We strive to be a credible and reliable Followee option that votes on every proposal and every proposal topic in the NNS. We also support decentralization of SNS projects such as WaterNeuron and KongSwap with a known neuron and credible Followees.


Learn more about CodeGov and its mission at codegov.org.

2 Likes

DFINITY has voted to reject this proposal due to a bug found over the weekend. The bug prevents the NNS dapp to successfully confirm following for a subset of hotkeyed neurons.

We plan to resubmit the proposal with the fix included as soon as it is ready.

2 Likes

Please find the new proposal submitted here, which includes the fix for confirming following for hotkeyed neurons.

2 Likes

The current approach of implementing periodic followee confirmations may not be sustainable in the long term; it won’t age well. At a time when our primary focus should be on onboarding new users, introducing additional hurdles for both new and existing participants in network governance is neither prudent nor beneficial.

To illustrate this point, consider the model used by music streaming services. When a user subscribes to such a service, they do not receive ongoing notifications prompting them to confirm their subscription. Instead, their subscription remains active until they either choose to cancel it or are unable to continue due to payment issues. This model allows users to engage with the service without unnecessary interruptions, fostering a more seamless experience.

In light of this comparison, it is essential that our proposal shifts its emphasis from periodic follower confirmations to encouraging users to follow a broader range of neurons. This strategy aims to maximize rewards and enhance user engagement within the network. Users should have the autonomy to decide whom they wish to follow and when they wish to make changes to their following list.

By promoting notifications that encourage users to diversify their connections within the network, we can stimulate greater participation and interaction among users. This approach not only respects user discretion but also aligns with our goal of fostering a vibrant and engaged community.

In summary, rather than imposing periodic confirmations that may deter user engagement, we should focus on facilitating an environment where users feel empowered to explore diverse connections at their own pace. This will ultimately lead to increased participation in network governance and contribute positively to the overall ecosystem. Thank you!

Thank you for the detailed feedback! This feature comes from a community motion proposal adopted a while back, then a more detailed motion proposal was submitted and adopted after a community discussion on the implementation design.

We agree with the importance of onboarding new users, and it will be a big focus of DFINITY in 2025. The motion proposal describes it in more detail, but the TLDR of the reasoning behind this feature are the following:

  1. Governance participants need to do work in order to receive voting rewards, since maturity is not dividend, but rewards given out by the protocol for participating in governance (doing work). While it is not expected that participants vote manually on all proposals, hence the following mechanism, it is required that they at least vote once every 6 months or confirm their following.
  2. The NNS changes over time, which also means that neurons you started following years ago might not be the neurons you would follow today, so it is encouraged to review periodically which neurons you would like to follow today.

Note: following multiple neurons on the same topic may be unproductive in some cases. If you follow two neurons on one topic, where one votes to adopt, and the other abstains, your neuron will not be voting as neuron following requires a majority vote to adopt in order to be triggered.

Neuron following is quite complex as it is implemented now, and we do plan to submit proposals to simplify the user flow, and do a better job at explaining how the system works.

2 Likes