chainparamsbase.h raw

   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
  58