Help: Submit the SNS-W wallet principal ID to be whitelisted

We are trying to submit our wallet principal to get whitelisted to begin our SNS decentralization process.

However, we are struggling to figure out the exact step by step process on how to get this done.

We have managed to figure out some parts of our queries by looking at this

But we have the following additional questions:

  • Do we have to create a neuron first with the principal whose wallet principal ID is being whitelisted? How would the neuron creation work if the identity being used is from the CLI? We need some guidance. Till now, we’ve just used the NNS UI to create neurons if we needed one
  • Is there any specifics of the neuron we should be aware of? Amount of ICP it needs to have staked? Stake dissolve delay?
  • What is test-neuron-proposer?
  • What is the exact value of nns-url that should be passed for mainnet?
  • Do the proposal title and proposal summary support Markdown? Is that what we’re supposed to use?

Appreciate any and all help provided.

Thoughts? @lara @domwoe @Severin

1 Like

Do we have to create a neuron first with the principal whose wallet principal ID is being whitelisted?

The neuron does not need to have any connection to the wallet ID or the principal who owns the wallet. Any neuron can submit the proposal.

Is there any specifics of the neuron we should be aware of? Amount of ICP it needs to have staked? Stake dissolve delay?

The neuron needs at least 10 ICP to submit a proposal (this is the fee, which will be paid back if the proposal is adopted). The dissolve delay needs to be at least 6 months for the neuron to be eligible to vote.

What is test-neuron-proposer?

With this ic-admin flag, the NNS proposal is submitted on behalf of an NNS neuron with a fixed and publicly known ID and controller that always exists in test environments and has a majority of voting power by default (unless new big NNS neurons are created).

What is the exact value of nns-url that should be passed for mainnet?

The IC url would do, e.g., https://ic0.app.

Do the proposal title and proposal summary support Markdown? Is that what we’re supposed to use?

This is a matter of rendering the proposal in the respective frontend. From the NNS/SNS perspective, the proposal title and summary and just strings of UTF-8 characters. I’m not sure what encoding are nicely rendered in, e.g., nns-dapp or quill.

2 Likes

For this you should be able to add your DFX identity as a hotkey for the neuron created in the NNS frontend dapp. A hotkey has the permission to send a proposal in the name of a neuron.
Then ic-admin could make a proposal when given the .pem key of your DFX principal.

2 Likes

Yes markdown will be fine. You can see the sns-w proposal for OpenChat rendered in OpenChat and the NNS dapp:

3 Likes

Confirming that this isn’t required for the mainnet proposal submission, right?

The identity I’m looking to use to submit the proposal is stored with my OS keyring. I will have to export it as plaintext for this to work, right?

Confirming that this isn’t required for the mainnet proposal submission, right?

Indeed, --test-neuron-proposer is not supposed to work on mainnet.

Yes, if you want to use the --pem option, you will need to have a plaintext version of the key. ic-admin also supports HSM keys as well. I am not sure how to sign messages from a key on the OS keyring - I do not think that is currently supported with ic-admin at least.

A hotkey controller (one that can vote for the same neuron) can also submit proposals on that neuron’s behalf. You could register a hotkey for a different local PEM for the neuron in question, and then use that hotkey to submit the proposal using the neuron that is controlled by the key on the OS keyring.

If you use a hotkey to submit the proposal, it could solve your problem without needing to extract the controller pem into plaintext

ICLighthouse support pem file login. You can create neuron and make proposal.

1 Like

Hi @lara @Severin @mraszyk

Our final proposal looks like this:

ic-admin  \
   --nns-url "https://ic0.app" propose-to-update-sns-deploy-whitelist  \
   --secret-key-pem ./sns/identity.pem \
   --added-principals "pheyl-kaaaa-aaaap-aatga-cai"  \
   --proposer "15353467365037692422" \
   --proposal-title "Enable principal pheyl-kaaaa-aaaap-aatga-cai in SNS-W to initiate the generation of an SNS for OpenChat"  \
   --summary "The proposal offers the Hot or Not dApp to the NNS to be turned into a decentralized service by creation of an SNS to govern the Hot or Not dApp canisters.

## Who sent this proposal?

This proposal is sent by Hot or Not development team. Hot or Not is [**a fully featured short-video social media platform**](https://hotornot.wtf/) running on Internet Computer. The project is presents in [**this whitepaper**](https://www.notion.so/Hot-or-Not-Whitepaper-c539179e51f44867979f4372e4635f59).

## What is the purpose of this proposal?

The Hot or Not development team collaborates with the NNS to transform the Hot or Not app into a decentralized service through the establishment of [**a Service Nervous System (SNS) DAO**](https://internetcomputer.org/sns), which serves as the governing body for Hot or Not. The application comprises numerous canisters, and the SNS assumes direct control over the following Hot or Not canisters:

- Website asset canister (vyatz-hqaaa-aaaam-qauea-cai)
- Configuration canister (efsfj-sqaaa-aaaap-qatwa-cai)
- Data backup canister (jwktp-qyaaa-aaaag-abcfa-cai)
- Post Cache canister (y6yjf-jyaaa-aaaal-qbd6q-cai)
- User Index canister(rimrc-piaaa-aaaao-aaljq-cai)

All of the other canisters are in turn controlled by one of the above listed canisters and would thus also be indirectly controlled by the SNS.

If this proposal is approved, the NNS mandates that the necessary steps to create a [**Service Nervous System (SNS) DAO**](https://internetcomputer.org/sns) to govern Hot or Not are taken.

## What is the technical effect of this proposal?

Adoption of the proposal will enable and mandate installation of the required SNS canisters on the SNS subnet. These SNS canisters will be in a pre-decentralization-sale mode with limited capabilities and where tokens cannot be moved until the decentralization sale is completed. Technically, the proposal’s effect is that the cycles wallet with principal ID **pheyl-kaaaa-aaaap-aatga-cai**, which is controlled by Hot or Not, will get the ability to make a call to the SNS wasm modules canister (SNS-W) to install SNS canisters. This privilege is a one-time occurrence, as it will be revoked after the call is made.

## What is this proposal not about / what will be decided in a second, future proposal?

This proposal does not yet include any concrete parameter choices for the Hot or Not SNS. These parameters will be contained in an upcoming second NNS proposal to initiate the Hot or Not decentralization sale and SNS DAO creation and thus can be checked and voted on at that time together with the conditions for the decentralization sale.
"

Can you please clarify the following?

  • Is the formatting on the proposal summary correct and as expected by ic-admin? Since this is an actual proposal there’s significantly more content and formatting with newlines and spaces. Are there specific characters that need to be escaped?
  • The heading that shows up on the NNS/Dashboard is the summary, right? We have assumed as such and created the above
  • We have setup the principal of the local identity that will be submitting the proposal by adding it to to a neuron with the requisite ICP amount. How do we specify it as a parameter in the proposal? It’s --proposer, right?

How do we specify it as a parameter in the proposal? It’s --proposer, right?

You need to pass the PEM file of the key associated with your identity using the flag --secret-key-pem.

And then specify the neuron using --proposer:

        --proposer <PROPOSER>
            The id of the neuron on behalf of which the proposal will be submitted

Regarding proposal formatting: aren’t you able to check it in the NNS frontend dapp in local testing?

This is how we are doing it right now. Like this, right?

You mean by manually editing the scripts inside the docker container?

You mean by manually editing the scripts inside the docker container?

Indeed, if you adjust the title and summary in ic-admin’s invocation in the script sns-testing/deploy_sns.sh, then you’d see the proposal in the NNS frontend dapp (you need to browse “executed proposals” because it’s gonna be executed immediately by default in local testing).

This looks good to me.

1 Like

For anyone seeing this thread,

The --secret-key-pem option needs to be along with --nns-url parameter as it is a global parameter part of the ic-admin CLI and the rest of the parameters come after the propose-to-update-sns-deploy-whitelist for the above to work.

Thank you @lara @mraszyk @Severin for the help. We managed to submit our proposal and it is live here :slight_smile:

3 Likes

@saikatdas0790 As a suggestion: Could you kindly share the final command which we you used in this thread, so that subsequent SNS projects have an example ? Many thanks in advance

@bjoernek Sure. Our final submission looked like this:

ic-admin  \
   --nns-url "https://ic0.app" \
   --secret-key-pem ./sns/identity.pem \
   propose-to-update-sns-deploy-whitelist  \
   --added-principals "pheyl-kaaaa-aaaap-aatga-cai"  \
   --proposer "15353467365037692422" \
   --proposal-title "Enable principal pheyl-kaaaa-aaaap-aatga-cai in SNS-W to initiate the generation of an SNS for Hot or Not"  \
   --summary "The proposal offers the Hot or Not dApp to the NNS to be turned into a decentralized service by creation of an SNS to govern the Hot or Not dApp canisters.

## Who sent this proposal?

This proposal is sent by Hot or Not development team. Hot or Not is [**a fully featured short-video social media platform**](https://hotornot.wtf/) running on Internet Computer. The project is presents in [**this whitepaper**](https://www.notion.so/Hot-or-Not-Whitepaper-c539179e51f44867979f4372e4635f59).

## What is the purpose of this proposal?

The Hot or Not development team collaborates with the NNS to transform the Hot or Not app into a decentralized service through the establishment of [**a Service Nervous System (SNS) DAO**](https://internetcomputer.org/sns), which serves as the governing body for Hot or Not. The application comprises numerous canisters, and the SNS assumes direct control over the following Hot or Not canisters:

- Website asset canister (vyatz-hqaaa-aaaam-qauea-cai)
- Configuration canister (efsfj-sqaaa-aaaap-qatwa-cai)
- Data backup canister (jwktp-qyaaa-aaaag-abcfa-cai)
- Post Cache canister (y6yjf-jyaaa-aaaal-qbd6q-cai)
- User Index canister(rimrc-piaaa-aaaao-aaljq-cai)

All of the other canisters are in turn controlled by one of the above listed canisters and would thus also be indirectly controlled by the SNS.

If this proposal is approved, the NNS mandates that the necessary steps to create a [**Service Nervous System (SNS) DAO**](https://internetcomputer.org/sns) to govern Hot or Not are taken.

## What is the technical effect of this proposal?

Adoption of the proposal will enable and mandate installation of the required SNS canisters on the SNS subnet. These SNS canisters will be in a pre-decentralization-sale mode with limited capabilities and where tokens cannot be moved until the decentralization sale is completed. Technically, the proposal’s effect is that the cycles wallet with principal ID **pheyl-kaaaa-aaaap-aatga-cai**, which is controlled by Hot or Not, will get the ability to make a call to the SNS wasm modules canister (SNS-W) to install SNS canisters. This privilege is a one-time occurrence, as it will be revoked after the call is made.

## What is this proposal not about / what will be decided in a second, future proposal?

This proposal does not yet include any concrete parameter choices for the Hot or Not SNS. These parameters will be contained in an upcoming second NNS proposal to initiate the Hot or Not decentralization sale and SNS DAO creation and thus can be checked and voted on at that time together with the conditions for the decentralization sale.
3 Likes