1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-22 15:38:11 +00:00
trezor-firmware/docs/coins
2018-08-29 15:54:48 +02:00
..
bitcoin-path-check.svg docs: list of used derivation paths 2018-08-28 16:12:13 +02:00
README.md docs: coin paths modifications 2018-08-29 15:54:48 +02:00

BIP-44 derivation paths

Each coin uses BIP-44 derivation path scheme. If the coin does not support normal derivation (because the underlying curve does not support it for example) we're using Stellar's SEP-0005. In a nutshell, these paths are derived using SLIP-0010 and have only three-part BIP-44 path 44'/c'/a'.

List of used derivation paths

coin curve getPublicKey getAddress sign derivation note
Bitcoin secp256k 44'/0'/a' 44'/0'/a'/y/i 44'/0'/a'/y/i BIP-32 4
Ethereum secp256k 44'/60'/a' 44'/60'/a'/0/i 44'/60'/a'/0/i BIP-32
Ripple secp256k - 44'/144'/a'/0/i 44'/144'/a'/0/i BIP-32
Stellar ed25519 - 44'/148'/a' 44'/148'/a' SLIP-0010
Cardano ed25519 44'/1815'/a' 44'/1815'/a'/0/i 44'/1815'/a'/0/i Cardano's own1
Lisk ed25519 44'/134'/a' 44'/134'/a' 44'/134'/a' SLIP-0010
NEM ed25519 - 44'/43'/a' 44'/43'/a' SLIP-0010 2
Monero ed25519 44'/128'/a'3 44'/128'/a' 44'/128'/a' SLIP-0010

Paths that do not conform to this table are allowed, but user needs to confirm a warning on Trezor. For getPublicKey we do not check if the path is followed by other non-hardened items (anyone can derive those anyway). This is beneficial for Ethereum and its MEW compatibility, which sends 44'/60'/a'/0 for getPublicKey.

Notes

  1. Which allows normal derivation on ed25519.

  2. NEM's path should be 44'/60'/a' as per SEP-0005, but we allow 44'/60'/a'/0'/0' as well for compatibility reasons with NanoWallet.

  3. Actually it is GetWatchKey for Monero.

  4. It is a bit more complicated for Bitcoin-like coins. The following diagram shows how path should be validated for Bitcoin-like coins:

bitcoin-path-check