Difference between revisions of "How-To: Create an NNS motion proposal"

From Internet Computer Wiki
Jump to: navigation, search
Line 28: Line 28:
 
====1. Create a private/public keypair====  
 
====1. Create a private/public keypair====  
  
1.1 Install the keysmith
+
1.1 Install <code>keysmith</code>
  
 
1.2 Create seed phrase:  
 
1.2 Create seed phrase:  
Line 36: Line 36:
 
</code>
 
</code>
  
1.3 [ ] Create private.pem: $ keysmith private-key -o private.pem
+
1.3 [ ] Create private.pem:  
  
1.4 [ ] Create Ledger account: $ keysmith account -i 0
+
<code>
 +
$ keysmith private-key -o private.pem
 +
</code>
 +
 
 +
1.4 [ ] Derive Ledger account from private key:  
 +
 
 +
<code>
 +
$ keysmith account -i 0
 +
</code>
  
 
====2. Link this private/public keypair to `dfx` so you can use it as an "Identity"====
 
====2. Link this private/public keypair to `dfx` so you can use it as an "Identity"====

Revision as of 22:17, 31 January 2022

This article explains one way to submit NNS motion proposals.

Background

To properly follow what is going on, there are a few high-level points worth highlighting:

Only Neurons can submit NNS proposals

Neurons with at least 1 ICP and 6 months of dissolve delay can submit NNS proposals. So the first step is to create such a neuron.

The NNS Governance Canister accepts motion proposals

The Governance Canister is just a canister like any other, so it has a Candid file, it accepts messages, etc... This article describes a way where you can have your local computer send a message to the governance canister (signed on behalf of a neuron) that contains a motion proposal.

One-time setup

Install dfx

1. Navigate to | smartcontracts.org 2. Install `dfx` via

$ sh -ci "$(curl -fsSL https://smartcontracts.org/install.sh)"

Create a neuron

1. Create a private/public keypair

1.1 Install keysmith

1.2 Create seed phrase:

$ keysmith generate -o seed.txt

1.3 [ ] Create private.pem:

$ keysmith private-key -o private.pem

1.4 [ ] Derive Ledger account from private key:

$ keysmith account -i 0

2. Link this private/public keypair to `dfx` so you can use it as an "Identity"

3. Send 1.0001 ICP to the "account ID" represented by the public/private keypair (now called the "identity")

4. Now that the account has the required ICP, spawn a neuron

5. Increase neuron dissolve to at least 6 months

How to send a proposal

Craft a proposal in markdown

Send proposal via dfx

Check dashboard to see proposal was successful