@lodestar/beacon-node 1.19.0-dev.ab10788c3a → 1.19.0-dev.b439da2f6e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/api/impl/beacon/blocks/index.js +2 -2
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/rest/base.js +0 -1
- package/lib/api/rest/base.js.map +1 -1
- package/lib/chain/blocks/importBlock.js +17 -7
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/index.js +2 -2
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +10 -2
- package/lib/chain/blocks/types.js +10 -1
- package/lib/chain/blocks/types.js.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts +1 -0
- package/lib/chain/blocks/verifyBlock.js +2 -2
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts +1 -0
- package/lib/chain/blocks/verifyBlocksDataAvailability.js +10 -7
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +3 -0
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.js +3 -3
- package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +3 -2
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
- package/lib/chain/bls/index.d.ts +3 -2
- package/lib/chain/bls/index.js +1 -1
- package/lib/chain/bls/index.js.map +1 -1
- package/lib/chain/bls/{multithread/jobItem.d.ts → jobItem.d.ts} +3 -3
- package/lib/chain/bls/{multithread/jobItem.js → jobItem.js} +12 -5
- package/lib/chain/bls/jobItem.js.map +1 -0
- package/lib/chain/bls/{multithread/index.d.ts → multiThread.d.ts} +5 -10
- package/lib/chain/bls/{multithread/index.js → multiThread.js} +46 -130
- package/lib/chain/bls/multiThread.js.map +1 -0
- package/lib/chain/bls/runBlsWorkReq.d.ts +3 -0
- package/lib/chain/bls/{multithread/worker.js → runBlsWorkReq.js} +9 -32
- package/lib/chain/bls/runBlsWorkReq.js.map +1 -0
- package/lib/chain/bls/singleThread.js +3 -3
- package/lib/chain/bls/singleThread.js.map +1 -1
- package/lib/chain/bls/{multithread/types.d.ts → types.d.ts} +11 -10
- package/lib/chain/bls/types.js.map +1 -0
- package/lib/chain/bls/utils.d.ts +12 -1
- package/lib/chain/bls/utils.js +35 -0
- package/lib/chain/bls/utils.js.map +1 -1
- package/lib/chain/bls/verifySets.d.ts +8 -0
- package/lib/chain/bls/verifySets.js +46 -0
- package/lib/chain/bls/verifySets.js.map +1 -0
- package/lib/chain/regen/regen.js +3 -3
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.js +3 -3
- package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
- package/lib/chain/validation/aggregateAndProof.js +9 -0
- package/lib/chain/validation/aggregateAndProof.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +4 -1
- package/lib/metrics/metrics/lodestar.js +5 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/monitoring/clientStats.js +1 -1
- package/lib/monitoring/clientStats.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/discv5/index.js.map +1 -1
- package/lib/network/gossip/encoding.d.ts +1 -1
- package/lib/network/gossip/encoding.js.map +1 -1
- package/lib/network/gossip/gossipsub.d.ts +1 -0
- package/lib/network/gossip/gossipsub.js +9 -5
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/peers/client.d.ts +1 -0
- package/lib/network/peers/client.js +3 -0
- package/lib/network/peers/client.js.map +1 -1
- package/lib/network/processor/index.js +5 -4
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js +2 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +2 -2
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +4 -4
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +4 -4
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
- package/lib/util/eventLoop.d.ts +12 -0
- package/lib/util/eventLoop.js +21 -0
- package/lib/util/eventLoop.js.map +1 -0
- package/lib/util/queue/itemQueue.js +3 -3
- package/lib/util/queue/itemQueue.js.map +1 -1
- package/package.json +29 -31
- package/lib/chain/bls/maybeBatch.d.ts +0 -12
- package/lib/chain/bls/maybeBatch.js +0 -36
- package/lib/chain/bls/maybeBatch.js.map +0 -1
- package/lib/chain/bls/multithread/index.js.map +0 -1
- package/lib/chain/bls/multithread/jobItem.js.map +0 -1
- package/lib/chain/bls/multithread/poolSize.d.ts +0 -6
- package/lib/chain/bls/multithread/poolSize.js +0 -17
- package/lib/chain/bls/multithread/poolSize.js.map +0 -1
- package/lib/chain/bls/multithread/types.js.map +0 -1
- package/lib/chain/bls/multithread/utils.d.ts +0 -5
- package/lib/chain/bls/multithread/utils.js +0 -17
- package/lib/chain/bls/multithread/utils.js.map +0 -1
- package/lib/chain/bls/multithread/worker.d.ts +0 -2
- package/lib/chain/bls/multithread/worker.js.map +0 -1
- /package/lib/chain/bls/{multithread/types.js → types.js} +0 -0
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import worker from "node:worker_threads";
|
|
3
|
-
import { expose } from "@chainsafe/threads/worker";
|
|
4
|
-
import bls from "@chainsafe/bls";
|
|
5
|
-
import { CoordType } from "@chainsafe/bls/types";
|
|
6
|
-
import { verifySignatureSetsMaybeBatch } from "../maybeBatch.js";
|
|
7
|
-
import { WorkResultCode } from "./types.js";
|
|
1
|
+
import { asyncVerifySets } from "./verifySets.js";
|
|
8
2
|
import { chunkifyMaximizeChunkSize } from "./utils.js";
|
|
3
|
+
import { WorkResultCode } from "./types.js";
|
|
9
4
|
/**
|
|
10
5
|
* Split batchable sets in chunks of minimum size 16.
|
|
11
6
|
* Batch verify 16 has an aprox cost of 16+1. For 32 it's 32+1. After ~16 the additional savings are not significant.
|
|
@@ -14,17 +9,7 @@ import { chunkifyMaximizeChunkSize } from "./utils.js";
|
|
|
14
9
|
* After observing metrics this number can be reviewed
|
|
15
10
|
*/
|
|
16
11
|
const BATCHABLE_MIN_PER_CHUNK = 16;
|
|
17
|
-
|
|
18
|
-
const workerData = worker.workerData;
|
|
19
|
-
if (!workerData)
|
|
20
|
-
throw Error("workerData must be defined");
|
|
21
|
-
const { workerId } = workerData || {};
|
|
22
|
-
expose({
|
|
23
|
-
async verifyManySignatureSets(workReqArr) {
|
|
24
|
-
return verifyManySignatureSets(workReqArr);
|
|
25
|
-
},
|
|
26
|
-
});
|
|
27
|
-
function verifyManySignatureSets(workReqArr) {
|
|
12
|
+
export async function runBlsWorkReq(workReqArr) {
|
|
28
13
|
const [startSec, startNs] = process.hrtime();
|
|
29
14
|
const results = [];
|
|
30
15
|
let batchRetries = 0;
|
|
@@ -35,12 +20,11 @@ function verifyManySignatureSets(workReqArr) {
|
|
|
35
20
|
// Split sets between batchable and non-batchable preserving their original index in the req array
|
|
36
21
|
for (let i = 0; i < workReqArr.length; i++) {
|
|
37
22
|
const workReq = workReqArr[i];
|
|
38
|
-
const sets = workReq.sets.map(deserializeSet);
|
|
39
23
|
if (workReq.opts.batchable) {
|
|
40
|
-
batchableSets.push({ idx: i, sets });
|
|
24
|
+
batchableSets.push({ idx: i, sets: workReq.sets });
|
|
41
25
|
}
|
|
42
26
|
else {
|
|
43
|
-
nonBatchableSets.push({ idx: i, sets });
|
|
27
|
+
nonBatchableSets.push({ idx: i, sets: workReq.sets });
|
|
44
28
|
}
|
|
45
29
|
}
|
|
46
30
|
if (batchableSets.length > 0) {
|
|
@@ -55,7 +39,7 @@ function verifyManySignatureSets(workReqArr) {
|
|
|
55
39
|
}
|
|
56
40
|
try {
|
|
57
41
|
// Attempt to verify multiple sets at once
|
|
58
|
-
const isValid =
|
|
42
|
+
const isValid = await asyncVerifySets(allSets);
|
|
59
43
|
if (isValid) {
|
|
60
44
|
// The entire batch is valid, return success to all
|
|
61
45
|
for (const { idx, sets } of batchableChunk) {
|
|
@@ -80,7 +64,7 @@ function verifyManySignatureSets(workReqArr) {
|
|
|
80
64
|
}
|
|
81
65
|
for (const { idx, sets } of nonBatchableSets) {
|
|
82
66
|
try {
|
|
83
|
-
const isValid =
|
|
67
|
+
const isValid = await asyncVerifySets(sets);
|
|
84
68
|
results[idx] = { code: WorkResultCode.success, result: isValid };
|
|
85
69
|
}
|
|
86
70
|
catch (e) {
|
|
@@ -88,8 +72,8 @@ function verifyManySignatureSets(workReqArr) {
|
|
|
88
72
|
}
|
|
89
73
|
}
|
|
90
74
|
const [workerEndSec, workerEndNs] = process.hrtime();
|
|
75
|
+
// TODO: (@matthewkeil) all of these metrics need to be revisited
|
|
91
76
|
return {
|
|
92
|
-
workerId,
|
|
93
77
|
batchRetries,
|
|
94
78
|
batchSigsSuccess,
|
|
95
79
|
workerStartTime: [startSec, startNs],
|
|
@@ -97,11 +81,4 @@ function verifyManySignatureSets(workReqArr) {
|
|
|
97
81
|
results,
|
|
98
82
|
};
|
|
99
83
|
}
|
|
100
|
-
|
|
101
|
-
return {
|
|
102
|
-
publicKey: bls.PublicKey.fromBytes(set.publicKey, CoordType.affine),
|
|
103
|
-
message: set.message,
|
|
104
|
-
signature: set.signature,
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=worker.js.map
|
|
84
|
+
//# sourceMappingURL=runBlsWorkReq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runBlsWorkReq.js","sourceRoot":"","sources":["../../../src/chain/bls/runBlsWorkReq.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import bls from "@chainsafe/bls";
|
|
2
|
-
import { CoordType } from "@chainsafe/
|
|
3
|
-
import {
|
|
2
|
+
import { CoordType } from "@chainsafe/bls/types";
|
|
3
|
+
import { verifySets } from "./verifySets.js";
|
|
4
4
|
import { getAggregatedPubkey, getAggregatedPubkeysCount } from "./utils.js";
|
|
5
5
|
export class BlsSingleThreadVerifier {
|
|
6
6
|
constructor({ metrics = null }) {
|
|
@@ -15,7 +15,7 @@ export class BlsSingleThreadVerifier {
|
|
|
15
15
|
}));
|
|
16
16
|
// Count time after aggregating
|
|
17
17
|
const timer = this.metrics?.blsThreadPool.mainThreadDurationInThreadPool.startTimer();
|
|
18
|
-
const isValid =
|
|
18
|
+
const isValid = verifySets(setsAggregated);
|
|
19
19
|
// Don't use a try/catch, only count run without exceptions
|
|
20
20
|
if (timer) {
|
|
21
21
|
timer();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singleThread.js","sourceRoot":"","sources":["../../../src/chain/bls/singleThread.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,gBAAgB,CAAC;AACjC,OAAO,EAAC,SAAS,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"singleThread.js","sourceRoot":"","sources":["../../../src/chain/bls/singleThread.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
6
|
-
export type SerializedSet = {
|
|
7
|
-
publicKey: Uint8Array;
|
|
1
|
+
import { PublicKey, Signature } from "@chainsafe/bls/types";
|
|
2
|
+
import { VerifySignatureOpts } from "./interface.js";
|
|
3
|
+
export type DeserializedKeySet = {
|
|
4
|
+
publicKey: PublicKey;
|
|
8
5
|
message: Uint8Array;
|
|
9
6
|
signature: Uint8Array;
|
|
10
7
|
};
|
|
8
|
+
export type DeserializedSet = {
|
|
9
|
+
publicKey: PublicKey;
|
|
10
|
+
message: Uint8Array;
|
|
11
|
+
signature: Signature;
|
|
12
|
+
};
|
|
13
|
+
export type WorkRequestSet = DeserializedKeySet | DeserializedSet;
|
|
11
14
|
export type BlsWorkReq = {
|
|
12
15
|
opts: VerifySignatureOpts;
|
|
13
|
-
sets:
|
|
16
|
+
sets: WorkRequestSet[];
|
|
14
17
|
};
|
|
15
18
|
export declare enum WorkResultCode {
|
|
16
19
|
success = "success",
|
|
@@ -25,8 +28,6 @@ export type WorkResult<R> = {
|
|
|
25
28
|
result: R;
|
|
26
29
|
} | WorkResultError;
|
|
27
30
|
export type BlsWorkResult = {
|
|
28
|
-
/** Ascending integer identifying the worker for metrics */
|
|
29
|
-
workerId: number;
|
|
30
31
|
/** Total num of batches that had to be retried */
|
|
31
32
|
batchRetries: number;
|
|
32
33
|
/** Total num of sigs that have been successfully verified with batching */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/chain/bls/types.ts"],"names":[],"mappings":"AAsBA,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,iCAAe,CAAA;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB"}
|
package/lib/chain/bls/utils.d.ts
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { PublicKey } from "@chainsafe/bls/types";
|
|
2
2
|
import { ISignatureSet } from "@lodestar/state-transition";
|
|
3
3
|
import { Metrics } from "../../metrics/metrics.js";
|
|
4
|
+
import { WorkResultError } from "./types.js";
|
|
4
5
|
export declare function getAggregatedPubkey(signatureSet: ISignatureSet, metrics?: Metrics | null): PublicKey;
|
|
5
6
|
export declare function getAggregatedPubkeysCount(signatureSets: ISignatureSet[]): number;
|
|
7
|
+
/**
|
|
8
|
+
* Splits an array into an array of arrays maximizing the size of the smallest chunk.
|
|
9
|
+
*/
|
|
10
|
+
export declare function chunkifyMaximizeChunkSize<T>(arr: T[], minPerChunk: number): T[][];
|
|
11
|
+
/**
|
|
12
|
+
* `rand` must not be exactly zero. Otherwise it would allow the verification of invalid signatures
|
|
13
|
+
* See https://github.com/ChainSafe/blst-ts/issues/45
|
|
14
|
+
*/
|
|
15
|
+
export declare function randomBytesNonZero(bytesCount: number): Uint8Array;
|
|
16
|
+
export declare function getJobResultError(jobResult: WorkResultError | null, i: number): Error;
|
|
6
17
|
//# sourceMappingURL=utils.d.ts.map
|
package/lib/chain/bls/utils.js
CHANGED
|
@@ -23,4 +23,39 @@ export function getAggregatedPubkeysCount(signatureSets) {
|
|
|
23
23
|
}
|
|
24
24
|
return pubkeysConut;
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Splits an array into an array of arrays maximizing the size of the smallest chunk.
|
|
28
|
+
*/
|
|
29
|
+
export function chunkifyMaximizeChunkSize(arr, minPerChunk) {
|
|
30
|
+
const chunkCount = Math.floor(arr.length / minPerChunk);
|
|
31
|
+
if (chunkCount <= 1) {
|
|
32
|
+
return [arr];
|
|
33
|
+
}
|
|
34
|
+
// Prefer less chunks of bigger size
|
|
35
|
+
const perChunk = Math.ceil(arr.length / chunkCount);
|
|
36
|
+
const arrArr = [];
|
|
37
|
+
for (let i = 0; i < arr.length; i += perChunk) {
|
|
38
|
+
arrArr.push(arr.slice(i, i + perChunk));
|
|
39
|
+
}
|
|
40
|
+
return arrArr;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* `rand` must not be exactly zero. Otherwise it would allow the verification of invalid signatures
|
|
44
|
+
* See https://github.com/ChainSafe/blst-ts/issues/45
|
|
45
|
+
*/
|
|
46
|
+
export function randomBytesNonZero(bytesCount) {
|
|
47
|
+
const rand = crypto.getRandomValues(new Uint8Array(bytesCount));
|
|
48
|
+
for (let i = 0; i < bytesCount; i++) {
|
|
49
|
+
if (rand[i] !== 0)
|
|
50
|
+
return rand;
|
|
51
|
+
}
|
|
52
|
+
rand[0] = 1;
|
|
53
|
+
return rand;
|
|
54
|
+
}
|
|
55
|
+
export function getJobResultError(jobResult, i) {
|
|
56
|
+
const workerError = jobResult ? Error(jobResult.error.message) : Error(`No jobResult for index ${i}`);
|
|
57
|
+
if (jobResult?.error?.stack)
|
|
58
|
+
workerError.stack = jobResult.error.stack;
|
|
59
|
+
return workerError;
|
|
60
|
+
}
|
|
26
61
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/chain/bls/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/chain/bls/utils.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,gBAAgB,CAAC;AAEjC,OAAO,EAAgB,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAI3E,MAAM,UAAU,mBAAmB,CAAC,YAA2B,EAAE,UAA0B,IAAI;IAC7F,QAAQ,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1B,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,YAAY,CAAC,MAAM,CAAC;QAE7B,KAAK,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,OAAO,EAAE,aAAa,CAAC,oCAAoC,CAAC,UAAU,EAAE,CAAC;YACvF,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC9D,KAAK,EAAE,EAAE,CAAC;YACV,OAAO,OAAO,CAAC;QACjB,CAAC;QAED;YACE,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,aAA8B;IACtE,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAC5C,YAAY,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAI,GAAQ,EAAE,WAAmB;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;IACxD,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,oCAAoC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;IACpD,MAAM,MAAM,GAAU,EAAE,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IACjC,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACZ,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAiC,EAAE,CAAS;IAC5E,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;IACtG,IAAI,SAAS,EAAE,KAAK,EAAE,KAAK;QAAE,WAAW,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;IACvE,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { WorkRequestSet } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Verify signatures sets with batch verification or regular core verify depending on the set count.
|
|
4
|
+
* Abstracted in a separate file to be consumed by the threaded pool and the main thread implementation.
|
|
5
|
+
*/
|
|
6
|
+
export declare function verifySets(sets: WorkRequestSet[]): boolean;
|
|
7
|
+
export declare function asyncVerifySets(sets: WorkRequestSet[]): Promise<boolean>;
|
|
8
|
+
//# sourceMappingURL=verifySets.d.ts.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import bls from "@chainsafe/bls";
|
|
2
|
+
const MIN_SET_COUNT_TO_BATCH = 2;
|
|
3
|
+
/**
|
|
4
|
+
* Verify signatures sets with batch verification or regular core verify depending on the set count.
|
|
5
|
+
* Abstracted in a separate file to be consumed by the threaded pool and the main thread implementation.
|
|
6
|
+
*/
|
|
7
|
+
export function verifySets(sets) {
|
|
8
|
+
try {
|
|
9
|
+
if (sets.length >= MIN_SET_COUNT_TO_BATCH) {
|
|
10
|
+
return bls.verifyMultipleSignatures(sets);
|
|
11
|
+
}
|
|
12
|
+
// .every on an empty array returns true
|
|
13
|
+
if (sets.length === 0) {
|
|
14
|
+
throw Error("Empty signature set");
|
|
15
|
+
}
|
|
16
|
+
// If too few signature sets verify them without batching
|
|
17
|
+
return sets.every(({ message, publicKey, signature }) => bls.verify(publicKey, message, signature));
|
|
18
|
+
}
|
|
19
|
+
catch (_) {
|
|
20
|
+
// A signature could be malformed, in that case fromBytes throws error
|
|
21
|
+
// blst-ts `verifyMultipleSignatures` is also a fallible operation if mul_n_aggregate fails
|
|
22
|
+
// see https://github.com/ChainSafe/blst-ts/blob/b1ba6333f664b08e5c50b2b0d18c4f079203962b/src/lib.ts#L291
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export async function asyncVerifySets(sets) {
|
|
27
|
+
try {
|
|
28
|
+
if (sets.length >= MIN_SET_COUNT_TO_BATCH) {
|
|
29
|
+
return await bls.asyncVerifyMultipleSignatures(sets);
|
|
30
|
+
}
|
|
31
|
+
// .every on an empty array returns true
|
|
32
|
+
if (sets.length === 0) {
|
|
33
|
+
throw Error("Empty signature sets");
|
|
34
|
+
}
|
|
35
|
+
const promises = await Promise.all(sets.map(({ message, publicKey, signature }) => bls.asyncVerify(publicKey, message, signature)));
|
|
36
|
+
// If too few signature sets verify them without batching
|
|
37
|
+
return promises.every((isValid) => isValid);
|
|
38
|
+
}
|
|
39
|
+
catch (_) {
|
|
40
|
+
// A signature could be malformed, in that case fromBytes throws error
|
|
41
|
+
// blst-ts `verifyMultipleSignatures` is also a fallible operation if mul_n_aggregate fails
|
|
42
|
+
// see https://github.com/ChainSafe/blst-ts/blob/b1ba6333f664b08e5c50b2b0d18c4f079203962b/src/lib.ts#L291
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=verifySets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifySets.js","sourceRoot":"","sources":["../../../src/chain/bls/verifySets.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,gBAAgB,CAAC;AAGjC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAsB;IAC/C,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,IAAI,sBAAsB,EAAE,CAAC;YAC1C,OAAO,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QAED,wCAAwC;QACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;QAED,yDAAyD;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IACpG,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,sEAAsE;QACtE,2FAA2F;QAC3F,yGAAyG;QACzG,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAsB;IAC1D,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,IAAI,sBAAsB,EAAE,CAAC;YAC1C,OAAO,MAAM,GAAG,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;QAED,wCAAwC;QACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAC,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAC9F,CAAC;QACF,yDAAyD;QACzD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,sEAAsE;QACtE,2FAA2F;QAC3F,yGAAyG;QACzG,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/lib/chain/regen/regen.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { fromHexString, toHexString } from "@chainsafe/ssz";
|
|
2
2
|
import { computeEpochAtSlot, computeStartSlotAtEpoch, ExecutionPayloadStatus, DataAvailableStatus, processSlots, stateTransition, } from "@lodestar/state-transition";
|
|
3
|
-
import { sleep } from "@lodestar/utils";
|
|
4
3
|
import { SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
5
4
|
import { getCheckpointFromState } from "../blocks/utils/checkpoint.js";
|
|
6
5
|
import { ChainEvent } from "../emitter.js";
|
|
6
|
+
import { nextEventLoop } from "../../util/eventLoop.js";
|
|
7
7
|
import { RegenError, RegenErrorCode } from "./errors.js";
|
|
8
8
|
/**
|
|
9
9
|
* Regenerates states that have already been processed by the fork choice
|
|
@@ -170,7 +170,7 @@ export class StateRegenerator {
|
|
|
170
170
|
this.modules.blockStateCache.add(state);
|
|
171
171
|
}
|
|
172
172
|
// this avoids keeping our node busy processing blocks
|
|
173
|
-
await
|
|
173
|
+
await nextEventLoop();
|
|
174
174
|
}
|
|
175
175
|
catch (e) {
|
|
176
176
|
throw new RegenError({
|
|
@@ -233,7 +233,7 @@ async function processSlotsToNearestCheckpoint(modules, preState, slot, regenCal
|
|
|
233
233
|
// consumers should not mutate or get the transfered cache
|
|
234
234
|
emitter.emit(ChainEvent.checkpoint, cp, checkpointState.clone(true));
|
|
235
235
|
// this avoids keeping our node busy processing blocks
|
|
236
|
-
await
|
|
236
|
+
await nextEventLoop();
|
|
237
237
|
}
|
|
238
238
|
return postState;
|
|
239
239
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regen.js","sourceRoot":"","sources":["../../../src/chain/regen/regen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAEL,kBAAkB,EAClB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,eAAe,GAChB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"regen.js","sourceRoot":"","sources":["../../../src/chain/regen/regen.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { toHexString } from "@chainsafe/ssz";
|
|
|
2
2
|
import { ssz } from "@lodestar/types";
|
|
3
3
|
import { pruneSetToMax } from "@lodestar/utils";
|
|
4
4
|
import { BLOBSIDECAR_FIXED_SIZE, ForkSeq } from "@lodestar/params";
|
|
5
|
-
import { getBlockInput, BlockSource, GossipedInputType, getBlockInputBlobs, } from "../blocks/types.js";
|
|
5
|
+
import { getBlockInput, BlockSource, GossipedInputType, getBlockInputBlobs, BlobsSource, } from "../blocks/types.js";
|
|
6
6
|
export var BlockInputAvailabilitySource;
|
|
7
7
|
(function (BlockInputAvailabilitySource) {
|
|
8
8
|
BlockInputAvailabilitySource["GOSSIP"] = "gossip";
|
|
@@ -72,10 +72,10 @@ export class SeenGossipBlockInput {
|
|
|
72
72
|
}
|
|
73
73
|
if (blobKzgCommitments.length === blobsCache.size) {
|
|
74
74
|
const allBlobs = getBlockInputBlobs(blobsCache);
|
|
75
|
-
resolveAvailability(allBlobs);
|
|
75
|
+
resolveAvailability({ ...allBlobs, blobsSource: BlobsSource.gossip });
|
|
76
76
|
metrics?.syncUnknownBlock.resolveAvailabilitySource.inc({ source: BlockInputAvailabilitySource.GOSSIP });
|
|
77
77
|
const { blobs, blobsBytes } = allBlobs;
|
|
78
|
-
const blockInput = getBlockInput.postDeneb(config, signedBlock, BlockSource.gossip, blobs, blockBytes ?? null, blobsBytes);
|
|
78
|
+
const blockInput = getBlockInput.postDeneb(config, signedBlock, BlockSource.gossip, blobs, BlobsSource.gossip, blockBytes ?? null, blobsBytes);
|
|
79
79
|
resolveBlockInput(blockInput);
|
|
80
80
|
return {
|
|
81
81
|
blockInput,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seenGossipBlockInput.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenGossipBlockInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAiB,GAAG,EAAW,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,sBAAsB,EAAE,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAGL,aAAa,EACb,WAAW,EAGX,iBAAiB,EACjB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"seenGossipBlockInput.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenGossipBlockInput.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,14 +77,23 @@ async function validateAggregateAndProof(fork, chain, signedAggregateAndProof, s
|
|
|
77
77
|
// and non-gossip sources) (a client MAY queue attestations for processing once block is retrieved).
|
|
78
78
|
// Lighthouse doesn't check maxSkipSlots option here but Lodestar wants to be more strict
|
|
79
79
|
// to be more DOS protection
|
|
80
|
+
// [REJECT] The aggregate attestation's target block is an ancestor of the block named in the LMD vote
|
|
81
|
+
// -- i.e. `get_checkpoint_block(store, aggregate.data.beacon_block_root, aggregate.data.target.epoch) == aggregate.data.target.root`
|
|
80
82
|
const attHeadBlock = verifyHeadBlockAndTargetRoot(chain, attData.beaconBlockRoot, attTarget.root, attSlot, attEpoch, RegenCaller.validateGossipAggregateAndProof, chain.opts.maxSkipSlots);
|
|
81
83
|
// [IGNORE] The current finalized_checkpoint is an ancestor of the block defined by aggregate.data.beacon_block_root
|
|
82
84
|
// -- i.e. get_ancestor(store, aggregate.data.beacon_block_root, compute_start_slot_at_epoch(store.finalized_checkpoint.epoch)) == store.finalized_checkpoint.root
|
|
83
85
|
// > Altready check in `chain.forkChoice.hasBlock(attestation.data.beaconBlockRoot)`
|
|
84
86
|
const shuffling = await getShufflingForAttestationVerification(chain, attEpoch, attHeadBlock, RegenCaller.validateGossipAttestation);
|
|
87
|
+
// [REJECT] The committee index is within the expected range
|
|
88
|
+
// -- i.e. data.index < get_committee_count_per_slot(state, data.target.epoch)
|
|
85
89
|
const committeeIndices = cachedAttData
|
|
86
90
|
? cachedAttData.committeeIndices
|
|
87
91
|
: getCommitteeIndices(shuffling, attSlot, attIndex);
|
|
92
|
+
// [REJECT] The number of aggregation bits matches the committee size
|
|
93
|
+
// -- i.e. `len(aggregation_bits) == len(get_beacon_committee(state, aggregate.data.slot, index))`.
|
|
94
|
+
if (aggregate.aggregationBits.bitLen !== committeeIndices.length) {
|
|
95
|
+
throw new AttestationError(GossipAction.REJECT, { code: AttestationErrorCode.WRONG_NUMBER_OF_AGGREGATION_BITS });
|
|
96
|
+
}
|
|
88
97
|
const attestingIndices = aggregate.aggregationBits.intersectValues(committeeIndices);
|
|
89
98
|
const indexedAttestation = {
|
|
90
99
|
attestingIndices,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregateAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/aggregateAndProof.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"aggregateAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/aggregateAndProof.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EpochTransitionStep, StateCloneSource, StateHashTreeRootSource } from "@lodestar/state-transition";
|
|
2
2
|
import { allForks } from "@lodestar/types";
|
|
3
|
-
import { BlockSource } from "../../chain/blocks/types.js";
|
|
3
|
+
import { BlockSource, BlobsSource } from "../../chain/blocks/types.js";
|
|
4
4
|
import { JobQueueItemType } from "../../chain/bls/index.js";
|
|
5
5
|
import { BlockErrorCode } from "../../chain/errors/index.js";
|
|
6
6
|
import { InsertOutcome } from "../../chain/opPools/types.js";
|
|
@@ -302,6 +302,9 @@ export declare function createLodestarMetrics(register: RegistryMetricCreator, m
|
|
|
302
302
|
bySource: import("@lodestar/utils").GaugeExtra<{
|
|
303
303
|
source: BlockSource;
|
|
304
304
|
}>;
|
|
305
|
+
blobsBySource: import("@lodestar/utils").GaugeExtra<{
|
|
306
|
+
blobsSource: BlobsSource;
|
|
307
|
+
}>;
|
|
305
308
|
};
|
|
306
309
|
engineNotifyNewPayloadResult: import("@lodestar/utils").GaugeExtra<{
|
|
307
310
|
result: ExecutionPayloadStatus;
|
|
@@ -747,6 +747,11 @@ export function createLodestarMetrics(register, metadata, anchorState) {
|
|
|
747
747
|
help: "Total number of imported blocks by source",
|
|
748
748
|
labelNames: ["source"],
|
|
749
749
|
}),
|
|
750
|
+
blobsBySource: register.gauge({
|
|
751
|
+
name: "lodestar_import_blobs_by_source_total",
|
|
752
|
+
help: "Total number of imported blobs by source",
|
|
753
|
+
labelNames: ["blobsSource"],
|
|
754
|
+
}),
|
|
750
755
|
},
|
|
751
756
|
engineNotifyNewPayloadResult: register.gauge({
|
|
752
757
|
name: "lodestar_execution_engine_notify_new_payload_result_total",
|