When HD wallets were introduced in 2013, a semi-automatic and deterministic upgrade path was introduced to get users from a basic wallet (which has individual, random keys) to deterministic wallets. In a nutshell, the seed is derived from the first random key in the wallet.
I propose to remove this upgrade path. Virtually all wallets and its backups should be upgraded by now. I consider these cases:
If a wallet isn't upgraded it must be running a stone-old app and probably a stone-old OS. If these users have upgrades available, they simply should upgrade. If not, it's time to buy a new device and upgrade via backup/restore.
If an already-upgraded user needs to restore from a non-upgraded backup, they can use an old bitcoinj version (before this change is merged) to do that. Note that Bitcoin Wallet has changed the backup format in May 2014 anyway so this problem is not new.
Wallets/KeyChainGroups created using the new-ish createBasic() are blocked from being upgraded to HD anyway. This highlights the idea that the upgrade path was only meant for wallets that already existed when HD was introduced.
Note this proposal does not touch the upgrade path from P2PKH to P2WPKH and any later yet-to-implement upgrades like P2WPKH to P2TR.
When HD wallets were introduced in 2013, a semi-automatic and deterministic upgrade path was introduced to get users from a basic wallet (which has individual, random keys) to deterministic wallets. In a nutshell, the seed is derived from the first random key in the wallet.
I propose to remove this upgrade path. Virtually all wallets and its backups should be upgraded by now. I consider these cases:
createBasic()
are blocked from being upgraded to HD anyway. This highlights the idea that the upgrade path was only meant for wallets that already existed when HD was introduced.Note this proposal does not touch the upgrade path from P2PKH to P2WPKH and any later yet-to-implement upgrades like P2WPKH to P2TR.