diff --git a/bcos-pbft/bcos-pbft/pbft/engine/Validator.h b/bcos-pbft/bcos-pbft/pbft/engine/Validator.h index 59cfb7a529..fd7ec627ee 100644 --- a/bcos-pbft/bcos-pbft/pbft/engine/Validator.h +++ b/bcos-pbft/bcos-pbft/pbft/engine/Validator.h @@ -93,6 +93,17 @@ class TxsValidator : public ValidatorInterface, public std::enable_shared_from_t void verifyProposal(bcos::crypto::PublicPtr _fromNode, PBFTProposalInterface::Ptr _proposal, std::function _verifyFinishedHandler) override { + auto block = m_blockFactory->createBlock(_data); + auto blockHeader = block->blockHeader(); + if (blockHeader->number() != _proposal->index()) + { + if (_verifyFinishedHandler) + { + auto error = std::make_shared(-1, "Invalid proposal"); + _verifyFinishedHandler(error, false); + } + return; + } m_txPool->asyncVerifyBlock(_fromNode, _proposal->data(), _verifyFinishedHandler); }