use of tech.pegasys.teku.validator.client.loader.ValidatorLoader in project teku by ConsenSys.
the class VoluntaryExitCommand method initialise.
private void initialise() {
config = tekuConfiguration();
final AsyncRunnerFactory asyncRunnerFactory = AsyncRunnerFactory.createDefault(new MetricTrackingExecutorFactory(metricsSystem));
final AsyncRunner asyncRunner = asyncRunnerFactory.create("voluntary-exits", 8);
apiClient = config.validatorClient().getValidatorConfig().getBeaconNodeApiEndpoint().map(RemoteSpecLoader::createApiClient).orElseThrow();
spec = getSpec(apiClient);
validateOrDefaultEpoch();
fork = spec.getForkSchedule().getFork(epoch);
// get genesis time
final Optional<Bytes32> maybeRoot = getGenesisRoot();
if (maybeRoot.isEmpty()) {
SUB_COMMAND_LOG.error("Unable to fetch genesis data, cannot generate an exit.");
System.exit(1);
}
genesisRoot = maybeRoot.get();
final RejectingSlashingProtector slashingProtector = new RejectingSlashingProtector();
final SlashingProtectionLogger slashingProtectionLogger = new SlashingProtectionLogger(slashingProtector, spec, asyncRunner, ValidatorLogger.VALIDATOR_LOGGER);
final ValidatorLoader validatorLoader = ValidatorLoader.create(spec, config.validatorClient().getValidatorConfig(), config.validatorClient().getInteropConfig(), new RejectingSlashingProtector(), slashingProtectionLogger, new PublicKeyLoader(), asyncRunner, metricsSystem, Optional.empty());
try {
validatorLoader.loadValidators();
validators = validatorLoader.getOwnedValidators();
} catch (InvalidConfigurationException ex) {
SUB_COMMAND_LOG.error(ex.getMessage());
System.exit(1);
}
if (validators.hasNoValidators()) {
SUB_COMMAND_LOG.error("No validators were found to exit.");
System.exit(1);
}
}
use of tech.pegasys.teku.validator.client.loader.ValidatorLoader in project teku by ConsenSys.
the class ValidatorClientService method create.
public static ValidatorClientService create(final ServiceConfig services, final ValidatorClientConfiguration config) {
final EventChannels eventChannels = services.getEventChannels();
final AsyncRunner asyncRunner = services.createAsyncRunner("validator");
final boolean generateEarlyAttestations = config.getValidatorConfig().generateEarlyAttestations();
final BeaconNodeApi beaconNodeApi = config.getValidatorConfig().getBeaconNodeApiEndpoint().map(endpoint -> RemoteBeaconNodeApi.create(services, asyncRunner, endpoint, config.getSpec(), generateEarlyAttestations)).orElseGet(() -> InProcessBeaconNodeApi.create(services, asyncRunner, generateEarlyAttestations, config.getSpec()));
final ValidatorApiChannel validatorApiChannel = beaconNodeApi.getValidatorApi();
final GenesisDataProvider genesisDataProvider = new GenesisDataProvider(asyncRunner, validatorApiChannel);
final ForkProvider forkProvider = new ForkProvider(config.getSpec(), genesisDataProvider);
final ValidatorLoader validatorLoader = createValidatorLoader(config, asyncRunner, services);
final ValidatorRestApiConfig validatorApiConfig = config.getValidatorRestApiConfig();
Optional<RestApi> validatorRestApi = Optional.empty();
if (validatorApiConfig.isRestApiEnabled()) {
validatorRestApi = Optional.of(ValidatorRestApi.create(validatorApiConfig, new ActiveKeyManager(validatorLoader, services.getEventChannels().getPublisher(ValidatorTimingChannel.class)), services.getDataDirLayout()));
} else {
LOG.info("validator-api-enabled is false, not starting rest api.");
}
ValidatorClientService validatorClientService = new ValidatorClientService(eventChannels, validatorLoader, beaconNodeApi, validatorRestApi, forkProvider, config.getSpec(), services.getMetricsSystem());
asyncRunner.runAsync(() -> validatorClientService.initializeValidators(config, validatorApiChannel, asyncRunner)).propagateTo(validatorClientService.initializationComplete);
return validatorClientService;
}
Aggregations