Skip to content

Commit feaab01

Browse files
committed
fix(governance): rebase, rename sns-dao-settings, add sidebar entries, image, and asset term cleanup
- Rebase onto infra/learn-hub-migration-prep (picks up batches 1–8) - Rename docs/references/sns-dao-settings.md → sns-settings.md and update all references - Add concepts/sns-framework, references/nns-proposal-types, references/sns-settings to sidebar - Download and add missing SNS rewards graph image (graph_rewards_total_supply.png) - Reduce over-use of "digital asset" → "asset" in governance.md, sns-framework.md, and sns-settings.md
1 parent 03b4bbe commit feaab01

6 files changed

Lines changed: 25 additions & 20 deletions

File tree

docs/concepts/governance.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ The reward rate declines over time as the protocol matures, converging toward a
8282

8383
## The Service Nervous System
8484

85-
The SNS is a governance framework that allows app developers to create a community-governed SNS for their application. When an app is governed by an SNS, digital asset holders vote on proposals to upgrade the app's canisters, manage treasury funds, and adjust governance parameters.
85+
The SNS is a governance framework that allows app developers to create a community-governed SNS for their application. When an app is governed by an SNS, asset holders vote on proposals to upgrade the app's canisters, manage treasury funds, and adjust governance parameters.
8686

8787
Unlike the NNS, which is a singleton governing the entire protocol, each SNS is a separate set of canisters specific to one app. SNSes live on a dedicated SNS subnet.
8888

@@ -95,25 +95,25 @@ An SNS consists of five core canisters plus a variable number of archive caniste
9595
| **Governance** | Proposal submission, voting, neuron management |
9696
| **Ledger** | SNS asset transfers (ICRC-1 standard) |
9797
| **Root** | Sole controller of all app canisters post-launch |
98-
| **Swap** | Runs the decentralization swap (ICP for SNS digital assets) |
98+
| **Swap** | Runs the decentralization swap (ICP for SNS assets) |
9999
| **Index** | Transaction indexing for the SNS ledger |
100100
| **Archive** (one or more, spawned as needed) | Historical ledger block storage; new archive canisters are created automatically as the ledger grows |
101101

102-
Once an SNS is live, the SNS Root canister is the sole controller of the app's canisters. Upgrades happen through governance proposals voted on by SNS digital asset holders.
102+
Once an SNS is live, the SNS Root canister is the sole controller of the app's canisters. Upgrades happen through governance proposals voted on by SNS asset holders.
103103

104104
### Digital asset economics
105105

106106
Each SNS has its own governance digital asset. The initial distribution is defined in the SNS configuration file and includes:
107107

108-
- **Developer neurons**: Digital assets allocated to the original developers and seed funders, typically with vesting periods and dissolve delays to signal long-term commitment.
109-
- **Treasury**: Digital assets owned by the SNS governance canister, spendable by governance proposal.
110-
- **Swap allocation**: Digital assets sold during the decentralization swap in exchange for ICP.
108+
- **Developer neurons**: Assets allocated to the original developers and seed funders, typically with vesting periods and dissolve delays to signal long-term commitment.
109+
- **Treasury**: Assets owned by the SNS governance canister, spendable by governance proposal.
110+
- **Swap allocation**: Assets sold during the decentralization swap in exchange for ICP.
111111

112112
The SNS ledger implements the ICRC-1 standard. SNS neurons work similarly to NNS neurons: stake governs voting power, dissolve delay grants a bonus (up to 2x at the configured maximum), and age grants an additional bonus.
113113

114114
### The decentralization swap
115115

116-
The decentralization swap is the mechanism by which SNS digital assets are distributed to the public. Participants send ICP to the SNS Swap canister during the swap window; when the swap closes, the exchange rate is determined and participants receive SNS digital assets in a basket of neurons with vesting schedules.
116+
The decentralization swap is the mechanism by which SNS assets are distributed to the public. Participants send ICP to the SNS Swap canister during the swap window; when the swap closes, the exchange rate is determined and participants receive SNS assets in a basket of neurons with vesting schedules.
117117

118118
The swap has minimum and maximum ICP participation thresholds. If the minimum is not reached, the swap fails: all ICP is refunded and control of the app returns to the original developers (via the fallback controllers defined in the configuration). If the maximum is reached before the end time, the swap closes early.
119119

@@ -126,7 +126,7 @@ SNS governance mirrors the NNS design but is customized per app:
126126
| Aspect | NNS | SNS |
127127
|--------|-----|-----|
128128
| What it governs | Protocol and network | A specific app |
129-
| Digital asset | ICP | Project-specific ICRC-1 digital asset |
129+
| Digital asset | ICP | Project-specific ICRC-1 asset |
130130
| Governance canisters | Singleton on NNS subnet | Per-app on SNS subnet |
131131
| Launch authority | N/A (pre-existing) | NNS must approve creation |
132132
| Proposal types | Protocol updates, subnet management, economics | App upgrades, treasury transfers, parameter changes |
@@ -138,10 +138,10 @@ When an app is governed by an SNS, the original developers no longer have direct
138138
- **Upgrades require proposals**: All changes to app canisters must go through SNS governance votes. Development slows down compared to centralized control.
139139
- **Treasury spending requires votes**: Any use of SNS treasury funds requires a governance proposal.
140140
- **Upgrade path is transparent**: Community members can verify new canister wasm modules before voting. Reproducible builds allow independent verification.
141-
- **Responsibility is distributed**: Post-launch, the development team typically continues leading the project but must engage the community of digital asset holders for major decisions.
141+
- **Responsibility is distributed**: Post-launch, the development team typically continues leading the project but must engage the community of asset holders for major decisions.
142142
- **Custom proposals**: Apps can register custom proposal types (generic functions) that allow the SNS to call specific canister methods, enabling fine-grained governance without unrestricted code upgrades.
143143

144-
Developers preparing for an SNS launch should ensure their codebase is stable, open-sourced, and reproducibly buildable before the decentralization swap. The NNS community votes on the creation proposal and expects evidence of product-market fit, sound digital asset economics, and a realistic roadmap.
144+
Developers preparing for an SNS launch should ensure their codebase is stable, open-sourced, and reproducibly buildable before the decentralization swap. The NNS community votes on the creation proposal and expects evidence of product-market fit, sound asset economics, and a realistic roadmap.
145145

146146
## Neuron hotkeys
147147

docs/concepts/sns-framework.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title: "SNS Framework"
33
description: "How the Service Nervous System works: framework architecture, launch process, neurons, proposals, and configurable rewards"
44
---
55

6-
The Service Nervous System (SNS) is a governance framework built into ICP that lets any developer hand control of their application to a community-governed SNS. When an app is governed by an SNS, all upgrades, treasury decisions, and parameter changes require onchain proposals voted on by SNS digital asset holders.
6+
The Service Nervous System (SNS) is a governance framework built into ICP that lets any developer hand control of their application to a community-governed SNS. When an app is governed by an SNS, all upgrades, treasury decisions, and parameter changes require onchain proposals voted on by SNS asset holders.
77

88
For a high-level introduction comparing the NNS and SNS, see [Governance](governance.md#the-service-nervous-system).
99

@@ -28,7 +28,7 @@ Launching an SNS is a one-time process that transfers control of an application
2828

2929
**Step 2: SNS canisters deployed:** The NNS uses SNS-W to deploy a fresh set of SNS canisters. The app's canisters are transferred to SNS Root as their controller.
3030

31-
**Step 3: Decentralization swap:** A swap window opens where users can send ICP to the SNS Swap canister. At the end of the window (or earlier if the maximum is reached), each contributor receives a proportional share of a fixed SNS digital asset allocation as staked neurons. The ICP collected becomes the SNS treasury. All swap participants receive a basket of neurons with configurable dissolve delays.
31+
**Step 3: Decentralization swap:** A swap window opens where users can send ICP to the SNS Swap canister. At the end of the window (or earlier if the maximum is reached), each contributor receives a proportional share of a fixed SNS asset allocation as staked neurons. The ICP collected becomes the SNS treasury. All swap participants receive a basket of neurons with configurable dissolve delays.
3232

3333
The swap has a minimum and maximum ICP threshold:
3434
- If the minimum is not met when the window closes, the swap fails: all ICP is refunded and control of the app reverts to the original fallback controllers.
@@ -45,7 +45,7 @@ Each SNS consists of five core canisters and a variable number of archive canist
4545
| Canister | Purpose |
4646
|---|---|
4747
| **Governance** | Stores proposals and neurons; executes adopted proposals; calculates voting power and rewards. |
48-
| **Ledger** | ICRC-1 ledger for the SNS's governance digital asset. |
48+
| **Ledger** | ICRC-1 ledger for the SNS's governance asset. |
4949
| **Root** | Sole controller of the governed app canisters; orchestrates canister upgrades. |
5050
| **Swap** | Runs the decentralization swap during launch. |
5151
| **Index** | Organizes ledger transactions by account for wallet and explorer queries. |
@@ -64,7 +64,7 @@ SNS neurons work similarly to NNS neurons, with a few differences:
6464
- Maximum dissolve delay and the bonus it grants at that maximum (default: 8 years, 2x).
6565
- Maximum age and the bonus it grants at that maximum (default: 4 years, 1.25x).
6666

67-
**Maturity.** If an SNS activates voting rewards, neurons accumulate maturity that can be disbursed (minted as digital assets), staked into the neuron for compounding, or auto-staked. The same maturity modulation mechanism as the NNS applies (±5% based on recent ICP/XDR rate movements).
67+
**Maturity.** If an SNS activates voting rewards, neurons accumulate maturity that can be disbursed (minted as new assets), staked into the neuron for compounding, or auto-staked. The same maturity modulation mechanism as the NNS applies (±5% based on recent ICP/XDR rate movements).
6868

6969
## SNS proposals
7070

@@ -100,7 +100,7 @@ All SNS instances include a standard set of built-in proposal types:
100100
- Proposals to change governance settings and SNS metadata.
101101
- Proposals to upgrade the SNS framework canisters.
102102
- Proposals to register or deregister governed app canisters.
103-
- Proposals to transfer treasury funds or mint new digital assets.
103+
- Proposals to transfer treasury funds or mint new assets.
104104

105105
### Custom proposals
106106

@@ -118,14 +118,16 @@ Each SNS independently decides whether to enable voting rewards, and if so, what
118118

119119
The formula between `t_start` and `t_start + t_delta` is: `R(t) = r_min + (r_max − r_min) × [(t_start + t_delta − t) / t_delta]²`. After `t_start + t_delta`, the rate is constant at `r_min`.
120120

121+
![SNS voting rewards: new assets are distributed from the reward pool to voting neurons, while the total supply grows as rewards are distributed](/concepts/sns-framework/rewards-total-supply.png)
122+
121123
If `VotingRewardsParameters` is not set at all, voting rewards are disabled.
122124

123-
User rewards (distributing existing treasury digital assets to active app users) are a separate mechanism: an SNS-controlled canister holds a digital asset reserve and pays out rewards according to its own logic.
125+
User rewards distributing existing treasury assets to active app usersare a separate mechanism: an SNS-controlled canister holds an asset reserve and pays out rewards according to its own logic.
124126

125127
## Next steps
126128

127129
- [Governance](governance.md): NNS and SNS overview, including neurons, proposals, and voting rewards
128-
- [SNS settings reference](../references/sns-dao-settings.md): all configurable nervous system parameters
130+
- [SNS settings reference](../references/sns-settings.md): all configurable nervous system parameters
129131
- [Launch an SNS](../guides/governance/launching.md): step-by-step guide to the decentralization process
130132
- [Manage a live SNS](../guides/governance/managing.md): proposals, upgrades, and treasury management after launch
131133

docs/guides/governance/managing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ type NervousSystemParameters = record {
121121
};
122122
```
123123

124-
For a description of each parameter and its effect, see the [SNS DAO settings reference](../../references/sns-dao-settings.md).
124+
For a description of each parameter and its effect, see the [SNS settings reference](../../references/sns-settings.md).
125125

126126
### ManageSnsMetadata
127127

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ title: "SNS Settings"
33
description: "Reference for all SNS nervous system parameters (NervousSystemParameters)"
44
---
55

6-
Each SNS is customized through its **nervous system parameters**, also called SNS settings. These parameters govern voting power calculation, governance rules, digital asset economics, and reward behavior. Parameters are set at launch and can be changed by governance proposal at any time.
6+
Each SNS is customized through its **nervous system parameters**, also called SNS settings. These parameters govern voting power calculation, governance rules, asset economics, and reward behavior. Parameters are set at launch and can be changed by governance proposal at any time.
77

88
For background, see [SNS framework](../concepts/sns-framework.md).
99

1010
## Neuron settings
1111

1212
| Parameter | Type | Description |
1313
|---|---|---|
14-
| `neuron_minimum_stake_e8s` | `nat64` | Minimum number of e8s (10⁻⁸ of the SNS digital asset) that can be staked in a neuron. Must be larger than `transaction_fee_e8s`. |
14+
| `neuron_minimum_stake_e8s` | `nat64` | Minimum number of e8s (10⁻⁸ of the SNS asset) that can be staked in a neuron. Must be larger than `transaction_fee_e8s`. |
1515
| `max_number_of_neurons` | `nat64` | Maximum number of neurons allowed. New neurons are blocked once this ceiling is reached. Ceiling: 200,000. |
1616
| `max_number_of_principals_per_neuron` | `nat64` | Maximum number of principals that can hold permissions for a single neuron. |
1717
| `neuron_claimer_permissions` | permission set | The set of permissions automatically granted to the principal that claims a new neuron. |
101 KB
Loading

sidebar.mjs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ export const sidebar = [
119119
{ slug: "concepts/vetkeys" },
120120
{ slug: "concepts/security" },
121121
{ slug: "concepts/governance" },
122+
{ slug: "concepts/sns-framework" },
122123
{ slug: "concepts/network-economics" },
123124
{ slug: "concepts/ledgers" },
124125
],
@@ -166,6 +167,8 @@ export const sidebar = [
166167
items: [
167168
{ slug: "references/management-canister" },
168169
{ slug: "references/system-canisters" },
170+
{ slug: "references/nns-proposal-types" },
171+
{ slug: "references/sns-settings" },
169172
{ slug: "references/protocol-canisters" },
170173
{ slug: "references/application-canisters" },
171174
{ slug: "references/icrc-standards" },

0 commit comments

Comments
 (0)