Request for Comment: Public & Private NNS Neurons

Keeping a log of all actions is an interesting idea, but I think it could maybe be discussed as an independent feature as I think this could be done with the current or the new proposed design and with all state being public or some of it being private (e.g., a canister can keep a log that can only be read in certain ways or circumstances).
Would you agree?

1 Like

Thanks for the feedback and the question!
The part about the followers is not quite right:
A public neuron would allow you to see (almost) all the properties of this neuron. Each neuron has a field that specifies who this neuron follows on which topics. So the neuron includes the followees but not the followers.
To make an example, letā€™s assume:

  • Bobā€™s neuron follows Charliesā€™s neuron
  • Bobā€™s neuron is public
  • Aliceā€™s neuron follows Bobā€™s neuron

When looking at Bobā€™s public neuron, we can see that Bob follows Charlieā€™s neuron. This is because Bobā€™s neuron has a field defining who Bob follows. This allows Bob to follow someone else if he wants. So this is a ā€œproperty of Bobā€™s neuronā€ (you can think ā€œthis is Bobā€™s choiceā€).
In contrast, everyone can follow Bobā€™s neuron. For example, Bob can share his neuron ID on X and Alice could just have found it there and decided that she trusts Bob on certain decisions. This is not tracked in Bobā€™s neuron and Bob might not know about this. Rather, this is stored in Aliceā€™s neuron. Therefore if we look at Bobā€™s neuron, we do not see that Alice (or anyone else) follows Bob.
Does this help? Please let us know if you have additional questions!

1 Like

Thanks for the detailed answer, let me try to answer some questions / remarks in it!

I didnā€™t think the original proposal 48491 made by @Kyle_Langham for neuron indexing was really about exposing information that is currently private.

Yes I think we agree with this. But de facto a neuron can ā€œhideā€ some information atm by making sure the neuron ID is not known. This would not be possible anymore after an index. Therefore one could say that the index would actually ā€œbreak some privacyā€ that is there today and see the introduction of private neurons as a way to have the choice that neurons have today but in a more explicit way.

If this change is implemented, will the neuron owner have the ability to make it reversible?

Yes, this is the idea!

It would also be nice if the public information about Followee configuration could be exposed for each topic individually.

IIRC the following is already a map of topic to followees. So I think it would indeed be possible for frontends / dashboard to parse this and display it nicely per topic.

1 Like

Just want to clarify a few points here to avoid misunderstandings:

it allows these ā€œnamedā€ neurons and champions of ā€œdecentralizationā€ to escape accountability

The named neurons (or ā€œknown neuronsā€) would all be public. So more information about them would be known and thus I think they could be held accountable even more than today.

1 Like

Thanks for this idea!
I personally prefer not adding different rewards for private neurons for the following reasons:

  • There could be neurons that always wanted to remain private when they staked. They could now do so by keeping their neuron ID confidential. If we introduce a neuron index, they might want to become private. They would now get less rewards for a similar behavior than now and could perceive this as unfair.
  • Making voting rewards dependent on one more factor comes with a cost. First, this makes the code that computes the voting rewards more complex (and complexity usually also comes with higher risks of bugs) and, more importantly, this makes it even harder for new users to understand the NNS and what rewards they can expect. This can be justified in some case, but in my opinion there are other cases where this is more justified (for example in the context of periodic confirmation and voting activity).
  • We could consider other ways to incentivise neurons to be public. For example, above someone mentioned that also neurons that are not ā€œknown neuronsā€ could have a name or description. Such a feature could be introduced but for public neurons only - this would maybe motivate more users to move to public.
2 Likes

I would like to add that many of us were eagerly awaiting Dfinity to enhance transparency, as the current system lacks it.

The Neuron Index would solve this issue. Personally, I always expected that it would eventually be added, understanding that there were more pressing priorities initially. Despite the potential minor use cases for private neurons, I believe the cost is too high to cater to a small minority, as it would compromise the expected transparency of the DAO.

No transparency or partial transparency is, in my opinion, the same; itā€™s either no transparency or full transparency. When it comes to governance, we know what the majority expect, so I will definitely vote NO for such a proposal.

Can we get a clear statement on whether Dfinity plans to vote on the proposal if it appears on the NNS?

Completely agreed, any obfuscation whether optional or not does nothing but undermine the core principles of blockchain like transparency and trustlessness. Canā€™t say Iā€™m surprised that DFINITY wants to implement another shady feature like this.

While the proposal claims to increase transparency, introducing private neurons could create loopholes for hidden agendas and obscure governance activities, contradicting the primary goal of full transparency.

If you allow private neurons you undermine the integrity and trust in the NNS governance system.

Transparency first, trust follows

Transparency is a Big factor. On this early years of development.
Keeping it ā€œopenā€ creates Trust & accountability.
Being private at least right now, may lead to manipulation on voting.

I understand where DFINITY comes from on this topic and understand that there is an emergent property of how the IC runs that doesnā€™t require complete history to be verifiable since genesis, but using it at this point creates confusion and misalignment with the general crypto-ecosystem in general. People donā€™t get it and they DONā€™T trust it. Never mind that they should or that they can verify the codeā€¦they want to see, touch, feel the log and verify there has been no funny business.

If a feature such as zkVotes and MACI have the property of hiding data, that is generally acceptable as long as the inputs that produce the validation are available.

Further, since nodes can/could keep track of incoming messages and signatures the ā€˜secretnessā€™ is only as good as the nodes are honest. Basically, as practice, if it could become public, just make it public.

Iā€™m not against secret ballots as I think things like MACI attached to zkHumanity are just about the only hope for truly safe and well-formed coin votingā€¦I just donā€™t like to see ā€˜sortaā€™ secret ballots and Iā€™m weary of having to try to re-explain that the IC doesnā€™t need to record and archive this info on-chain because of alien math. Just put the data on the chain and let the maxis figure out the emergent tech once bought in.

3 Likes

Thanks for taking the time to reply!

To narrow it down, I think we agree that transparency is important but we probably disagree on the statement

itā€™s either no transparency or full transparency

In my view it should be enough transparency to make the system fully verifiable - which does not necessarily mean that everything is open.

Indeed, I think there are just different opinions on this part and it is probably most constructive to bring this to a motion proposal.
I therefore plan to draft a motion proposal next week. With it, I can also try to get a better understanding of how DFINITY plans to vote.

I hope this makes sense and I wish you soon a nice weekend!

1 Like

Thanks for the reply.

Can you elaborate why you think something like MACI is better?
Do I understand correctly that you think it is more acceptable because it is more what people are used to and because it provides stronger privacy?

I just donā€™t like to see ā€˜sortaā€™ secret ballots

I think this could be strengthened in the future and already distinguishing private and public neurons would also help as a step if we ever want to go there (probably even if we add more elaborate encryption schemes or so, we always want to be ballots of e.g, the know neurons to be open)

1 Like

What does ā€œenough transparencyā€ actually mean?
Basically, we are setting up the system to obfuscate transparency and calling it ā€œtransparent enough.ā€ As I said, there is no middle ground here.

The sad thing is that, based on this topic, the minority pointed out case where they could see it as useful, while the majority is against it.

I also believe itā€™s premature to make a formal proposal before gathering more feedback. The official Dfinity account on X should post about it, similar to how it handled the tokenomics change. Governance is one of the most crucial aspects for ICP, and itā€™s too important an issue to rush, especially during the summer when many people are on vacation and not actively participating.

2 Likes

MACI becomes a better solution when things like coercion and bribery enter into the coin-voting realm. It allows you to submit many votes but only one of them is a real vote and there is no way for a briber or coercive individual to figure out which is whichā€¦even the user canā€™t be coerced into showing which vote is real.

Initial ideation:

State of the Art:

These things are likely not that important until they are.. And until we get decentralized away from DFINITY having a majority of liquid staking VP is likely the first hurdle to getting to a point where that could happen. So it may not be a major concern, but I think it is worth making sure that the tech isnā€™t moving away from a position where it could be useful.

How do you address concerns about accountability if neuron holders voting decisions are entirely private?

What specific instances of pressure or manipulation have been reported that necessitate this change, and how will privacy directly mitigate these issues?

Can you provide concrete evidence or data showing that privacy will lead to more genuine participation and reduced coercion?

What are the specific technical and logistical challenges anticipated in implementing zkVotes and MACI, and how will they be addressed?

1 Like

I fully disagree with that. I believe ICP governance and anything related to transactions should be fully transparent and public like every other blockchain. The only exception to keeping things private are data inside applications like social media and other types of applications. But governance should be fully transparent and adhere to the crypto ethos.

2 Likes

Thanks for your response @lara. Could you clarify what you mean by ā€˜remain privateā€™. My understanding is that right now I could use the dashboard (or the API that feeds it) to enumerate all neurons in existence, and track their stake and voting history. Is this not correct? Couldnā€™t I currently build my own neuron index if I wanted, by pulling details from the API?

I get the impression that different aspects of ā€˜privacyā€™ are being conflated in this thread. One aspect is:

  • Visibility or inferability of the ownership of neurons. an entirely separate aspect is
  • Visibility of what each neuron is doing

My understanding is that youā€™re proposing allowing individuals to take visibility of what their neurons are doing away from the community. Is that not correct?

I donā€™t see how visibility of ownership really comes into this. For example, you can create separate internet identities if desired, to conceal your own identity and/or separate certain activities from another II that you use.

1 Like

Thanks for the questions, here some initial answer from me:

How do you address concerns about accountability if neuron holders voting decisions are entirely private?

Here I think we have to define what we mean by accountability. Since it is not clear which person is behind a neuron, I guess one can argue that full accountability according to some definitions would be hard in any case.

What specific instances of pressure or manipulation have been reported that necessitate this change, and how will privacy directly mitigate these issues?

I am personally not aware that concrete cases have been reported, but I know that different users expressed the wish to not reveal their ballots.
IMH one main motivation for this in any democracy is that small players can express their opinion even though they might be worried to contradict the ā€œbigger playersā€ or more influential community members.
Personally, in the NNS but also in real world voting, even though I havenā€™t felt any pressure from anywhere, I prefer that I can take decision freely without even having to think about how my vote could be perceived by others and what consequences that might have for my reputation etc.

Can you provide concrete evidence or data showing that privacy will lead to more genuine participation and reduced coercion?

I think no one can do this for the concrete case of the NNS, because to so we first would need to measure these things (which might not be very easy) and then also try out the both options to compare them.

What are the specific technical and logistical challenges anticipated in implementing zkVotes and MACI, and how will they be addressed?

I am not sure if you have something concrete in mind with ā€œlogisticalā€ challenge? But generally, I donā€™t think we have fully researched these options. If we decide to explore more cryptographic voting protocols, there are also plenty of other options out there. So if we go this way, I think we should first compare the protocols that have already been mentioned here with other options.

1 Like

Thanks for the clarifying question!

My understanding is that right now I could use the dashboard (or the API that feeds it) to enumerate all neurons in existence, and track their stake and voting history. Is this not correct?

This is not correct. Whenever a new neuron is created, it gets a new random neuron ID. This is not known to anyone except for the user that created the neuron.
This is also the reason why no one, including the dashboard, can currently build a neuron index: we donā€™t know all the neuron IDs that exist - only NNS governance does.

The dashboard only includes the neurons whose IDs became public in one or the other way. For example, if a user enters their neuron ID on the dashboard to look at it, the dashboard will afterward remember the ID and this neuron can later be found by other, too.
So if you would like to keep your ballots, or any other aspects, of your neuron private, you could be very careful to never share your neuron ID. As mentioned above, I think this is not ideal as this might not be known by everyone and can indeed be very confusing (both for those who would like to have this option but are not aware that they can do this but also for those who accidentally enter their neuron ID on the dashboard or elsewhere and are not aware of the consequences).

This is also why the neuron index would be a big win for transparency: it would introduce an index on the governance that explicitly lists all neuron IDs - also allowing the dashboard and other integrations to know all neurons IDs.

I get the impression that different aspects of ā€˜privacyā€™ are being conflated in this thread. My understanding is that youā€™re proposing allowing individuals to take visibility of what their neurons are doing away from the community. Is that not correct?

Right, this is not about the ownership in the sense of which real-life person owns a neuron but rather about what a neuron is doing - for which neuron it might be known that it belongs to a certain user on the forum / X / real life person or it might not be known.
As argued above, this would also add visibility - for example revealing all the neurons and their stake, which is not the case now.
I hope the first part of may question clarifies to what extent it actually makes more information accessible?

2 Likes

Thanks @lara, this information is very helpful. I wasnā€™t aware of this. Iā€™ll run some experiments to see if I can witness this behaviour in action :slight_smile: (Iā€™ll also plan to check the code at some point)

Iā€™m still of the opinion that it would be good to incentivise users to make their ballots public, but Iā€™m not strongly opinionated about it.

Just for arguments sake, lets say all but a few neurons end up making their ballots private after this change is made. Would DFINITY consider this to be a fine outcome?

1 Like