Seed Round Access

@Claude1 I’ve been writing a tool that might help you out. You can check it out here:

You’ll need to clone the repo and compile it yourself.
This tool is still under works/code review, use it at your own risk. I do not advise staking any neurons with this yet and am not liable if anything goes wrong.
here is the command
you’ll need to export PEM_PATH=<path to pem file> first

icx-nns --sign neuron <id> full-info
icx-nns send message.json

You’ll see a response like so (I’m testing this against a testnet)

Will send message:
  Creation:    2021-06-06 01:47:23 UTC
  Expiration:  2021-06-06 01:52:23 UTC
  Network:     http://[2a00:fb01:400:42:5000:31ff:fe88:4a6c]:8080
  Call type:   query
  Sender:      2x3kc-3n2jw-v3q5h-ngy4b-w2rsb-2ef5e-xxwan-qvhuq-lesp5-zmkjb-bae
  Canister id: rrkah-fqaaa-aaaaa-aaaaq-cai
  Method name: get_full_neuron
  Arg:         [68, 73, 68, 76, 0, 1, 120, 134, 159, 85, 99, 136, 83, 4, 174]

Okay? [y/N]
y
(
  variant {
    17_724 = record {
      23_515 = opt record { 23_515 = 12_539_239_107_753_516_934 };
      79_599_772 = opt principal "2x3kc-3n2jw-v3q5h-ngy4b-w2rsb-2ef5e-xxwan-qvhuq-lesp5-zmkjb-bae";
      349_671_467 = vec {};
      456_924_626 = true;
      852_549_734 = false;
      1_029_637_143 = 0;
      1_257_408_332 = 100_000_000;
      1_392_680_831 = 1_622_941_957;
      2_399_567_118 = 1_622_941_957;
      2_680_861_478 = vec {};
      2_707_029_165 = blob "\9b\5c\a2#\08\dfl\05&\ee-\b2o4^\a7\01\1c\13\f0\89K\99S\d5~Pk\99&\5cF";
      3_084_775_299 = opt variant { 1_620_537_965 = 0 };
      3_407_357_762 = vec {};
      3_439_871_066 = 0;
      3_664_621_355 = opt record {
        1_077_262_001 = blob "\9b\5c\a2#\08\dfl\05&\ee-\b2o4^\a7\01\1c\13\f0\89K\99S\d5~Pk\99&\5cF";
        1_103_886_095 = 100_000_000;
        1_136_829_802 = opt principal "2x3kc-3n2jw-v3q5h-ngy4b-w2rsb-2ef5e-xxwan-qvhuq-lesp5-zmkjb-bae";
        1_213_809_850 = 123;
        1_835_347_746 = vec {};
        3_066_807_170 = 1_622_941_957;
        3_583_743_961 = 5;
      };
    }
  },
)
3 Likes

Hi @prithvi,

Thanks for offering this tool. It looks like a great utility you are building! Unfortunately I don’t think it addresses this situation. The tool looks like it is assuming that the identity is on networked machine, and as @cryptoschindler has pointed out we already know that that scenario works and the data returned is easily decoded by didc. The problem is in airgapped sign/send setup. In that case when you send the get_full_neuron signed message, and once you get the data response (the only known way is the new --status flag), the problem is it comes back in a Certificate format and no one seems to know how to decode the information. I believe @cryptoschindler is looking into this. Once we have a working solution you might be able to put it into your utility tool as well.

1 Like

@Claude1 no that is not the case, it has support for segregated sign and send.
On air gapped machine you’ll do icx-nns --sign neuron <id> full-info which produces a message.json
On a networked machine you’ll do icx-nns send message.json after transferring the json file via usb
The tool also handles the Certificate, and outputs idl as displayed above. I’ll be adding native support for the governance and ledger candid today so that the record/field names will not be serialized like above (removing the need to use didc)

1 Like

Well that sounds amazing. We should then be able to manually decode the Certificate response data with cbor.me and didc somehow correct? Any idea on how to do that? Or is it only possible to do it programmatically? Adding in the governance annotations into the tool will be awesome too. Thanks!

Also, will you also add some installation instructions to the README? Not familiar with Ruby and need to understand how to map main.rs to icx-nns command and install all the packages. Then once I can install properly, I need to figure out how to copy all of those changes over to an airgapped machine that cannot access the package manager.

1 Like

I second Claude’s response. How do we decode that certificate? It seems you are using the candid crate, but I’m not very familiar with Rust so I have no idea what is going on in the ‘Decode’ method you use. Can you shed some light on this @prithvi ? Many thanks!

I’m not able to build this, what Rust version are you using?
getting errors like this

dependency (ic-agent) specification is ambiguous. Only one of `branch`, `tag` or `rev` is allowed.

Hey Claude,
thanks again for the heads up! I wasn’t able to build @prithvi 's tool, but @PaulLiu released something similar just recently. The blog is now updated and you should be able to run get_full_neuron successfully with an airgapped machine.

Let me know if you have any questions!

(you might need to clear you cache to see the latest updates)

1 Like

A response to this would be appreciated.

I’m also not sure about this. Dfinity has previously said they are working on what they call “self custody” which is basically the same thing as hardware wallet support. Right now you cannot use this “self custody” approach with IC dapps like nns.ic0.app unfortunately. But I’m guessing that once they have this figured out we should be able to put seeds into hardware wallets and gain access to nice existing GUIs to manage our neurons in the nns app.

If this is wrong, someone please correct me.

@cryptoschindler Thank you very much for looking into this! I’m looking forward to trying this out soon.

Love watching the token price just tank and seed people who supported the project 4.5 years ago having no ability to access their tokens.

5 Likes

Not even to sell the tokens but to manage them and spawn to compound. Managing 48 neurons from command line plus all the spawned neurons is not practical. Spawning and staking 48 new neurons every time.

I was told the NNS UI team is in charge and it would be possible to manage when hardware wallets are supported.

Who is on the NNS UI team? Can they chime in about hardware wallet support? And what stage they are at?

4 Likes

Hi @PaulLiu , Great tool thank you!

Would you be willing to add the ability to simply upload a message.json file to the tool? So the tool would work with both scenarios: QR scan or uploading a message.json file directly. I would be very grateful if you could add that to the tool as my setup doesn’t work too well with QR codes and I manually copy message.json files. Your tool would work perfectly for this use case as well.

Thank you very much for your consideration.

1 Like

Sure, will work on it this weekend.

1 Like

@Claude1 Turns out it was simpler than I thought, so the app should now take text input in JSON format. Please give it a try. Thanks!

https://p5deo-6aaaa-aaaab-aaaxq-cai.raw.ic0.app/

2 Likes

Hi Paul,

It’s working! Thanks very much. This is such a useful tool.

One small issue is if you don’t give the tool permission to use the camera then it fails and also won’t let you use the text box.

Another more general issue is I wish that IC dapps would work in the Tor browser but they don’t. As it is, I have to route this tool through my VPN, whereas when running from command line it’s much easier to route all commands through torsocks or something like that.

Again, thanks so much for the tool… works great.

1 Like

Thanks for the feedback. Just fixed the problem. So it will switch to text as default if video is denied.

2 Likes

For seed neurons from command line:

how does that maturity value returned from get_full_neuron translate to a percentage ? maturty_e8s_equivalent = 1_892_091_771

how do you get total balance of icp in a neuron?

how do you figure out how much icp is going to be spawned from a neuron before spawning it?

how do you check if a neuron is in a dissolving state or not set to dissolve?

how do you add icp from a spawned neuron to a different pre-existing neuron?

delete an empty neuron?

it seems this was not included in either of the guides

1 Like

how does that maturity value returned from get_full_neuron translate to a percentage ? maturty_e8s_equivalent = 1_892_091_771

it says e8s equivalent, which means that this is already the amount of ICP rewards you accumulated. 1 e8s = 1/100000000 ICP. so divide the number by 100 million to get the amount of ICP

its in cached_neurons_stake_e8s and you can take the account and check its balance direcly using the dashboard.internetcomputer.org

if you run get_neuron_info theres a state key in the return, to decode it check this

send the ICP from the controller account specified in the spawn command to the address of the neuron you want to top up

afaik this happens automatically once the balance is 0

Thanks for the update. :+1: