Service Nervous System | Governance for Dapps

Here’s my use case for why I would pay to follow a specific neuron. I sincerely believe that IC will, one day, become the “world computer” on which vast majority of software will be executed.(i.e. I have drunk Dominic’s kool aid).

In that context, because I stay in a specific country, I don’t want run foul of that country’s laws (blasphemy, anti-hate etc). So if someone else is doing the research on all the issues that might be potentially illegal in my country and voting so as not to run foul of the law, then I would follow that neuron. Obviously it takes time and money to do that research and I am willing to pay for it.

If Join Community Fund can get additional rewards, this will incentivize more people to participate in pledging and neurons become newly liquid while increasing governance and decentralization, am I understanding this right?

I wish that, someone from dfinity, who really knows, posts an update on the inner workings. Absent that post, here a brief CONJECTURE based on my interpretation of the medium article.

According to this medium article (Why Totally Decentralizing Dapps Wins, and How to Do It | by Dominic Williams | The Internet Computer Review | Oct, 2021 | Medium), a Dapp run with SNS (due Q1, 2022) governance can run a decentralized auction for a significant fraction of it’s preminted tokens. Only “community fund neurons” can vote on and contribute a part of the ICP stake in that neuron to that auction.

Then , assuming that the vote passes for the auction, the neuron gets the tokens associated with the Dapp in exchange of ICP staked in proportion to the total ICP staked for the Dapp token auction by all community fund neurons participating in that auction. (if this sounds like a mouthful, it is). This exchange is immediate according to the linked article.


Delegated Proof of Stake is a form of governance (even though typically it is just allocating to block producers). There are several applications where the delegation functionality is used in more advanced ways (e.g. The Graph). I am aware of a project that highly values timely engagement on voting for DAO decisions. For this project, once a threshold of votes are met the proposal is finalized.

There is no requirement to charge a fee.

Also, @lastmjs called out that some type of reward might be a useful strategy for increasing decentralization of active voters. By rewarding voters for their time, there is more of a reason for individuals/team to review every proposal in a timely manner and be vocal about why a decision is good or bad. It is not a silver bullet, but it could be combined with logarithmic returns to encourage delegators to either be active or find under supported active voters.

Building it as a functionality, expands the out of the box uses of the SNS which will speed up development on the IC.

What if there were a decentralized Git commit strategy. Shouldn’t informed voters who thoroughly reviewed the code be rewarded? What if they cannot afford to put up a large stake? Is their contribution less valuable?


Interesting point about decentralized Git commits.

That’s true, not everyone has the time or expertise to vote on code changes, and it wouldn’t be great from a democracy POV to reward only programmers and engineers (or worse, non-technical people voting randomly just to collect rewards).

I’m just not sure a commission rate is the right way to delegate. For example, what if I don’t want to share 2% of my voting rewards to people who delegate their vote to me? It’s not like I get anything out of it (besides having a bigger say over the end result).

It works in the real world, e.g. Congress, because if you delegate your vote to me (i.e. elect me to Congress), then I get a paying job with benefits. I think that incentive structure is currently missing in IC governance. Needs more work I think.

1 Like

Hi all,
happy to provide you with a new end-of-the-week update.

We have spent some time thinking about Open Governance / SNS and how this fits into the bigger context of providing the community with tools for tokenisation, decentralisation, access to funding etc.

Therefore, rather than going into SNS details, I want to share our current view of how these things could fit together and in what stages we could tackle them:

  1. Ledger canister: A ledger canister, including Rosetta-integration. Currently we think the design might be similar to the NNS ledger, but we want to improve it a bit with the lessons that we already learned during the last months. This effort is lead by @bogwar

  2. Open Governance: Canister(s) implementing an open governance system. As with the ledger, rather than just reusing the NNS governance canister, we are considering alternative designs that omit some of the NNS governance canister’s complexity due to NNS specifics. We also think about how we can make the governance modular so that it is easier for developers to change / (re-) use just some parts.

  3. Service Nervous System (SNS): An out of the box version of the SNS. The current idea is that, in addition to the above ledger and governance canister, further functionality would be provided such as automatic upgrades of the SNS canisters by the NNS and integrated means for a decentralised initial token distribution (e.g., the “auction” that was included in the SNS community conversation).

  4. Community funds / community neurons: A mechanism to invest the staked ICP tokens from the NNS neurons in SNS projects and thereby enable even more funding for SNS projects.

We are currently focusing on detailing the designs for 1. and 2. and plan to have concrete design proposals for them roughly in the next 2 weeks.


As you may be aware the community fund button been introduced on NNS dapp IN PRODUCTION AS AN IRREVERSIBLE CHANGE.

The community has been patient in waiting for an answer here(Community fund on nns - #16 by mparikh) on what exactly is this functionality (at the detailed level)

Would it be fair to say that , on (4) (community funds/community neurons), depends ( both what it is supposed to do at a detailed level and how to do what it is supposed to do) on 1, 2 & 3?

If so , we will need to wait for weeks to figure this out?


Will there be any chances to revert the community fund participation for those who may have clicked accidentally on the button on early stages?
Also, if this is an irreversible decision, there should be a more complex way to confirm the participation on this fund, because this means that the neuron is lost forever. Some way of doing this, could be: before the final confirmation click, for the button to be active, the user should write the word confirm on a text field. I’m saying this because there are many scenarios that things could go wrong:

  • the user could leave the wallet open for some minutes, where a child could mess with it and activate the “community fund” function;
  • touching the button while being unaware, in the pocket, while driving, while speaking to someone, while dozing away etc.

I think this is the mos critical button in the NNS app, at therefore it should have a more complex activating mechanism.

If someone may say that how could something like this happen, I assure you that it could happen, as it did to me, while being tired I tried to merge maturity and while dozing away ended up touching the “community fund” button, and my biggest neuron went to the community fund.


Hi there, thank you for your patience!
While the implementation and realisation of the community neurons depend on the SNS work, we can work on the design of the two projects simultaneously. In fact, we want to do this simultaneously to ensure that in the end all the APIs fit together. As soon as we have a better understanding, we will share our proposed design with the community as usual.


Thank you for this question and for your detailed suggestions!

We do plan to make a better warning / confirmation mechanism so that users are less likely to enable this feature by accident.

Also, those who committed to the community fund now will be able to revert this. Once the feature is out reverting the decision might not be possible anymore, but we will try to ensure that anyone who accidentally pressed the button has the chance to take this back in time.


Thanks, Lara.

Comments such as :
/// Join the Internet Computer’s community fund with this neuron’s entire stake. Caution: this operation is not reversible.

in code [quill/ at master · dfinity/quill · GitHub]

makes everyone nervous as what this mysterious functionality is.


thanks, I’m looking forward for this, so everyone who uses the NNS and IC feels comfortable using it

1 Like

Yes, I agree that this is an important goal.


Hi Lara,
I’m very interested in how I can undo the join community transaction. Today I clicked on merge maturity and then I confirmed it, but after then my screen became white and I saw nothing. When the page was reloaded I saw an option where I could confirm something. I thought this was the confirm button of the merge maturity, but afterwards I realized it was the join community fund option. What can I do to unjoin the community fund? I am very unhappy with this situation, because I want to stake ICP in stead of joining the community fund. I really hope you can help me.

1 Like

Hi @bert45,
thanks for your question.
Firstly, “joining the community fund” does not yet do anything other than setting a flag in the neuron. That is, your ICP utility tokens are staked in a neuron with which you can do anything you could do with any other neuron.
Currently, there is no way to undo this action, i.e., to unset this flag.
However, we plan to give the users a functionality and enough time to undo this before we introduce the community funds and this flag will actually have an effect.
I hope this helps. Please let me know if you have remaining questions!


Hi all,
this is just to confirm that we are still actively working on different SNS features behind the scenes!
Concretely, we should have a design for an open governance canister ready to share with you next week (stage 2. in the above mentioned outline).
I will probably open a new forum thread to discuss this design so we can have a more focused discussion, but I will make sure to link to it from here.

Looking forward to sharing the design with you next week and getting your inputs.
In the meantime, I wish you all a happy weekend!


Glad to hear that! It’s really fantastic to see the progress that you are doing. What do you think is a healthy estimate to launch SNS with full functionality? Q2?

Wish you happy weekend too!



It is rather hard to give a good estimate about this for at least the following two reasons:

  • First, it is not fully clear to me what should be considered the “fully functional SNS”, as I expect the feature to keep evolving and different people might consider different versions as “fully functional” in the sense that all their needs are covered.
  • Second, the expected delivery time also depends on a lot of factors outside the project. For example, if the community decides in one month that some other feature (that we don’t know of yet) is a lot more important and we should allocate many of the engineers to this new features, this could mean that less engineers can work on the SNS. So in the end when it can be delivered depends on the overall prioritisation and the availability of engineers.

That being said, with the current information I think Q2 can be realistic for something that can be considered a “full SNS”, but for the above reasons this is still a bit hard to predict.


Hi all,
as promised I shared a new proposed design for the open governance canister on a new forum topic here.
Looking forward to your inputs and questions there!


Hi all,

the motion proposal suggesting a first SNS governance canister is live (see here)!