// Copyright (c) 2010 Satoshi Nakamoto // Copyright (c) 2009-2015 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 const std::string CBaseChainParams::MAIN = "main"; const std::string CBaseChainParams::REGTEST = "regtest"; void AppendParamsHelpMessages(std::string& strUsage, bool debugHelp) { strUsage += HelpMessageGroup(_("Chain selection options:")); strUsage += HelpMessageOpt("-chain=", _("Use the chain (default: main). Allowed values: main, testnet, regtest")); 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; } }; /** * Regression test */ class CBaseRegTestParams : public CBaseChainParams { public: CBaseRegTestParams() { nRPCPort = 18332; strDataDir = "regtest"; } }; static boost::scoped_ptr globalChainBaseParams; const CBaseChainParams& BaseParams() { assert(globalChainBaseParams.get()); return *globalChainBaseParams; } CBaseChainParams* CBaseChainParams::Factory(const std::string& chain) { if (chain == CBaseChainParams::MAIN) return new CBaseMainParams(); else if (chain == CBaseChainParams::REGTEST) return new CBaseRegTestParams(); else throw std::runtime_error(strprintf("%s: Unknown chain %s.", __func__, chain)); } void SelectBaseParams(const std::string& chain) { globalChainBaseParams.reset(CBaseChainParams::Factory(chain)); } std::string ChainNameFromCommandLine() { if (GetBoolArg("-testnet", false)) throw std::runtime_error(strprintf("%s: Invalid option -testnet: elements/%s is a testchain too.", __func__, CBaseChainParams::MAIN)); if (GetBoolArg("-regtest", false)) return CBaseChainParams::REGTEST; return GetArg("-chain", CBaseChainParams::MAIN); } bool AreBaseParamsConfigured() { return globalChainBaseParams.get(); }