Subaccount for Ledger Wallet

Is it possible to create a subaccount for a Ledger Hardware Wallet that is connected to the NNS? If not, why was this feature not added and can we please add it asap?

@diegop @Jan @timo

The app on the Ledger device supports it already, and it is also supported by the CLI tooling. It is planned to add support in the NNS frontend dapp as well, but this is delayed due to the current rewrite that the team has taken on.


Thanks for the quick response, is there documentation or a guide around how to do that right now?

Apps for Ledger support-

Ledger Compatible Services

  • Ledger Live More details. Wallet.
  • MyEtherWallet More details. Wallet.
  • Metamask More details. Wallet.
  • MyCrypto More details. Wallet.
  • Binance DEX More details. DEX.
  • IDEX More details. DEX
  • Kyber Network More details. Swap.
  • Paradex More details. DEX.
    Accounts in Ledger Live have separated balances to provide flexibility in managing your crypto assets. You can add multiple accounts for each crypto asset and give them a name for different purposes (e.g. trading, checking, savings, etc.).

Rachel Gomez

At this point, there is no documentation on that CLI tool linked above beyond the help messages you get when you invoke it – it is not (yet) an officially supported tool.

But is it safe to use already? Can you use it with a significant amount of ICP at stake or is this something you wouldn’t advise doing?

Also I don’t see an option in the CLI to change the address :confused:

Sorry – that was a misunderstanding on my side. I thought we had added that already – but you’re right in that it is not there. Apologies for that.

It would be relatively easy to add it on the CLI, though. It may take longer for it to be added to the NNS frontend dapp.

1 Like

Can you push this up the agenda a bit? Right now I have to buy another ledger if I want a different address, which becomes a bit expensive in the long run :smiley:

This PR adds support for specifying a subaccount in the CLI. I hope it helps :slight_smile:

1 Like

very cool, thank you! looking forward to support on the frontend as well :tada:

Couple of questions after testing this for a bit:

  1. Why do I get a new principal when calling ./ic-hardware-wallet-cli --subaccount 1 info in comparison to ./ic-hardware-wallet-cli --subaccount 0 info. I was expecting to just getting a new derived subaccount from my prinicpal which is fixed. I think this is not the correct way to get a subaccount, you probably derive a new key from the ledger seed instead and then again return the balance for account 0 of that principal. This is a very nice feature as well, but it should have a different name, maybe --principal? And then you should be able to specify both options, e.g. --principal 2 --subaccount 3 would give me the the subaccount 3 of the derived principal 2.
  2. It seems like the --subaccount option has no impact on the icp command, it doesn’t matter wether I call ./ic-hardware-wallet-cli --subaccount 0 icp balance or ./ic-hardware-wallet-cli --subaccount 1 icp balance, the address stays the same.

I implemented a fix for this. I added the same restriction you added for deriving new principals, so right now only subaccounts 0-255 can be used. idk if you feel like this restrictions is necessary for subaccounts, it’s up to you :slight_smile:

1 Like

@cryptoschindler Thanks for your comments and for the fix. You are correct on both accounts (no pun intended :slight_smile:) . My PR derived new principals rather than new subaccounts. I’ll be taking a looking at the PR and we can continue the conversation on Github.

1 Like