public void handleProposalMessage(final Proposal msg) {
    LOG.debug("Received a proposal message. round={}", roundState.getRoundIdentifier());
    final Block block = msg.getBlock();

    if (updateStateWithProposedBlock(msg)) {
      LOG.debug("Sending prepare message. round={}", roundState.getRoundIdentifier());
      try {
        final Prepare localPrepareMessage =
            messageFactory.createPrepare(getRoundIdentifier(), block.getHash());
        peerIsPrepared(localPrepareMessage);
        transmitter.multicastPrepare(
            localPrepareMessage.getRoundIdentifier(), localPrepareMessage.getDigest());
      } catch (final SecurityModuleException e) {
        LOG.warn("Failed to create a signed Prepare; {}", e.getMessage());
      }
    }
  }
Handle proposal message.

@param msg the msg
consensus/ibft/src/main/java/org/hyperledger/besu/consensus/ibft/statemachine/IbftRound.java