Skip to content

nvk/walletsrecovery.org

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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:

  • Don't implement BIP standard(s).
  • Implement a BIP standard, but inconsistently when compared with other wallets.
  • Implement a BIP standard, but one that has not been widely adopted (and perhaps only by them).
  • Don't have clear documentation about their derivation paths, backup and recovery processes.

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 (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:

  • Hardware wallets don't care about derivation in certain modes.
  • Wallets which have been frequently exploited, or which have endangered users by misrepresenting forked coins as if they are Bitcoin, may only be included with a warning.
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

  • Paper wallets are not actually wallets, but rather private keys and addresses printed out on paper. While the keys and addresses can technically be generated non-deterministically or deterministically, the usability is basically the same or poorer than a non-deterministic software wallet. Paper wallets have a number of significant drawbacks, including encouraging address reuse, exposing keys to poorly secured networked devices (printer), and not handling change addresses. Paper wallets should not be confused with recovery seeds.
  • Non-deterministic wallets randomly generate all private / public key pairs independent of each other. A keypool buffer was added to the Bitcoin-Qt / Bitcoin Core wallet in October 2010, which allowed the wallet to create a collection of unused addresses, rather than generating new addresses one by one upon use. While this feature allowed for less frequent backups than before, the non-determinism still carried the risk of key loss if the pool was exhausted and a new key was generated beyond what was saved in backup.
  • Deterministic wallets are essentially any wallet where "you can backup once... because all future addresses are determined in advance," which was a massive improvement in recoverability. There are two different forms:
    • Sequential deterministic wallets take a single seed phrase / passphrase and repeatedly increment it in order to generate new keypairs. This meant that the system would only need to store addresses, and then re-generate the private keys when needed.
    • Hierarchical deterministic wallets take a single seed phrase and randomly generate a master private / public key pair, which is then used to derive child key pairs that generate addresses. This system allows for the generation of addresses to occur without the master private key, with only the public key.
  • Multi-signature wallets require multiple signatures or parties to sign a transaction in order to spend bitcoin. An M-of-N BIP11 address must first be generated in order to receive bitcoin for spending in multi-signature transactions. While the 2-of-2 and 2-of-3 schemes are the most common, the maximum number of public keys is higher, and this could increase much more in the future with Schnorr signatures and Taproot. 'Partially Signed Bitcoin Transactions' (PSBT) according to BIP174 (proposed), where unsigned or partially signed transactions are passed around to multiple signers or signing devices, may also be an option.

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

  • Purpose: This field, which was added through BIP43, indicates which standard the derivation path follows. Possibilities include 0 or 44 referring to the default BIP44 P2PKH / '1' legacy addresses, 45 referring to BIP45 P2SH multi-party multi-signature wallets (proposed), 47 referring to BIP47 reusable payment codes (draft), 48 referring to hardware multisignature wallets (no BIP or standard proposal), 49 referring to BIP49 P2WPKH-nested-in-P2SH / '3' SegWit addresses, or 84 referring to BIP84 P2WPKH / 'bc1' native SegWit addresses. Some wallets support more than one (for example, many wallets now have both the legacy and wrapped or native SegWit address types).
  • Coin Type: This field indicates which cryptocurrency is being used in a multi-currency wallet. All coins, including testnet bitcoin, are assigned a constant number. For example, a derivation path for a Monero (XMR) account would be m/44'/128'. Note that BIP45 would designate this level as the 'Cosigner Index' instead.
  • Account: This field, in a multi-account wallet, indicates the identity or collection of addresses, which allows users to segregate funds for different things (ex. savings, donations). Note that BIP45 would not include this field. BIP47 would designate this level as 'Identity', though it is equivalent to 'Account.'
  • Change: This field, if the constant 0 is present, indicates "external chain" (regular) addresses; if the constant 1, indicates "internal chain" or change addresses. Note that BIP47 would designate this level for the notification keys and ephemeral payment codes.
  • Address Index: This field indicates the specific address number in a sequence, within an account.

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.

About

Information about wallet defaults for external recovery

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published