diff --git a/src/blockencodings.cpp b/src/blockencodings.cpp --- a/src/blockencodings.cpp +++ b/src/blockencodings.cpp @@ -247,7 +247,7 @@ // that is expensive, and CheckBlock caches a block's "checked-status" // (in the CBlock?). CBlock should be able to check its own merkle root // and cache that check. - if (state.CorruptionPossible()) { + if (state.GetReason() == ValidationInvalidReason::BLOCK_MUTATED) { // Possible Short ID collision. return READ_STATUS_FAILED; } diff --git a/src/validation.cpp b/src/validation.cpp --- a/src/validation.cpp +++ b/src/validation.cpp @@ -948,7 +948,7 @@ void CChainState::InvalidBlockFound(CBlockIndex *pindex, const CValidationState &state) { - if (!state.CorruptionPossible()) { + if (state.GetReason() != ValidationInvalidReason::BLOCK_MUTATED) { pindex->nStatus = pindex->nStatus.withFailed(); m_failed_blocks.insert(pindex); setDirtyBlockIndex.insert(pindex); @@ -1509,7 +1509,7 @@ if (!CheckBlock(block, state, consensusParams, options.withCheckPoW(!fJustCheck) .withCheckMerkleRoot(!fJustCheck))) { - if (state.CorruptionPossible()) { + if (state.GetReason() == ValidationInvalidReason::BLOCK_MUTATED) { // We don't write down blocks to disk if they may have been // corrupted, so this should be impossible unless we're having // hardware problems. @@ -2677,7 +2677,8 @@ connectTrace, disconnectpool)) { if (state.IsInvalid()) { // The block violates a consensus rule. - if (!state.CorruptionPossible()) { + if (state.GetReason() != + ValidationInvalidReason::BLOCK_MUTATED) { InvalidChainFound(vpindexToConnect.back()); } @@ -4001,7 +4002,8 @@ if (!CheckBlock(block, state, consensusParams, BlockValidationOptions(config)) || !ContextualCheckBlock(block, state, consensusParams, pindex->pprev)) { - if (state.IsInvalid() && !state.CorruptionPossible()) { + if (state.IsInvalid() && + state.GetReason() != ValidationInvalidReason::BLOCK_MUTATED) { pindex->nStatus = pindex->nStatus.withFailed(); setDirtyBlockIndex.insert(pindex); }