diff options
Diffstat (limited to 'src/chainparamsbase.cpp')
| -rw-r--r-- | src/chainparamsbase.cpp | 133 |
1 files changed, 34 insertions, 99 deletions
diff --git a/src/chainparamsbase.cpp b/src/chainparamsbase.cpp index 8646a3160..a04258fd4 100644 --- a/src/chainparamsbase.cpp +++ b/src/chainparamsbase.cpp @@ -1,129 +1,64 @@ // Copyright (c) 2010 Satoshi Nakamoto -// Copyright (c) 2009-2014 The Bitcoin developers +// Copyright (c) 2009-2017 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 <chainparamsbase.h> -#include "util.h" +#include <tinyformat.h> +#include <util.h> #include <assert.h> -#include <boost/assign/list_of.hpp> +const std::string CBaseChainParams::MAIN = "main"; +const std::string CBaseChainParams::TESTNET = "test"; +const std::string CBaseChainParams::REGTEST = "regtest"; -using namespace boost::assign; - -/** - * Main network - */ -class CBaseMainParams : public CBaseChainParams +void AppendParamsHelpMessages(std::string& strUsage, bool debugHelp) { -public: - CBaseMainParams() - { - networkID = CBaseChainParams::MAIN; - nRPCPort = 8332; + strUsage += HelpMessageGroup(_("Chain selection options:")); + if (debugHelp) { + strUsage += HelpMessageOpt("-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."); } -}; -static CBaseMainParams mainParams; - -/** - * Testnet (v3) - */ -class CBaseTestNetParams : public CBaseMainParams -{ -public: - CBaseTestNetParams() - { - networkID = CBaseChainParams::TESTNET; - nRPCPort = 18332; - strDataDir = "testnet3"; - } -}; -static CBaseTestNetParams testNetParams; + strUsage += HelpMessageOpt("-testnet", _("Use the test chain")); +} -/* - * Regression test - */ -class CBaseRegTestParams : public CBaseTestNetParams -{ -public: - CBaseRegTestParams() - { - networkID = CBaseChainParams::REGTEST; - strDataDir = "regtest"; - } -}; -static CBaseRegTestParams regTestParams; +static std::unique_ptr<CBaseChainParams> globalChainBaseParams; -/* - * Unit test - */ -class CBaseUnitTestParams : public CBaseMainParams +const CBaseChainParams& BaseParams() { -public: - CBaseUnitTestParams() - { - networkID = CBaseChainParams::UNITTEST; - strDataDir = "unittest"; - } -}; -static CBaseUnitTestParams unitTestParams; - -static CBaseChainParams* pCurrentBaseParams = 0; + assert(globalChainBaseParams); + return *globalChainBaseParams; +} -const CBaseChainParams& BaseParams() +std::unique_ptr<CBaseChainParams> CreateBaseChainParams(const std::string& chain) { - assert(pCurrentBaseParams); - return *pCurrentBaseParams; + if (chain == CBaseChainParams::MAIN) + return MakeUnique<CBaseChainParams>("", 8332); + else if (chain == CBaseChainParams::TESTNET) + return MakeUnique<CBaseChainParams>("testnet3", 18332); + else if (chain == CBaseChainParams::REGTEST) + return MakeUnique<CBaseChainParams>("regtest", 18443); + else + throw std::runtime_error(strprintf("%s: Unknown chain %s.", __func__, chain)); } -void SelectBaseParams(CBaseChainParams::Network network) +void SelectBaseParams(const std::string& chain) { - switch (network) { - case CBaseChainParams::MAIN: - pCurrentBaseParams = &mainParams; - break; - case CBaseChainParams::TESTNET: - pCurrentBaseParams = &testNetParams; - break; - case CBaseChainParams::REGTEST: - pCurrentBaseParams = ®TestParams; - break; - case CBaseChainParams::UNITTEST: - pCurrentBaseParams = &unitTestParams; - break; - default: - assert(false && "Unimplemented network"); - return; - } + globalChainBaseParams = CreateBaseChainParams(chain); } -CBaseChainParams::Network NetworkIdFromCommandLine() +std::string ChainNameFromCommandLine() { - bool fRegTest = GetBoolArg("-regtest", false); - bool fTestNet = GetBoolArg("-testnet", false); + bool fRegTest = gArgs.GetBoolArg("-regtest", false); + bool fTestNet = gArgs.GetBoolArg("-testnet", false); if (fTestNet && fRegTest) - return CBaseChainParams::MAX_NETWORK_TYPES; + throw std::runtime_error("Invalid combination of -regtest and -testnet."); if (fRegTest) return CBaseChainParams::REGTEST; if (fTestNet) return CBaseChainParams::TESTNET; return CBaseChainParams::MAIN; } - -bool SelectBaseParamsFromCommandLine() -{ - CBaseChainParams::Network network = NetworkIdFromCommandLine(); - if (network == CBaseChainParams::MAX_NETWORK_TYPES) - return false; - - SelectBaseParams(network); - return true; -} - -bool AreBaseParamsConfigured() -{ - return pCurrentBaseParams != NULL; -} |