public boolean validate(final Proposal msg) {
    final QbftBlockValidator blockValidator =
        protocolSchedule.getBlockValidator(msg.getBlock().getHeader());

    final ProposalPayloadValidator payloadValidator =
        new ProposalPayloadValidator(expectedProposer, roundIdentifier, blockValidator);

    if (!payloadValidator.validate(msg.getSignedPayload())) {
      LOG.info("{}: invalid proposal payload in proposal message", ERROR_PREFIX);
      return false;
    }

    if (!validateProposalAndRoundChangeAreConsistent(msg)) {
      return false;
    }

    return true;
  }
Validate.

@param msg the Proposal msg
@return the boolean
consensus/qbft-core/src/main/java/org/hyperledger/besu/consensus/qbft/core/validation/ProposalValidator.java