Service Nervous System (SNS)

From Internet Computer Wiki
Revision as of 12:15, 21 August 2023 by Lara.schmid (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Similarly to how the Network Nervous System (NNS) is the open tokenized DAO that controls the Internet Computer blockchain (IC), service nervous systems (SNSs) are algorithmic DAOs that allow developers to hand over control of their dapp to decentralized, token-based governance systems. This means, each dapp that would like to be under decentralized control will have a separate SNS.

Developers can now hand over their Web3 service to an SNS there are also other alternatives of how developers can get a DAO. The community can buy governance tokens to take ownership and control through the SNS DAO and shape the dapp’s future.

SNS canisters

The SNS consists of a governance canister, a ledger canister with archive canisters and an index canister, a root canister, and a decentralization swap canister that is explained in the next section.

The ledger canister implements the ICRC-1 standard and contains SNS tokens, which are unique tokens for each SNS. It stores which accounts own how many SNS tokens and the history of transactions between the principals. The archive canisters stores the history of the ledger transactions and the index canister allows one to find all the transactions associated with an account.

The governance canister enables decentralized decision making. It stores proposals that are suggestions on how to evolve the dapp that the SNS governs and neurons that define who the governance participants are. Neurons facilitate stake-based voting as they contain staked SNS tokens. Everyone can become a government participant by staking SNS tokens in a neuron.

The root canister is responsible for upgrading the other SNS canisters and the dapp canisters that the SNS controls.

SNS lifecycle

SNS launch process

SNS canisters are maintained and blessed by the IC community. In more detail, the blessed SNS versions and upgrade paths are stored on an NNS canister called the SNS wasm modules canister SNS-W.

An SNS is launched by developers handing over their dapp to the NNS. An NNS proposal then defines the exact parameters with which an SNS is created and the conditions of the launch. If this proposal is adopted, an SNS is created and the dapp is handed over to this SNS. If the proposal is rejected, then the dapp is given back to the developer’s control.

SNS decentralization swap

A crucial part of launching an SNS is how it can be decentralized. That is, the newly created tokens must be distributed to a large community to ensure proper decentralization of voting power. There are of course many ways to do so. The first SNS version provides one simple way to achieve this: a developer can hand over their dapp to the NNS and ask it to start a decentralization swap. In the decentralization swap, a fixed number of newly created SNS tokens are given away. The swap collects ICP tokens and, in the end, the conversion rate is computed as the number of ICP collected by the number of SNS tokens - the tokens are swapped. After a successful decentralization swap, SNS tokens are thus owned by a large community and therefore the SNS governance control is decentralized. Moreover, the ICP that were collected in the decentralization swap provide initial funding for the SNS project.

If you are looking to decentralize a dapp, you can find more information in the developer documentation. If you want to participate, you can find more information on the SNS website.


There are some important maintenance tasks that have to be performed by an SNS community, such as deciding and voting on when an SNS should be upgraded to a new blessed version, adjusting the SNS parameters when needed, and making sure that the SNS canisters do not run out of cycles. There is more information about how to participate in an SNS DAO and more technical details of how to contribute to managing an SNS DAO as a community member.