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