8 year locked neuron missing from neurons tab

I am now wondering if this could be an issue on the governance canister itself. @dralves do you think it’s plausible that the governance canister is mistakenly not returning this neuron when calling the list_neurons endpoint from the frontend?

I don’t see how that could happen, unless the neuron has been disbursed somehow. We will need to dig into the ledger to figure this one out, I think. Problem is that most of the team is going to be out for the next couple of weeks.

Will create an internal ticket to track this.

@dralves Not sure what to tell you. Then the NNS is broken even more than I thought and the worst part is you guys do not seem to believe this is possible.

You can clearly tell the Neuron has ‘not’ been disbursed if you examined any transactions I provided in first post.

→ Missing Neuron Account Internet Computer Network Status clearly shows exact balance of neuron top-ups.

→ Neuron maturity merge
https://dashboard.internetcomputer.org/transaction/5d3e71e53598eccd0b4fff3b3750b10d695a7ac4a693ab24f76f0c510e24521d
image

Ill check back in 2 weeks. Thanks.

This is why I really like having the cli interface direct into the system no web front end that could potentially screw things up (I had an incident where the nns ui had let me send icp to an address that cannot exist which was fixed).

Hang in there I’m sure it will be found!

1 Like

@cuddlesquid I didn’t mean to say that it was not possible or that I don’t believe what you’re saying. I was just mentioning that I can’t see how the code could “hide” this neuron for you. Just because I can’t see it how it could happen right now it doesn’t mean that it’s not actually somehow happening, of course, and investigation is merited.

I can confirm from the logs that you did stake it and merged maturity and topped it up.

Can you share your principal id (in private if you so wish) to help debugging?

4 Likes

Thank you for support friend. :pray:

@dralves I have already exposed my principal id in the videos. Is that bad?

Principal ID: lj7rs-fvi66-gwnzw-vdimf-wwcbk-zikdo-fj5yq-t3f2s-25ku5-zsqzx-eae

Your principal can be exposed if you are comfortable with people identifying your principals actions on the IC via things like ic.rocks. Your principal cannot be used to move your funds or neurons. Worst case is you lose the anonymity (so don’t post your real name :grinning:)

2 Likes

Understood. Thank you @diegop :pray:

1 Like

@cuddlesquid We added some additional logging for us to know definitively if what you’re seeing is an issue with the (frontend) NNS dapp or the (backend) governance canister. Can you please:

  1. Go the neurons tab.
  2. Open the console logs
  3. Make sure that “Verbose” logging is turned on.

image

  1. You should see something like this in the logs:
    image

Click on the array next to Array to expand it. Are there neurons listed there? Can you share a screenshot? You can do so privately or obscure the details if it contains neuron information.

2 Likes

@ielashi Yes, I see two Neuron ids. One of them may be from the very first Neuron I created and disbursed shortly after. Second id may be for the Neuron that I have no control over.

I’ve obscured Neuron ids partially. Is it safe to share Neuron id from verbose log?

1 Like

Fwiw, You can DM @ielashi (via the dev forum) the neuron info if you feel more comfortable with that.

1 Like

@diegop Okay boss, I will do that.

1 Like

@ielashi I did a little of my own investigation. I was wrong, I believe I have created a total of 3 Neurons, disbursing 2 and 3rd one I locked up.

Array is showing 2 Neurons that have been disbursed, there should be a third Neuron id which is the Neuron of 53 ICP locked up for 8 years.

Disbursed Neuron 1: Internet Computer Network Status
Disbursed Neuron 2: Internet Computer Network Status
8 year missing Neuron: Internet Computer Network Status

@ielashi

Disbursed Neuron:

Disbursed Neuron:

Missing Neuron:

Thanks for all the details @cuddlesquid. Given what you’ve shared, I am now quite confident that what we’re seeing here is a bug in the governance canister. Evidence:

  1. I confirmed that the neuron you’re referring to (7fb…cef) belongs to your principal.
  2. The neuron has not been disbursed.
  3. The governance canister’s list_neurons endpoint, which is what is used by the frontend to retrieve your neurons, does not return this specific neuron in the response, but returns the other neurons.

I’ll let the core NNS team take on the investigation from here cc @dralves

PS: @cuddlesquid Your funds are completely safe, so there is no need to worry about value being lost here.

5 Likes

@cuddlesquid I don’t have much more news to report, aside, from what @ielashi mentioned.

  • The neuron does exist (candid details below)
  • Your principal owns the neuron

It seems like the controller principal (yours) was dropped from the index somehow. Did you do any RemoveHotKey operations that you can remember?

Note: Even if we don’t have a bug/fix for this issue before the holidays, rest assured that your funds are fine and still under your principal’s control.

(
  variant {
    Ok = record {
      dissolve_delay_seconds = 251_449_285 : nat64;
      recent_ballots = vec { record { vote = 1 : int32; proposal_id = opt record { id = 35_614 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 35_612 : nat64;};}; record { vote = 2 : int32; proposal_id = opt record { id = 35_611 : nat64;};}; record { vote = 2 : int32; proposal_id = opt record { id = 35_610 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 35_585 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 35_133 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 35_068 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 35_136 : nat64;};}; record { vote = 2 : int32; proposal_id = opt record { id = 35_050 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 35_062 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 35_058 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 35_056 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 35_033 : nat64;};}; record { vote = 2 : int32; proposal_id = opt record { id = 34_887 : nat64;};}; record { vote = 2 : int32; proposal_id = opt record { id = 34_734 : nat64;};}; record { vote = 2 : int32; proposal_id = opt record { id = 34_735 : nat64;};}; record { vote = 2 : int32; proposal_id = opt record { id = 34_662 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 34_629 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 34_626 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 34_596 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 34_595 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 34_583 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 34_473 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 34_471 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 34_452 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 34_440 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 34_438 : nat64;};}; record { vote = 2 : int32; proposal_id = opt record { id = 33_828 : nat64;};}; record { vote = 2 : int32; proposal_id = opt record { id = 33_934 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 33_886 : nat64;};}; record { vote = 2 : int32; proposal_id = opt record { id = 33_731 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 33_735 : nat64;};}; record { vote = 1 : int32; proposal_id = opt record { id = 33_658 : nat64;};};};
      created_timestamp_seconds = 1_638_997_423 : nat64;
      state = 2 : int32;
      stake_e8s = 5_300_208_716 : nat64;
      joined_community_fund_timestamp_seconds = null;
      retrieved_at_timestamp_seconds = 1_640_009_845 : nat64;
      voting_power = 10_579_181_499 : nat64;
      age_seconds = 0 : nat64;
    }
  },
)
3 Likes

Thank you @ielashi
Thank you @dralves

I very much did something with HotKeys. I have added HotKey, I just can not remember If I removed it, I might have removed it maybe at least once and then placed a HotKey again.

Good enough. Thank you. Take your time and happy holidays. @diegop @ielashi @hpeebles @dralves

2 Likes

Hey @cuddlesquid, I hope you’ve enjoyed the holidays :slight_smile:

I believe we identified the issue. It turns out that if you add your own Internet Identity principal as a hotkey to a neuron and then remove it, the neuron will disappear.

The bug is in the governance canister, where it maintains an index mapping principals to their neurons. The flow above inadvertently causes the neuron to be dropped from this index.

We’ll be addressing this issue in two ways:

  1. A temporary stop-gap measure: We’ll expose a command on the NNS dapp that you can run to add yourself as a hotkey to your missing neuron. This is a hack that will cause your neuron to be added to the index again, and your neuron will immediately appear again on the NNS dapp.

  2. The proper fix: The bug will be fixed on the governance canister and the index will be rebuilt. At that point, you (and anyone who has run into this issue) will see their neuron appear again on the NNS dapp, and you can safely remove the hotkey that was added in step 1.

For step 1 we’ll have an update to the NNS dapp by next week at the latest. Step 2 may potentially take longer, I’ll leave it to @dralves to communicate an ETA for that.

Thanks again for your patience and for helping us identify this issue.

6 Likes