aboutsummaryrefslogtreecommitdiff
path: root/src/chainparamsbase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/chainparamsbase.cpp')
-rw-r--r--src/chainparamsbase.cpp118
1 files changed, 118 insertions, 0 deletions
diff --git a/src/chainparamsbase.cpp b/src/chainparamsbase.cpp
new file mode 100644
index 000000000..db2dc751f
--- /dev/null
+++ b/src/chainparamsbase.cpp
@@ -0,0 +1,118 @@
+// Copyright (c) 2010 Satoshi Nakamoto
+// Copyright (c) 2009-2014 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 "tinyformat.h"
+#include "util.h"
+
+#include <assert.h>
+
+const std::string CBaseChainParams::MAIN = "main";
+const std::string CBaseChainParams::TESTNET = "test";
+const std::string CBaseChainParams::REGTEST = "regtest";
+
+void AppendParamsHelpMessages(std::string& strUsage, bool debugHelp)
+{
+ strUsage += HelpMessageGroup(_("Chain selection options:"));
+ strUsage += HelpMessageOpt("-testnet", _("Use the test chain"));
+ 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.");
+ }
+}
+
+/**
+ * Main network
+ */
+class CBaseMainParams : public CBaseChainParams
+{
+public:
+ CBaseMainParams()
+ {
+ nRPCPort = 8332;
+ }
+};
+static CBaseMainParams mainParams;
+
+/**
+ * Testnet (v3)
+ */
+class CBaseTestNetParams : public CBaseChainParams
+{
+public:
+ CBaseTestNetParams()
+ {
+ nRPCPort = 18332;
+ strDataDir = "testnet3";
+ }
+};
+static CBaseTestNetParams testNetParams;
+
+/*
+ * Regression test
+ */
+class CBaseRegTestParams : public CBaseChainParams
+{
+public:
+ CBaseRegTestParams()
+ {
+ nRPCPort = 18332;
+ strDataDir = "regtest";
+ }
+};
+static CBaseRegTestParams regTestParams;
+
+/*
+ * Unit test
+ */
+class CBaseUnitTestParams : public CBaseMainParams
+{
+public:
+ CBaseUnitTestParams()
+ {
+ strDataDir = "unittest";
+ }
+};
+static CBaseUnitTestParams unitTestParams;
+
+static CBaseChainParams* pCurrentBaseParams = 0;
+
+const CBaseChainParams& BaseParams()
+{
+ assert(pCurrentBaseParams);
+ return *pCurrentBaseParams;
+}
+
+void SelectBaseParams(const std::string& chain)
+{
+ if (chain == CBaseChainParams::MAIN)
+ pCurrentBaseParams = &mainParams;
+ else if (chain == CBaseChainParams::TESTNET)
+ pCurrentBaseParams = &testNetParams;
+ else if (chain == CBaseChainParams::REGTEST)
+ pCurrentBaseParams = &regTestParams;
+ else
+ throw std::runtime_error(strprintf("%s: Unknown chain %s.", __func__, chain));
+}
+
+std::string ChainNameFromCommandLine()
+{
+ bool fRegTest = GetBoolArg("-regtest", false);
+ bool fTestNet = GetBoolArg("-testnet", false);
+
+ if (fTestNet && fRegTest)
+ throw std::runtime_error("Invalid combination of -regtest and -testnet.");
+ if (fRegTest)
+ return CBaseChainParams::REGTEST;
+ if (fTestNet)
+ return CBaseChainParams::TESTNET;
+ return CBaseChainParams::MAIN;
+}
+
+bool AreBaseParamsConfigured()
+{
+ return pCurrentBaseParams != NULL;
+}