nvk / walletsrecovery.org

Information about wallet defaults for external recovery
https://walletsrecovery.org/
116 stars 97 forks source link

Wallets Recovery [Beta]

Giving users their seed phrase is not enough.

While great advances have been made in interoperability and recoverability, developers across the industry continue to build wallets that either:

This chart is meant to gather information about wallet defaults for external recovery. Wallets come and go, information gets lost, and users are left with tears. Responsible wallet developers document external recovery. Users should not have to dig through the source code to figure out the Derivation Paths or Redeem Scripts.

If we went to your website and couldn't find it => ☠️☠️☠️ [EXTERNAL RECOVERY NOT DOCUMENTED].

This list is not an endorsement of the security or the quality of any of the wallets.

Status Hardware Wallets Supported Paths BIP39 Pass BIP174 PSBT Note
AirGap Vault↗︎ m/44'|84'/0'/0' + Custom Optional Yes Docs
⚠️👁🧐 Arculus↗︎ m/0' Optional No Docs
✅😵👁🚸 BitBox01↗︎ m/44'|49'|84'/0'/0' Required No Docs, Recovery Tool
✅👁 BitBox02↗︎ m/48'|49'|84'/0'/0' Optional No Docs, Recovery tool
⚠️🧐 CoboVault↗︎ m/49'/0'/0' Optional No Docs, [EXTERNAL RECOVERY NOT DOCUMENTED]
✅🧐 Jade↗︎ Single signer: m/49'/0'/0'|m/84'/0'/0' + Custom
Multisig: m/48'/0'/0'/2'|m/48'/0'/0'/1' + Custom
Optional Yes Docs, Xpub
✅🧐 CoboVault with BTC only firmware ↗︎ m/44'|48'|84'/0'/0' Optional Yes Docs, Integration Guide
✅😵 ColdCard Mk1↗︎ m/44'|48'|49'|84'/0'/0' + Custom Optional Yes Docs
✅😵 ColdCard Mk2↗︎ m/44'|48'|84'/0'/0' + Custom Optional Yes Docs
ColdCard Mk3↗︎ m/44'|48'|84'/0'/0' + Custom + P2TR Optional Yes Docs
ColdCard Mk4↗︎ m/44'|48'|84'/0'/0' + Custom + P2TR Optional Yes Docs
ColdCard Q↗︎ m/44'|48'|84'/0'/0' + Custom + P2TR Optional Yes Docs
✅👁 CoolWallet S↗︎ m/44'/0'/0' (P2SH-Segwit account on P2PKH path) No No BIP39 Seed words represented as numbers... Conversion Map, Docs
✅👁 Ledger Nano S↗︎ m/49'|84'/0'/0' Optional No Docs
✅👁 Ledger Nano X↗︎ m/49'|84'/0'/0' Optional No Docs
✅🧐 Passport↗︎ m/84'/0'/0'|m/48'/0'/0'/2'|Post Mix: m/84'/0'/2147483646' Optional Yes Docs
✅🧐 SeedSigner↗︎ m/84'/0'/0'|m/48'/0'/0'/2' Optional Yes Docs
✅🚸👁 Trezor One↗︎ m/44'|49'|84'/0'/0' Optional No Docs
✅🚸👁 Trezor Model T↗︎ m/44'|49'|84'/0'/0' Optional No Docs
✅🚸👁 KeepKey↗︎ m/44'/0'/0' Optional No Docs, xPub, Compatible Wallets
⚠️🧐 KoinKeep↗︎ m/44'/0'/1' No No Used for multisig mode, both master key and device keys, [EXTERNAL RECOVERY NOT DOCUMENTED]
✅🧐 Krux↗︎ m/84'/0'/0'|m/48'/0'/0'/2' Optional Yes Docs
Opendime↗︎ WIF N/A N/A Docs, Archive
✅🚸👁 Prokey Optimum↗︎ m/44'|49'|84'/0'/0' Optional No Docs
Status Software Wallet Path and/or Script BIP39 Pass WIF Support BIP174 PSBT Note
✅👁⑂ AirGap Wallet↗︎ m/44'|84'/0'/0' + Custom Optional No Yes Docs
Atomic Wallet↗︎ m/44'/0'/0'/0/0 (Single Address Wallet) No No No Non-Standard derivation path for non-BTC coins, [EXTERNAL RECOVERY NOT DOCUMENTED].
️⚠️ Bitcoin Core↗︎ m/0'/0' N/A Yes WIP Github Issue
✅👁⑂ Bitcoin Wallet app↗︎ BIP32 non 44 Compatible No Docs, Archive
️⚠️ Bisq↗︎ m/44'/0'/0'|44'/0'/1' N/A No Github Issue. SegWit on 44 deriv path, account 1.
⚠️ Bither↗︎ m/44'|49'/0'/0' No [EXTERNAL RECOVERY NOT DOCUMENTED]
✅👁⑂ Blockchain.com↗︎ m/44'/0'/n' No Docs, xPub
✅👁⑂ Blockstream Green (GreenAddress)↗︎ Single signer: m/44'|m/49'|84'/0'/0' Multisig: Custom 2-of-2 Script Optional (on restore) Yes No Apps, Docs, Recovery tool for multisig
✅👁⑂ BlueWallet↗︎ Single signer: m/44'|m/49'|84'/0'/0' Multisig: m/48'/0'/0'/2' N/A Yes Yes Docs, Docs 2, Archive, Features
️⚠️👁⑂ BRD (Bread Wallet)↗︎ m/0' N/A Yes No Github Issue, archive of Bitcoin talk, Reddit Post
⚠️👁⑂ BTC.com app↗︎ Multisig: m/0' No Unofficial Docs
⚠️👁 Casa↗︎ m/49/0/X (X increments with each key rotation) No Unofficial Docs
✅👁⑂ Coin Wallet↗︎ m/44'|49'|84'/0'/0' Yes Yes No Docs
✅👁⑂ Coinomi↗︎ m/44'|49'|84'/0'/0' Yes Yes No Export, Import
✅😵👁⑂ Copay↗︎ Single Signer: ≥ v1.2 m/44/0'/X' (X increments with each wallet addition) Multisig: < v1.2 m/45'/2147483647/0/x m/45'/2147483647/1/y ≥ v1.2 m/44/0'/0' ≥ v1.5 m/48'/0'/0'/1' m/48'/0'/0'/2' Optional Yes No Docs, Recovery tool, ❌Endangered users by misrepresenting Bitcoin, SegWit on 44 deriv path
⚠️👁⑂ DropBit↗︎ New Wallets: m/84'/0'/0' Old Wallets: m/49'/0'/0' No No No
✅👁⑂ Edge Wallet↗︎ m/44'|49'/0'/0' No Docs
✅👁⑂ Electrum↗︎ Single Signer: m/|44'|49'|84'/0'/0' Multisig: m/45'/0/0/0 m/48'/0'/0'/1' m/48'/0'/0'/2' Does not use BIP39 seed phrases but can import them Optional Yes Yes Docs
✅👁⑂ Exodus↗︎ m/44'|84'/0'/0' Yes No Docs
FullyNoded↗︎ m/84'/0'/0' However can be used to import/recover any wallet with any derivation, single sig and multisig Yes Yes Yes Recovery Docs
✅👁⑂ Hodl Wallet↗︎ m/0' N/A Yes No Docs iOS, Docs Android
⚠️😵 Jaxx Liberty↗︎ m/44'/0'/0' No [EXTERNAL RECOVERY NOT DOCUMENTED]
JoinMarket↗︎ BIP 84 m/84'/0'/n' Optional Yes Partial Docs
✅😵☠️ JoinMarket (legacy)↗︎ m/0 BIP32 non 44 Compatible No Yes No Docs
✅👁⑂ Ledger Live↗︎ m/44'|49'/0'/0' No Docs
Luxstack↗︎ m/0' [EXTERNAL RECOVERY NOT DOCUMENTED]
✅👁⑂ KeepKey Client↗︎ m/44'/0'/0' Optional No Docs, xPub, Compatible Wallets
⚠️ KoinKeep↗︎ m/44'/0'/0'|m/44'/n'/0' (n increments with each new account created) No No No [EXTERNAL RECOVERY NOT DOCUMENTED]
⚠👁⑂ Multibit HD↗︎ m/0' N/A No Github Issue
✅👁⑂ Mycelium for Android↗︎ m/44'|49'|84'/0'/n' Optional (on restore) Yes No Github Issue
✅👁⑂ Mycelium for iPhone↗︎ m/44'/0'/n' Optional (on restore) Yes No
nthKey ↗︎ m/48'/0'/0'/2'/{0-1}/* No No Yes Docs, multisig only
OpenBazaar↗︎ m/44'/0'|1'|133'|145'/0' No Docs
⚠️ Pine↗︎ m/49'/0'/0' No No No [EXTERNAL RECOVERY NOT DOCUMENTED]
️👁⑂ Relai↗︎ m/84'/0'/0'/0/0
Wallets initiated with app version < 1.2 (until 2021) may also have funds here: m/49'/0'/0'/0/0 or m/44'/0'/0'
No No No Docs
⚠️👁⑂ Rise Wallet↗︎ m/49'/0'/0' No [EXTERNAL RECOVERY NOT DOCUMENTED]
Samourai↗︎ Deposit: m/44'|49'|84'|47'/0'/0'Bad Bank: m/84'/0'/2147483644'Pre Mix: m/84'/0'/2147483645'Post Mix: m/84'/0'/2147483646'Ricochet: m/44'|49'|84'/0'/2147483647' Required Yes WIP Docs, BIPs Supported
Sparrow↗︎ Deposit (Single Signer): m/44'|49'|84'|47'/0'/0'Bad Bank: m/84'/0'/2147483644'Pre Mix: m/84'/0'/2147483645'Post Mix: m/84'/0'/2147483646' Multisig: m/45' m/48'/0'/0'/1' m/48'/0'/0'/2' Yes Yes Yes
Specter Desktop↗︎ Single Signer: m/49'/0'/0' m/84'/0'/0' Multisig: m/48'/0'/0'/1' m/48'/0'/0'/2' Optional No Yes Coming soon...
✅👁⑂ Trezor Web Wallet↗︎ m/44'|49'/0'/0' Optional No Docs
✅👁⑂ Trust Wallet↗︎ m/84'/0'/0'/0/0 Yes No No Docs 2 definition
✅👁⑂ Unchained↗︎ m/45'/0'/x'/y
The x' account-level derivation path can be custom set by user, and the y depth iterates based on number of Unchained products used within an account (key used in multiple multisig vaults or loans). A wallet configuration file is also provided to all clients.
No Docs, Caravan for multisig wallet recovery
Unstoppable Wallet↗︎ m/44'|m/49'|84'/0'/0' Yes No No [EXTERNAL RECOVERY NOT DOCUMENTED]
Wasabi↗︎ m/84'|m/86'/0'/0' Very Deep Depths Optional No Yes Docs, BIPs Supported
Status Lightning Wallet Path and/or Script Passphrase Note
⛔️ BLW (Bitcoin Lightning Wallet)↗︎ m/84'/0'/0' BIP32 non 44 Compatible N/A Docs
⛔️ SBW (Simple Bitcoin Wallet)↗︎ m/0', m/44'|49'|84'/0'/0' N/A Docs
OBW (Open Bitcoin Wallet)↗︎ m/0', m/44'|49'|84'/0'/0' N/A Docs
⚠️ c-Lightning↗︎ m/84'|141'/0'/0'/Keys derived from hsm_secret file N/A BIP32 layout explained, xPriv/xPub Export Tool
Eclair Mobile↗︎ m/49'/0'/0' Optional Docs
LND (Lightning Network Daemon)↗︎ aezeed Optional Docs
Blixt (LND mobile node wallet)↗︎ aezeed m/84'/0'/0' BIP32 - Docs, Restore procedure A, Restore procedure B
⚠️ Stakenet DEX Open Beta↗︎ P2WPKH bech32 addresses m/44'/0'/0' N/A [EXTERNAL RECOVERY NOT DOCUMENTED]
Mutiny Wallet↗︎ m/86'/0'/0' No Docs
Zeus LN↗︎ m/86'/0'/0' No Docs
Status Combo HW+SW Path and/or Script BIP39 Pass BIP174 PSBT Note
BTCPay Server (Coldcard)↗︎ m/44'|49'|84'/0'/0' Optional Yes Docs
⚠️ Electrum (CoboVault)↗︎ m/49'/0'/0' Optional No Docs, [EXTERNAL RECOVERY NOT DOCUMENTED]
Electrum (Coldcard)↗︎ m/44'|49'|84'/0'/0' Optional Yes Docs
Electrum (Ledger S/Nano)↗︎ m/44'|49'|84'/0'/0' Optional No Docs
Electrum (KeepKey)↗︎ m/44'|49'|84'/0'/0' Optional No Docs, xPub, Compatible Wallets
Electrum (Trezor One / Model T)↗︎ m/44'|49'|84'/0'/0' Optional No Docs
Wasabi (Coldcard)↗︎ m/44'|49'|m/84'|86'/0'/0' Optional Yes Docs

Notes:

Icon Legend
🛑 Unknown. No obvious docs, research in progress
😵 Discontinued and/or no longer maintained
🚸 HW Physically unsafe with "full secret" (ie without BIP39 passphrase or multisig) against a automated attack and/or unsophisticated attacker (ie chipshouter blackbox)
👁 Privacy concerns (default is third party node)
Validation concerns (default is third party node)
☠️ Not publicly available, or complex without a external tool available for the average user
⚠️ Known, but unofficially documented
Documented + Link to doc
🧐 New project and/or team

Explainer: Wallet Types

Explainer: Derivation Paths

In hierarchical deterministic wallets (BIP32), a derivation path is a sequence of fields or levels through which a wallet organizes coins in a multi-currency, multi-account, and multi-address system. According to BIP44, this hierarchy consists of five levels, in addition to the master extended private key ('xpriv') represented by m. Derivation paths for the master extended public key ('xpub') use M. Double-check what fields your wallet uses in our chart above, as BIP44 has been implemented inconsistently!

m / purpose' / coin_type' / account' / change / address_index

Note that the fields 'Account' and 'Address Index' start with zero (0). This is because they use zero-based numbering, just as the "ground floor" of buildings in the U.K. and Europe are considered level zero, rather than the first floor / level one in the United States.

Practical Example: A user has a BIP44 compliant bitcoin wallet, and wants to locate the second change address in their third account. The derivation path for the second change address in the third account would look like this: m/44'/0'/2'/1/1.

Another point of confusion may occur when wallets use the same derivation path for different script types. Especially if you are using any newer / more novel script types, wallets that have earmarked those paths for other scripts may cause errors during import. Example with Bread Wallet and Multibit mentioned here.

The meaning of "public" / unhardened versus hardened derivation, indicated in the fields by apostrophes, is explained here, here, and here.


Did we get it wrong? Just let us know, and this will be updated. :)

Want to contribute? Open an issue or make a Pull Request.