Giter Club home page Giter Club logo

walletsrecovery.org's Introduction

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

  • 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.

walletsrecovery.org's People

Contributors

3rditeration avatar 6102bitcoin avatar akumaigorodski avatar alessandro-saglimbeni avatar andreasgassmann avatar ben-kaufman avatar benthecarman avatar bitcoinqna avatar darth-coin avatar dependabot[bot] avatar enegnei avatar fonta1n3 avatar hosiawak avatar jlopp avatar jstrnbrg avatar maxtannahill avatar newtonick avatar nvk avatar qubenix avatar rockyrococo avatar sampatt avatar satsczar avatar siim-m avatar sjors avatar stadicus avatar sundaywar avatar tadeubas avatar therec avatar uber9 avatar yahiheb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

walletsrecovery.org's Issues

Electrum derivation path is not really BIP44/49/84

There're two versions of Electrum seed system, the old one is a reversible encoding, the new one (Electrum2.0) is a variant of BIP39, which is one-way hashed to derive BIP32 entropy (thus the "root" master key/node).

Both are not compatible with BIP39.

I'm not familiar with pre-Electrum2.0 seed (the old Electrum seed). Maybe you can point me to the docs or the source code.

Here I'm describing Electrum2.0 seed only.

It seems that the offical documentation only mentions how the version bits (which is used as something like checksum as well) are defined. I don't see how the seed phrase can then derive into private keys (and addresses). Maybe I just haven't find it?

https://electrum.readthedocs.io/en/latest/seedphrase.html

In the source code, I find 4 types of the version bits, rather than 3 types described in the documentation:

https://github.com/spesmilo/electrum/blob/fdaf6e775cdbe461a8466d1d7e46360c8a90e4d7/electrum/version.py#L6

The BIP32 entropy is derived from the seed (mnemonic) phrase by 2048-round PBKDF2, using HMAC-SHA512, which is almostly the same to BIP39, the difference is that Electrum2.0 uses the string "electrum" + passphrase, while BIP39 uses the string "mnemonic" + passphrase:

https://github.com/spesmilo/electrum/blob/64a94e95225bdd62fd5aa8a6dec5ac27e03b9dae/electrum/mnemonic.py#L159

Pay attention that Electrum once had a bug (Electrum issue No.4566) around normalization of BIP39 passphrase, it once removed more whitespaces (like, deleting one whitespace from two consecutive whitespaces). I'm not sure how Electrum would treat passphrase of Electrum2.0 seed phrases.

I once encountered a lot of posts describing that Electrum2.0 uses derivation paths different than BIP44/49/84, which can be confirmed in the source code as well:

https://github.com/spesmilo/electrum/blob/9d0bb295e6f55a2bff9f5b6770fa744c16af6e8a/electrum/keystore.py#L975
https://github.com/spesmilo/electrum/blob/6058829870fde0ef17b2e08a567110ecc381ab94/electrum/plugins/trustedcoin/trustedcoin.py#L572

Seed Version Bit Type Derivation Path (splited keychain, aka using "internal chain" as change address)
0x01 standard m/ (could be used in multisig as well)
0x100 segwit m/0'/ (p2wpkh) or m/1'/ (p2wsh, for multisig)
0x101 2fa (2.7 or later, exactly 12 words) m/0'/ and m/1'/ (2 private keys in 2of3 multisig)
0x101 2fa (pre-2.7, more than 19 words) * m/ (derived from the leading 12 words) and m/ (derived from the 12th and later words) (2 private keys in 2of3 multisig)
0x102 2fa_segwit m/0'/ and m/1'/ (2 private keys in 2of3 multisig)
  • (According to comments in the source code) pre-2.7 2fa seed phrase is typically 24-25 words. However, due to a bug (electrum issue No,3611), there's a (almostly negligible) probability of 2^(-59) for pre-2.7 2fa seed phrase to be less than 20 words.

  • Because it's a P2(W)SH wrapped multisig, knowing 2 private keys (BIP32 xprv) in such 2of3 multisig setup is still not enough to spend the funds, because the last 1 public key (BIP32 xpub) must be also known to construct the corresponding redeem script. Such public key can be automatically retrieved from TrustedCoins servers, if the user doesn't have it.

DISCLAIMER: although I have tried my best to make the info above accurate, I can't guarantee its accuracy.

Suggestion: add "Mnemonic" column, and rename "BIP39 Pass" into "Passphrase"

First of all, (as a reply of #129 (comment) as well) I think this website/project is intended to show how to recover funds from a wallet listed in the table, isn't it?

Some wallets like Bitcoin Core and Bitcoin Wallet app (maintained by Andreas Schildbach) don't have any mnemonic at all.

Some wallets like Electrum and LND have mnemonic schemes which are incompatible with BIP39.

For these cases, I'm afraid to say the info provided on this site is not quite clear in this aspect - "is this wallet itself recoverable, and how? Oh, not so clear..."

Therefore, my bold suggestion is adding a new "Mnemonic" column to represent such info.

Just like Electrum, Bitcoin Core and LND, these three wallets could be represented like (some text should be hyperlinks but I haven't set them):

Software Wallet Mnemonic Path and/or Script Passphrase (NOT wallet encyption)
Electrum↗︎ Electrum2.0↗︎;
BIP39↗︎ (import only↗︎)
Electrum2.0: m m/0' | 1' (decided by version bits embedded inside mnemonic);
Imported BIP39: Single Signer: m/ | 44' | 49' | 84'/0'/0' Multisig: m/45'/0/0/0 m/48'/0'/0'/1' m/48'/0'/0'/2'
Optional, supported via salting aka. "25th word of 24-word mnemonic"
Bitcoin Core↗︎ N/A Pre-0.15.0: (incl. old wallet.dat loaded by newer software)m/0'/0'/k' (receiving and/or change);
0.15.0 and later: (incl. manually upgraded wallet.dat)m/0'/0'/k (receiving), m/0'/1'/k' (change)
N/A
LND↗︎ aezeed↗︎ (decided by version bits embedded inside mnemonic, seems to be BIP44/49/84 compliant but unsure) Optional, supported via encryption rather than salting

Suggestions about emojis

Icon Legend Notes
Documented + Link to doc Just keep it as-is. (I also think (the first 4 rows which represents documentation status, or maybe include other as well) rows should be sorted here, like, from best status to worse status)
🔎 (🔍) Known, but unofficially documented In this situation, recovery info can be googled, so I think the magnifying glass 🔎 should be accurate.
❓(or😵) Unknown. No obvious docs, research in progress The question mark ❓ generally represents "unknown". As for 😵, I just think the stop sign 🛑 fits more in the next "abandoned project" situation, while the dizzy face 😵 fits more in this situation, however I still recommend the question mark emoji here.
☠️ Not publicly available, or complex without a external tool available for the average user Just keep it as-is.
🏚️(or🛑) Discontinued and/or no longer maintained 🏚️ is the "derelict house", which was the first result of googling "abandon emoji" (it's the most accurate in my opinion!), however it might not be seemingly very clear or intuitive, so I think the stop sign 🛑 might fit in this situation as well.
🔓 HW Physically unsafe with “full secret” (ie without BIP39 passphrase or multisig) against a automated attack and/or unsophisticated attacker (ie chipshouter blackbox) 🔓 is the "unlocked padlock", which can represent lack of security.
👁 Privacy concerns (default is third party node) Just keep it as-is.
⛓️ Validation concerns (default is third party node) Although ⑂ is the "fork" unicode character, which accurately represents what it should represent here, I still think it seems to stand out here because it's not a emoji. However I felt difficult to find accurate emoji as well. ⛓️ should represent "blockchain" here.

Machine readable format

It would be great if this site could also host a machine readable format (probably JSON) that allows recovery software to read information about wallets, paths and script types and uses the data to search the tree produced by a seed or xpub.

I'm working on such a recovery tool and would love to have a well managed location for that data that can be updated collaboratively.

For example:

{
wallets_recovery: [
 "ColdCard Mk1": [{ "path" : "m/44'/0'/0'", "script": "p2pkh", "passphrase": "optional", "psbt": true},
                             { "path" : "m/84'/0'/0'", ... etc
]
}

Link rot

After a few years all these links to external docs will be 404 (link rot).
Especially for wallets that have their best days behind them.

The solution is to save that info to Web Archive and link to that instead.

Confusing derivation path for BRD, Multibit and Hodlwallet

In the Ian Coleman tool, a derivation path of m/0'/0 is required in the BIP32 Derivation Path field but in Electrum, a m/0′ derivation path is used.

Users need to be clear which path to use if they are going to recover their wallets correctly.

"BIP32 non 44 Compatible" is still not clear enough.

bech 32

add primer for bech32 addresses.

Feature: Filter by compatible wallets

When somebody has issues with Wallet X, he usually wants to find a wallet Y that can restore his funds. It would be awesome if the list could be filtered by standards and derivation paths.

Describe Cardano ADA software wallets (Daedulus, Yoroi) key derivation compatibility

Cardano Wallets have a history of different wallet master key derivation implementations.

The main Cardano software wallets (Daedalus and Yoroi) appear to implement a key derivation method called Icarus.

Two hardware wallets implement a different key derivation method (making a BIP39 recovery seed from a software wallet essentially incompatible)

I don't know enough about BIP39 key derivation methods to properly document the Cardano software wallet compatibilities, but I think it would be helpful to add to this project as it's an instance of incompatibility of wallet recovery methods.

Add passphrase column

Thoughts for this? For Samourai and Wasabi, the passphrase is mandatory. If this isn't supported on other wallets, it should be highlighted.

Format Questions

m/84'/0'/0' - Coldcard really represents m/84'/0'/0'/0/n & m/84'/0'/0'/1/n (Paths for native segwit account 0). Should this be m/84'/0'/n'/0/n & m/84'/0'/n'/1/n (any account number).

m/44/0'/X' - Copay. Uses an X, we should normalise to an n, does this really mean m/44/0'/n'/0/n & m/44/0'/n'/1/n ?

m/45'/0'/0'/0/0 - Unchained Capital. Is this a single address path (no n)

@nvk ?

Add new status category for wallets that have/had major security concerns

We need a status option for wallets that have had major security concerns and/or may misrepresent Bitcoin/BTC for other forks. I'd like to still list them as ppl may need to recover from it.

i.e.
✅|Blockchain.com[↗︎](https://www.blockchain.com/en/wallet)|m/44'/0'/n'|[Docs](https://support.blockchain.com/hc/en-us/articles/115001298143-Your-Recovery-Phrase-The-Failsafe), [xPub](https://support.blockchain.com/hc/en-us/articles/207746403-Wallets-Addresses)

Old (not-yet-upgraded) Bitcoin Core wallet.dat doesn't have a separate key chain for change address

Related commit (Bitcoin Core issue No.9294): bitcoin/bitcoin@f34cdcb

I didn't see such feature noticeably described in the release note of Bitcoin Core 0.15.0, it was just listed in the "wallet" section as a trivial commit history entry: https://bitcoincore.org/en/releases/0.15.0/

In the release note of Bitcoin Core 0.17.0, the -upgradewallet feature is described as being able to upgrade an old "non-split" wallet.dat into a new "split" one: https://bitcoincore.org/en/releases/0.17.0/

By the way, it worth noting that Bitcoin Core uses hardened-derivation on each private keys (addresses, either receiving or change), which might be incompatible with other wallets (like Electrum). However, tools like Ian Coleman's BIP39 Mnemonic Code Converter is compatible with this.

Besides, as we all know, Bitcoin Core currently doesn't support any mnemonic (including BIP39) at all. It's also tricky to deal with wallet.dat (which is a Berkeley db4.8 database) without Bitcoin Core (although Bitcoin Core has always supported such db4.8 wallet.dat).

Also, although dumpwallet RPC command of Bitcoin Core can generate a text file of contents of wallet.dat, IIRC it won't include old (no longer used) HD seeds - there could be more than one HD seed inside wallet.dat actually. (related issue discussion thread: bitcoin/bitcoin#17748 (comment) )

DISCLAIMER: although I have tried my best to make the info above accurate, I can't guarantee its accuracy.

a

A

Offline access to private keys checkbox

Not sure if you want this on the extended section or the main table but some wallets, especially the mobile ones, require connectivity to a central server to even gain access to the wallet and individual private keys. I think this is worth including as sweeping private keys from a defunct wallet can be an easy way for users to get access to their funds. Feedback welcome.

Add other hardware wallets

I suggest to add Ellipal, D'CENT and Safepal hardware wallets.

They all use m/44'/0'/0' for btc legacy address.
I don't know about the segwit address though. They all show different addresses so I guess they use a different derivation path.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.