MCPcopy Create free account
hub / github.com/ElementsProject/elements / sanity_check_chainparams

Function sanity_check_chainparams

src/test/pow_tests.cpp:138–163  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

136}
137
138void sanity_check_chainparams(const ArgsManager& args, std::string chainName)
139{
140 const auto chainParams = CreateChainParams(args, chainName);
141 const auto consensus = chainParams->GetConsensus();
142
143 // hash genesis is correct
144 BOOST_CHECK_EQUAL(consensus.hashGenesisBlock, chainParams->GenesisBlock().GetHash());
145
146 // target timespan is an even multiple of spacing
147 BOOST_CHECK_EQUAL(consensus.nPowTargetTimespan % consensus.nPowTargetSpacing, 0);
148
149 // genesis nBits is positive, doesn't overflow and is lower than powLimit
150 arith_uint256 pow_compact;
151 bool neg, over;
152 pow_compact.SetCompact(chainParams->GenesisBlock().nBits, &neg, &over);
153 BOOST_CHECK(!neg && pow_compact != 0);
154 BOOST_CHECK(!over);
155 BOOST_CHECK(UintToArith256(consensus.powLimit) >= pow_compact);
156
157 // check max target * 4*nPowTargetTimespan doesn't overflow -- see pow.cpp:CalculateNextWorkRequired()
158 if (!consensus.fPowNoRetargeting) {
159 arith_uint256 targ_max("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
160 targ_max /= consensus.nPowTargetTimespan*4;
161 BOOST_CHECK(UintToArith256(consensus.powLimit) < targ_max);
162 }
163}
164
165BOOST_AUTO_TEST_CASE(ChainParams_MAIN_sanity)
166{

Callers 1

BOOST_AUTO_TEST_CASEFunction · 0.85

Calls 3

CreateChainParamsFunction · 0.85
UintToArith256Function · 0.85
GetHashMethod · 0.45

Tested by

no test coverage detected