Neptune-Crypto/neptune-core

Multi-Coin Hardware Wallet Support

Open

#362 opened on Feb 4, 2025

View on GitHub
 (2 comments) (0 reactions) (0 assignees)Rust (45 forks)auto 404
dependenciesenhancementgood first issuequestion

Repository metrics

Stars
 (110 stars)
PR merge metrics
 (PR metrics pending)

Description

If you want to use an external, multi-coin hardware wallet to safeguard your Neptune coins, then you quickly run into problems. Here is a probably incomplete and possibly inaccurate summary.

  • Basically all wallets support BIP-32 in some or other capacity and this simply does not apply to Neptune because we don't use elliptic curves.
  • Users may want to use the same 24 words they have already backed up for other cryptocurrencies to backup the Neptune Cash holdings also. However, neptune-cli only supports 18-word seed phrases, and it will likely fail if you omit the last 6 words. Or alternatively, users who are appropriately distrustful of their machines may want to generate the seed on a secure hardware device and then copy it over by first exporting it as 24 BIP-39 words. These hardware devices rarely support the non-standard option of 18 words.
  • BIP-39 has optional passphrases, which we do not support. In fact, supporting optional passphrases would mean either importing SHA2-512 or breaking the standard and use Tip5 instead. I tend to prefer the former option as the relevant mechanics take place before conversion to BFieldElements.
  • There is a standard for deriving a coin-specific master seed from a multi-coin übermaster seed: BIP-44/SLIP-44. Multi-coin hardware wallets generally support this standard and supply the coin-specific master seed to the wallet software.

If that summary is accurate, I derive the following tasks:

  • support importing 24-word BIP-39 seed phrases
  • support BIP-39 passwords
  • register a SLIP-44 derivation number
  • support import-and-derive-key via SLIP-44 derivation path

Contributor guide