use of tech.pegasys.teku.api.schema.BLSSignature in project web3signer by ConsenSys.
the class Eth2RequestUtils method createAggregateAndProof.
private static Eth2SigningRequestBody createAggregateAndProof() {
final ForkInfo forkInfo = forkInfo();
final Bytes sszBytes = Bytes.of(0, 0, 1, 1);
final Attestation attestation = new Attestation(sszBytes, new AttestationData(UInt64.ZERO, UInt64.ZERO, Bytes32.fromHexString("0x100814c335d0ced5014cfa9d2e375e6d9b4e197381f8ce8af0473200fdc917fd"), new Checkpoint(UInt64.ZERO, Bytes32.ZERO), new Checkpoint(UInt64.ZERO, Bytes32.fromHexString("0x100814c335d0ced5014cfa9d2e375e6d9b4e197381f8ce8af0473200fdc917fd"))), BLSSignature.fromHexString("0xa627242e4a5853708f4ebf923960fb8192f93f2233cd347e05239d86dd9fb66b721ceec1baeae6647f498c9126074f1101a87854d674b6eebc220fd8c3d8405bdfd8e286b707975d9e00a56ec6cbbf762f23607d490f0bbb16c3e0e483d51875"));
final BLSSignature selectionProof = BLSSignature.fromHexString("0xa63f73a03f1f42b1fd0a988b614d511eb346d0a91c809694ef76df5ae021f0f144d64e612d735bc8820950cf6f7f84cd0ae194bfe3d4242fe79688f83462e3f69d9d33de71aab0721b7dab9d6960875e5fdfd26b171a75fb51af822043820c47");
final AggregateAndProof aggregateAndProof = new AggregateAndProof(UInt64.ONE, attestation, selectionProof);
final Bytes signingRoot = signingRootUtil.signingRootForSignAggregateAndProof(aggregateAndProof.asInternalAggregateAndProof(spec), forkInfo.asInternalForkInfo());
return new Eth2SigningRequestBody(ArtifactType.AGGREGATE_AND_PROOF, signingRoot, forkInfo, null, null, null, null, aggregateAndProof, null, null, null, null, null, null);
}
use of tech.pegasys.teku.api.schema.BLSSignature in project teku by ConsenSys.
the class GetNewBlock method handle.
@OpenApi(path = OAPI_ROUTE, deprecated = true, method = HttpMethod.GET, summary = "Produce unsigned block", tags = { TAG_VALIDATOR, TAG_VALIDATOR_REQUIRED }, description = "Requests a beacon node to produce a valid block, which can then be signed by a validator.\n\n" + "__NOTE__: deprecated, switch to using `/eth/v2/validator/blocks/{slot}` for multiple milestone support.", pathParams = { @OpenApiParam(name = SLOT, description = "The slot for which the block should be proposed.") }, queryParams = { @OpenApiParam(name = RANDAO_REVEAL, description = "`BLSSignature Hex` BLS12-381 signature for the current epoch.", required = true), @OpenApiParam(name = GRAFFITI, description = "`Bytes32 Hex` Graffiti.") }, responses = { @OpenApiResponse(status = RES_OK, content = @OpenApiContent(from = GetNewBlockResponse.class)), @OpenApiResponse(status = RES_BAD_REQUEST, description = "Invalid parameter supplied"), @OpenApiResponse(status = RES_INTERNAL_ERROR), @OpenApiResponse(status = RES_SERVICE_UNAVAILABLE, description = SERVICE_UNAVAILABLE) })
@Override
public void handle(final Context ctx) throws Exception {
try {
final Map<String, List<String>> queryParamMap = ctx.queryParamMap();
final Map<String, String> pathParamMap = ctx.pathParamMap();
final UInt64 slot = UInt64.valueOf(pathParamMap.get(SLOT));
final BLSSignature randao = getParameterValueAsBLSSignature(queryParamMap, RANDAO_REVEAL);
final Optional<Bytes32> graffiti = getOptionalParameterValueAsBytes32(queryParamMap, GRAFFITI);
ctx.future(provider.getUnsignedBeaconBlockAtSlot(slot, randao, graffiti).thenApplyChecked(maybeBlock -> {
if (maybeBlock.isEmpty()) {
throw new ChainDataUnavailableException();
}
return produceResultString(maybeBlock.get());
}).exceptionallyCompose(error -> handleError(ctx, error)));
} catch (final IllegalArgumentException e) {
ctx.status(SC_BAD_REQUEST);
ctx.json(jsonProvider.objectToJSON(new BadRequest(e.getMessage())));
}
}
use of tech.pegasys.teku.api.schema.BLSSignature in project teku by ConsenSys.
the class PostSyncCommitteesIntegrationTest method phase0SlotCausesBadRequest.
@Test
void phase0SlotCausesBadRequest() throws IOException {
startRestAPIAtGenesis(SpecMilestone.PHASE0);
spec = TestSpecFactory.createMinimalPhase0();
DataStructureUtil dataStructureUtil = new DataStructureUtil(spec);
final List<SyncCommitteeMessage> requestBody = List.of(new SyncCommitteeMessage(UInt64.ONE, dataStructureUtil.randomBytes32(), dataStructureUtil.randomUInt64(), new BLSSignature(dataStructureUtil.randomSignature())));
Response response = post(PostSyncCommittees.ROUTE, jsonProvider.objectToJSON(requestBody));
assertThat(response.code()).isEqualTo(SC_BAD_REQUEST);
assertThat(response.body().string()).contains("Could not create sync committee signature at phase0 slot 1");
}
use of tech.pegasys.teku.api.schema.BLSSignature in project teku by ConsenSys.
the class PostSyncCommitteesIntegrationTest method shouldGet200OkWhenThereAreNoErrors.
@Test
void shouldGet200OkWhenThereAreNoErrors() throws Exception {
spec = TestSpecFactory.createMinimalAltair();
DataStructureUtil dataStructureUtil = new DataStructureUtil(spec);
startRestAPIAtGenesis(SpecMilestone.ALTAIR);
final List<SyncCommitteeMessage> requestBody = List.of(new SyncCommitteeMessage(UInt64.ONE, dataStructureUtil.randomBytes32(), dataStructureUtil.randomUInt64(), new BLSSignature(dataStructureUtil.randomSignature())));
final SafeFuture<List<SubmitDataError>> future = SafeFuture.completedFuture(Collections.emptyList());
when(validatorApiChannel.sendSyncCommitteeMessages(any())).thenReturn(future);
Response response = post(PostSyncCommittees.ROUTE, jsonProvider.objectToJSON(requestBody));
assertThat(response.code()).isEqualTo(SC_OK);
assertThat(response.body().string()).isEmpty();
}
use of tech.pegasys.teku.api.schema.BLSSignature in project teku by ConsenSys.
the class PostSyncCommitteesIntegrationTest method shouldSubmitSyncCommitteesAndGetResponse.
@Test
void shouldSubmitSyncCommitteesAndGetResponse() throws IOException {
spec = TestSpecFactory.createMinimalAltair();
DataStructureUtil dataStructureUtil = new DataStructureUtil(spec);
startRestAPIAtGenesis(SpecMilestone.ALTAIR);
final List<SyncCommitteeMessage> requestBody = List.of(new SyncCommitteeMessage(UInt64.ONE, dataStructureUtil.randomBytes32(), dataStructureUtil.randomUInt64(), new BLSSignature(dataStructureUtil.randomSignature())));
final SafeFuture<List<SubmitDataError>> future = SafeFuture.completedFuture(List.of(new SubmitDataError(UInt64.ZERO, errorString)));
when(validatorApiChannel.sendSyncCommitteeMessages(requestBody.get(0).asInternalCommitteeSignature(spec).stream().collect(Collectors.toList()))).thenReturn(future);
Response response = post(PostSyncCommittees.ROUTE, jsonProvider.objectToJSON(requestBody));
assertThat(response.code()).isEqualTo(SC_BAD_REQUEST);
final PostDataFailureResponse responseBody = jsonProvider.jsonToObject(response.body().string(), PostDataFailureResponse.class);
assertThat(responseBody.failures.get(0).message).isEqualTo(errorString);
}
Aggregations