@Override
  public boolean validate(final BlockHeader header, final BlockHeader parent) {
    long headerExcessBlobGas = header.getExcessBlobGas().map(BlobGas::toLong).orElse(0L);
    long parentExcessBlobGas = parent.getExcessBlobGas().map(BlobGas::toLong).orElse(0L);
    long parentBlobGasUsed = parent.getBlobGasUsed().orElse(0L);

    long calculatedExcessBlobGas =
        gasLimitCalculator.computeExcessBlobGas(
            parentExcessBlobGas, parentBlobGasUsed, parent.getBaseFee().orElse(Wei.ZERO).toLong());

    if (headerExcessBlobGas != calculatedExcessBlobGas) {
      LOG.info(
          "Invalid block header: header excessBlobGas {} and calculated excessBlobGas {} do not match",
          headerExcessBlobGas,
          calculatedExcessBlobGas);
      return false;
    }
    long headerBlobGasUsed = header.getBlobGasUsed().orElse(0L);
    if (headerBlobGasUsed % gasCalculator.getBlobGasPerBlob() != 0) {
      LOG.info(
          "blob gas used must be multiple of GAS_PER_BLOB ({})", gasCalculator.getBlobGasPerBlob());
      return false;
    }
    return true;
  }
Validates the block header by checking if the header's excess blob gas matches the calculated
value based on the parent header, as well that the used blobGas is a multiple of GAS_PER_BLOB.
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/BlobGasValidationRule.java