What to review next: #31378
Here is a proposed timeline for the move from legacy wallets to descriptor wallets, and at the same time, bdb to sqlite, culminating with the removal of both legacy wallets and bdb. Even though the wallet type and the wallet storage format are orthogonal to each other, as noted in #19077, I would like to tie them together for the sake of simplicity when it comes to how we make new wallets and the migration of one type to another.
The 4 combinations of type and format are: legacy-bdb, legacy-sqlite, descriptor-bdb, and descriptor-sqlite. While all 4 types will be supported, we will primarily deal with legacy-bdb and descriptor-sqlite. Setting descriptors=True in createwallet (or checking the Descriptors option in the GUI) will always make a descriptor-sqlite. Setting that to False will always make a legacy-bdb.
Additional improvements that have no target deadline:
The migration code will probably be around for a long time/forever.
Note that we expect users who go through the effort to make a legacy-sqlite or descriptor-bdb wallet to suck it up and deal with the consequences of doing something that isn't really supported. Such users should be able to figure out for themselves how to migrate their wallets. (Maybe migratewallet can migrate legacy-sqlite to descriptor-sqlite. bdb to sqlite is way easier than legacy to descriptor).
What to review next: #31378
Here is a proposed timeline for the move from legacy wallets to descriptor wallets, and at the same time, bdb to sqlite, culminating with the removal of both legacy wallets and bdb. Even though the wallet type and the wallet storage format are orthogonal to each other, as noted in #19077, I would like to tie them together for the sake of simplicity when it comes to how we make new wallets and the migration of one type to another.
The 4 combinations of type and format are: legacy-bdb, legacy-sqlite, descriptor-bdb, and descriptor-sqlite. While all 4 types will be supported, we will primarily deal with legacy-bdb and descriptor-sqlite. Setting
descriptors=Trueincreatewallet(or checking the Descriptors option in the GUI) will always make a descriptor-sqlite. Setting that toFalsewill always make a legacy-bdb.dumpandcreatefromdumpwallet tool commands with an additional-formatoption to specify the wallet type (wallettool: Add dump and createfromdump commands #19137)dumpand thencreatefromdumpin order to make legacy-sqlite from legacy-bdbdumpand thencreatefromdumpin order to make descriptor-bdb from descriptor-sqlitecreatewalletdescriptorsdefault toTrue(Make descriptor wallets by default #23002)create-descriptorsdefault toTrue(Make descriptor wallets by default #23002)migratewalletcommand to migrate a legacy-bdb to descriptor-sqlite (wallet: Migrate legacy wallets to descriptor wallets #19602)migratewalletbug fixesmigratewalletexperimental warning rpc: Drop migratewallet experimental warning #28037LegacyScriptPubKeyManand BDB (wallet: Migrate legacy wallets to descriptor wallets without requiring BDB #26596)dump, implement an independent BDB file loader (this should probably be shared with the previous) (wallet: Implement independent BDB parser #26606)listwalletdirof migrated default wallets and generated backups (wallet: Fix listwalletdir listing of migrated default wallets and generated backup files #30265)LegacyScriptPubKeyManexcept for the independent migration stuff (Remove the legacy wallet and BDB dependency #28710)Additional improvements that have no target deadline:
The migration code will probably be around for a long time/forever.
Note that we expect users who go through the effort to make a legacy-sqlite or descriptor-bdb wallet to suck it up and deal with the consequences of doing something that isn't really supported. Such users should be able to figure out for themselves how to migrate their wallets. (Maybe
migratewalletcan migrate legacy-sqlite to descriptor-sqlite. bdb to sqlite is way easier than legacy to descriptor).