1
0
mirror of https://github.com/bitcoin/bips.git synced 2026-10-19 19:29:18 +00:00

bip-138 document common derivation paths to try automatically

This commit is contained in:
pythcoiner
2026-07-14 22:49:24 -04:00
parent 1358003bc8
commit fb52eaab03

View File

@@ -206,11 +206,43 @@ Note: the derivation-path vector should not contain duplicates.
Derivation paths are optional; they can be useful to simplify the recovery process
if one has used a non-common derivation path to derive his key.[^derivation-optional]
All implementations that can fetch xpubs from a signing device SHOULD try the following
common paths automatically:
- `m/44h/<coin>h/{0..9}h`
- `m/49h/<coin>h/{0..9}h`
- `m/84h/<coin>h/{0..9}h`
- `m/86h/<coin>h/{0..9}h`
- `m/87h/<coin>h/{0..9}h`
- `m/48h/<coin>h/{0..9}h/1h`
- `m/48h/<coin>h/{0..9}h/2h`
`<coin>` is the BIP44 coin type of the network being recovered: `0` for mainnet
and `1` for test networks. `{0..9}h` covers accounts 0 through 9.
Some signing devices can fail or require confirmation when fetching xpubs for
some of these paths. This list is not exhaustive: an implementation MAY treat a
path as allowed to fail for any device it supports, in particular
`m/87h/<coin>h/{0..9}h`, which is widely under-supported. Implementations SHOULD
at least classify these:[^common-derivation-paths]
- BitBox02: `m/44h/<coin>h/{0..9}h`, `m/87h/<coin>h/{0..9}h`
- Ledger: `m/87h/<coin>h/{0..9}h`
If fetching an xpub for one of these common paths fails or times out,
implementations SHOULD warn the user.
[^derivation-optional]: **Why are derivation paths optional?**
When standard derivation paths are used, they are easily discoverable, making
them straightforward to brute-force. Omitting them enhances privacy by reducing
the information shared publicly about the descriptor scheme.
[^common-derivation-paths]: **Why this restricted list?**
The list covers common account paths for the network being recovered, accounts 0
through 9. Some signing devices reject or display some of these paths before
exporting an xpub, so implementations should treat the listed paths for that
device as optional rather than aborting recovery.
`DERIVATION_PATH` follows this format:
`COUNT`