Neuron lifecycle

A neuron is a type of asset managed by the Internet Computer governance canister smart contract. Neurons allow their controllers to participate in the governance of the network by submitting and voting on proposals.

Creating a neuron

Creating a neuron involves 2 steps:

  • Transfer some amount of ICPs from any ledger account to the neuron’s address. Neuron address on the ledger that belongs to the Governance canister smart contract. The caller computes the neuron address from two parts:

    • the principal of the Governance canister

    • the subaccount that is itself a hash of the controller’s principal with an integer nonce. One principal can control multiple neurons by picking different integer nonces for the subaccount computation.

  • Call the claim_or_refresh_neuron_from_account method of the governance canister smart contract. If the call is successful, the payload contains the neuron ID, a numeric identifier of the newly created neuron. The governance canister maintains a mapping between neuron IDs and subaccounts. Most management operations can be performed using either the neuron ID or the subaccount address.

Neuron attributes

A neuron has the following attributes that control its lifecycle and rewards distribution:

Dissolve Delay

is how long it will take a neuron to become "liquid" once it starts dissolving. If the neuron is already dissolving, the delay indicates the amount of time left before the neuron transitions to the DISSOLVED state. The dissolve delay of a newly created neuron is 0. Only neurons with a dissolve delay of at least 15778800 seconds (approx 6 months) can be used to vote on proposals (as of 2021-07-27, the exact delay requirements are subject to change). Once set, the dissolve delay cannot be reduced via management commands.

Dissolve State
NOT_DISSOLVING

Neuron has a fixed dissolve delay and accrues age. This is the default state of a newly created neuron.

DISSOLVING

Neuron’s dissolve delay is decreasing with the passage of time. Once the dissolve delay becomes 0, the neuron transitions to the DISSOLVED state and the staked ICPs can be disbursed.

DISSOLVED

Neuron’s dissolve delay is 0. The neuron holder is free to either disburse the staked ICPs or increase the dissolve delay, which will cause a transition to the NOT_DISSOLVING state.

Age

is the amount of time that passed since the last time the neuron transitioned to the NOT_DISSOLVING state. If the neuron is DISSOLVING, its age is 0.

Maturity

is the total amount of unspent rewards accrued by this neuron. Neuron’s controller can spend maturity in two ways:

  1. Spawn a new neuron with a dissolve delay of seven days and stake equal to the maturity.

  2. Merge maturity into the stake, increasing voting power.

Voting power

is proportional to the amount of staked ICPs. Age and dissolve delay multiplicative bonuses increase the voting power if the neuron is in the NOT_DISSOLVING state.

Rewards

Once a proposal is accepted, all the neurons that voted on that proposal receive rewards in form of a maturity increase. The governance canister smart contract distributes rewards daily. The rewards are proportional to the voting power.

For more information on neuron state transitions and rewards, see Understanding the Internet Computer’s Network Nervous System, Neurons, and ICP Utility Tokens.

State transitions

stateDiagram-v2
    state "Non-dissolving Neuron" as non_dissolving
    state "Dissolving Reward Neuron" as dissolving
    state "Dissolved Reward Neuron" as dissolved
    [*] --> non_dissolving : transfer + claim_or_refresh_neuron_from_account
    non_dissolving --> non_dissolving : increase_dissolve_delay
    non_dissolving --> dissolving : start_dissolving
    dissolving --> non_dissolving : stop_dissolving
    dissolving --> dissolved : passage of time
    dissolved --> non_dissolving: increase_dissolve_delay
    dissolved --> [*] : disburse