Bitcoin ABC 0.30.5
P2P Digital Currency
chainparams.cpp
Go to the documentation of this file.
1// Copyright (c) 2010 Satoshi Nakamoto
2// Copyright (c) 2009-2016 The Bitcoin Core developers
3// Copyright (c) 2017-2020 The Bitcoin developers
4// Distributed under the MIT software license, see the accompanying
5// file COPYING or http://www.opensource.org/licenses/mit-license.php.
6
7#include <chainparams.h>
8
9#include <common/args.h>
10#include <consensus/merkle.h>
11#include <currencyunit.h>
12#include <logging.h>
13#include <tinyformat.h>
14
15#include <cassert>
16
17static std::unique_ptr<const CChainParams> globalChainParams;
18
21 return *globalChainParams;
22}
23
24void ReadChainArgs(const ArgsManager &args,
26 options.ecash = args.GetBoolArg("-ecash", DEFAULT_ECASH);
27 // Only relevant for REGTEST
28 options.fastprune = args.GetBoolArg("-fastprune", false);
29}
30
31std::unique_ptr<const CChainParams>
32CreateChainParams(const ArgsManager &args, const std::string &chain) {
33 auto opts = CChainParams::ChainOptions{};
34 ReadChainArgs(args, opts);
35 if (chain == CBaseChainParams::MAIN) {
36 return CChainParams::Main(opts);
37 }
38
39 if (chain == CBaseChainParams::TESTNET) {
40 return CChainParams::TestNet(opts);
41 }
42
43 if (chain == CBaseChainParams::REGTEST) {
44 return CChainParams::RegTest(opts);
45 }
46
47 throw std::runtime_error(
48 strprintf("%s: Unknown chain %s.", __func__, chain));
49}
50
51void SelectParams(const std::string &network) {
52 SelectBaseParams(network);
54}
ArgsManager gArgs
Definition: args.cpp:38
void SelectParams(const std::string &network)
Sets the params returned by Params() to those for the given BIP70 chain name.
Definition: chainparams.cpp:51
void ReadChainArgs(const ArgsManager &args, CChainParams::ChainOptions &options)
Definition: chainparams.cpp:24
static std::unique_ptr< const CChainParams > globalChainParams
Definition: chainparams.cpp:17
std::unique_ptr< const CChainParams > CreateChainParams(const ArgsManager &args, const std::string &chain)
Creates and returns a std::unique_ptr<CChainParams> of the chosen chain.
Definition: chainparams.cpp:32
const CChainParams & Params()
Return the currently selected parameters.
Definition: chainparams.cpp:19
void SelectBaseParams(const std::string &chain)
Sets the params returned by Params() to those for the given network.
bool GetBoolArg(const std::string &strArg, bool fDefault) const
Return boolean argument or default value.
Definition: args.cpp:556
static const std::string REGTEST
static const std::string TESTNET
static const std::string MAIN
BIP70 chain name strings (main, test or regtest)
CChainParams defines various tweakable parameters of a given instance of the Bitcoin system.
Definition: chainparams.h:80
static std::unique_ptr< const CChainParams > TestNet(const ChainOptions &options)
static std::unique_ptr< const CChainParams > RegTest(const ChainOptions &options)
static std::unique_ptr< const CChainParams > Main(const ChainOptions &options)
constexpr bool DEFAULT_ECASH
Definition: currencyunit.h:10
#define strprintf
Format arguments and return the string or write to given std::ostream (see tinyformat::format doc for...
Definition: tinyformat.h:1202
assert(!tx.IsCoinBase())