use of tech.pegasys.teku.validator.client.Validator in project teku by ConsenSys.
the class ValidatorLoader method addValidator.
private void addValidator(final Signer signer, final BLSPublicKey publicKey) {
ownedValidators.addValidator(new Validator(publicKey, new DeletableSigner(signer), graffitiProvider, false));
LOG.info("Added validator: {}", publicKey.toString());
}
use of tech.pegasys.teku.validator.client.Validator in project teku by ConsenSys.
the class SyncCommitteeAggregationDuty method performAggregationIfRequired.
private SafeFuture<AggregationResult> performAggregationIfRequired(final SyncCommitteeUtil syncCommitteeUtil, final ForkInfo forkInfo, final ValidatorAndCommitteeIndices assignment, final int subcommitteeIndex, final UInt64 slot, final Bytes32 beaconBlockRoot) {
final SyncAggregatorSelectionData selectionData = syncCommitteeUtil.createSyncAggregatorSelectionData(slot, UInt64.valueOf(subcommitteeIndex));
final Validator validator = assignment.getValidator();
return validator.getSigner().signSyncCommitteeSelectionProof(selectionData, forkInfo).thenCompose(selectionProof -> {
if (syncCommitteeUtil.isSyncCommitteeAggregator(selectionProof)) {
return performAggregation(syncCommitteeUtil, forkInfo, assignment, subcommitteeIndex, slot, beaconBlockRoot, selectionProof);
} else {
return SafeFuture.completedFuture(new AggregationResult(validator.getPublicKey(), DutyResult.NO_OP));
}
}).exceptionally(error -> new AggregationResult(validator.getPublicKey(), DutyResult.forError(validator.getPublicKey(), error)));
}
use of tech.pegasys.teku.validator.client.Validator in project teku by ConsenSys.
the class MultithreadedValidatorLoader method loadValidators.
public static void loadValidators(final OwnedValidators ownedValidators, final Map<BLSPublicKey, ValidatorProvider> providers, final GraffitiProvider graffitiProvider) {
final int totalValidatorCount = providers.size();
STATUS_LOG.loadingValidators(totalValidatorCount);
final ExecutorService executorService = Executors.newFixedThreadPool(Math.min(4, Runtime.getRuntime().availableProcessors()));
try {
final AtomicInteger numberOfLoadedKeys = new AtomicInteger(0);
final List<Future<Validator>> futures = providers.values().stream().map(provider -> executorService.submit(() -> {
final Validator validator = new Validator(provider.getPublicKey(), new DeletableSigner(provider.createSigner()), graffitiProvider, provider.isReadOnly());
int loadedValidatorCount = numberOfLoadedKeys.incrementAndGet();
if (loadedValidatorCount % 10 == 0) {
STATUS_LOG.atLoadedValidatorNumber(loadedValidatorCount, totalValidatorCount);
}
return validator;
})).collect(toList());
final List<Validator> addedValidators = new ArrayList<>();
for (Future<Validator> future : futures) {
final Validator validator = future.get();
addedValidators.add(validator);
}
// Only start adding validators once we've successfully loaded all keys
addedValidators.forEach(ownedValidators::addValidator);
STATUS_LOG.validatorsInitialised(addedValidators.stream().map(validator -> validator.getPublicKey().toAbbreviatedString()).collect(toList()));
} catch (InterruptedException e) {
throw new RuntimeException("Interrupted while attempting to load validator key files", e);
} catch (ExecutionException e) {
if (e.getCause() instanceof RuntimeException) {
throw (RuntimeException) e.getCause();
}
throw new RuntimeException("Unable to load validator key files", e);
} finally {
executorService.shutdownNow();
}
}
use of tech.pegasys.teku.validator.client.Validator in project teku by ConsenSys.
the class SlashingProtectionLoggerTest method shouldLogLoadedProtectionValidator.
@Test
public void shouldLogLoadedProtectionValidator() throws Exception {
Validator validator = createProtectedValidator(publicKey);
List<Validator> protectedValidators = new ArrayList<>();
protectedValidators.add(validator);
when(slashingProtector.getSigningRecord(validator.getPublicKey())).thenReturn(Optional.of(new ValidatorSigningRecord(Bytes32.ZERO, UInt64.ZERO, null, null)));
slashingProtectionLogger.protectionSummary(protectedValidators);
asyncRunner.executeQueuedActions();
Set<String> protectedValidatorKeys = new HashSet<>();
protectedValidatorKeys.add(validator.getPublicKey().toAbbreviatedString());
verify(validatorLogger, times(1)).loadedSlashingProtection(protectedValidatorKeys);
verify(validatorLogger, never()).notLoadedSlashingProtection(any());
verify(validatorLogger, never()).outdatedSlashingProtection(any(), any());
}
use of tech.pegasys.teku.validator.client.Validator in project teku by ConsenSys.
the class SlashingProtectionLoggerTest method createProtectedValidator.
private Validator createProtectedValidator(BLSPublicKey publicKey) {
Signer localSigner = new NoOpLocalSigner();
Signer signer = new SlashingProtectedSigner(publicKey, slashingProtector, localSigner);
return new Validator(publicKey, signer, mock(GraffitiProvider.class));
}
Aggregations