Skip to content

Commit

Permalink
addressing reviewer comments
Browse files Browse the repository at this point in the history
  • Loading branch information
LaraAS committed Jul 19, 2023
1 parent c176f7f commit 21b5892
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,64 +36,50 @@ ls bazel-bin/rs/sns/cli/sns

Typically, dapp developers choose initial parameters that will be used in subsequent proposals.

### 2. Dapp developers submit NNS proposal to create SNS
### 2. Submit NNS proposal to create SNS

Anyone who owns an eligible NNS neuron with enough stake can submit an NNS proposal to create an
SNS for a given dapp.
Anyone who owns an eligible NNS neuron with enough stake can submit an NNS
proposal to create an SNS for a given dapp.
Of course it is crucial to set the right parameters in this proposal.
You can also find an example how this command is used in the SNS local testing
[here](https://github.com/dfinity/sns-testing/blob/main/propose_sns.sh).

To create such a proposal, a common path is to use `ic-admin` and run the following:
[TODO: update command]
To create such a proposal, a common path is to use `sns-cli` and run the following:
```
ic-admin \
--nns-url "${NETWORK_URL}" propose-to-open-sns-token-swap \
--min-participants 3 \
--min-icp-e8s 5000000000 \
--max-icp-e8s 50000000000 \
--min-participant-icp-e8s 100000000 \
--max-participant-icp-e8s 20000000000 \
--swap-due-timestamp-seconds "${DEADLINE}" \
--sns-token-e8s 500000000000 \
--target-swap-canister-id "${SNS_SWAP_ID}" \
--community-fund-investment-e8s 5000000000 \
--neuron-basket-count 3 \
--neuron-basket-dissolve-delay-interval-seconds 31536000 \
--proposal-title "Decentralize this SNS" \
--summary "Decentralize this SNS"
dfx sns propose --network ic --neuron $NEURON_ID sns_init.yaml
```

* One can substitute `NETWORK_URL` with `https://nns.ic0.app`.

### 3. Dapp developers add NNS root as co-controller of dapp

[TODO: add command]
They can do so by running the following command:
```
dfx sns prepare-canisters add-nns-root $CANISTER_ID
```

### 4. The NNS proposal is decided
Nothing technical for dapp developers to do. Community votes.


### 5. (Automatically) SNS-W deploys SNS canisters
### 5. (Automated) SNS-W deploys SNS canisters
Nothing technical for dapp developers to do. This is triggered automatically as a result
of an adopted proposal in Stage 4.

### 6. (Automatically) SNS-W sets SNS root as single controller of dapp
### 6. (Automated) SNS-W sets SNS root as sole controller of dapp
Nothing technical for dapp developers to do. This is triggered automatically as a result
of an adopted proposal in Stage 4.

### 7. (Automatically) SNS-W initializes SNS canisters according to settings from Step 1
### 7. (Automated) SNS-W initializes SNS canisters according to settings from Step 1
Nothing technical for dapp developers to do. This is triggered automatically as a result
of an adopted proposal in Stage 4.

### 8. (Automatically) SNS swap starts
### 8. (Automated) SNS swap starts
Nothing technical for dapp developers to do. This is triggered automatically as a result
of an adopted proposal in Stage 4.

### 9. (Automatically) SNS swap ends
### 9. (Automated) SNS swap ends
Nothing technical for dapp developers to do. This is triggered automatically as a result
of an adopted proposal in Stage 4.

### 10. (Automatically) SNS swap finalizes
### 10. (Automated) SNS swap finalizes
Nothing technical for dapp developers to do. This is triggered automatically as a result
of an adopted proposal in Stage 4.
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

## Overview

A crucial purpose of an SNS launch is to decentralize the control of an SNS and thereby
the dapp that the SNS governs.
A crucial purpose of an SNS launch is to decentralize the control of an SNS
and thereby of the dapp that the SNS governs.

Thereby, new tokens must be distributed to a large community to ensure
To achieve this, new tokens must be distributed to a large community to ensure
proper decentralization of the voting power. There are of course many ways to do so.

The SNS provides one simple way to achieve this: a developer can hand over their dapp
Expand Down Expand Up @@ -76,7 +76,7 @@ The NNS community's approval is relevant in Stage 2.
</tr>
</table>

### 2. Dapp developers submit NNS proposal to create SNS
### 2. Submit NNS proposal to create SNS

This proposal presents all the initial parameters for the SNS as defined in
the first Stage to the NNS community.
Expand Down Expand Up @@ -221,20 +221,22 @@ This results in the following situation:
</table>


### 6. (Automatically) SNS-W sets SNS root as single controller of dapp
### 6. (Automatically) SNS-W sets SNS root as sole controller of dapp
Once the SNS canisters are deployed, [SNS-W](../introduction/sns-architecture.md#SNS-W)
sets the SNS root as the single controller of the dapp canister(s).
sets the SNS root as the sole controller of the dapp canister(s).

For technical reasons, the NNS root canister was added as the co-controller of the dapp
in Stage 3.
Therefore, the SNS-W orchestrates the necessary updates involving NNS root for
making the appropriate changes.

In detail, this includes two steps:
* First, SNS-W adds the newly created SNS root cansiter as the dapp canister(s)
controller and removes the original dapp developers
This is done via a call to NNS root who is the co-controller of the dapp cansiter(s)
and thus has the necessary permissions.
* First, SNS-W removes the original dapp developers from controlling the
dapp canister(s).
Next, SNS-W adds the newly created SNS root canister as the dapp canister(s)
controller.
This is done via a call to NNS root who is the co-controller of the dapp
canister(s) and thus has the necessary permissions.
* If this transition worked successfully, SNS-W asks the NNS root canister to
remove itself as controller.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

## Overview

A crucial purpose of an SNS launch is to decentralize the control of an SNS and thereby of
the dapp that the SNS governs.
A crucial purpose of an SNS launch is to decentralize the control of an SNS
and thereby of the dapp that the SNS governs.

Thereby, new tokens must be distributed to a large community to ensure
To achieve this, new tokens must be distributed to a large community to ensure
proper decentralization of the voting power. There are of course many ways to do so.

The current SNS version provides one simple way to achieve this: a developer can hand
Expand All @@ -19,7 +19,7 @@ We first explain the decentralization swap and then the stages for an SNS launch
### Decentralization swap

The launch of each SNS includes a separate **decentralization swap canister** that
is owned and run by the IC.
is owned and run by the NNS.
In more detail, it is controlled by the NNS root canister.

* The swap canister is set up at the start with a defined amount of SNS tokens to be
Expand Down

0 comments on commit 21b5892

Please sign in to comment.