diff --git a/src/consensus/validation.h b/src/consensus/validation.h --- a/src/consensus/validation.h +++ b/src/consensus/validation.h @@ -79,31 +79,25 @@ MODE_ERROR, //!< run-time error } mode; ValidationInvalidReason m_reason; - int nDoS; std::string strRejectReason; unsigned int chRejectCode; - bool corruptionPossible; std::string strDebugMessage; public: CValidationState() - : mode(MODE_VALID), m_reason(ValidationInvalidReason::NONE), nDoS(0), - chRejectCode(0), corruptionPossible(false) {} + : mode(MODE_VALID), m_reason(ValidationInvalidReason::NONE), + chRejectCode(0) {} bool DoS(int level, ValidationInvalidReason reasonIn, bool ret = false, unsigned int chRejectCodeIn = 0, const std::string &strRejectReasonIn = "", - bool corruptionIn = false, + bool corruptionPossibleIn = false, const std::string &strDebugMessageIn = "") { m_reason = reasonIn; chRejectCode = chRejectCodeIn; strRejectReason = strRejectReasonIn; - corruptionPossible = corruptionIn; strDebugMessage = strDebugMessageIn; - nDoS += level; - assert(nDoS == GetDoSForReason()); - assert(corruptionPossible == - (m_reason == ValidationInvalidReason::BLOCK_MUTATED)); + assert(corruptionPossibleIn == CorruptionPossible()); if (mode == MODE_ERROR) { return ret; } @@ -129,17 +123,9 @@ bool IsInvalid() const { return mode == MODE_INVALID; } bool IsError() const { return mode == MODE_ERROR; } bool CorruptionPossible() const { - assert(corruptionPossible == - (m_reason == ValidationInvalidReason::BLOCK_MUTATED)); - return corruptionPossible; + return m_reason == ValidationInvalidReason::BLOCK_MUTATED; } - void SetCorruptionPossible() { - corruptionPossible = true; - assert(corruptionPossible == - (m_reason == ValidationInvalidReason::BLOCK_MUTATED)); - } - int GetDoS() const { return nDoS; } - int GetDoSForReason() const { + int GetDoS() const { switch (m_reason) { case ValidationInvalidReason::NONE: return 0; diff --git a/src/net_processing.cpp b/src/net_processing.cpp --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -1188,8 +1188,7 @@ } static bool TxRelayMayResultInDisconnect(const CValidationState &state) { - assert(state.GetDoS() == state.GetDoSForReason()); - return (state.GetDoS() > 0); + return state.GetDoS() > 0; } /** @@ -1206,7 +1205,6 @@ static bool MaybePunishNode(NodeId nodeid, const CValidationState &state, bool via_compact_block, const std::string &message = "") { - assert(state.GetDoS() == state.GetDoSForReason()); int nDoS = state.GetDoS(); if (nDoS > 0 && !via_compact_block) { LOCK(cs_main); diff --git a/src/validation.cpp b/src/validation.cpp --- a/src/validation.cpp +++ b/src/validation.cpp @@ -2368,7 +2368,6 @@ FindBlockToFinalize(config, pindexNew); if (pindexToFinalize && !FinalizeBlockInternal(config, state, pindexToFinalize)) { - state.SetCorruptionPossible(); return error("ConnectTip(): FinalizeBlock %s failed (%s)", pindexNew->GetBlockHash().ToString(), FormatStateMessage(state));