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