wallet: Make -wallet setting not create wallets

This changes -wallet setting to only load existing wallets, not create new ones.

- Fixes settings.json corner cases reported by sjors & promag:
  https://github.com/bitcoin-core/gui/issues/95,
  https://github.com/bitcoin/bitcoin/pull/19754#issuecomment-685858578,
  https://github.com/bitcoin/bitcoin/pull/19754#issuecomment-685858578

- Prevents accidental creation of wallets reported most recently by jb55
  http://www.erisian.com.au/bitcoin-core-dev/log-2020-09-14.html#l-355

- Simplifies behavior after #15454. #15454 took the big step of disabling
  creation of the default wallet. This PR extends it to avoid creating other
  wallets as well. With this change, new wallets just aren't created on
  startup, instead of sometimes being created, sometimes not. #15454 release
  notes are updated here and are simpler.

This change should be targeted for 0.21.0. It's a bug fix and simplifies
behavior of the #15937 / #19754 / #15454 features added in 0.21.0.
This commit is contained in:
Russell Yanofsky
2020-10-19 08:24:27 -04:00
parent b46f37ba5e
commit 01476a88a6
10 changed files with 76 additions and 40 deletions

View File

@@ -292,15 +292,18 @@ Wallet
changed from `-32601` (method not found) to `-18` (wallet not found).
(#20101)
### Default Wallet
### Automatic wallet creation removed
Bitcoin Core will no longer create an unnamed `""` wallet by default when no
wallet is specified on the command line or in the configuration files. For
backwards compatibility, if an unnamed `""` wallet already exists and would
have been loaded previously, then it will still be loaded. Users without an
unnamed `""` wallet and without any other wallets to be loaded on startup will
be prompted to either choose a wallet to load, or to create a new wallet.
(#15454)
Bitcoin Core will no longer automatically create new wallets on startup. It will
load existing wallets specified by `-wallet` options on the command line or in
`bitcoin.conf` or `settings.json` files. And by default it will also load a
top-level unnamed ("") wallet. However, if specified wallets don't exist,
Bitcoin Core will now just log warnings instead of creating new wallets with
new keys and addresses like previous releases did.
New wallets can be created through the GUI (which has a more prominent create
wallet option), through the `bitcoin-cli createwallet` or `bitcoin-wallet
create` commands, or the `createwallet` RPC. (#15454)
### Experimental Descriptor Wallets