public boolean validateProposalMatchesBlock(
      final SignedData<ProposalPayload> signedPayload,
      final Block proposedBlock,
      final BftBlockInterface bftBlockInterface) {

    if (!signedPayload.getPayload().getDigest().equals(proposedBlock.getHash())) {
      LOG.info("Invalid Proposal, embedded digest does not match block's hash.");
      return false;
    }

    if (proposedBlock.getHeader().getNumber()
        != signedPayload.getPayload().getRoundIdentifier().getSequenceNumber()) {
      LOG.info("Invalid proposal/block - message sequence does not align with block number.");
      return false;
    }

    if (!validateBlockMatchesProposalRound(
        signedPayload.getPayload(), proposedBlock, bftBlockInterface)) {
      return false;
    }

    return true;
  }
Validate proposal matches block.

@param signedPayload the signed payload
@param proposedBlock the proposed block
@param bftBlockInterface the bft block interface
@return the boolean
consensus/ibft/src/main/java/org/hyperledger/besu/consensus/ibft/validation/ProposalBlockConsistencyValidator.java