TL;DR
DFINITY proposes to support disbursing maturity in NNS similar to SNS, as well as deprecating spawning neurons in favor of disbursing maturity.
Context
In both NNS and SNS, neurons accumulate maturity as voting rewards, and they can be converted to ICPs (with maturity modulation). Below is how the process looks like for NNS/SNS:
Disburse Maturity in SNS
In SNS, converting maturity to ICP is done through disbursing maturity: 7 days after the user “disburses maturity”, new ICPs are minted and sent to the account chosen by the user. The DisburseMaturity command has been supported from the very beginning of SNS as the only option for converting maturity to ICP.
Spawn Neurons in NNS
In NNS, the only way to convert maturity to ICP is through spawning new neurons: 7 days after the user “spawns” a new neuron, the ICP within the spawned neuron becomes available and can be disbursed to any account.
In a typical week, there are about 2400 new neurons created, and among them about 1800 (75%) are spawned neurons. Most of the time, such neurons just become empty after the spawn is finalized (and dissolved) and the user gets the fund out. Therefore, switching from spawning to disbursing maturity will satisfy the use case most of the time, while avoiding leaving behind empty neurons. If the user indeed wants a new neuron, they can still create a new neuron by staking the disbursed ICPs. For those reasons, we believe that disbursing maturity should replace spawning.
Proposed Changes
There are mainly 2 changes in the API in terms of disbursing maturity, similar to SNS:
-
A new manage neuron command will be added, given a percentage and an ICRC1 address, the portion of the maturity (specified by percentage) will be disbursed to the given address after 7 days (subject to maturity modulation, similar to spawning)
- In the NNS Dapp, the command will be available through a “Disburse” button in the “Maturity” section of the neuron page, similar to SNS.
-
When querying full neurons, the client will also get a list of ongoing maturity disbursements.
- In the NNS Dapp, active disbursements of NNS neurons will be viewed through the neuron page in the “Maturity” section of the neuron page, similar to SNS.
Deprecation of Spawning
In order to make sure no clients are broken by this change, we will propose changes in a few areas:
NNS Dapp Controlled Neurons
Soon after the NNS Governance supports disbursing maturity, we will propose changes in the NNS Dapp to replace the “Spawn Neuron” button with “Disburse Maturity”. Note that this does not include hardware-wallet-controlled neurons.
Hardware Wallet Controlled Neurons (Connected to NNS Dapp)
After a new hardware wallet app supports disburse maturity, we will propose some changes in the NNS Dapp to add the disburse maturity button alongside the spawn button. At that time, spawn will always work, while disburse maturity will only work for newer hardware wallet versions. 3 months after that, we will propose to remove the spawn button, and the user would have to upgrade their hardware wallet app in order to disburse maturity.
Hardware Wallet CLI
DFINITY maintains a CLI library for advanced users. Disburse maturity will be added soon after it’s supported by NNS Governance
Other Use Cases
For all other use cases, we plan to allow 4 months of migration time (after NNS Governance fully supports disburse maturity) before removing the spawn command.
Next Steps
Further updates regarding the implementation of disburse maturity will be posted in this thread. As always, feedback is welcome, especially regarding the deprecation timeline of the spawning.