NNS improvements

I think ICP is hands down the best crypto in the industry, in my opinion the NNS is the only potential Achilles heel, cause it has the power to change anything about the protocol and running canisters, the events of the recent days proved the NNS still isn’t ready to handle the future of web 3.0.
Here are some changes/QoL improvements I’d like to see to make the system better.

  1. Following a neuron should’t be a one time thing, neuron holders might lose access or forget about it and the followed neuron would keep the additional voting power indefinitely, just like in real life we have elections every couple years, following a neuron should be confirmed every once in a while.

  2. After a proposal has expired there should be a 1/2 days wait time before it is confirmed so that we can make sure the followed neuron has voted as promised, e.g lets say there is some big decision to be made and the neuron I follow says they are going to vote option A, but then they vote B out of the blue, it would be cool if we had 1 day or so to remove our support to that neuron, yes I know by doing that they’d lose trust and voting power for future proposals, but depending on how bad their betrayal is, the damage would already be done.

  3. Any neuron should be able to be followed.

  4. Being based on a liquid democracy, where people who can afford to spend lots of money right now and stake for years will always hold more voting power than others, the risk of malicious actors taking over the IC is a possibility for me, Dominic talked about people parties recently to associate a real life identity to a neuron, in my opinion KYC’ed neurons should have quadratic voting style boost when voting proposals. This way individuals would be able to have a voice against possible bad decisions proposed by bad actors with lots of staked ICP that care more about imposing their will on the network than preserving their monetary investment.

Let me know what you think.

3 Likes

I believe #3 is already true today.

I like #1 and #4. If #2 can be implemented I would like that as well.

1 Like

Hi @Zane ,

I wanted to just add some technical context that may help the conversation to your post (which I found interesting).

You already can. The fact that you were not aware means the UI needs to be improved but both backend functionality (the NNS) and frontend functionality (the NNS frontend dapp) is already there. If you click on a neuron, there is an “edit followees” button. I know the NNS frontend dapp team has been receiving feedback that it is not intuitive.

2 Likes

Interesting… I thought only Dfinity’s neuron was followable and there was a proposal to enable CycleDAO’s neuron to become followable too.

1 Like

Oh thanks for the clarification, I’ll edit my post :smiley:

I actually made that proposal. :wink:

the proposal was to put their neuron “front and center” as easy drop-down option so people see it among the options. Lots of folks as you can imagine use the defaults. The defaults of the ICA and DFN foundation are not intended to be the only ones… so looking for the community to vote on more entities as trusted leaders.

2 Likes

You are welcome. I think the meta feedback of “well clearly it was not obvious” is equally worthwhile and fair.

Hi there,
I am the researcher working with the NNS team.

First of all, thank you for your feedback and ideas! Here some additional thoughts to your inputs:

  1. That is an interesting idea. I do have one concern regarding reconfirming following thought. As you mention, people might just forget who they follow. But equally, they might forget to reconfirm their followees. For example, if I have a neuron that follows others and automatically earns rewards I might also forget that I have to reconfirm my followees and thereby not collect rewards without realising it…
    I also think the case where a neuron controller loses access to the neuron but would like to unfollow another neuron is interesting. Maybe a conceivable alternative approach would be to allow hot keys or another kind of keys to change the following options in the future? In that case, if a neuron controller looses a key at least the following can be reset.

  2. Do I understand correctly that what you mean here is to remove the following for a neuron while a proposal is ongoing, right? The ability to subtract voting power from either yes or no votes would be a considerable change to how voting currently works. Currently, the governance canister adopts and execute proposals as soon as a majority of the voting power voted yes. I think waiting for 1/2 d might not be beneficial for some proposals, for example those that urgently fix some bugs. It might however be that for some proposal topics, for example motion proposals that are usually not urgent, this would be a conceivable option.
    Alternatively, one could also recommend that neurons check their followees’ choices and, if they make bad decisions they just unfollow them for future proposals. I understand that this is not quite the same, but it could be a starting point.

  3. (already addressed by Diego, again thanks for the feedback)

  4. I agree there are different possibilities for alternative ways how rewards are distributed. One possibility, as you mention, is to give higher reward to those who can prove that they are “one person”. Another option would be to also give more voting power to those who vote themselves rather than by following. Different people have already started thinking about such alternatives, as you can see for example here Changes to governance proposals and voting reward weights (Proposal)

1 Like

Hi thanks for the answer and sorry for the late reply.

I think if the duration of a neuron follow is properly balanced then this might become a perk rather than an inconvenience, lets say you have to confirm your follow every 2/3 years, if someone doesn’t log in the NNS for so long and forgets about it, then should his follow still count? IRL we have elections every once in a while to confirm we still want to support a certain party, would a wise person vote for a party he has no idea what it has done in the past 3 years?

Neuron holders should use the follow to automate the voting process by trusting someone else to vote for them, but they should still be aware of whats going on in the IC ecosystem, otherwise they are just cheesing the system to get staking rewards and I don’t think this kind of behaviour should be allowed.

Do I understand correctly that what you mean here is to remove the following for a neuron while a proposal is ongoing

Not really, but that would be a nice addtion too, it seems someone made a proposal: Proposal to Enable Manual Voting Throughout the Entire Voting Period of Governance Proposals

What I meant is something different, lets say there is a proposal for the removal of a canister, the neuron I follow says it will vote against it, but then for some reason they change their mind and vote yes, at that point even tho they have lost trust and voting power, the damage has been done and a dApp has become unusable. There should be some time after the proposal has ended to remove your vote if a followed neuron has voted differently than promised, but I agree that this should only be the case for some proposals, bugs and vulnerabilities should be fixed asap.

One possibility, as you mention, is to give higher reward to those who can prove that they are “one person”

That would be a start, but with the current design for PoH neurons would only receive a boost in voting power, the voting power is still based on staked ICPs, maturity and lockup time, there should be a multiplier that scales based on how many individuals vote in favour of something.

I strongly support #1. The NNS only benefits from a neuron’s participation when the neuron is engaged. If a neuron needs to re-commit to follow every year or two or three, I see that only as a good thing. If someone’s neuron can’t commit to that level of participation, then the NNS can’t commit to offer them voting rewards.

2 Likes

I like the idea of #4. Why not offer more rewards for proving you are a real person rather than just someone who has money? However, it seems like the “one person one neuron” idea could complicate the rewards for stakers who have multiple neurons.

1 Like

I like the idea of accountability in #2. But couldn’t we just un-follow, and then put up a new proposal to reverse the decision of the old one? Allowing vote reversals opens its own can of worms.

However, it seems like the “one person one neuron” idea could complicate the rewards for stakers who have multiple neurons.

Thats a good point, with the planned approach described by Dominic it wouldn’t really matter cause everyone gets a fixed boost on 1 neuron, if the neuron had more tokens it wouldn’t change the additional voting power. It could cause issues if they wanted to implement some form of quadratic voting for KYCed neurons, cause more than 1 neuron is owned by the same person, in this case a potential solution could be to link the verified identity to the Internet Identity instead of the neuron and then let the user choose which neuron they want to boost, for quadratic voting all neurons spawned by that II would only count as 1 person.

But couldn’t we just un-follow, and then put up a new proposal to reverse the decision of the old one?

Yes we could but that means for the time being the damage is done, imagine an entire dApp being removed from the IC, some data would be lost, users would lose trust in it and it might permanently damage its reputation. Even if a proposal to revert the changes can be created it wouldn’t be the same, there might be probably lower participation cause not everyone knows about it.

I think the best option would be to change the way a proposal is finalized, currently a 51% majority immediatly closes it, in my opinion it shouldn’t unless its a critical one whose purpose is to fix a bug or vulnerability. Proposals should have an end date, up until then it should be possible to manually change your vote then there should be a timeframe that only allows manually changing the vote if a followed neuron has voted for you, so lets say voting period lasts 48 hours, for 36 hours you should be able to either vote on your own or change a vote done by a followed neuron, after that for the remaining hours you should only be able to change the vote if it was from a followed neuron.

You might ask why have 12 hours to undo the vote from a followed neuron, thats because a bad actor might wait for the voting period to be almost over before voting to make it harder for his followers to notice the betrayal and manually change the vote.

@Zane
I really like the way you think here.

  1. I’m a big fan of this idea to disable Followees periodically. In my opinion, we should expect active participation in governance. It’s the job we are paid to do to earn the voting rewards. Liquid democracy is awesome and is vital for ICP tokenomics, but rules should exist that incentivize people to stay engaged. I would argue that Followees should be automatically disabled as frequently as every 3 months for the Governance proposal topic. That way passive investors will only get voting rewards for routine business, which will get paid lower rewards. Active participants will get higher rewards for participation in topics where we really do need a significant portion of people to vote using their own brains, even if it just means that every quarter they need to validate their Followee(s) for Governance proposals.

  2. I think this proposal linked below addresses the majority of this suggestion. It basically is intended to enable voters to cast their votes manually at any time throughout the voting period of the proposal. If their Followees have voted, they can still change their vote to override their Followee. That said, I think every voter should own responsibility to vote within the voting period window and it should not be extended beyond that window. If they want to guarantee that their vote is cast to their preference, then they should vote manually.

  1. I’m a big fan of the people parties idea and I hope it will offer a significant boost to help give people with smaller neurons a greater voice.

BTW I would also like to incentivize manual voting with higher rewards compared to relying on Followee voting. I’m coming from the position that the highest tokenomics incentives should reward active participation from people who are willing to use their own brains to make decisions that are in the long term best interest of the IC.

@lara @rubenhorne

2 Likes

To acces my principal id i personaly use a yubikey and login from a secure computer , not on the phone or my home computer. I will find a good option to have the posibility to make an diferent identity with only one ICP inside to use it on my phone and have an option that the main neuron follow that single icp DECOY neuron and, then i can vote manualy without worring accesing the main account from untrusted device.
Even better, a voting dapp with linked neuron will be better.
In my opinion this will work good for people party also

btw sorry for my english, is not my native language and maybe a little to old to learn grammar now

1 Like

I really like your proposal, it doesn’t completely address point 2, but its a step forward. Even with the proposed changes a bad actor could wait for the voting period to be almost over so that neuron owners can’t undo the vote manually

BTW I would also like to incentivize manual voting with higher rewards compared to relying on Followee voting.

I’m not sure about this one, on one side I like the fact users would have to keep up with the NNS “politics”, but I’m afraid it could be do more harm than good cause some users might vote randomly or without doing proper research just to get more rewards. As the IC gets bigger the number and complexity of proposals might also increase and for a normal person it would be impossible to keep it with it.

I like the idea of some neurons becoming the equivalent of political parties on the NNS, what I like to call democracy 2.0: instead of having 1 party deciding on every topic, people get to choose 1 party per proposal category and if for some reason they don’t vote as promised or if the stuff they voted for proves to be bad for the IC, support from other neurons should be removed as soon as possible.

2 Likes

Yes, waiting until the very end and then casting a vote that swings the outcome will happen eventually, but that’s why we have the wait for quiet algorithm. The very end changes each time votes are cast that swing the vote. Sometimes I wonder if the timer should be hidden when wait for quiet goes into effect so folks don’t know when the vote will end if it is extended beyond the minimum voting period. In principle, all votes should be cast before the minimum voting period expires anyway.

I think an overriding assumption is that voters will cast their votes manually in a way that they personally believe is in the long term best interest of the IC. Even if they are not totally up to speed on the proposal, they can easily see how the vote is trending or they can see how their Followee voted and then manually cast their vote the same way. Nobody is ever fully educated on all the options in a democratic vote, yet that is commonly accepted and it still considered essential that every individual have the opportunity to vote for themselves for whatever reason.

I agree that eventually it will be impossible to keep up with every vote. That’s ok to me. I have no expectation that every person gets maximum voting rewards at all times. If you put in extra effort then you should get greater rewards. If you don’t, then you should get lower rewards. Eventually everyone will settle into the participation rate they can practically achieve and be satisfied with the voting rewards it provides.

I agree that political parties are likely to develop as Followees. Every special interest group should need to put in work to keep their followers and maintain their relevance toward pushing their special interest. That’s another reason why I think it is important to disable Followees on Governance topics periodically (frequently IMHO). I’d like it to be hard for any Followee to build extremely high voting power without having to work for it. On the voter side, I don’t want Genesis neurons that were automatically set up to follow ICA to be racking up voting rewards when they don’t care about the IC and never interact. Same goes for neurons that were set up but never completed KYC as required as well as neurons that were staked and completely forgotten. ICP is a governance token and a certain minimum level of participation should be expected. Hence, I’m all for tokenomics changes that incentivize a wide range of participation options.

3 Likes

The very end changes each time votes are cast that swing the vote.

Cool, I wasn’t aware of it.

Eventually everyone will settle into the participation rate they can practically achieve and be satisfied with the voting rewards it provides.

I’m worried some people might abuse the system and will either use bots or randomly vote to get the rewards, in my opinion the best compromise would be one that incentivates the user to keep up with the NNS without it becoming a full time job, refreshing followees every couple weeks/months is definitely required to achieve that.

2 Likes

Hi all,
I think many good points are made in this thread.
Therefore, I just focus on some thoughts that I had:

  • Re: renewing the followers, I think one thing to consider is also the security. IIRC, then currently one needs a neuron’s controller key to change the followees. For neurons with a lot of staked tokens, this might be a key that neuron holders want to keep in a very save place. It might thus be a lot of effort, and a security risk, having to get this key out as often as every 3 months.
    Of course there are options here, such as allowing a hotkey to change the followees, but this should also be considered carefully, as then the loss of a hot_key would mean that the followees can be changed / removed, which might result in a considerable loss of rewards.

  • I also think that the proposal to pause following until the end of a voting period should tackle most concerns of the original point 2 and is likely easier than reverting votes. In particular, neuron holders could then already see how a followee voted without the following having kicked in and could change their vote if they don’t like this choice. The problem seems to remain for followees who cast their vote very late. But I would argue that if a neuron cares for the outcome, it could also decide to directly vote not only when it sees that it disagrees with the followee’s choice, but also when it sees that the followee has not cast a vote close to the voting deadline (in that case the followee could also be considered as “not being a good/reliable neuron to follow”).

  • I am not sure if you have concerns on top of that with voters voting close to the voting period’s end. As pointed out, the wait-for-quiet should protect against some of this by increasing the voting period if the voting trend changes. But I do think it is good to think about these different relevant scenarios, also in the context of this proposal, e.g., when we define whether wait-for-quiet should be considered with respect to the “projected” or “current” voting result.

2 Likes

Personally, it seems to me that NNS is not secure since the source code is in the public domain. Taking into account the hacker activity, it is possible to predict hacks in the system.