This meta-issue tracks the actions required to have full wallet load/create/unload at runtime.
- Add locking to the global
vpwalletsto ensure no concurrency races when adding to the vector. This is sufficient thread safety forloadwalletandcreatewallet, but notunloadwallet(#13017 and #13028). - Add
loadwalletRPC. Initially, this won’t update the available wallets in the GUI (#10740) - Hook up the
loadwalletRPC toCClientUIInterface::LoadWallet()so newly loaded wallets are available in the GUI (#13097) - Add
createwalletRPC. Initially, this won’t update the available wallets in the GUI (#13058) - Update
vpwalletsto be shared pointers (or similar) so that wallets can be freed safely (#13063). - Add
unloadwalletRPC. Initially, this won’t update the available wallets in the GUI (#13111) - Hook up the
unloadwalletRPC to a newCClientUIInterface::UnloadWallet()function so unloaded wallets are removed from the GUI (#13111) - Add an “open wallet” command in bitcoin-qt (#15153 and #15204)
- Add a “close wallet” command in bitcoin-qt (#15195)
- Add a “create wallet” command in bitcoin-qt (#15450)