Auto merge of #4525 - therealyingtong:4524-off-by-one-createnewblock, r=ebfull

Fix off-by-one error in CreateNewBlock()

When calling `GetHistoryRoot()`, use `prevConsensusBranchId` instead of `consensusBranchId` for compatibility with NU4 and future upgrades.

Co-authored by @str4d

Closes #4524
This commit is contained in:
Homu 2020-05-14 18:37:53 +00:00
commit 2d77cd241a
1 changed files with 3 additions and 1 deletions

View File

@ -518,12 +518,14 @@ CBlockTemplate* CreateNewBlock(const CChainParams& chainparams, const MinerAddre
nonce >>= 16; nonce >>= 16;
pblock->nNonce = ArithToUint256(nonce); pblock->nNonce = ArithToUint256(nonce);
uint32_t prevConsensusBranchId = CurrentEpochBranchId(pindexPrev->nHeight, chainparams.GetConsensus());
// Fill in header // Fill in header
pblock->hashPrevBlock = pindexPrev->GetBlockHash(); pblock->hashPrevBlock = pindexPrev->GetBlockHash();
if (IsActivationHeight(nHeight, chainparams.GetConsensus(), Consensus::UPGRADE_HEARTWOOD)) { if (IsActivationHeight(nHeight, chainparams.GetConsensus(), Consensus::UPGRADE_HEARTWOOD)) {
pblock->hashLightClientRoot.SetNull(); pblock->hashLightClientRoot.SetNull();
} else if (chainparams.GetConsensus().NetworkUpgradeActive(nHeight, Consensus::UPGRADE_HEARTWOOD)) { } else if (chainparams.GetConsensus().NetworkUpgradeActive(nHeight, Consensus::UPGRADE_HEARTWOOD)) {
pblock->hashLightClientRoot = view.GetHistoryRoot(consensusBranchId); pblock->hashLightClientRoot = view.GetHistoryRoot(prevConsensusBranchId);
} else { } else {
pblock->hashLightClientRoot = sapling_tree.root(); pblock->hashLightClientRoot = sapling_tree.root();
} }