From 971bae9174293b79f1f29822d662b31a2ba62234 Mon Sep 17 00:00:00 2001 From: Anthony Towns Date: Mon, 11 Sep 2023 15:43:40 +1000 Subject: [PATCH] rpc: Deprecate rpcserialversion=0 --- doc/release-notes-28448.md | 6 ++++++ src/init.cpp | 6 +++++- test/functional/feature_segwit.py | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 doc/release-notes-28448.md diff --git a/doc/release-notes-28448.md b/doc/release-notes-28448.md new file mode 100644 index 00000000000..d3ef8cf65ba --- /dev/null +++ b/doc/release-notes-28448.md @@ -0,0 +1,6 @@ +RPC +--- + +- Setting `-rpcserialversion=0` is deprecated and will be removed in + a future release. It can currently still be used by also adding + the `-deprecatedrpc=serialversion` option. (#28448) diff --git a/src/init.cpp b/src/init.cpp index f0847bd4f75..c025fb8ed88 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -618,7 +618,7 @@ void SetupServerArgs(ArgsManager& argsman) argsman.AddArg("-rpccookiefile=", "Location of the auth cookie. Relative paths will be prefixed by a net-specific datadir location. (default: data dir)", ArgsManager::ALLOW_ANY, OptionsCategory::RPC); argsman.AddArg("-rpcpassword=", "Password for JSON-RPC connections", ArgsManager::ALLOW_ANY | ArgsManager::SENSITIVE, OptionsCategory::RPC); argsman.AddArg("-rpcport=", strprintf("Listen for JSON-RPC connections on (default: %u, testnet: %u, signet: %u, regtest: %u)", defaultBaseParams->RPCPort(), testnetBaseParams->RPCPort(), signetBaseParams->RPCPort(), regtestBaseParams->RPCPort()), ArgsManager::ALLOW_ANY | ArgsManager::NETWORK_ONLY, OptionsCategory::RPC); - argsman.AddArg("-rpcserialversion", strprintf("Sets the serialization of raw transaction or block hex returned in non-verbose mode, non-segwit(0) or segwit(1) (default: %d)", DEFAULT_RPC_SERIALIZE_VERSION), ArgsManager::ALLOW_ANY, OptionsCategory::RPC); + argsman.AddArg("-rpcserialversion", strprintf("Sets the serialization of raw transaction or block hex returned in non-verbose mode, non-segwit(0) (DEPRECATED) or segwit(1) (default: %d)", DEFAULT_RPC_SERIALIZE_VERSION), ArgsManager::ALLOW_ANY, OptionsCategory::RPC); argsman.AddArg("-rpcservertimeout=", strprintf("Timeout during HTTP requests (default: %d)", DEFAULT_HTTP_SERVER_TIMEOUT), ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::RPC); argsman.AddArg("-rpcthreads=", strprintf("Set the number of threads to service RPC calls (default: %d)", DEFAULT_HTTP_THREADS), ArgsManager::ALLOW_ANY, OptionsCategory::RPC); argsman.AddArg("-rpcuser=", "Username for JSON-RPC connections", ArgsManager::ALLOW_ANY | ArgsManager::SENSITIVE, OptionsCategory::RPC); @@ -988,6 +988,10 @@ bool AppInitParameterInteraction(const ArgsManager& args) if (args.GetIntArg("-rpcserialversion", DEFAULT_RPC_SERIALIZE_VERSION) > 1) return InitError(Untranslated("Unknown rpcserialversion requested.")); + if (args.GetIntArg("-rpcserialversion", DEFAULT_RPC_SERIALIZE_VERSION) == 0 && !IsDeprecatedRPCEnabled("serialversion")) { + return InitError(Untranslated("-rpcserialversion=0 is deprecated and will be removed in the future. Specify -deprecatedrpc=serialversion to allow anyway.")); + } + // Also report errors from parsing before daemonization { kernel::Notifications notifications{}; diff --git a/test/functional/feature_segwit.py b/test/functional/feature_segwit.py index 3ddf21ee5de..6c467fa6135 100755 --- a/test/functional/feature_segwit.py +++ b/test/functional/feature_segwit.py @@ -89,6 +89,7 @@ class SegWitTest(BitcoinTestFramework): [ "-acceptnonstdtxn=1", "-rpcserialversion=0", + "-deprecatedrpc=serialversion", "-testactivationheight=segwit@165", "-addresstype=legacy", ],