/ src / chainparamsbase.h
chainparamsbase.h
 1  // Copyright (c) 2014-present The Bitcoin Core developers
 2  // Distributed under the MIT software license, see the accompanying
 3  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
 4  
 5  #ifndef BITCOIN_CHAINPARAMSBASE_H
 6  #define BITCOIN_CHAINPARAMSBASE_H
 7  
 8  #include <util/chaintype.h>
 9  
10  #include <cstdint>
11  #include <memory>
12  #include <string>
13  
14  class ArgsManager;
15  
16  /**
17   * CBaseChainParams defines the base parameters (shared between bitcoin-cli and bitcoind)
18   * of a given instance of the Bitcoin system.
19   */
20  class CBaseChainParams
21  {
22  public:
23      const std::string& DataDir() const { return strDataDir; }
24      uint16_t RPCPort() const { return m_rpc_port; }
25  
26      CBaseChainParams() = delete;
27      CBaseChainParams(const std::string& data_dir, uint16_t rpc_port)
28          : m_rpc_port(rpc_port), strDataDir(data_dir) {}
29  
30  private:
31      const uint16_t m_rpc_port;
32      std::string strDataDir;
33  };
34  
35  /**
36   * Creates and returns a std::unique_ptr<CBaseChainParams> of the chosen chain.
37   */
38  std::unique_ptr<CBaseChainParams> CreateBaseChainParams(ChainType chain);
39  
40  /**
41   *Set the arguments for chainparams
42   */
43  void SetupChainParamsBaseOptions(ArgsManager& argsman);
44  
45  /**
46   * Return the currently selected parameters. This won't change after app
47   * startup, except for unit tests.
48   */
49  const CBaseChainParams& BaseParams();
50  
51  /** Sets the params returned by Params() to those for the given chain. */
52  void SelectBaseParams(ChainType chain);
53  
54  /** List of possible chain / network names  */
55  #define LIST_CHAIN_NAMES "main, test, testnet4, signet, regtest"
56  
57  #endif // BITCOIN_CHAINPARAMSBASE_H