How to Stake ICP Tokens and Earn Rewards Using the NNS Front-End Dapp

A guide for staking ICP utility tokens within the Network Nervous System and voting on Internet Computer governance proposals.

DFINITY
The Internet Computer Review
10 min readApr 29, 2022

--

The Internet Computer blockchain’s evolution is decided by its stakeholders through voting. The Network Nervous System (NNS) is the open algorithmic system that governs the Internet Computer. Anyone can participate in the NNS by staking ICP utility tokens within a special account called a “neuron,” which receives rewards by voting on proposals submitted to the NNS. Neurons can submit proposals and decide to adopt or reject them.

The NNS allows the Internet Computer to be governed in an open, decentralized, and secure manner. It has complete control over all aspects of the network, such as upgrading the Internet Computer Protocol, onboarding additional node machines, and creating new subnets to increase the blockchain’s capacity.

Staking ICP tokens on the Internet Computer is a safe and secure way to earn rewards by voting on proposals that determine how the Internet Computer operates. Fortunately, you can start small with 1 ICP token and get a feel for the system before staking larger amounts. Neuron owners can vote actively, or they can set their neuron to automatically follow the votes of other neurons in a form of liquid democracy.

**For the most current estimated annualized voting rewards, refer to the Internet Computer dashboard’s Governance page.**

This is a guide to help you start earning voting rewards in less than 5 minutes — though please note that it may take time before rewards can be collected, due to minimum distribution requirements. What you stake is always yours; the only question is how long you’re willing to commit those tokens in exchange for the right to vote and earn corresponding rewards.

The guide covers the following basic processes:

  1. Transferring ICP to the NNS front-end dapp
  2. Staking ICP via the NNS dapp
  3. Voting on proposals
  4. Spawning reward neurons
  5. Disbursing dissolved neurons into an account

TL;DR: You can get started staking ICP tokens in less than 60 seconds, as demonstrated by this community-sourced video:

A quick staking tutorial produced by IC community member ICP Jesse.

Transferring ICP tokens to the NNS front-end dapp

On a networked smartphone or networked computer, do the following:

1. Log in to the NNS dapp (https://nns.ic0.app/)

2. Authenticate with Internet Identity

Create an Identity Anchor using Internet Identity if you do not already have one. Use your Identity Anchor and an associated device to authenticate into the NNS dapp.

See: How to use Internet Identity

3. Add multiple devices to your Internet Identity

If you only have a single device tied to your Internet Identity and you lose that device, you lose all access to that Identity Anchor and its associated neuron and/or ICP tokens. To help ensure that you maintain access, you should add multiple devices in case one of them malfunctions or is otherwise lost.

4. Send ICP to your unique account

Navigate to the “ICP” tab within the NNS dapp.

The account (or address) should look something like this:

723cd441238da744a097c3a20f8f4050d8355afb46fe12a1428a63996c37d918

You would use a number like this, as shown in the NNS dapp, as a destination address to transfer ICP tokens from a wallet or any exchange where ICP tokens are available, such as Coinbase, Binance, and many others.

Staking ICP tokens using the NNS dapp:

Staking is the act of locking ICP within a neuron with a dissolve delay. Each neuron has its own identifier, and several attributes relating to its stake. These include:

  • the length of time it is locked for (the “dissolve delay”);
  • whether it is currently dissolving toward liquidity;
  • and how much reward it has accrued as a result of voting on proposals (the “maturity”).

To create a neuron, you must lock up some number of ICP tokens for a period of time. The minimum stake required to create a neuron is 1 ICP. You can configure the period of time the stake is locked from six months up to a maximum of eight years.

NOTE: Start with staking 1 ICP to get the hang of it. You can repeat these steps and start over whenever you’d like. Multiple neurons can also later be merged; read more about that here.

1. Open a browser and navigate to the NNS dapp.

2. Use Internet Identity to authenticate to the NNS dapp.

3. Click the “Neurons” tab, then click “Stake Neuron.”

4. Type the number of ICP tokens to stake, then click “Create.”

5. Set the dissolve delay for the neuron to control the length of time the stake is locked, then click “Update Delay.”

6. Click “Yes, I’m sure” to confirm the lock-up period, then close the window to review the newly created neuron.

7. Your new neuron will appear on the Internet Computer Dashboard like this:

Voting on NNS proposals:

Once a neuron is locked with a minimum dissolve delay of six months, it gains the ability to submit proposals as well as vote on them through the NNS dapp. Voting in turn generates voting rewards, based on how active a neuron is in voting on proposals. The NNS mints a fixed number of voting rewards each day, and these rewards are apportioned to the neurons that voted that day. If you vote on every open proposal, you gain the maximum reward.

Voting can be done manually or by “following” other neurons, which causes a selected neuron to automatically register the same vote as the majority of the neurons that it follows.

To manually vote on proposals:

1. Open a browser and navigate to the NNS dapp.

2. Use Internet Identity to authenticate to the NNS dapp.

3. Click the “Voting” tab.
You can click any of the proposals listed to view information about the proposal, including a brief description of the proposal, a link for viewing additional information about the proposal, the number of votes that were cast to adopt or reject the proposal, and the votes cast by your neurons.

4. Use the Topics, Reward Status, and Proposal Status filters to control the list of proposals displayed.
For example, open the Topics list to see if there are any proposal topics that you want to include in the proposal list that are not currently displayed and open the Proposal Status to verify that you are viewing all open proposals.

5. Click any “Open” proposal to see its details and the voting power for the neurons associated with your identity.

6. Select the neuron identifiers with voting power that you want to use to cast your vote.

7. Click “Adopt” or “Reject” to cast your vote.

To follow other neurons for voting:

Any neuron can follow any neuron. For neuron A (which you control) to follow neuron B, neuron A must be controlled by the NNS dapp or have the NNS dapp added as a hotkey.

1. Select your neuron.
Navigate to your selected neuron in the NNS dapp.

2. Click “Edit Followees.”

3. Select a topic.
Once you select a topic, you can add the neuron ID that you want your neuron to follow for voting on that topic.

4. You can update your neuron followee selections at any time.

Read more: Maximizing Voting and NNS Rewards

Spawning reward neurons

Maturity represents the voting rewards accumulated in a neuron. As you vote on proposals — either directly or by following the votes of other neurons — the maturity associated with your neuron increases, which in turn increases the rewards you earn for participating in governance. After first creating your neuron, it may take 1–2 days to see maturity increase.

Want to maximize your NNS voting power and rewards? Staking maturity is now live in the NNS dapp. Learn more on the Internet Computer Wiki.

If you wish to liquidate rewards you earn from the neuron, you can “spawn” maturity into a reward neuron, which mints the parent neuron’s maturity and moves it into the stake of a new neuron. You can spawn a new neuron when the maturity for a locked stake reaches a minimum threshold of one ICP. For example, in order for a neuron that contains 100 ICP tokens to reach the minimum threshold for spawning, its maturity would need to be greater than one percent. If your neuron has 20 ICP tokens and has 10 percent maturity, you can spawn a reward neuron with 2 ICP tokens.

The spawn operation creates a new neuron that locks a new balance of ICP tokens on the ledger. After you spawn a new neuron from an existing neuron, the maturity for the existing neuron falls to zero.

To spawn new neurons from an existing neuron:

1. Open a browser and navigate to the NNS dapp.

2. Use Internet Identity to authenticate to the NNS dapp.

3. Click “Neurons,” then click the neuron that has reached the minimum maturity required to spawn a new neuron.

4. Click “Spawn Neuron.”

Keep in mind that the dissolve delay for newly-spawned neurons is one day, giving you the option to collect value from the ICP tokens by unlocking them or to increase the dissolve delay to collect additional voting rewards.

Disbursing dissolved neurons into an account

When the dissolve delay timer for a neuron reaches zero, you can disburse the neuron’s stake and transfer its locked ICP token balance to the ledger account you specify. After you take this step, the neuron identifier and its ledger history are permanently removed from the governance canister.

Note: It takes seven days to dissolve and disburse a newly spawned neuron, which you can initiate by clicking “Start Dissolve.”

To disburse a neuron and return its ICP tokens:

1. Open a browser and navigate to the NNS dapp.

2. Use Internet Identity to authenticate to the NNS dapp.

3. Click “Neurons,” then click Unlocked neuron that has reach the ended of its dissolve delay period. For example:

4. Click “Disburse.”

5. Type an address or select an account to receive the ICP tokens.

6. Verify the transaction information, then click “Confirm and Send.” For example, check that the destination address matches the intended address:

9. Verify the completed transaction, then click “Close.”

Appendix

Voting Power

The voting power of a locked neuron is determined by several factors:

  • Principally, by its stake. 1 ICP = the power of 1 vote.
  • Next, by its lock up duration, or dissolve delay. 6 months grants a 1.06x voting power bonus, and 8 years grants 2x. All other durations scale linearly between.
  • Lastly, by its age, or length of time spent locked up without dissolving. 4 years grants a 1.25x bonus, multiplicative with any other bonuses. All other durations between 0 seconds and 4 years scale linearly between.

This means that the maximum voting power, of 2.5 votes per ICP staked, is only achievable by locking up your neuron for 8 years, and leaving it in that locked up state for 4 years. At that time you will have the most voting power for the stake committed.

Maturity

Each day, the network rewards participants by allocating to every voting neuron a portion of the total reward, based both on its voting power at the time proposals were made, and the number of proposals it voted on. This increases a neuron’s maturity.

For those who wish to compound the gains in their neuron, the most natural activity is to “merge maturity” at intervals, which has the effect of minting the neuron’s maturity and adding that minted amount back into the neuron’s stake. If you wish to liquidate rewards you earn from the neuron, you can “spawn” maturity into a reward neuron, which mints the parent neuron’s maturity and moves it into the stake of a new neuron. It should be noted that if you do neither, and leave those gains in the form of maturity, it will not add to the minted total of ICP nor contribute to your voting power.

____

Start building at smartcontracts.org and join the developer community at forum.dfinity.org.

--

--

DFINITY
The Internet Computer Review

The Internet Computer is a revolutionary blockchain that hosts unlimited data and computation on-chain. Build scalable Web3 dapps, DeFi, games, and more.