The Internet Computer’s proposed SNS feature will allow developers to create decentralized, token-based governance systems for their dapps.
By Lara Schmid, Researcher | DFINITY
The Internet Computer community is actively shaping the blockchain’s feature and upgrade roadmap, a list of technical upgrades that the DFINITY Foundation is proposing in collaboration with developers and stakeholders. Among these proposed features is the “service nervous system,” or SNS, which will allow entrepreneurs and developers to create decentralized, tokenized governance systems for their dapps.
An SNS would derive from the Network Nervous System (NNS), the autonomous tokenized governance system that controls the Internet Computer blockchain in a completely open, permissionless, and decentralized manner. The NNS allows anyone in the world to submit and vote on proposals to the network, and if adopted, the proposals are immediately executed automatically, enabling the network to adapt and evolve in real time.
In contrast to the NNS, an SNS would only control a single dapp, also called a “service.” Just as anyone in the world can participate in NNS governance by staking ICP utility tokens in voting neurons, anyone will be able to participate in SNS governance, which will autonomously control the operations and evolution of an associated dapp.
“Imagine, for example, building a social network like Twitter whose logic and data aren’t controlled by a company, but by a program whose code runs autonomously and verifiably,” Chris Dixon, general partner at Andreessen Horowitz, once wrote. “Its ownership and control could even be tokenized and distributed to its users and developers.”
Note: This feature is still in the design and community discussion phase before a formal motion proposal will be presented to begin concrete design and engineering work. Join the SNS conversation on the Developer Forum.
Entrepreneurs and developers who are launching dapps and services on the Internet Computer may consider implementing an SNS to attract resources that enable the dapp to have sufficient cycles to run, develop additional features, and scale with demand. The SNS facilitates token-based governance that can also be used to attract users to the dapp and drive network effects that extend its reach.
Adopting an SNS and converting control over a dapp to decentralized, tokenized governance would allow anyone to acquire the dapp’s particular “SNS governance token,” for example, in exchange for cycles. It would also enable the distribution of the dapp’s SNS tokens to its early adopters and active users to help drive growth, giving them a stake in the direction and success of the dapp. For the sake of stabilizing governance, those who would like to participate in governance decisions need to lock some of their tokens in voting neurons (as in the NNS), incentivizing them to act in the dapp’s long-term interest.
Another important principle of this open governance model is that, apart from taking part in collective ownership, users can ensure that the dapp’s developers cannot, for example, simply stop a service, remove a feature, or update the code in an undesirable way. It establishes that no single entity or centralized party will control the dapp and determine its future. At the same time, it allows the dapp to evolve and upgrade through proposals that are directly responsive to the desires, feedback, and voting of its SNS community — just as the broader Internet Computer community uses the NNS to govern and continuously upgrade the blockchain.
This is why providing a permissionless governance system to control a dapp through tokenization is such a powerful feature. It allows the developers, users, and stakeholders of a given dapp to collectively make decisions on what features are best and decide whether to adopt or reject all manner of proposals. The SNS also facilitates novel applications of dapp tokenization, and provides a foundation for other new forms of governance that may be built reusing some of the SNS code, which will be fascinating to see unfold.
Relation to the NNS
While there is only one NNS that controls the Internet Computer, there can be an infinite number of service network systems (SNSs), as every dapp can leverage an SNS to govern itself. In particular, the ability to create utility tokens to govern a dapp via an SNS is easily provided out-of-the-box by the NNS, which creates them and can update them, requiring no special effort from the developer to implement. This means that all SNSs and their associated tokens are extensions of the NNS — with a shared implementation that provides a de facto standard — and that a given dapp’s SNS code and upgrades are vetted by the Internet Computer community.
Like the NNS, an SNS includes a governance canister and a ledger canister. The governance canister stores voting neurons, which consist of staked tokens, and proposals for how the technology can evolve, which any neuron holder can propose. The ledger canister stores the utility token accounts and transactions.
Although the NNS upgrades a given dapp’s SNS, some governance parameters can be changed by the SNS governance itself — for example, a dapp’s community might be able to make the voting period of proposals longer via an SNS, or to change the governance fees, and so forth.
Although they are very similar, one key difference between an SNS and the NNS is that SNS canisters burn cycles.
Initialization of an SNS
Developers can submit a proposal to the NNS stating that they would like to assign an SNS to their dapp to decentralize its governance. To do so, they will submit a proposal identifying the dapp to which the SNS should be assigned along with the name of the SNS token that they want. NNS neuron holders, who have staked ICP tokens within the NNS, will then vote on the proposal. If it is adopted, the NNS will immediately assign an SNS to the dapp as follows.
First, the NNS will add the SNS to the NNS registry, where it stores all SNSs along with the dapps they are assigned to and the corresponding SNS token names. At that point, the SNS ledger will be frozen; no transactions will be possible. The developer remains in control of the dapp at this point in the process, and can still upgrade it — for example, if some security fixes are necessary. The next step involves allocating and distributing a dapp’s governance tokens and neurons to different principals, effectively decentralizing the dapp’s governance. When this is fulfilled, the SNS takes control of the dapp.
Initially there will be 1 billion governance tokens for a particular dapp via SNS. The initial token distribution may, for example, be allocated as follows: 25% of the tokens will be given to the dapp’s developers. Another 35% will be given to an SNS-controlled account, which would be used according to wishes of the dapp’s community via SNS proposals — for example, for in-dapp distribution to users to incentivize engagement. The remaining 40% could be distributed to the public via an open and permissionless auction (e.g., in exchange for cycles), the conception of which is still in the early stages, which in the end establishes a single clearing price per the dapp’s governance token for all bids.
The tokenization and auction are facilitated by having the SNS run under the control of the NNS and being fully part of the Internet Computer blockchain. The SNS directly holds the auction proceeds — for example, the SNS governance canister could store cycles from the auction and use them for computation.
To reinforce governance, 90% of the initial dapp’s tokens that are distributed via an SNS to the developers and participants of an auction could be distributed as locked neurons. This establishes that the SNS is decentralized and that voters are invested in governance from the beginning. The remaining 10% could be liquid tokens.
Having completed the initial token allocation, the SNS ledger would be unlocked and the SNS would assume control over the dapp. We now have a dapp that is fully controlled by its native governance system and neuron holders. All of the dapp’s updates going forward are now the product of community decisions. SNS voters can decide whether the tokens held by the SNS will be given to early adopters or the dapp’s most active users, or be used to offer feature and bug bounties to developers, or for any other purpose. The SNS also has an initial cycles supply that can be used to fuel the SNS or dapp canisters, providing them with the resources necessary for growth.
The road ahead
Decentralized governance and tokenization will give developers a powerful means of unlocking new, innovative models for interoperable dapps and blockchain-based services. This SNS feature is a major component of the Internet Computer’s roadmap, and the entire community is welcome to participate in the discussion on the Developer Forum to ask questions and add suggestions.
Work on this feature will involve generalizing the code of existing NNS canisters to reuse it for the SNS, but also the design and implementation of new elements — for example, the auction process mentioned for distributing a dapp’s governance tokens via an SNS is a feature that does not yet exist in the NNS. The process involving how an SNS will be initialized will also require changes to the current NNS. All stages of work on this feature are subject to community discussion and review.
The SNS governance mechanism can help democratize access to the tech economy for developers who build entirely on-chain, giving them a means to bootstrap tokenized dapps that will redefine the nature of web-based services.
How the Service Nervous System (SNS) Will Bring Tokenized Governance to On-Chain Dapps was originally published in The Internet Computer Review on Medium, where people are continuing the conversation by highlighting and responding to this story.