Skip to content

Commit 4f800e5

Browse files
g11techmatthewkeil
andcommitted
rebase fixes
chore: fix bls and blst versioning fix: add ForkName.electra to ForkBlobsInfo some api header lookup fixes more api fixes make the api data safe Co-authored-by: matthewkeil <[email protected]>
1 parent 4239f72 commit 4f800e5

File tree

10 files changed

+51
-16
lines changed

10 files changed

+51
-16
lines changed

packages/api/src/beacon/routes/beacon/pool.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
} from "../../../utils/codecs.js";
1818
import {MetaHeader, VersionCodec, VersionMeta} from "../../../utils/metadata.js";
1919
import {toForkName} from "../../../utils/fork.js";
20+
import {fromHeaders} from "../../../utils/headers.js";
2021

2122
// See /packages/api/src/routes/index.ts for reasoning and instructions to add new routes
2223

@@ -247,7 +248,12 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
247248
};
248249
},
249250
parseReqJson: ({body, headers}) => {
250-
const fork = toForkName(headers[MetaHeader.Version]);
251+
const versionHeader = fromHeaders(headers, MetaHeader.Version, false);
252+
const fork =
253+
versionHeader !== undefined
254+
? toForkName(versionHeader)
255+
: config.getForkName(Number((body as {data: {slot: string}}[])[0]?.data.slot ?? 0));
256+
251257
return {
252258
signedAttestations:
253259
ForkSeq[fork] >= ForkSeq.electra
@@ -266,7 +272,8 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
266272
};
267273
},
268274
parseReqSsz: ({body, headers}) => {
269-
const fork = toForkName(headers[MetaHeader.Version]);
275+
const versionHeader = fromHeaders(headers, MetaHeader.Version, true);
276+
const fork = toForkName(versionHeader);
270277
return {
271278
signedAttestations:
272279
ForkSeq[fork] >= ForkSeq.electra

packages/api/src/beacon/routes/validator.ts

+16-5
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import {
4040
VersionMeta,
4141
VersionType,
4242
} from "../../utils/metadata.js";
43+
import {fromHeaders} from "../../utils/headers.js";
4344

4445
// See /packages/api/src/routes/index.ts for reasoning and instructions to add new routes
4546

@@ -856,7 +857,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
856857
parseReq: ({query}) => ({
857858
attestationDataRoot: fromHexString(query.attestation_data_root),
858859
slot: query.slot,
859-
committeeIndex: query.slot,
860+
committeeIndex: query.committeeIndex,
860861
}),
861862
schema: {
862863
query: {
@@ -878,7 +879,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
878879
method: "POST",
879880
req: {
880881
writeReqJson: ({signedAggregateAndProofs}) => {
881-
const fork = config.getForkName(signedAggregateAndProofs[0].message.aggregate.data.slot);
882+
const fork = config.getForkName(signedAggregateAndProofs[0]?.message.aggregate.data.slot ?? 0);
882883
return {
883884
body:
884885
ForkSeq[fork] >= ForkSeq.electra
@@ -892,7 +893,16 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
892893
};
893894
},
894895
parseReqJson: ({body, headers}) => {
895-
const fork = toForkName(headers[MetaHeader.Version]);
896+
const versionHeader = fromHeaders(headers, MetaHeader.Version, false);
897+
const fork =
898+
versionHeader !== undefined
899+
? toForkName(versionHeader)
900+
: config.getForkName(
901+
Number(
902+
(body as {message: {aggregate: {data: {slot: string}}}}[])[0]?.message.aggregate.data.slot ?? 0
903+
)
904+
);
905+
896906
return {
897907
signedAggregateAndProofs:
898908
ForkSeq[fork] >= ForkSeq.electra
@@ -901,7 +911,7 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
901911
};
902912
},
903913
writeReqSsz: ({signedAggregateAndProofs}) => {
904-
const fork = config.getForkName(signedAggregateAndProofs[0].message.aggregate.data.slot);
914+
const fork = config.getForkName(signedAggregateAndProofs[0]?.message.aggregate.data.slot ?? 0);
905915
return {
906916
body:
907917
ForkSeq[fork] >= ForkSeq.electra
@@ -915,7 +925,8 @@ export function getDefinitions(config: ChainForkConfig): RouteDefinitions<Endpoi
915925
};
916926
},
917927
parseReqSsz: ({body, headers}) => {
918-
const fork = toForkName(headers[MetaHeader.Version]);
928+
const versionHeader = fromHeaders(headers, MetaHeader.Version, true);
929+
const fork = toForkName(versionHeader);
919930
return {
920931
signedAggregateAndProofs:
921932
ForkSeq[fork] >= ForkSeq.electra

packages/api/test/unit/beacon/testData/beacon.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export const testData: GenericServerTestCases<Endpoints> = {
8989

9090
getPoolAttestations: {
9191
args: {slot: 1, committeeIndex: 2},
92-
res: {data: [ssz.phase0.Attestation.defaultValue()]},
92+
res: {data: [ssz.phase0.Attestation.defaultValue()], meta: {version: ForkName.deneb}},
9393
},
9494
getPoolAttesterSlashings: {
9595
args: undefined,

packages/api/test/unit/beacon/testData/validator.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ export const testData: GenericServerTestCases<Endpoints> = {
103103
res: {data: ssz.altair.SyncCommitteeContribution.defaultValue()},
104104
},
105105
getAggregatedAttestation: {
106-
args: {attestationDataRoot: ZERO_HASH, slot: 32000, index: 2},
106+
args: {attestationDataRoot: ZERO_HASH, slot: 32000, committeeIndex: 2},
107107
res: {data: ssz.phase0.Attestation.defaultValue(), meta: {version: ForkName.phase0}},
108108
},
109109
publishAggregateAndProofs: {

packages/beacon-node/src/chain/blocks/types.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export enum GossipedInputType {
3636

3737
type BlobsCacheMap = Map<number, {blobSidecar: deneb.BlobSidecar; blobBytes: Uint8Array | null}>;
3838

39-
type ForkBlobsInfo = {fork: ForkName.deneb};
39+
type ForkBlobsInfo = {fork: ForkName.deneb | ForkName.electra};
4040
type BlobsData = {blobs: deneb.BlobSidecars; blobsBytes: (Uint8Array | null)[]; blobsSource: BlobsSource};
4141
export type BlockInputDataBlobs = ForkBlobsInfo & BlobsData;
4242
export type BlockInputData = BlockInputDataBlobs;

packages/light-client/test/unit/webEsmBundle.browser.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
/* eslint-disable @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-call */
1+
/* eslint-disable @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access */
22
import {expect, describe, it, vi, beforeAll} from "vitest";
33
import {sleep} from "@lodestar/utils";
4-
import {Lightclient, LightclientEvent, utils, transport} from "../../dist/lightclient.min.mjs";
4+
import {Lightclient, LightclientEvent, utils, transport} from "../../src/index.js";
55

66
describe("web bundle for lightclient", () => {
77
vi.setConfig({testTimeout: 20_000});

packages/state-transition/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@
5959
"types": "lib/index.d.ts",
6060
"dependencies": {
6161
"@chainsafe/as-sha256": "^0.4.1",
62-
"@chainsafe/bls": "^8.1.0",
63-
"@chainsafe/blst": "^1.0.0",
62+
"@chainsafe/bls": "7.1.3",
63+
"@chainsafe/blst": "^0.2.11",
6464
"@chainsafe/persistent-merkle-tree": "^0.7.1",
6565
"@chainsafe/ssz": "^0.16.0",
6666
"@lodestar/config": "^1.19.0",

packages/validator/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
"blockchain"
4646
],
4747
"dependencies": {
48-
"@chainsafe/bls": "^8.1.0",
48+
"@chainsafe/bls": "7.1.3",
4949
"@chainsafe/ssz": "^0.16.0",
5050
"@lodestar/api": "^1.19.0",
5151
"@lodestar/config": "^1.19.0",

packages/validator/test/unit/services/attestation.test.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {ssz} from "@lodestar/types";
55
import {routes} from "@lodestar/api";
66
import {createChainForkConfig} from "@lodestar/config";
77
import {config} from "@lodestar/config/default";
8+
import {ForkName} from "@lodestar/params";
89
import {AttestationService, AttestationServiceOpts} from "../../../src/services/attestation.js";
910
import {AttDutyAndProof} from "../../../src/services/attestationDuties.js";
1011
import {ValidatorStore} from "../../../src/services/validatorStore.js";
@@ -100,7 +101,9 @@ describe("AttestationService", function () {
100101

101102
// Mock beacon's attestation and aggregates endpoints
102103
api.validator.produceAttestationData.mockResolvedValue(mockApiResponse({data: attestation.data}));
103-
api.validator.getAggregatedAttestation.mockResolvedValue(mockApiResponse({data: attestation}));
104+
api.validator.getAggregatedAttestation.mockResolvedValue(
105+
mockApiResponse({data: attestation, meta: {version: ForkName.phase0}})
106+
);
104107

105108
api.beacon.submitPoolAttestations.mockResolvedValue(mockApiResponse({}));
106109
api.validator.publishAggregateAndProofs.mockResolvedValue(mockApiResponse({}));

yarn.lock

+14
Original file line numberDiff line numberDiff line change
@@ -2849,6 +2849,13 @@
28492849
resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9"
28502850
integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==
28512851

2852+
"@types/buffer-xor@^2.0.0":
2853+
version "2.0.2"
2854+
resolved "https://registry.yarnpkg.com/@types/buffer-xor/-/buffer-xor-2.0.2.tgz#d8c463583b8fbb322ea824562dc78a0c3cea2ca6"
2855+
integrity sha512-OqdCua7QCTupPnJgmyGJUpxWgbuOi0IMIVslXTSePS2o+qDrDB6f2Pg44zRyqhUA5GbFAf39U8z0+mH4WG0fLQ==
2856+
dependencies:
2857+
"@types/node" "*"
2858+
28522859
"@types/cacheable-request@^6.0.1":
28532860
version "6.0.3"
28542861
resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183"
@@ -4435,6 +4442,13 @@ buffer-xor@^1.0.3:
44354442
resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz"
44364443
integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
44374444

4445+
buffer-xor@^2.0.2:
4446+
version "2.0.2"
4447+
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289"
4448+
integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==
4449+
dependencies:
4450+
safe-buffer "^5.1.1"
4451+
44384452
[email protected], buffer@^4.3.0:
44394453
version "4.9.2"
44404454
resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz"

0 commit comments

Comments
 (0)