Few people know this, but BIP 39 was actually Nack'ed by the code reviewers. In the Bitcoin core repo, to Ack is to agree with the proposal. It means you reviewed it and gave a thumbs up, this is good code. In BIP 39's case, it got a Nack from reviewers which means they reviewed the code and gave it a thumbs down, this is bad code.
BIP 39 is where we get seed phrases from. So why was it negatively reviewed? Let me put it this way, do you know what a derivation path is? If you answered no, then you have the answer to your question. https://github.com/bitcoin/bips/wiki/Comments:BIP-0039
Now, getting a Nack in your BIP doesn't mean its dead forever and ever. You can update your BIP to address the concerns and change that Nacks over to Acks. However, wallet developers implemented the BIP before any improvements to the BIP were made. That means that things like the derivation path can be wildly different between wallets.
You can check which derivation path your wallet uses here: https://walletsrecovery.org (this is literally just a list of derivation paths)
What makes this worse is that things like timelocks can not be represented using BIP 39 because it uses a locking script and that script needs to be part of your backup. That's why something like Liana wallet uses a different backup method called "descriptor wallets"
So look out for this new wallet recovery type. Maybe even you can think of ways to make it easy to use for the general community and it may as a result even take over seed phrases.
BIP39 is actually just for the mnemonic words. Hierarchical Deterministic wallets and derivation paths (as a general mechanism) are from BIP32. The field meanings we use in derivation paths came from BIP44, and specific paths for specific scriptpubkeys get introduced in places like BIP84 and BIP86.
reply
Yeah, but this is why it gets this nack. It seems the reviewers were looking for a unified framework in a single BIP rather than many BIPs describing each part
"BIP39 seed phrases do not include a version number. This means that software should always know how to generate keys and addresses. BIP43 suggests that wallet software will try various existing derivation schemes within the BIP32 framework. This is extremely inefficient and rests on the assumption that future wallets will support all previously accepted derivation methods. If, in the future, a wallet developer decides not to implement a particular derivation method because it is deprecated, then the software will not be able to detect that the corresponding seed phrases are not supported, and it will return an empty wallet instead. This threatens users funds.
For these reasons, Electrum does not generate BIP39 seeds."
reply
Hey, I completely agree with @rijndael comment here. BIP39 specifically focuses on mnemonic words, while the concepts of derivation paths is original proposed in BIP32 and then BIP43, BIP44, BIP49 and BIP84, which is actually build upon BIP32 to provide additional specifications for accounts and addressing schemes.
Also you specified about wallet descriptors and this particular statement:
So look out for this new wallet recovery type. Maybe even you can think of ways to make it easy to use for the general community and it may as a result even take over seed phrases.
I think the statement that suggesting that they will take over seed phrases is inaccurate and false. Wallet descriptors address the issue of derivation paths when generating addresses, especially when users switch between different wallets. Like the mnemonic words alone is not sufficient for wallet recovery; you also need to know the derivation path used by your previous wallet to generate addresses.
For example, if your previous wallet generated addresses based on BIP44 (P2PKH derivation path: m/44'), you need to know that information during wallet recovery. If your new wallet generates addresses based on BIP84 (P2WPKH derivation path: m/84'), both wallets are incompatible, and you won't retrieve the correct wallet information, such as balance and transaction history. That's the reason the website you mentioned https://walletsrecovery.org/ exist to sepcify the supported paths by different wallets.
Wallet descriptors provide a general syntax to address this problem, using constructs like pk(), pkh(), wpkh(), and so on, to specify different derivation paths and scripts. However, it's important to note that wallet descriptors are not intended to replace seed phrases but rather enhance the management of wallet structures and derivation paths.
Also BIP 39 is actually a well-established standard that defines how mnemonic seed phrases are generated and used for wallet backups. It has gone through a proper review process and is widely adopted, like BIP39, BIP32, BIP43, BIP44, BIP84 these are considered as industry standard nowadays for developing bitcoin wallets.
reply
You agree with rijndael because you think there's a disagreement. I don't disagree with what they said. What they described is how it is used.
BIP39 is actually just for the mnemonic words
Which I simply say is exactly the problem with BIP-39
Hierarchical Deterministic wallets and derivation paths (as a general mechanism) are from BIP32.
Which is irrelevant to the fact that BIP-39 encoding doesn't include the derivation paths which makes it a half assed piece of patch work.
BIP 39 itself under motivation says:
"This seed can be later used to generate deterministic wallets using BIP-0032 or similar methods."
But it can't be used to generate a BIP-0032 wallet, because of all the missing information, hence the wallets recovery site, hence BIP-39 is a half assed piece of patch work.
Patch work, as in an amalgamation of incomplete parts.
It has gone through a proper review process
and was nacked to the point of earning this label: "Comments-Summary: Unanimously Discourage for implementation"
Go on, go to the BIP, hit ctrl + f and paste the quote. https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
and is widely adopted
Which has caused panic and confusion for people switching between wallets, or using a wallet that updated to use a different derivation path.
However, it's important to note that wallet descriptors are not intended to replace seed phrases but rather enhance the management of wallet structures and derivation paths.
I don't think it matters what the intent is, I believe the function of "enhancing the management of wallet structures and derivation paths" will result in seed phrases getting naturally replaced. You already don't have a seed phrase for your lightning backup by the way. Liana wallet seems to assume that instead of backups, you'll just have so many devices with varying levels of accessibility to recover funds. If we decide to implement CTV or other covenants I don't think you'll be able to recover those wallets with BIP-39 either.
Half assed patchwork is workable for most people right now, but the world is changing brother! Get ready for it.
reply
Thanks for this. I sorta knew what a derivation path was, but I had some holes in my knowledge that were filled by reading through your links. Thanks!
reply