@Override
  public boolean validate(final BlockHeader header, final BlockHeader parent) {
    final boolean hasTransactions = !header.getTransactionsRoot().equals(Hash.EMPTY_TRIE_HASH);
    if (!hasTransactions) {
      LOG.info(
          "Invalid block header: {} has no transactions but create empty blocks is not enabled",
          header.toLogString());
    }
    return hasTransactions;
  }
Responsible for ensuring there are no empty transactions. This is used when createEmptyBlocks
is false, to ensure that no empty blocks are created.

@param header the block header to validate
@param parent the block header corresponding to the parent of the header being validated.
@return true if the transactionsRoot in the header is not the empty trie hash.
consensus/clique/src/main/java/org/hyperledger/besu/consensus/clique/headervalidationrules/CliqueNoEmptyBlockValidationRule.java