Request for Comment: Public & Private NNS Neurons

TL;DR: DFINITY proposes to let neurons choose whether they are public or private. This would control which aspects of the neuron are visible to the rest of the world.

Background

Earlier, a motion proposal was passed to create a neuron index in the NNS (basically, a list of all neuron IDs). This would add a great deal of transparency to the NNS.

Motivation

On the other hand, for neurons that are more privacy sensitive, the additional transparency created by a neuron index might be unwelcome. Therefore, this proposal would let those neurons maintain their privacy if and when a neuron index feature is added to the NNS. Furthermore, in the meantime, they would be able to increase their privacy.

DFINITY proposes that neurons be able to decide whether they are public or private. Additional benefits of this proposal include the following:

  • Neurons who want to keep their voting private would be able to make their ballots not visible to the rest of the world (even if their ID is or becomes known).
  • On the other hand, those neurons that want to invite the world’s scrutiny (such as those who advertise themselves for following) would gain the ability to expose a great deal of additional information about themselves.

In either case, the neuron would be in control of their own visibility; thus, addressing the competing concerns of both transparency vs. privacy.

Overview

The choice of public or private would control which fields in a neuron would be visible to the rest of the world.

Neurons would be private by default. That is, if a neuron takes no action, it would be considered private.

Known neurons would always be public.

Private Neurons

Currently, a subset of fields of all neurons are readable by the rest of the world (as long as the neuron’s ID is or becomes known). Whereas, only the following fields of private neurons would be visible:

  • id
  • stake & voting power (not maturity, though staked maturity can be inferred)
  • voting power bonus:
    • dissolve delay
    • age (also creation time)

This means that the following fields would not be visible for private neurons:

  • ballots
  • Neurons’ Fund membership

Public Neurons

For public neurons, with one exception, all information would be visible to all. The exception is ICP ledger account ID. The reason for this exception is that it seems particularly sensitive, since it can be used for in-depth ledger tracing. The remaining information, which would be visible, is as follows:

  • id
  • controller
  • hot_keys
  • kyc_verified
  • not_for_profit
  • known_neuron_data
  • cached_neuron_stake_e8s
  • neuron_fees_e8s
  • maturity_e8s_equivalent
  • staked_maturity_e8s_equivalent
  • auto_stake_maturity
  • when_dissolved_timestamp_seconds
  • dissolve_delay_seconds
  • aging_since_timestamp_seconds
  • created_timestamp_aeconds
  • followees
  • recent_ballots
  • joined_community_fund_timestamp_seconds
  • transfer

Next Steps

DFINITY is really excited to start working towards developing a neuron index for the NNS. Feedback on this proposal would be greatly appreciated. Once the community has reached consensus, DFINITY will begin implementation.

13 Likes

Yes please make it happen. Whenever you can add options for users it should be the default choice.

3 Likes

No comment about that.

But since you are about to make a proposal to implement it, could you also suggest to let neurons ( known or not ) the possibility to have and change their description over time ?

Something like a edit button and a markdown format would be nice. With max 2000 characters.

Would be beautiful to see a bit of customisation there.

2 Likes

Privacy is a huge plus, but this would break functionality in dapps like NNSCat (https://iz6s6-kqaaa-aaaae-qaakq-cai.ic0.app/) which lets you enter your neuron id and see whether you’ve voted on proposals, without having to keep logging in (or set hotkeys). It does this by checking the ballots for the neuron id you entered.

1 Like

In many ways, ICP is doing more and more things that against blockchain.

I’d like to see the governance canisters have their own auditable, state-reproducing ICRC-3 log. I think it is important for the long-term trust and “blockchainyness” of the system. We know we can ditch history because of the alien math, but no one else does and no one else trusts it. If ballots want to be secret, then we likely need to implement something like MACI. (Clr.fund)

1 Like

This is a big step toward the right direction. Please make it happen. There is definitely a strong need to separate/distinguish public neurons from private neurons.

Just to confirm, under this proposal, a public neuron will be able to see which other neurons are following it and how much voting power is pledged on it, correct?

Say, my own public neuron has voting power of 10; 3 other neurons are following mine, with additional total voting power of 5. So I should be able to see:

  1. total number of my followers = 3;
  2. the neuron ID for each of these 3 followers;
  3. the voting power for each of these 3 followers;
  4. the total voting power that is associated with my neuron = 15.

Is that the right understanding? Thanks!

3 Likes

Transparency, openness, and trustworthiness are essential elements of blockchain. ICP is going against the trend.

2 Likes

Are you for or against this? I think giving users choices is the thing to do.

2 Likes

I’m not sure I really understand why we would need public and private neurons. As previous comments have highlighted this appears to go against the fundamental concepts of transparency, openness and trust that are engrained within blockchain. I can’t think of a good reason why we shouldn’t be able to see which way a neuron has voted, it would seem to go against open governance.

I’d much rather see a proposal that allows for better control of staked neurons, such as moving from one II to another. That would be much more useful and not going against blockchain fundamentals.

2 Likes

I am against private neurons. The NNS governance should be fully transparent to ensure accountability and trust.

On one hand, we are finally getting a neuron index to enhance transparency significantly. On the other hand, there are suggestions to reduce some of that transparency.

Can someone explain the benefits for governance if neurons could hide their votes?I can only think of it being used for nefarious purposes.

5 Likes

I support it.
This is a good proposal: it supports multiple scenarios from a mechanism perspective, increases flexibility, and gives the choice to developers/users themselves.

1 Like

There’s major downsides here for transparency and governance auditing. This change doesn’t matter for the overwhelming majority of users, and the only real upsides I can think of are in a few edge cases. Maybe someone is being blackmailed to vote a certain way? But then the blackmailer would just demand proof of vote another way, or that you make your neuron non-private. Maybe you’re a public figure with a known neuron ID and want to vote a certain way that is unpopular and don’t want to risk reputational damage? Okay, but that would be a very rare situation and doesn’t justify diminishing the entire network’s ability to audit votes. For what other situations would this be of any real benefit?

4 Likes

I definitely totally against anything that against blockchain.

Trustworthiness is almost the only function of blockchain.
However, ICP has been going against the trend and gradually reducing the trustworthiness that ICP lacks.

@cryptodriver I am not understanding… how not knowing the way a Neruron, that is not a Known Neuron votes os so anti Blockchain.
Could you explain…

There is no privacy on a blockchain. Transparency is paramount. Don’t screw this up.

2 Likes

Zk provides plenty of privacy.

2 Likes

I think I’m somewhat in favor; this could allow DFINITY employees to vote against the official DFINITY vote (increasing decentralisation). I don’t think it matters much for the rest of us.

1 Like

To be honest, I didn’t think the original proposal 48491 made by @Kyle_Langham for neuron indexing was really about exposing information that is currently private. I thought it was just about releasing all neuron IDs so they can all be accounted for using the existing public information about all neurons. I think this is sufficient without having to consider the public/private option.

If this change is implemented, will the neuron owner have the ability to make it reversible? There are people who have been voting members for Synapse and CodeGov in the past who created new neurons and made their neuron IDs public (e.g. gave permission to publish their name and neuron ID on the synapse.vote or codegov.org websites). They did this for the purpose of voting transparently on specific proposal topics while they were active as voting members (aka Followees) for these known neurons. However, when they are no longer voting members, they no longer have a need or desire to stay in the public limelight. It would be nice if they could toggle off the public configuration and not have to worry about whether people in the ecosystem are following them and don’t have to see their voting history displayed on the dashbaord or IDGeek.

Another use case for public / private configurations would be to enable known neurons to remove themselves from the known neuron registry. I suspect there are many known neurons today that would select this option if it were available including The Fool’s Court (@LightningLad91 may be able to confirm).

If you provide this optionality for the known neuron, then it would be good to indicate that the neuron ID is no longer public in the NNS dApp. That is probably something that people would want to know if they are following a neuron that was once a public known neuron, but their status has changed.

I believe the public information proposed would be fine for both CodeGov and Synapse. If fact, this would make it easier to expose our Followees than our current methodology, which is Neuron Management proposals and website updates.

It would also be nice if the public information about Followee configuration could be exposed for each topic individually. That way it would be easy for people to see which known neurons claim to specialize in specific proposal topics instead of having them show up in the list for all proposal topics. For example, most known neurons are only known to specialize in the Governance and the SNS&Neurons fund, but not any of the technical topics. This leads to confusion about which known neurons are really suitable choices for individual topics.

4 Likes

Thanks for tagging me @wpb. I agree it would be nice to remove The Fools’ Court from the known neuron listing.

@daniel-wong I have to say I’m not a huge fan of the public/private neuron concept. In general, it seems like we should want as much transparency as possible without hurting anyone. Given the lack of personal information tied to a neuron I don’t see how public ballots hurt anyone.

I also found these two lines very interesting when considered together:

If this proposal was adopted and implemented would it mean we’d no longer be able to account for the unstaked maturity controlled by private neurons?

3 Likes