mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-22 15:04:44 +01:00
Merge bitcoin/bitcoin#27757: rpc: remove deprecated "warning" field from {create,load,restore,unload}wallet
5524fa00fa
doc: add release note about removal of `deprecatedrpc=walletwarningfield` flag (Sebastian Falbesoner)5c77db7354
Restorewallet/createwallet help documentation fixups/improvements (Jon Atack)a00ae31fcc
rpc: remove deprecated "warning" field from {create,load,restore,unload}wallet (Sebastian Falbesoner) Pull request description: The "warning" string field for wallet creating/loading RPCs (`createwallet`, `loadwallet`, `unloadwallet` and `restorewallet`) has been deprecated with the configuration option `-deprecatedrpc=walletwarningfield` in PR #27279 (released in v25.0). For the next release v26.0, the field and the configuration option can be removed. ACKs for top commit: achow101: ACK5524fa00fa
jonatack: ACK5524fa00fa
Tree-SHA512: 8212f72067d08095304018b8a95d2ebef630004b65123483fbbfb078cc5709c2d825bbc35b16ea5f6b28ae7377347382d7e9afaf7bdbf0575d2c229d970784de
This commit is contained in:
commit
f0758d8a66
4 changed files with 17 additions and 32 deletions
8
doc/release-notes-27757.md
Normal file
8
doc/release-notes-27757.md
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
Wallet
|
||||||
|
------
|
||||||
|
|
||||||
|
- The `deprecatedrpc=walletwarningfield` configuration option has been removed.
|
||||||
|
The `createwallet`, `loadwallet`, `restorewallet` and `unloadwallet` RPCs no
|
||||||
|
longer return the "warning" string field. The same information is provided
|
||||||
|
through the "warnings" field added in v25.0, which returns a JSON array of
|
||||||
|
strings. The "warning" string field was deprecated also in v25.0. (#27757)
|
|
@ -1862,7 +1862,7 @@ RPCHelpMan listdescriptors()
|
||||||
RPCHelpMan backupwallet()
|
RPCHelpMan backupwallet()
|
||||||
{
|
{
|
||||||
return RPCHelpMan{"backupwallet",
|
return RPCHelpMan{"backupwallet",
|
||||||
"\nSafely copies current wallet file to destination, which can be a directory or a path with filename.\n",
|
"\nSafely copies the current wallet file to the specified destination, which can either be a directory or a path with a filename.\n",
|
||||||
{
|
{
|
||||||
{"destination", RPCArg::Type::STR, RPCArg::Optional::NO, "The destination directory or file"},
|
{"destination", RPCArg::Type::STR, RPCArg::Optional::NO, "The destination directory or file"},
|
||||||
},
|
},
|
||||||
|
@ -1897,7 +1897,7 @@ RPCHelpMan restorewallet()
|
||||||
{
|
{
|
||||||
return RPCHelpMan{
|
return RPCHelpMan{
|
||||||
"restorewallet",
|
"restorewallet",
|
||||||
"\nRestore and loads a wallet from backup.\n"
|
"\nRestores and loads a wallet from backup.\n"
|
||||||
"\nThe rescan is significantly faster if a descriptor wallet is restored"
|
"\nThe rescan is significantly faster if a descriptor wallet is restored"
|
||||||
"\nand block filters are available (using startup option \"-blockfilterindex=1\").\n",
|
"\nand block filters are available (using startup option \"-blockfilterindex=1\").\n",
|
||||||
{
|
{
|
||||||
|
@ -1909,8 +1909,7 @@ RPCHelpMan restorewallet()
|
||||||
RPCResult::Type::OBJ, "", "",
|
RPCResult::Type::OBJ, "", "",
|
||||||
{
|
{
|
||||||
{RPCResult::Type::STR, "name", "The wallet name if restored successfully."},
|
{RPCResult::Type::STR, "name", "The wallet name if restored successfully."},
|
||||||
{RPCResult::Type::STR, "warning", /*optional=*/true, "Warning messages, if any, related to restoring the wallet. Multiple messages will be delimited by newlines. (DEPRECATED, returned only if config option -deprecatedrpc=walletwarningfield is passed.)"},
|
{RPCResult::Type::ARR, "warnings", /*optional=*/true, "Warning messages, if any, related to restoring and loading the wallet.",
|
||||||
{RPCResult::Type::ARR, "warnings", /*optional=*/true, "Warning messages, if any, related to restoring the wallet.",
|
|
||||||
{
|
{
|
||||||
{RPCResult::Type::STR, "", ""},
|
{RPCResult::Type::STR, "", ""},
|
||||||
}},
|
}},
|
||||||
|
@ -1943,9 +1942,6 @@ RPCHelpMan restorewallet()
|
||||||
|
|
||||||
UniValue obj(UniValue::VOBJ);
|
UniValue obj(UniValue::VOBJ);
|
||||||
obj.pushKV("name", wallet->GetName());
|
obj.pushKV("name", wallet->GetName());
|
||||||
if (wallet->chain().rpcEnableDeprecated("walletwarningfield")) {
|
|
||||||
obj.pushKV("warning", Join(warnings, Untranslated("\n")).original);
|
|
||||||
}
|
|
||||||
PushWarnings(warnings, obj);
|
PushWarnings(warnings, obj);
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
|
|
|
@ -221,7 +221,6 @@ static RPCHelpMan loadwallet()
|
||||||
RPCResult::Type::OBJ, "", "",
|
RPCResult::Type::OBJ, "", "",
|
||||||
{
|
{
|
||||||
{RPCResult::Type::STR, "name", "The wallet name if loaded successfully."},
|
{RPCResult::Type::STR, "name", "The wallet name if loaded successfully."},
|
||||||
{RPCResult::Type::STR, "warning", /*optional=*/true, "Warning messages, if any, related to loading the wallet. Multiple messages will be delimited by newlines. (DEPRECATED, returned only if config option -deprecatedrpc=walletwarningfield is passed.)"},
|
|
||||||
{RPCResult::Type::ARR, "warnings", /*optional=*/true, "Warning messages, if any, related to loading the wallet.",
|
{RPCResult::Type::ARR, "warnings", /*optional=*/true, "Warning messages, if any, related to loading the wallet.",
|
||||||
{
|
{
|
||||||
{RPCResult::Type::STR, "", ""},
|
{RPCResult::Type::STR, "", ""},
|
||||||
|
@ -258,9 +257,6 @@ static RPCHelpMan loadwallet()
|
||||||
|
|
||||||
UniValue obj(UniValue::VOBJ);
|
UniValue obj(UniValue::VOBJ);
|
||||||
obj.pushKV("name", wallet->GetName());
|
obj.pushKV("name", wallet->GetName());
|
||||||
if (wallet->chain().rpcEnableDeprecated("walletwarningfield")) {
|
|
||||||
obj.pushKV("warning", Join(warnings, Untranslated("\n")).original);
|
|
||||||
}
|
|
||||||
PushWarnings(warnings, obj);
|
PushWarnings(warnings, obj);
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
|
@ -356,8 +352,7 @@ static RPCHelpMan createwallet()
|
||||||
RPCResult::Type::OBJ, "", "",
|
RPCResult::Type::OBJ, "", "",
|
||||||
{
|
{
|
||||||
{RPCResult::Type::STR, "name", "The wallet name if created successfully. If the wallet was created using a full path, the wallet_name will be the full path."},
|
{RPCResult::Type::STR, "name", "The wallet name if created successfully. If the wallet was created using a full path, the wallet_name will be the full path."},
|
||||||
{RPCResult::Type::STR, "warning", /*optional=*/true, "Warning messages, if any, related to creating the wallet. Multiple messages will be delimited by newlines. (DEPRECATED, returned only if config option -deprecatedrpc=walletwarningfield is passed.)"},
|
{RPCResult::Type::ARR, "warnings", /*optional=*/true, "Warning messages, if any, related to creating and loading the wallet.",
|
||||||
{RPCResult::Type::ARR, "warnings", /*optional=*/true, "Warning messages, if any, related to creating the wallet.",
|
|
||||||
{
|
{
|
||||||
{RPCResult::Type::STR, "", ""},
|
{RPCResult::Type::STR, "", ""},
|
||||||
}},
|
}},
|
||||||
|
@ -430,9 +425,6 @@ static RPCHelpMan createwallet()
|
||||||
|
|
||||||
UniValue obj(UniValue::VOBJ);
|
UniValue obj(UniValue::VOBJ);
|
||||||
obj.pushKV("name", wallet->GetName());
|
obj.pushKV("name", wallet->GetName());
|
||||||
if (wallet->chain().rpcEnableDeprecated("walletwarningfield")) {
|
|
||||||
obj.pushKV("warning", Join(warnings, Untranslated("\n")).original);
|
|
||||||
}
|
|
||||||
PushWarnings(warnings, obj);
|
PushWarnings(warnings, obj);
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
|
@ -443,14 +435,13 @@ static RPCHelpMan createwallet()
|
||||||
static RPCHelpMan unloadwallet()
|
static RPCHelpMan unloadwallet()
|
||||||
{
|
{
|
||||||
return RPCHelpMan{"unloadwallet",
|
return RPCHelpMan{"unloadwallet",
|
||||||
"Unloads the wallet referenced by the request endpoint otherwise unloads the wallet specified in the argument.\n"
|
"Unloads the wallet referenced by the request endpoint, otherwise unloads the wallet specified in the argument.\n"
|
||||||
"Specifying the wallet name on a wallet endpoint is invalid.",
|
"Specifying the wallet name on a wallet endpoint is invalid.",
|
||||||
{
|
{
|
||||||
{"wallet_name", RPCArg::Type::STR, RPCArg::DefaultHint{"the wallet name from the RPC endpoint"}, "The name of the wallet to unload. If provided both here and in the RPC endpoint, the two must be identical."},
|
{"wallet_name", RPCArg::Type::STR, RPCArg::DefaultHint{"the wallet name from the RPC endpoint"}, "The name of the wallet to unload. If provided both here and in the RPC endpoint, the two must be identical."},
|
||||||
{"load_on_startup", RPCArg::Type::BOOL, RPCArg::Optional::OMITTED, "Save wallet name to persistent settings and load on startup. True to add wallet to startup list, false to remove, null to leave unchanged."},
|
{"load_on_startup", RPCArg::Type::BOOL, RPCArg::Optional::OMITTED, "Save wallet name to persistent settings and load on startup. True to add wallet to startup list, false to remove, null to leave unchanged."},
|
||||||
},
|
},
|
||||||
RPCResult{RPCResult::Type::OBJ, "", "", {
|
RPCResult{RPCResult::Type::OBJ, "", "", {
|
||||||
{RPCResult::Type::STR, "warning", /*optional=*/true, "Warning messages, if any, related to unloading the wallet. Multiple messages will be delimited by newlines. (DEPRECATED, returned only if config option -deprecatedrpc=walletwarningfield is passed.)"},
|
|
||||||
{RPCResult::Type::ARR, "warnings", /*optional=*/true, "Warning messages, if any, related to unloading the wallet.",
|
{RPCResult::Type::ARR, "warnings", /*optional=*/true, "Warning messages, if any, related to unloading the wallet.",
|
||||||
{
|
{
|
||||||
{RPCResult::Type::STR, "", ""},
|
{RPCResult::Type::STR, "", ""},
|
||||||
|
@ -492,13 +483,12 @@ static RPCHelpMan unloadwallet()
|
||||||
throw JSONRPCError(RPC_MISC_ERROR, "Requested wallet already unloaded");
|
throw JSONRPCError(RPC_MISC_ERROR, "Requested wallet already unloaded");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UniValue result(UniValue::VOBJ);
|
|
||||||
if (wallet->chain().rpcEnableDeprecated("walletwarningfield")) {
|
|
||||||
result.pushKV("warning", Join(warnings, Untranslated("\n")).original);
|
|
||||||
}
|
|
||||||
PushWarnings(warnings, result);
|
|
||||||
|
|
||||||
UnloadWallet(std::move(wallet));
|
UnloadWallet(std::move(wallet));
|
||||||
|
|
||||||
|
UniValue result(UniValue::VOBJ);
|
||||||
|
PushWarnings(warnings, result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -25,7 +25,6 @@ class CreateWalletTest(BitcoinTestFramework):
|
||||||
|
|
||||||
def set_test_params(self):
|
def set_test_params(self):
|
||||||
self.num_nodes = 1
|
self.num_nodes = 1
|
||||||
self.extra_args = [["-deprecatedrpc=walletwarningfield"]]
|
|
||||||
|
|
||||||
def skip_test_if_missing_module(self):
|
def skip_test_if_missing_module(self):
|
||||||
self.skip_if_no_wallet()
|
self.skip_if_no_wallet()
|
||||||
|
@ -164,7 +163,6 @@ class CreateWalletTest(BitcoinTestFramework):
|
||||||
assert_equal(walletinfo['keypoolsize_hd_internal'], keys)
|
assert_equal(walletinfo['keypoolsize_hd_internal'], keys)
|
||||||
# Allow empty passphrase, but there should be a warning
|
# Allow empty passphrase, but there should be a warning
|
||||||
resp = self.nodes[0].createwallet(wallet_name='w7', disable_private_keys=False, blank=False, passphrase='')
|
resp = self.nodes[0].createwallet(wallet_name='w7', disable_private_keys=False, blank=False, passphrase='')
|
||||||
assert_equal(resp["warning"], EMPTY_PASSPHRASE_MSG if self.options.descriptors else f"{EMPTY_PASSPHRASE_MSG}\n{LEGACY_WALLET_MSG}")
|
|
||||||
assert_equal(resp["warnings"], [EMPTY_PASSPHRASE_MSG] if self.options.descriptors else [EMPTY_PASSPHRASE_MSG, LEGACY_WALLET_MSG])
|
assert_equal(resp["warnings"], [EMPTY_PASSPHRASE_MSG] if self.options.descriptors else [EMPTY_PASSPHRASE_MSG, LEGACY_WALLET_MSG])
|
||||||
|
|
||||||
w7 = node.get_wallet_rpc('w7')
|
w7 = node.get_wallet_rpc('w7')
|
||||||
|
@ -184,21 +182,14 @@ class CreateWalletTest(BitcoinTestFramework):
|
||||||
result = self.nodes[0].createwallet(wallet_name="legacy_w0", descriptors=False, passphrase=None)
|
result = self.nodes[0].createwallet(wallet_name="legacy_w0", descriptors=False, passphrase=None)
|
||||||
assert_equal(result, {
|
assert_equal(result, {
|
||||||
"name": "legacy_w0",
|
"name": "legacy_w0",
|
||||||
"warning": LEGACY_WALLET_MSG,
|
|
||||||
"warnings": [LEGACY_WALLET_MSG],
|
"warnings": [LEGACY_WALLET_MSG],
|
||||||
})
|
})
|
||||||
result = self.nodes[0].createwallet(wallet_name="legacy_w1", descriptors=False, passphrase="")
|
result = self.nodes[0].createwallet(wallet_name="legacy_w1", descriptors=False, passphrase="")
|
||||||
assert_equal(result, {
|
assert_equal(result, {
|
||||||
"name": "legacy_w1",
|
"name": "legacy_w1",
|
||||||
"warning": f"{EMPTY_PASSPHRASE_MSG}\n{LEGACY_WALLET_MSG}",
|
|
||||||
"warnings": [EMPTY_PASSPHRASE_MSG, LEGACY_WALLET_MSG],
|
"warnings": [EMPTY_PASSPHRASE_MSG, LEGACY_WALLET_MSG],
|
||||||
})
|
})
|
||||||
|
|
||||||
self.log.info('Test "warning" field deprecation, i.e. not returned without -deprecatedrpc=walletwarningfield')
|
|
||||||
self.restart_node(0, extra_args=[])
|
|
||||||
result = self.nodes[0].createwallet(wallet_name="w7_again", disable_private_keys=False, blank=False, passphrase="")
|
|
||||||
assert "warning" not in result
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
CreateWalletTest().main()
|
CreateWalletTest().main()
|
||||||
|
|
Loading…
Add table
Reference in a new issue