@Override
  public Hash hash(final BlockHeader header) {
    return getBlockHeaderFunctions(header).hash(header);
  }
Looks up the correct {@link BlockHeaderFunctions} to use based on a {@link ProtocolSchedule} to
ensure that the correct hash is created given the block number.
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ScheduleBasedBlockHeaderFunctions.java