Seed neuron spawn failures - multiple neurons stuck in Spawning state

I have some seed neurons. I am trying to spawn the rewards into a separate neuron to access my ICP, but into issues.

First neuron:

Parent neuron IDs: 281525030204895507

Spawned neuron IDs: 358429794222158868

The transaction is successful, but I seems like the spawned neuron is in a corrupted state. I even tried to increase dissolve delay to 1 day, but can’t start dissolving.

Tried with a second seed neuron and the exact same issue.

Parent neuron: 685705572931231473

Spawned neuron: 9973304611228297795

It seems like a bug in the seed neurons. Can someone help? @SupportDev

Original error message on console that I saw: NNS error: There isn’t enough maturity to spawn a new neuron due to worst case maturity modulation.

More info: (on the second neuron that I tried):

$ dfx canister --network ic call rrkah-fqaaa-aaaaa-aaaaq-cai get_full_neuron ‘(9973304611228297795:nat64)’

(

variant {

Ok = record {

  id = opt record { id = 9_973_304_611_228_297_795 : nat64 };

  staked_maturity_e8s_equivalent = null;

  controller = opt principal "w6sf3-igbyf-gokg5-mp3hm-r3rxj-ysfkz-hogs6-i64hk-wtszh-yrgse-lae";

  recent_ballots = vec {};

  voting_power_refreshed_timestamp_seconds = opt (1_762_677_301 : nat64);

  kyc_verified = true;

  potential_voting_power = opt (0 : nat64);

  neuron_type = null;

  not_for_profit = false;

  maturity_e8s_equivalent = 33_454_665_363 : nat64;

  deciding_voting_power = opt (0 : nat64);

  cached_neuron_stake_e8s = 0 : nat64;

  created_timestamp_seconds = 1_762_677_301 : nat64;

  auto_stake_maturity = null;

  aging_since_timestamp_seconds = 18_446_744_073_709_551_615 : nat64;

  hot_keys = vec {};

  account = blob "\\c7\\9d\\e7\\c3\\ce\\fc\\56\\fe\\aa\\44\\d7\\dc\\82\\a9\\c9\\3c\\03\\d6\\cb\\e4\\c9\\6b\\19\\0c\\34\\b8\\aa\\9e\\56\\67\\88\\09";

  joined_community_fund_timestamp_seconds = null;

  maturity_disbursements_in_progress = opt vec {};

  dissolve_state = opt variant {

    WhenDissolvedTimestampSeconds = 1_763_282_101 : nat64

  };

  followees = vec {};

  neuron_fees_e8s = 0 : nat64;

  visibility = opt (1 : int32);

  transfer = null;

  known_neuron_data = null;

  spawn_at_timestamp_seconds = opt (1_763_282_101 : nat64);

}

},

)

So seems like maturity_e8s_equivalent is not 0 for some reason, and expecting cached_neuron_stake_e8sto be around 300 ICP.

Rewards are no longer spawned into neurons. The maturity is disbursed directly to an ICP wallet address rather than into a neuron. This behaviour was altered several months back, so may explain the issues you’re having.

Oh damn. I am using quill and dfx on the CLI and neither tool stopped me from spawning a new neuron. It even spawned the neuron with a new id.

I am running this via a .pem file. Any idea how I could access my ICP -

  • Access ICP from the 2 neurons that I already spawned for rewards.
  • Access ICP rewards from the other neurons that have been staking for around 4 years.

It doesn’t look like your spawned neuron has any ICP in it. I suspect the spawn suceeded at the neuron creation stage, but failed to move any maturity into it (just a guess as I’ve not looked at the code).

You should check if any of your maturity has actually moved (it probably hasn’t). @jasonzhu should know more.

Thanks @Lorimer but it seems like maturity was transferred / destroyed somehow?

For the 2 neurons (281525030204895507, 685705572931231473), when I try to disburse maturity, I get the error:
NNS error: Disbursement (0) is too small. After the worst case maturity modulation (-500) the amount should be at least: 100000000 e8s

@jasonzhu can you please help?

@Lorimer @jasonzhu I ran the disburse maturity for a third neuron - 721574941063530135.

quill neuron-manage 721574941063530135 --disburse-maturity --disburse-maturity-to d8ed3d2a3d4b302681ad992afc74ef757e98047b446bc9d87f23f1d85c585ce1 --pem-file ~/.config/dfx/identity/lockandkey/identity.pem > ./disburse-maturity-721574941063530135.json

quill send ./disburse-maturity-721574941063530135.json

and I got a success message

Successfully disbursed 275.87680771 maturity

However, this isn’t showing up in my account d8ed3d2a3d4b302681ad992afc74ef757e98047b446bc9d87f23f1d85c585ce1

Is there a waiting time or something else going on with the seed neurons?

Hi @idontexist, thanks for posting the steps you went through, those are really helpful to show what happened. From those it seems things worked as expected.

TLDR as you probably care most about the maturity in your neurons: there is a 7-day waiting period for both spawned neurons and disbursed maturity. After the 7-day waiting period, spawned neurons should exit the “spawning” state (and available as a dissolved neuron), while the disbursed maturity will arrive at the specified address

State of Spawning

While this is true for neurons controlled by NNS Dapp, it’s not true in general, and more specifically, not true for neurons controlled in other ways. The “spawning” is deprecated, but not removed from the NNS Governance (and thus it should still work correctly). In the NNS Dapp we present the easier way of accessing the maturity, but in other surfaces it’s more challenging to completely remove the spawning without breaking things, and the work to stop supporting spawning hasn’t happened yet.

Documentation

Please check this page (the section “Spawning maturity via the maturity modulation function”) for spawning and this page for disbursing maturity.

How to confirm things working as expected

For spawned neurons, the spawn_at_timestamp_seconds is the time when the neuron exit the “spawning” state. The timestamp shown for 9973304611228297795 seems to be the coming Sunday. At that time, you should see (1) cached_neuron_stake_e8s become ~33ICP (subject to maturity modulation of ±5%), and (2) spawn_at_timestamp_seconds becomes null. At that time you should be able to do quill neuron-manage --disburse ...

For disbursed maturity, you should be able to call

$ dfx canister --network ic call rrkah-fqaaa-aaaaa-aaaaq-cai get_full_neuron ‘(721574941063530135:nat64)’

and see a maturity_disbursements_in_progress field, and the finalize_disbursement_timestamp_seconds inside it should indicate when you should see the the minted ICP.

Hope this helps!

3 Likes

Oh wow thanks so much for the detailed explanation! I think I am all set then - totally missed the 7 day waiting period part. I’ll update after a week how things look then. Really appreciate your help, thanks once again!

A couple of questions if you don’t mind answering -

  • I have a few other seed neurons - is there a recommended way to access their staking rewards i.e. via reward spawning new neurons or direct disbursement to account? Does it matter?
  • I also noticed that my seed neurons aren’t participating in governance, which is very unfortunate. I thought these were automatically voting for ‘Dfinity’ back in Nov ‘21. I just wanted to ask and clarify - is it ok to get them voting now, even if some are awaiting the reward disbursement? And if so, what’s the best way to delegate votes to the Dfinity org or the recommended entity?
  • The seed neurons came with a whole dissolve delay schedule. I want to put them all to 4 years. Is it safe to just do this with the existing seed neurons without dissolving them? Any gotchas at all that I should be aware of?

Thanks again for your help!

I’d say that disbursing maturity is easier. However, we got report that Kraken has some problem handling such transactions and we are actively working with them to resolve this. In the mean time, I’d suggest disbursing to an address owned by your own principal.

You are probably affected by the periodic confirmation feature. This post has more information as well as the “Periodic Confirmation” section on this page.

I don’t see a problem of increasing the dissolve delay to 4 years. You are probably aware of the fact that if the state is not-dissolving, then the dissolve delay will remain 4 years instead of decreasing. Another thing is that the age bonus is lost once you start dissolving.

1 Like