Merge bitcoin/bitcoin#30648: doc: Deduplicate list of possible chain strings in RPC help texts

9b297555207b4ea54bc0051f09c7084797aa9def Deduplicate list of chain strings in RPC help texts (Martin Saposnic)

Pull request description:

  As mentioned in issue https://github.com/bitcoin/bitcoin/issues/30645:

  Many command line parameter and RPC help texts currently contain the list of chain/network names hardcoded ("main, test, testnet4, signet, regtest"), which is error-prone as it can easily happen to miss an instance if the list ever changes again.

  This PR deduplicates the list of possible chain/network strings in RPC/parameter help texts, and it creates a macro `LIST_CHAIN_NAMES` in src/chainparamsbase.h. In the future, there is only 1 place where that list of possible values lives, so maintainability is improved and errors are avoided.

  All three places where this change impacts:

  ```
  ./bitcoin-cli --help
  ./bitcoin-cli help getblockchaininfo
  ./bitcoin-cli help getmininginfo
  ```

  They all return the correct string `"main, test, testnet4, signet, regtest"`

  See https://github.com/bitcoin/bitcoin/pull/30642#discussion_r1714711575

ACKs for top commit:
  maflcko:
    lgtm ACK 9b297555207b4ea54bc0051f09c7084797aa9def
  achow101:
    ACK 9b297555207b4ea54bc0051f09c7084797aa9def
  MarnixCroes:
    ACK 9b297555207b4ea54bc0051f09c7084797aa9def
  theStack:
    ACK 9b297555207b4ea54bc0051f09c7084797aa9def
  danielabrozzoni:
    ACK 9b297555207b4ea54bc0051f09c7084797aa9def

Tree-SHA512: 1e961bcbe40b0f17a87a2437eb4ba1bb89468fd1b5a39599d72a00ef75cb4009e7d2f05d0a621bb904fecf681c55b8a219fcfe4d44d5d27f27cdda20882b1323
This commit is contained in:
Ava Chow 2024-08-14 12:01:55 -04:00
commit 0e42c1b6c5
No known key found for this signature in database
GPG Key ID: 17565732E08E5E41
4 changed files with 8 additions and 3 deletions

View File

@ -13,7 +13,7 @@
void SetupChainParamsBaseOptions(ArgsManager& argsman)
{
argsman.AddArg("-chain=<chain>", "Use the chain <chain> (default: main). Allowed values: main, test, testnet4, signet, regtest", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS);
argsman.AddArg("-chain=<chain>", "Use the chain <chain> (default: main). Allowed values: " LIST_CHAIN_NAMES, ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS);
argsman.AddArg("-regtest", "Enter regression test mode, which uses a special chain in which blocks can be solved instantly. "
"This is intended for regression testing tools and app development. Equivalent to -chain=regtest.", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS);
argsman.AddArg("-testactivationheight=name@height.", "Set the activation height of 'name' (segwit, bip34, dersig, cltv, csv). (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);

View File

@ -53,4 +53,7 @@ const CBaseChainParams& BaseParams();
/** Sets the params returned by Params() to those for the given chain. */
void SelectBaseParams(const ChainType chain);
/** List of possible chain / network names */
#define LIST_CHAIN_NAMES "main, test, testnet4, signet, regtest"
#endif // BITCOIN_CHAINPARAMSBASE_H

View File

@ -8,6 +8,7 @@
#include <blockfilter.h>
#include <chain.h>
#include <chainparams.h>
#include <chainparamsbase.h>
#include <clientversion.h>
#include <coins.h>
#include <common/args.h>
@ -1273,7 +1274,7 @@ RPCHelpMan getblockchaininfo()
RPCResult{
RPCResult::Type::OBJ, "", "",
{
{RPCResult::Type::STR, "chain", "current network name (main, test, testnet4, signet, regtest)"},
{RPCResult::Type::STR, "chain", "current network name (" LIST_CHAIN_NAMES ")"},
{RPCResult::Type::NUM, "blocks", "the height of the most-work fully-validated chain. The genesis block has height 0"},
{RPCResult::Type::NUM, "headers", "the current number of headers we have validated"},
{RPCResult::Type::STR, "bestblockhash", "the hash of the currently best block"},

View File

@ -7,6 +7,7 @@
#include <chain.h>
#include <chainparams.h>
#include <chainparamsbase.h>
#include <common/system.h>
#include <consensus/amount.h>
#include <consensus/consensus.h>
@ -422,7 +423,7 @@ static RPCHelpMan getmininginfo()
{RPCResult::Type::NUM, "difficulty", "The current difficulty"},
{RPCResult::Type::NUM, "networkhashps", "The network hashes per second"},
{RPCResult::Type::NUM, "pooledtx", "The size of the mempool"},
{RPCResult::Type::STR, "chain", "current network name (main, test, testnet4, signet, regtest)"},
{RPCResult::Type::STR, "chain", "current network name (" LIST_CHAIN_NAMES ")"},
(IsDeprecatedRPCEnabled("warnings") ?
RPCResult{RPCResult::Type::STR, "warnings", "any network and blockchain warnings (DEPRECATED)"} :
RPCResult{RPCResult::Type::ARR, "warnings", "any network and blockchain warnings (run with `-deprecatedrpc=warnings` to return the latest warning as a single string)",