Elements: Introduce "elements_test" testchain

This commit is contained in:
Jorge Timón 2015-07-22 16:34:09 +02:00
parent 1e7a271375
commit 7dc1dcf927
3 changed files with 60 additions and 6 deletions

View file

@ -22,6 +22,7 @@ const std::map<std::string, uint256> CChainParams::supportedChains =
( "main", uint256S("0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"))
( "test", uint256S("0x000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943"))
( "regtest", uint256S("0x0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206"))
( "elements_test", uint256S("0xcf97109d25b15952b636e3d98b6fc15e15665e1ba88dd83165b646e05e19da9a"))
;
static CBlock CreateGenesisBlock(const char* pszTimestamp, CScript genesisOutputScript, uint32_t nTime=1231006505, uint32_t nNonce=2083236893, uint32_t nBits=0x1d00ffff, int32_t nVersion=1, const CAmount& genesisReward=50 * COIN)
@ -264,6 +265,53 @@ public:
}
};
/**
* Sidechain Elements Testnet
*/
class CElementsTestParams : public CChainParams {
public:
CElementsTestParams() {
strNetworkID = "elements_test";
consensus.nSubsidyHalvingInterval = 210000;
consensus.nMajorityEnforceBlockUpgrade = 750;
consensus.nMajorityRejectBlockOutdated = 950;
consensus.nMajorityWindow = 1000;
consensus.powLimit = uint256S("00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60; // two weeks
consensus.nPowTargetSpacing = 10 * 60;
consensus.fPowAllowMinDifficultyBlocks = false;
CScript scriptDestination(CScript() << OP_TRUE);
genesis = CreateGenesisBlock(strNetworkID.c_str(), scriptDestination, 1296688602, 0, 0x2007ffff);
consensus.hashGenesisBlock = genesis.GetHash();
// assert(consensus.hashGenesisBlock == supportedChains.find(strNetworkID)->second);
nDefaultPort = 28333;
nPruneAfterHeight = 100000;
fRequireRPCPassword = false;
fMiningRequiresPeers = false;
fDefaultConsistencyChecks = true;
fRequireStandard = false;
fMineBlocksOnDemand = false;
fTestnetToBeDeprecatedFieldRPC = false;
pchMessageStart[0] = 0xe0;
pchMessageStart[1] = 0x35;
pchMessageStart[2] = 0x8e;
pchMessageStart[3] = 0xfb;
vFixedSeeds.clear();
vSeeds.clear();
checkpointData = (Checkpoints::CCheckpointData){
boost::assign::map_list_of
( 0, consensus.hashGenesisBlock),
0,
0,
0
};
AssignBase58PrefixStyle(base58Prefixes, TEST_BASE58);
}
};
Container<CChainParams> cGlobalChainParams;
static Container<CChainParams> cGlobalSwitchingChainParams;
@ -279,6 +327,8 @@ CChainParams* CChainParams::Factory(const std::string& chain)
return new CTestNetParams();
else if (chain == CBaseChainParams::REGTEST)
return new CRegTestParams();
else if (chain == CBaseChainParams::ELEM_TEST)
return new CElementsTestParams();
else
throw std::runtime_error(strprintf(_("%s: Unknown chain %s."), __func__, chain));
}

View file

@ -11,6 +11,7 @@
const std::string CBaseChainParams::MAIN = "main";
const std::string CBaseChainParams::TESTNET = "test";
const std::string CBaseChainParams::REGTEST = "regtest";
const std::string CBaseChainParams::ELEM_TEST = "elements_test";
void AppendParamsHelpMessages(std::string& strUsage, bool debugHelp)
{
@ -62,18 +63,18 @@ public:
}
};
/*
* Unit test
/**
* Sidechain Elements Testnet
*/
class CBaseUnitTestParams : public CBaseMainParams
class CBaseElementsTestParams : public CBaseMainParams
{
public:
CBaseUnitTestParams()
CBaseElementsTestParams()
{
strDataDir = "unittest";
nRPCPort = 28332;
strDataDir = "elements_test";
}
};
static CBaseUnitTestParams unitTestParams;
Container<CBaseChainParams> cGlobalChainBaseParams;
@ -90,6 +91,8 @@ CBaseChainParams* CBaseChainParams::Factory(const std::string& chain)
return new CBaseTestNetParams();
else if (chain == CBaseChainParams::REGTEST)
return new CBaseRegTestParams();
else if (chain == CBaseChainParams::ELEM_TEST)
return new CBaseElementsTestParams();
else
throw std::runtime_error(strprintf(_("%s: Unknown chain %s."), __func__, chain));
}

View file

@ -21,6 +21,7 @@ public:
static const std::string MAIN;
static const std::string TESTNET;
static const std::string REGTEST;
static const std::string ELEM_TEST;
const std::string& DataDir() const { return strDataDir; }
int RPCPort() const { return nRPCPort; }