Motion Request for Neuron Indexing

Background
A newly created neuron is given a random neuron id that can be up to 17-digits long (up to 10 quadrillion). Currently, there is no list of neuron ids that have been created. The result of this is that anyone who wants to get a list of all neuron ids must perform a query on all possible numbers up to 10 quadrillion to see if the neuron id exists. This process could take years or decades to complete.

Proposed Change
I propose to submit a motion goverance proposal to the NNS to request that dfinity create and maintain a list of all neuron ids in existence (also known as indexing neuron ids). This list should be accessible through the candid interface for the governance canister.

Value Prosposition
Indexing of neuron ids will allow any person with sufficient programming skills to return a list of all existing neuron ids, which will facilitate the ability to query the governance canister for all available data (creation date, ICP staked, Age Date, Dissolve Delay, etc.) for all neurons in existence. This will allow for complete analysis of the NNS, including understanding breakdowns between dissolve delays, locked/dissolving, etc. Without this change, a complete understanding of all neuron status of the NNS is not possible.

This solution will also allow ic.rocks and ICA’s dashboard to more accurately display NNS-related data (resolving the known/unknown neuron issue).

Argument Against
My understanding is this change is not a heavy lift, although it would divert dfinity resources from other projects, most likely other projects associated with the NNS. This change will also require the creation of paging within the governance canister.

Next Steps
I plan to solicit feedback via this forum post for a minimum of 7 days prior to deciding on whether to open the motion proposal within the NNS.

22 Likes

Further arguments against;

  • Privacy.
  • Front running.
3 Likes

Could you elaborate on how privacy and front running would be affected? I don’t want to make any assumptions. Thanks!

5 Likes

I’m strongly in favor of this. I view it as a basic level of transparency that should be available on any blockchain. Not providing it makes the IC stand out in a negative way for newcomers.

The privacy concern I don’t understand. Could any one identifiable person’s behavior on the blockchain be revealed? I don’t see it.

Regarding front running: the limited information already available to the public gives some opportunity to front run, it’s just limited and it’s not clear to me that every single individual lacks the kind of insight indexing would contribute. More complete info to everyone on equal terms gives anyone a fair chance in the short term. Long term holders wouldn’t be affected, as far as I can see.

6 Likes

I don’t want to get too far off topic, but it seems to me like canister ownership should follow a similar pattern. There should be a ledger that can be consulted and ‘replayed’. This is relevant to neurons once we have ecdsa functionality and people can start trading neurons by having canisters hold them and trading the canisters.

It is a good proposal, but it is not a priority right now.
Also, when the merge neuron(s) function becomes available, I think there will be far fewer IDs.

1 Like

I think this should definitely be prioritized.

Increased transparency on neuron voting power distribution brings additional trust to the voting system and new investors who want to understand the economics of their investment - just look at the argument and lack of trust in some of the commenters in the Compounding Maturity proposal arguments right now.

7 Likes

That would be the antithesis to a modern, capability-based access and security model (which I hope the IC will eventually be upgraded to) and hence a bad idea on the long run (and creating the wrong expectations) for a general-purpose system, underlying blockchain notwithstanding.

7 Likes

AFAIK you can now get the neurons ids but it’s just a difficult task to do, and that leads to asymmetric information between people who know how to get this information and others who don’t.
It should be either impossible to acquire this information for everyone or available to all.

2 Likes

Could you elaborate on the problem? I don’t follow.

Thanks for your reply Berto.

The merge maturity function unfortunately won’t resolve this issue. It might make it marginally better, but we still won’t be able to query all neurons.

1 Like

I think coin_master did a good job explaining it. As it is designed, it is very difficult to know that a neuron exists and therefore it is very difficult to have full transparency of the number of ICP on the NNS and how long it is staked for. Without that transparency, investors can’t make fully informed decisions and the NNS participants can not make fully informed tokenomic decisions. The difficulty of knowing all neurons is so difficult that I do not think anyone has accomplished it (Norton Wang for ic.rocks has gotten the closest, but still lacks about 20% of voting power visibility).

7 Likes

This can only lead to more transparency and trust within the community, therefore I’m in support.

3 Likes

I’m all for it, more transparency is needed

4 Likes

This proposal enables transparency for measuring the health of the IC ecosystem while still maintaining appropriate level of anonymity of end users. I am in support.

4 Likes

@Comfortable_Reply_56, in a capability-based (or object capability) system, accessing some entity, like a canister, is only possible if you are explicitly given a reference to it. Under that approach, access is controlled by limiting where references are passed instead of trying to check “callers” after the fact. This is a less brittle and more composable way to achieve security and privacy, among other things (see Wikipedia). Of course, the essential prerequisite is that references cannot be forged or “discovered” unless explicitly published.

For example, not every auxiliary canister spawned by a dapp is meant to be accessible to the general public. Instead of necessitating defensive programming to work around leaking them globally and protect their invariants, it should be possible to keep canisters private. It’s just the well-known concept of encapsulation.

Transparency is a relevant value, I agree, but so are security, privacy, encapsulation, and other such properties. The IC is much more general-purpose than a run-of-the-mill blockchain 2.0 and its vision requires a less naive approach to system design. Privacy is an important part of that vision (with the plan to employ SEV in the future). When there are competing properties, you want to think very carefully which ones you want to throw out the window. Even if they do not matter right now, you might never get them back.

Generally speaking, public visibility and accessibility simply is the wrong default in a complex system with no trust.

12 Likes

Thanks for this explanation - inclined to agree that in general, public visibility and accessibility is the wrong default.

That said, neurons are a very special case, I’d contend, as they’re responsible for the governance of the IC itself. And just as we need to ensure the technical security of the IC, we also need to ensure the “governance security” of the IC, which I think requires neuron transparency.

Perhaps foremost, we need to ensure that the IC is safe from the risk of governance capture. This requires understanding not only where ICP is concentrated, but also where liquid voting power is concentrated. Since NNS votes can pass with as little as 3% absolute support, and even very small neurons can garner a lot of liquid voting power through followers, I think we need to be vigilant to make sure governance is secure on the IC.

Indexing neurons seems like a baseline requirement to monitor key governance metrics relating to decentralization and safety against the risk of governance capture. Unless there’s a capability-based way of monitoring these metrics, I think it’s worth making an exception to the capability-based model when it comes to neurons.

7 Likes

This forum topic has been open for a week and, per the original post, I plan to move it forward as a motion proposal. I appreciate all the feedback and discussion! Below is the intended language of the motion proposal.

----TITLE-------
Motion Proposal for NNS Neuron ID Indexing

---- SUMMARY ---------

Objective

This motion proposal is to request Dfinity to prioritize creating an index or list of all neuron ID values, accessible through the Candid Interface.

Background

A newly created neuron is given a random neuron id that can be up to 17-digits long (up to 10 quadrillion). Currently, there is no list of neuron IDs that have been created. The result of this is that it is impractical for any person or entity to know of all neurons created on the NNS, significantly hampering transparency into the NNS.

Why this is important

Transparency into the NNS is vital for understanding governance and investor behavior. It is important to know: how many ICP are staked in the NNS and what the staking behavior is in order for governance participants and investors to make informed decisions. A failure to provide transparency could lead to mistrust of the NNS and dissuade potential investments into the Internet Computer.

Community conversation

This topic was discussed in the forum at: Motion Request for Neuron Indexing

The conversation focused on the perceived benefits of:

  • Increased transparency into the NNS, including full awareness of how many ICP are staked, dissolve delay and age bonuses, recent voting behavior of all neurons.
  • Increased trust in the NNS through transparency of voting power.
  • Reduction in asymmetric information of the NNS.

The perceived risks of this change, per the forum dissccion are:

  • Reduction in privacy for neuron holders
  • Does not follow capability-based access

Discussion Lead

Kyle Langham; Twitter: @kylelangham, Forum: Kyle_Langham

----END OF SUMMARY ----

7 Likes

This proposal is live…48491. Please go vote.

2 Likes

I’m pretty torn on this one. When @rossberg has an opinion on this stuff it is usually really well thought through. I’ve disagreed on a couple of things like call_raw, but here I understand what he is getting at here. It is totally legitimate to have a neuron and not actively vote. Actively voting pretty much reveals your neuron. Does passive voting?

Would this be a better thing to incentivize? Maybe a higher reward for self-revealing your neuron?

3 Likes