public static Bytes32 hashHeader(final SealableBlockHeader header) {
    final BytesValueRLPOutput out = new BytesValueRLPOutput();
    out.startList();
    out.writeBytes(header.getParentHash());
    out.writeBytes(header.getOmmersHash());
    out.writeBytes(header.getCoinbase());
    out.writeBytes(header.getStateRoot());
    out.writeBytes(header.getTransactionsRoot());
    out.writeBytes(header.getReceiptsRoot());
    out.writeBytes(header.getLogsBloom());
    out.writeUInt256Scalar(header.getDifficulty());
    out.writeLongScalar(header.getNumber());
    out.writeLongScalar(header.getGasLimit());
    out.writeLongScalar(header.getGasUsed());
    out.writeLongScalar(header.getTimestamp());
    out.writeBytes(header.getExtraData());
    if (header.getBaseFee().isPresent()) {
      out.writeUInt256Scalar(header.getBaseFee().get());
    }
    out.endList();
    return Bytes32.wrap(
        DirectAcyclicGraphSeed.KECCAK_256.get().digest(out.encoded().toArrayUnsafe()));
  }
Hashes a BlockHeader without its nonce and MixHash.

@param header Block Header
@return Truncated BlockHeader hash
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/EthHash.java