private Collection<Address> getValidatorsFromContract(
      final Cache<Long, Collection<Address>> validatorCache,
      final BlockHeader header,
      final Address contractAddress) {
    final long blockNumber = header.getNumber();
    try {
      return validatorCache.get(
          blockNumber,
          () ->
              validatorContractController.getValidators(blockNumber, contractAddress).stream()
                  .sorted()
                  .collect(Collectors.toList()));
    } catch (final ExecutionException e) {
      throw new RuntimeException("Unable to determine a validators for the requested block.");
    }
  }
Instantiates a new Transaction validator provider.

@param blockchain the blockchain
@param validatorContractController the validator contract controller
@param forksSchedule the forks schedule
consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/validator/TransactionValidatorProvider.java