So after i’ve read through all documentation on how to configure an SNS and deploy it locally, with testflight and eventually mainnet i thought i figured it all out. But when going for the real deal i still ran into some issues.
The main challenges i faced
- The team members with a majority vote that have neurons specified in the
developer
section on the yaml file want their neurons dropped to their NNS principal - Between the SNS mainnet deployment and the swap (decentralized sale) you need to register your canisters, ideally with a majority so you don’t have to wait before its accepted
When you are done with setting up the yaml
file, you can deploy your SNS to mainnet with a CLI tool, which also distributes the initial neurons specified in the yaml
and puts the SNS in a “centralized state” where only the specified neurons have voting power.
After this step, you need to add the deployed SNS root canister as a controller to the canisters you want SNS controlled and create a proposal to register them with the SNS which can be done with a CLI tool called quill
After an initial discussion with the Dfinity team on how to proceed with these proposals with an ideally majority vote so we didn’t have to wait there were 2 options;
- Add a local identity as a controller to the the majority neuron
- Put out a proposal with a non-majority neuron and wait for the time specified in
initial_voting_period_seconds
to pass (minimum 1 day)
Regarding the first point, i wanted to know if it was possible to handover / add a controller to a neuron that has a dissolve delay and vesting period, so that after the initial voting i could assign it to a NNS identity. According to Dfinity this was possible.
After an internal team discussion we decided to go with the second option and put out the proposal and let it run for a day to be accepted. (so we thought)
So after making some minor changes to the yaml
file and making my personal neuron(s) controlled by a local identity (to use with quill) and the rest of the developer neurons controlled by their specified NNS principals, i put out the proposal to register the canisters with the SNS.
only to find out that…
For a proposal to pass you need at least 3% of the votes of all available voting power, and i owned ~1.4%. And because the other developer neurons are not accessible by the team members our SNS is deadlocked.
To fix our deadlocked SNS we are proposing to make a change to the NNS dapp where we could access the NNS principal controlled neurons and proposals so we are able to cast a vote to at least get over the 3% of needed votes to continue the SNS process.
For example through an url change like this;
https://nns.ic0.app/neurons/?u=<sns-root-canister-id>
https://nns.ic0.app/proposal/?u=<sns-root-canister-id>