mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-05-05 17:30:59 +02:00
This is an extraction of ArgsManager related functions from util/system into their own common file. Config file related functions are moved to common/config.cpp. The background of this commit is an ongoing effort to decouple the libbitcoinkernel library from the ArgsManager. The ArgsManager belongs into the common library, since the kernel library should not depend on it. See doc/design/libraries.md for more information on this rationale.
62 lines
3.6 KiB
C++
62 lines
3.6 KiB
C++
// Copyright (c) 2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-2021 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#include <chainparamsbase.h>
|
|
|
|
#include <common/args.h>
|
|
#include <tinyformat.h>
|
|
|
|
#include <assert.h>
|
|
|
|
const std::string CBaseChainParams::MAIN = "main";
|
|
const std::string CBaseChainParams::TESTNET = "test";
|
|
const std::string CBaseChainParams::SIGNET = "signet";
|
|
const std::string CBaseChainParams::REGTEST = "regtest";
|
|
|
|
void SetupChainParamsBaseOptions(ArgsManager& argsman)
|
|
{
|
|
argsman.AddArg("-chain=<chain>", "Use the chain <chain> (default: main). Allowed values: main, test, signet, regtest", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS);
|
|
argsman.AddArg("-regtest", "Enter regression test mode, which uses a special chain in which blocks can be solved instantly. "
|
|
"This is intended for regression testing tools and app development. Equivalent to -chain=regtest.", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS);
|
|
argsman.AddArg("-testactivationheight=name@height.", "Set the activation height of 'name' (segwit, bip34, dersig, cltv, csv). (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::DEBUG_TEST);
|
|
argsman.AddArg("-testnet", "Use the test chain. Equivalent to -chain=test.", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS);
|
|
argsman.AddArg("-vbparams=deployment:start:end[:min_activation_height]", "Use given start/end times and min_activation_height for specified version bits deployment (regtest-only)", ArgsManager::ALLOW_ANY | ArgsManager::DEBUG_ONLY, OptionsCategory::CHAINPARAMS);
|
|
argsman.AddArg("-signet", "Use the signet chain. Equivalent to -chain=signet. Note that the network is defined by the -signetchallenge parameter", ArgsManager::ALLOW_ANY, OptionsCategory::CHAINPARAMS);
|
|
argsman.AddArg("-signetchallenge", "Blocks must satisfy the given script to be considered valid (only for signet networks; defaults to the global default signet test network challenge)", ArgsManager::ALLOW_ANY | ArgsManager::DISALLOW_NEGATION, OptionsCategory::CHAINPARAMS);
|
|
argsman.AddArg("-signetseednode", "Specify a seed node for the signet network, in the hostname[:port] format, e.g. sig.net:1234 (may be used multiple times to specify multiple seed nodes; defaults to the global default signet test network seed node(s))", ArgsManager::ALLOW_ANY | ArgsManager::DISALLOW_NEGATION, OptionsCategory::CHAINPARAMS);
|
|
}
|
|
|
|
static std::unique_ptr<CBaseChainParams> globalChainBaseParams;
|
|
|
|
const CBaseChainParams& BaseParams()
|
|
{
|
|
assert(globalChainBaseParams);
|
|
return *globalChainBaseParams;
|
|
}
|
|
|
|
/**
|
|
* Port numbers for incoming Tor connections (8334, 18334, 38334, 18445) have
|
|
* been chosen arbitrarily to keep ranges of used ports tight.
|
|
*/
|
|
std::unique_ptr<CBaseChainParams> CreateBaseChainParams(const std::string& chain)
|
|
{
|
|
if (chain == CBaseChainParams::MAIN) {
|
|
return std::make_unique<CBaseChainParams>("", 8332, 8334);
|
|
} else if (chain == CBaseChainParams::TESTNET) {
|
|
return std::make_unique<CBaseChainParams>("testnet3", 18332, 18334);
|
|
} else if (chain == CBaseChainParams::SIGNET) {
|
|
return std::make_unique<CBaseChainParams>("signet", 38332, 38334);
|
|
} else if (chain == CBaseChainParams::REGTEST) {
|
|
return std::make_unique<CBaseChainParams>("regtest", 18443, 18445);
|
|
}
|
|
throw std::runtime_error(strprintf("%s: Unknown chain %s.", __func__, chain));
|
|
}
|
|
|
|
void SelectBaseParams(const std::string& chain)
|
|
{
|
|
globalChainBaseParams = CreateBaseChainParams(chain);
|
|
gArgs.SelectConfigNetwork(chain);
|
|
}
|