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)’
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.
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
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.
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?
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.
Hey @jasonzhu thanks for your responses above. I tried voting via quill per the post that you referenced in your earlier reply. The response I got seems different from what I should expect per that post. Is there a way to confirm this worked? I ran this for my first neuron (referenced in my original post) - 281525030204895507. Ideally, can I see this works now on a web UI somewhere to independently confirm?
I believe the process should be similar to what you did to disburse maturity: quill neuron-manage 281525030204895507 --refresh-followers ... > ./refresh-followers.json and then quill send (I would do --dry-run before sending).
for neurons not controlled by an NNS Dapp principal, and you would be able to see information only readable by the neuron owner, without making the neuron public. Not sure what device you use so it’s hard to provide the exact instructions. Perhaps this video would be helpful if you use a Ledger device, but on a high level, you just need to add your NNS Dapp principal as a hotkey of the neuron (quill neuron-manage ${NEURON_ID} --add-hot-key ${YOUR_NNS_DAPP_PRINCIPAL} ... > add-hot-key.json and then quill send. You would need to have some level of trust on the NNS Dapp, of course.
This is the problem - 2vxsx-fae is the anonymous principal, so essentially the quill neuron-manage produced a message signed by the anonymous principal (hence, not authorized). After looking at the quill implementation, I’m not seeing how the command would succeed with the anonymous principal if --pem-file is provided (as opposed to, fail if --pem-file is somehow invalid). Would it be possible that you created a refresh-followers-281525030204895507.json without --pem-file first, and then later used that previous file for sending?
Otherwise, it might be helpful to provide the exact version of quill so we can take a closer look. I also used quill to refresh my own neuron and it worked (I’m using 0.5.3).
Ah, you’re absolutely right. Giving the –pem-file first worked - my bad here.
I’ll do this for all of my neurons. Just to confirm - I should be doing this once every 6 months right? So e.g. if I write a quick script to do this, I need to run this once every 6 months basically?