aboutsummaryrefslogtreecommitdiff
path: root/src/chainparamsbase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/chainparamsbase.cpp')
-rw-r--r--src/chainparamsbase.cpp133
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 = &regTestParams;
- 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;
-}