@lodestar/beacon-node 1.51.0-dev.b74e8e576d → 1.51.0-dev.b889ef5768
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/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.js +3 -0
- package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
- package/lib/chain/bls/multithread/index.d.ts +1 -1
- package/lib/chain/bls/multithread/index.d.ts.map +1 -1
- package/lib/chain/bls/multithread/index.js +37 -11
- package/lib/chain/bls/multithread/index.js.map +1 -1
- package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
- package/lib/chain/validation/syncCommittee.js +16 -10
- package/lib/chain/validation/syncCommittee.js.map +1 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.js +11 -0
- package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
- package/lib/sync/sync.d.ts +8 -0
- package/lib/sync/sync.d.ts.map +1 -1
- package/lib/sync/sync.js +42 -22
- package/lib/sync/sync.js.map +1 -1
- package/package.json +16 -16
- package/src/chain/blocks/verifyBlocksSignatures.ts +3 -0
- package/src/chain/bls/multithread/index.ts +34 -14
- package/src/chain/validation/syncCommittee.ts +31 -15
- package/src/chain/validation/syncCommitteeContributionAndProof.ts +13 -0
- package/src/sync/sync.ts +43 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyBlocksSignatures.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSignatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAIjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,iBAAiB,EAAE,EAC3B,0BAA0B,EAAE,kBAAkB,EAAE,EAAE,EAClD,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"verifyBlocksSignatures.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSignatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAIjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,iBAAiB,EAAE,EAC3B,0BAA0B,EAAE,kBAAkB,EAAE,EAAE,EAClD,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAC,CAAC,CA4DzC;AAED,KAAK,WAAW,GAAG;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAoB3G"}
|
|
@@ -30,6 +30,9 @@ export async function verifyBlocksSignatures(config, bls, logger, metrics, preSt
|
|
|
30
30
|
// Prioritize block verification over attestations, since
|
|
31
31
|
// attestations already buffer up to `MAX_BUFFER_WAIT_MS`
|
|
32
32
|
{ priority: true });
|
|
33
|
+
// Handlers are attached after the loop, which yields. A rejection in between, e.g. the verifier closing,
|
|
34
|
+
// must not be unhandled. `rejectFirstInvalidResolveAllValid()` still observes it.
|
|
35
|
+
isValidPromises[i].catch(() => { });
|
|
33
36
|
// getBlockSignatureSets() takes 45ms in benchmarks for 2022Q2 mainnet blocks (100 sigs). When syncing a 32 blocks
|
|
34
37
|
// segments it will block the event loop for 1400 ms, which is too much. This call will allow the event loop to
|
|
35
38
|
// yield, which will cause one block's state transition to run. However, the tradeoff is okay and doesn't slow sync
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifyBlocksSignatures.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSignatures.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAGnE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAoB,EACpB,GAAiB,EACjB,MAAc,EACd,OAAuB,EACvB,SAA2B,EAC3B,MAA2B,EAC3B,0BAAkD,EAClD,IAAqB;IAErB,MAAM,eAAe,GAAuB,EAAE,CAAC;IAC/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1F,MAAM,2BAA2B,GAAG,iBAAiB,CAAC,SAAS,CAAC;QAC9D,CAAC,CAAC,SAAS,CAAC,2BAA2B;QACvC,CAAC,CAAC,IAAI,uBAAuB,EAAE,CAAC;IAElC,8FAA8F;IAC9F,gHAAgH;IAChH,oEAAoE;IACpE,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,wGAAwG;QACxG,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe;YACvC,CAAC,CAAC,kCAAkC;gBAClC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YACvB,CAAC,CAAC,EAAE;gBACF,8DAA8D;gBAC9D,GAAG,CAAC,mBAAmB,CACrB,qBAAqB,CAAC,MAAM,EAAE,2BAA2B,EAAE,SAAS,EAAE,KAAK,EAAE,0BAA0B,CAAC,CAAC,CAAC,EAAE;oBAC1G,qBAAqB,EAAE,IAAI,CAAC,sBAAsB;iBACnD,CAAC;gBACF,yDAAyD;gBACzD,yDAAyD;gBACzD,EAAC,QAAQ,EAAE,IAAI,EAAC,CACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"verifyBlocksSignatures.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSignatures.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ export declare class BlsMultiThreadWorkerPool implements IBlsVerifier {
|
|
|
26
26
|
private readonly jobs;
|
|
27
27
|
private bufferedJobs;
|
|
28
28
|
private blsVerifyAllMultiThread;
|
|
29
|
-
private
|
|
29
|
+
private closePromise;
|
|
30
30
|
private workersBusy;
|
|
31
31
|
constructor(options: BlsMultiThreadWorkerPoolOptions, modules: BlsMultiThreadWorkerPoolModules);
|
|
32
32
|
canAcceptWork(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,MAAM,EAAQ,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAC,OAAO,EAAC,MAAM,2BAA2B,CAAC;AAIlD,OAAO,EAAC,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAI3F,OAAO,EAGL,gBAAgB,EAKjB,MAAM,YAAY,CAAC;AAMpB,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,YAAY,EAAC,gBAAgB,EAAC,CAAC;AAiE/B;;;;;;;GAOG;AACH,qBAAa,wBAAyB,YAAW,YAAY;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkC;IACvD,OAAO,CAAC,YAAY,CAMJ;IAChB,OAAO,CAAC,uBAAuB,CAAU;IACzC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,WAAW,CAAK;IAExB,YAAY,OAAO,EAAE,+BAA+B,EAAE,OAAO,EAAE,+BAA+B,EAgB7F;IAED,aAAa,IAAI,OAAO,CAOvB;IAEK,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,CA4CjG;IAED;;OAEG;IACG,8BAA8B,CAClC,IAAI,EAAE,uBAAuB,EAAE,EAC/B,OAAO,EAAE,UAAU,EACnB,IAAI,GAAE,IAAI,CAAC,mBAAmB,EAAE,oBAAoB,CAAM,GACzD,OAAO,CAAC,OAAO,EAAE,CAAC,CAqBpB;IAED,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCrB;IAED,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAwDpB;;OAEG;IACH,OAAO,CAAC,MAAM,CA6JZ;IAEF;;OAEG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;IACH,OAAO,CAAC,eAAe,CAarB;IAEF,OAAO,CAAC,oBAAoB;IAK5B,kBAAkB;IAClB,UAAgB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQnD;CACF"}
|
|
@@ -4,6 +4,7 @@ import { Worker, spawn } from "@chainsafe/threads";
|
|
|
4
4
|
// @ts-expect-error
|
|
5
5
|
// biome-ignore lint/suspicious/noGlobalAssign: We need the global `self` to reassign module properties later
|
|
6
6
|
self = undefined;
|
|
7
|
+
import { defer } from "@lodestar/utils";
|
|
7
8
|
import { LinkedList } from "../../../util/array.js";
|
|
8
9
|
import { callInNextEventLoop } from "../../../util/eventLoop.js";
|
|
9
10
|
import { QueueError, QueueErrorCode } from "../../../util/queue/index.js";
|
|
@@ -69,7 +70,7 @@ export class BlsMultiThreadWorkerPool {
|
|
|
69
70
|
jobs = new LinkedList();
|
|
70
71
|
bufferedJobs = null;
|
|
71
72
|
blsVerifyAllMultiThread;
|
|
72
|
-
|
|
73
|
+
closePromise;
|
|
73
74
|
workersBusy = 0;
|
|
74
75
|
constructor(options, modules) {
|
|
75
76
|
const { logger, metrics } = modules;
|
|
@@ -87,11 +88,14 @@ export class BlsMultiThreadWorkerPool {
|
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
90
|
canAcceptWork() {
|
|
90
|
-
return (this.
|
|
91
|
+
return (this.closePromise === undefined &&
|
|
92
|
+
this.workersBusy < blsPoolSize &&
|
|
91
93
|
// TODO: Should also bound the jobs queue?
|
|
92
94
|
this.jobs.length < MAX_JOBS_CAN_ACCEPT_WORK);
|
|
93
95
|
}
|
|
94
96
|
async verifySignatureSets(sets, opts = {}) {
|
|
97
|
+
if (this.closePromise !== undefined)
|
|
98
|
+
throw new QueueError({ code: QueueErrorCode.QUEUE_ABORTED });
|
|
95
99
|
this.metrics?.bls.aggregatedPubkeys.inc(getAggregatedPubkeysCount(sets));
|
|
96
100
|
this.metrics?.blsThreadPool.totalSigSets.inc(sets.length);
|
|
97
101
|
if (opts.priority) {
|
|
@@ -132,6 +136,8 @@ export class BlsMultiThreadWorkerPool {
|
|
|
132
136
|
* Verify signature sets of the same message, only supports worker verification.
|
|
133
137
|
*/
|
|
134
138
|
async verifySignatureSetsSameMessage(sets, message, opts = {}) {
|
|
139
|
+
if (this.closePromise !== undefined)
|
|
140
|
+
throw new QueueError({ code: QueueErrorCode.QUEUE_ABORTED });
|
|
135
141
|
const promises = [];
|
|
136
142
|
for (const setsChunk of chunkSameMessageSignatureSets(sets)) {
|
|
137
143
|
promises.push(new Promise((resolve, reject) => {
|
|
@@ -149,9 +155,16 @@ export class BlsMultiThreadWorkerPool {
|
|
|
149
155
|
const results = await Promise.all(promises);
|
|
150
156
|
return results.flat();
|
|
151
157
|
}
|
|
152
|
-
|
|
158
|
+
close() {
|
|
159
|
+
if (this.closePromise !== undefined)
|
|
160
|
+
return this.closePromise;
|
|
153
161
|
if (this.bufferedJobs) {
|
|
154
162
|
clearTimeout(this.bufferedJobs.timeout);
|
|
163
|
+
for (const jobs of [this.bufferedJobs.jobs, this.bufferedJobs.prioritizedJobs]) {
|
|
164
|
+
for (const job of jobs)
|
|
165
|
+
job.reject(new QueueError({ code: QueueErrorCode.QUEUE_ABORTED }));
|
|
166
|
+
}
|
|
167
|
+
this.bufferedJobs = null;
|
|
155
168
|
}
|
|
156
169
|
// Abort all jobs
|
|
157
170
|
for (const job of this.jobs) {
|
|
@@ -159,12 +172,19 @@ export class BlsMultiThreadWorkerPool {
|
|
|
159
172
|
}
|
|
160
173
|
this.jobs.clear();
|
|
161
174
|
// Terminate all workers. await to ensure no workers are left hanging
|
|
162
|
-
|
|
175
|
+
this.closePromise = Promise.all(Array.from(this.workers.entries()).map(([id, worker]) =>
|
|
163
176
|
// NOTE: 'threads' has not yet updated types, and NodeJS complains with
|
|
164
177
|
// [DEP0132] DeprecationWarning: Passing a callback to worker.terminate() is deprecated. It returns a Promise instead.
|
|
165
|
-
worker.worker.terminate()
|
|
178
|
+
worker.worker.terminate()
|
|
179
|
+
.catch((e) => {
|
|
166
180
|
this.logger.error("Error terminating worker", { id }, e);
|
|
167
|
-
})
|
|
181
|
+
})
|
|
182
|
+
.finally(() => {
|
|
183
|
+
// threads does not settle outstanding RPC calls when its worker exits.
|
|
184
|
+
if (worker.status.code === WorkerStatusCode.running)
|
|
185
|
+
worker.status.abort();
|
|
186
|
+
}))).then(() => { });
|
|
187
|
+
return this.closePromise;
|
|
168
188
|
}
|
|
169
189
|
createWorkers(poolSize) {
|
|
170
190
|
const workers = [];
|
|
@@ -202,7 +222,7 @@ export class BlsMultiThreadWorkerPool {
|
|
|
202
222
|
* Register BLS work to be done eventually in a worker
|
|
203
223
|
*/
|
|
204
224
|
queueBlsWork(job) {
|
|
205
|
-
if (this.
|
|
225
|
+
if (this.closePromise !== undefined) {
|
|
206
226
|
throw new QueueError({ code: QueueErrorCode.QUEUE_ABORTED });
|
|
207
227
|
}
|
|
208
228
|
// TODO: Consider if limiting queue size is necessary here.
|
|
@@ -253,7 +273,7 @@ export class BlsMultiThreadWorkerPool {
|
|
|
253
273
|
* Potentially submit jobs to an idle worker, only if there's a worker and jobs
|
|
254
274
|
*/
|
|
255
275
|
runJob = async () => {
|
|
256
|
-
if (this.
|
|
276
|
+
if (this.closePromise !== undefined) {
|
|
257
277
|
return;
|
|
258
278
|
}
|
|
259
279
|
// Find idle worker
|
|
@@ -270,7 +290,12 @@ export class BlsMultiThreadWorkerPool {
|
|
|
270
290
|
// and free-up memory, only needs to keep the job's Promise handlers.
|
|
271
291
|
// Maybe it's not useful since all data referenced in jobs is likely referenced by others
|
|
272
292
|
const workerApi = worker.status.workerApi;
|
|
273
|
-
|
|
293
|
+
const completion = defer();
|
|
294
|
+
worker.status = {
|
|
295
|
+
code: WorkerStatusCode.running,
|
|
296
|
+
workerApi,
|
|
297
|
+
abort: () => completion.reject(new QueueError({ code: QueueErrorCode.QUEUE_ABORTED })),
|
|
298
|
+
};
|
|
274
299
|
this.workersBusy++;
|
|
275
300
|
const jobsStarted = [];
|
|
276
301
|
let completedJobsCount = 0;
|
|
@@ -327,7 +352,8 @@ export class BlsMultiThreadWorkerPool {
|
|
|
327
352
|
// Send work package to the worker
|
|
328
353
|
// If worker communication or result processing throws, all unresolved jobs are rejected.
|
|
329
354
|
const [jobStartSec, jobStartNs] = process.hrtime();
|
|
330
|
-
|
|
355
|
+
void workerApi.verifyManySignatureSets(workReqs).then(completion.resolve, completion.reject);
|
|
356
|
+
const workResult = await completion.promise;
|
|
331
357
|
const [jobEndSec, jobEndNs] = process.hrtime();
|
|
332
358
|
const { workerId, batchRetries, batchSigsSuccess, verificationCalls, workerStartTime, workerEndTime, results } = workResult;
|
|
333
359
|
const [workerStartSec, workerStartNs] = workerStartTime;
|
|
@@ -367,7 +393,7 @@ export class BlsMultiThreadWorkerPool {
|
|
|
367
393
|
}
|
|
368
394
|
catch (e) {
|
|
369
395
|
// Worker communications should never reject
|
|
370
|
-
if (
|
|
396
|
+
if (this.closePromise === undefined) {
|
|
371
397
|
this.logger.error("BlsMultiThreadWorkerPool error", {}, e);
|
|
372
398
|
}
|
|
373
399
|
// Reject jobs that were not already completed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommittee.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/syncCommittee.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAoB,MAAM,4BAA4B,CAAC;AAC/E,OAAO,
|
|
1
|
+
{"version":3,"file":"syncCommittee.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/syncCommittee.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAoB,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAgB,QAAQ,EAAkB,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAIhF,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAG7C,KAAK,mBAAmB,GAAG,MAAM,CAAC;AAElC;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,MAAM,CAAC,oBAAoB,EAC1C,MAAM,EAAE,QAAQ,GACf,OAAO,CAAC;IAAC,qBAAqB,EAAE,mBAAmB,EAAE,CAAA;CAAC,CAAC,CAkCzD;AAqCD,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,gBAAgB,EAC3B,aAAa,EAAE,MAAM,CAAC,oBAAoB,GACzC,OAAO,CAAC,IAAI,CAAC,CAGf;AAmBD;;GAEG;AACH,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,QAAQ,EAChB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,GAAG,gBAAgB,CAAC,GACjE,mBAAmB,EAAE,CA+BvB"}
|
|
@@ -19,6 +19,20 @@ export async function validateGossipSyncCommittee(chain, syncCommittee, subnet)
|
|
|
19
19
|
// > Checked in validateGossipSyncCommitteeExceptSig()
|
|
20
20
|
// [IGNORE] There has been no other valid sync committee signature for the declared slot for the validator referenced
|
|
21
21
|
// by sync_committee_signature.validator_index.
|
|
22
|
+
assertSyncCommitteeMessageNotKnown(chain, slot, subnet, validatorIndex, messageRoot, chain.metrics);
|
|
23
|
+
// [REJECT] The subnet_id is valid for the given validator, i.e. subnet_id in compute_subnets_for_sync_committee(state, sync_committee_signature.validator_index).
|
|
24
|
+
// Note this validation implies the validator is part of the broader current sync committee along with the correct subcommittee.
|
|
25
|
+
// > Checked in validateGossipSyncCommitteeExceptSig()
|
|
26
|
+
// [REJECT] The signature is valid for the message beacon_block_root for the validator referenced by validator_index.
|
|
27
|
+
await validateSyncCommitteeSigOnly(chain, headState, syncCommittee);
|
|
28
|
+
// Re-check after the await: concurrent messages from the same validator all pass the check above.
|
|
29
|
+
// Metrics were already counted by the first check.
|
|
30
|
+
assertSyncCommitteeMessageNotKnown(chain, slot, subnet, validatorIndex, messageRoot, null);
|
|
31
|
+
// Register this valid item as seen
|
|
32
|
+
chain.seenSyncCommitteeMessages.add(slot, subnet, validatorIndex, messageRoot);
|
|
33
|
+
return { indicesInSubcommittee };
|
|
34
|
+
}
|
|
35
|
+
function assertSyncCommitteeMessageNotKnown(chain, slot, subnet, validatorIndex, messageRoot, metrics) {
|
|
22
36
|
const prevRoot = chain.seenSyncCommitteeMessages.get(slot, subnet, validatorIndex);
|
|
23
37
|
if (prevRoot) {
|
|
24
38
|
let shouldIgnore = false;
|
|
@@ -27,9 +41,9 @@ export async function validateGossipSyncCommittee(chain, syncCommittee, subnet)
|
|
|
27
41
|
}
|
|
28
42
|
else {
|
|
29
43
|
const headRoot = chain.forkChoice.getHeadRoot();
|
|
30
|
-
|
|
44
|
+
metrics?.gossipSyncCommittee.equivocationCount.inc();
|
|
31
45
|
if (messageRoot === headRoot) {
|
|
32
|
-
|
|
46
|
+
metrics?.gossipSyncCommittee.equivocationToHeadCount.inc();
|
|
33
47
|
}
|
|
34
48
|
else {
|
|
35
49
|
shouldIgnore = true;
|
|
@@ -45,14 +59,6 @@ export async function validateGossipSyncCommittee(chain, syncCommittee, subnet)
|
|
|
45
59
|
});
|
|
46
60
|
}
|
|
47
61
|
}
|
|
48
|
-
// [REJECT] The subnet_id is valid for the given validator, i.e. subnet_id in compute_subnets_for_sync_committee(state, sync_committee_signature.validator_index).
|
|
49
|
-
// Note this validation implies the validator is part of the broader current sync committee along with the correct subcommittee.
|
|
50
|
-
// > Checked in validateGossipSyncCommitteeExceptSig()
|
|
51
|
-
// [REJECT] The signature is valid for the message beacon_block_root for the validator referenced by validator_index.
|
|
52
|
-
await validateSyncCommitteeSigOnly(chain, headState, syncCommittee);
|
|
53
|
-
// Register this valid item as seen
|
|
54
|
-
chain.seenSyncCommitteeMessages.add(slot, subnet, validatorIndex, messageRoot);
|
|
55
|
-
return { indicesInSubcommittee };
|
|
56
62
|
}
|
|
57
63
|
export async function validateApiSyncCommittee(chain, headState, syncCommittee) {
|
|
58
64
|
const prioritizeBls = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommittee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,2BAA2B,EAAE,0BAA0B,EAAC,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAmB,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAE/E,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommittee.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeContributionAndProof.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAQ7C;;GAEG;AACH,wBAAsB,+CAA+C,CACnE,KAAK,EAAE,YAAY,EACnB,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,EAC7D,+BAA+B,UAAQ,GACtC,OAAO,CAAC;IAAC,+BAA+B,EAAE,cAAc,EAAE,CAAA;CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"syncCommitteeContributionAndProof.d.ts","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAQ7C;;GAEG;AACH,wBAAsB,+CAA+C,CACnE,KAAK,EAAE,YAAY,EACnB,0BAA0B,EAAE,MAAM,CAAC,0BAA0B,EAC7D,+BAA+B,UAAQ,GACtC,OAAO,CAAC;IAAC,+BAA+B,EAAE,cAAc,EAAE,CAAA;CAAC,CAAC,CA4F9D"}
|
|
@@ -68,6 +68,17 @@ export async function validateSyncCommitteeGossipContributionAndProof(chain, sig
|
|
|
68
68
|
code: SyncCommitteeErrorCode.INVALID_SIGNATURE,
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
|
+
// Re-check after the await: concurrent contributions from the same aggregator all pass the checks above
|
|
72
|
+
if (chain.seenContributionAndProof.isAggregatorKnown(slot, subcommitteeIndex, aggregatorIndex)) {
|
|
73
|
+
throw new SyncCommitteeError(GossipAction.IGNORE, {
|
|
74
|
+
code: SyncCommitteeErrorCode.SYNC_COMMITTEE_AGGREGATOR_ALREADY_KNOWN,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
if (!skipValidationKnownParticipants && chain.seenContributionAndProof.participantsKnown(contribution)) {
|
|
78
|
+
throw new SyncCommitteeError(GossipAction.IGNORE, {
|
|
79
|
+
code: SyncCommitteeErrorCode.SYNC_COMMITTEE_PARTICIPANTS_ALREADY_KNOWN,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
71
82
|
// no need to add to seenSyncCommittteeContributionCache here, gossip handler will do that
|
|
72
83
|
chain.seenContributionAndProof.add(contributionAndProof, syncCommitteeParticipantIndices.length);
|
|
73
84
|
return { syncCommitteeParticipantIndices };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommitteeContributionAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"syncCommitteeContributionAndProof.js","sourceRoot":"","sources":["../../../src/chain/validation/syncCommitteeContributionAndProof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,0BAA0B,EAAC,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAmB,iBAAiB,EAAE,yBAAyB,EAAC,MAAM,4BAA4B,CAAC;AAE1G,OAAO,EAAC,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,oBAAoB,CAAC;AAE5F,OAAO,EACL,mCAAmC,EACnC,wCAAwC,EACxC,0CAA0C,GAC3C,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAC,oCAAoC,EAAC,MAAM,oBAAoB,CAAC;AAExE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,+CAA+C,CACnE,KAAmB,EACnB,0BAA6D,EAC7D,+BAA+B,GAAG,KAAK;IAEvC,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,OAAO,CAAC;IAChE,MAAM,EAAC,YAAY,EAAE,eAAe,EAAC,GAAG,oBAAoB,CAAC;IAC7D,MAAM,EAAC,iBAAiB,EAAE,IAAI,EAAC,GAAG,YAAY,CAAC;IAE/C,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACvC,oCAAoC,CAAC,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE;QACxE,IAAI;QACJ,cAAc,EAAE,oBAAoB,CAAC,eAAe;KACrD,CAAC,CAAC;IAEH,oGAAoG;IACpG,sDAAsD;IAEtD,0GAA0G;IAC1G,8EAA8E;IAC9E,yEAAyE;IACzE,sDAAsD;IAEtD,uHAAuH;IACvH,yEAAyE;IACzE,IAAI,CAAC,+BAA+B,IAAI,KAAK,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;QACvG,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,yCAAyC;SACvE,CAAC,CAAC;IACL,CAAC;IAED,kHAAkH;IAClH,iIAAiI;IACjI,IAAI,KAAK,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,uCAAuC;SACrE,CAAC,CAAC;IACL,CAAC;IAED,4FAA4F;IAC5F,MAAM,+BAA+B,GAAG,sBAAsB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACxF,IAAI,+BAA+B,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,cAAc;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,yGAAyG;IACzG,0FAA0F;IAC1F,IAAI,CAAC,yBAAyB,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,kBAAkB;YAC/C,eAAe,EAAE,oBAAoB,CAAC,eAAe;SACtD,CAAC,CAAC;IACL,CAAC;IAED,6GAA6G;IAC7G,kJAAkJ;IAClJ,sDAAsD;IAEtD,MAAM,aAAa,GAAG;QACpB,8GAA8G;QAC9G,qGAAqG;QACrG,0CAA0C,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,oBAAoB,CAAC;QAEzF,wFAAwF;QACxF,mCAAmC,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,0BAA0B,CAAC;QAExF,gHAAgH;QAChH,oHAAoH;QACpH,wCAAwC,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,+BAA+B,CAAC;KACjH,CAAC;IAEF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,iBAAiB;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,wGAAwG;IACxG,IAAI,KAAK,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,uCAAuC;SACrE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,+BAA+B,IAAI,KAAK,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;QACvG,MAAM,IAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,EAAE;YAChD,IAAI,EAAE,sBAAsB,CAAC,yCAAyC;SACvE,CAAC,CAAC;IACL,CAAC;IAED,0FAA0F;IAC1F,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,oBAAoB,EAAE,+BAA+B,CAAC,MAAM,CAAC,CAAC;IAEjG,OAAO,EAAC,+BAA+B,EAAC,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAC7B,KAAuB,EACvB,YAA8C;IAE9C,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,iBAAiB,GAAG,0BAA0B,CAAC;IAE/E,MAAM,aAAa,GAAG,KAAK,CAAC,uBAAuB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACvE,8GAA8G;IAC9G,MAAM,4BAA4B,GAAG,aAAa,CAAC,gBAAgB,CAAC,KAAK,CACvE,UAAU,EACV,UAAU,GAAG,0BAA0B,CACxC,CAAC;IACF,OAAO,YAAY,CAAC,eAAe,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;AACpF,CAAC"}
|
package/lib/sync/sync.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export declare class BeaconSync implements IBeaconSync {
|
|
|
14
14
|
/** For metrics only */
|
|
15
15
|
private readonly peerSyncType;
|
|
16
16
|
private readonly slotImportTolerance;
|
|
17
|
+
/** The requested subscription state, set while a change is being applied */
|
|
18
|
+
private pendingGossipSubscribed;
|
|
17
19
|
constructor(opts: SyncOptions, modules: SyncModules);
|
|
18
20
|
close(): void;
|
|
19
21
|
getSyncStatus(): SyncingStatus;
|
|
@@ -46,6 +48,12 @@ export declare class BeaconSync implements IBeaconSync {
|
|
|
46
48
|
* Run this function when the sync state can potentially change.
|
|
47
49
|
*/
|
|
48
50
|
private updateSyncState;
|
|
51
|
+
private setGossipSubscription;
|
|
52
|
+
/**
|
|
53
|
+
* Applies the latest requested state one request at a time. Network skips a subscribe issued while an unsubscribe is
|
|
54
|
+
* in flight, so opposite requests must not overlap.
|
|
55
|
+
*/
|
|
56
|
+
private applyGossipSubscription;
|
|
49
57
|
private onClockEpoch;
|
|
50
58
|
private scrapeMetrics;
|
|
51
59
|
}
|
package/lib/sync/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAO,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAW7C,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AACxH,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAKzC,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IAEnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAElD,uBAAuB;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAO;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAO,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAW7C,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AACxH,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAKzC,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IAEnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAElD,uBAAuB;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAO;IAC3C,4EAA4E;IAC5E,OAAO,CAAC,uBAAuB,CAAsB;IAErD,YAAY,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAoDlD;IAED,KAAK,IAAI,IAAI,CAOZ;IAED,aAAa,IAAI,aAAa,CAyC7B;IAED,SAAS,IAAI,OAAO,CAGnB;IAED,QAAQ,IAAI,OAAO,CAElB;IAED,IAAI,KAAK,IAAI,SAAS,CA8BrB;IAED,wCAAwC;IACxC,uBAAuB,IAAI,mBAAmB,EAAE,CAE/C;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,OAAO,CA6Bb;IAEF;;OAEG;IACG,6BAA6B,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6ClF;IAED;;OAEG;IACH,OAAO,CAAC,UAAU,CAIhB;IAEF;;OAEG;IACH,OAAO,CAAC,eAAe,CAkCrB;IAEF,OAAO,CAAC,qBAAqB;IAQ7B;;;OAGG;YACW,uBAAuB;IAyBrC,OAAO,CAAC,YAAY,CAMlB;IAEF,OAAO,CAAC,aAAa;CAkBtB"}
|
package/lib/sync/sync.js
CHANGED
|
@@ -24,6 +24,8 @@ export class BeaconSync {
|
|
|
24
24
|
/** For metrics only */
|
|
25
25
|
peerSyncType = new Map();
|
|
26
26
|
slotImportTolerance;
|
|
27
|
+
/** The requested subscription state, set while a change is being applied */
|
|
28
|
+
pendingGossipSubscribed;
|
|
27
29
|
constructor(opts, modules) {
|
|
28
30
|
const { config, chain, db, metrics, network, logger } = modules;
|
|
29
31
|
this.opts = opts;
|
|
@@ -75,6 +77,7 @@ export class BeaconSync {
|
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
close() {
|
|
80
|
+
this.pendingGossipSubscribed = undefined;
|
|
78
81
|
this.network.events.off(NetworkEvent.peerConnected, this.addPeer);
|
|
79
82
|
this.network.events.off(NetworkEvent.peerDisconnected, this.removePeer);
|
|
80
83
|
this.chain.clock.off(ClockEvent.epoch, this.onClockEpoch);
|
|
@@ -261,17 +264,7 @@ export class BeaconSync {
|
|
|
261
264
|
// We have become synced, subscribe to all the gossip core topics
|
|
262
265
|
if (state === SyncState.Synced && this.chain.clock.currentEpoch >= MIN_EPOCH_TO_START_GOSSIP) {
|
|
263
266
|
this.chain.forkChoice.resumeFastConfirmation();
|
|
264
|
-
|
|
265
|
-
this.network
|
|
266
|
-
.subscribeGossipCoreTopics()
|
|
267
|
-
.then(() => {
|
|
268
|
-
this.metrics?.syncSwitchGossipSubscriptions.inc({ action: "subscribed" });
|
|
269
|
-
this.logger.info("Subscribed gossip core topics");
|
|
270
|
-
})
|
|
271
|
-
.catch((e) => {
|
|
272
|
-
this.logger.error("Error subscribing to gossip core topics", {}, e);
|
|
273
|
-
});
|
|
274
|
-
}
|
|
267
|
+
this.setGossipSubscription(true);
|
|
275
268
|
// also start searching for unknown blocks
|
|
276
269
|
if (!this.unknownBlockSync.isSubscribedToNetwork()) {
|
|
277
270
|
this.unknownBlockSync.subscribeToNetwork();
|
|
@@ -284,17 +277,8 @@ export class BeaconSync {
|
|
|
284
277
|
if (syncDiff > this.slotImportTolerance * 2) {
|
|
285
278
|
// Same debounce as gossip: transient blips keep the rule running, only a real gap pauses it
|
|
286
279
|
this.chain.forkChoice.pauseFastConfirmation();
|
|
287
|
-
if (this.
|
|
288
|
-
this.logger.warn(
|
|
289
|
-
this.network
|
|
290
|
-
.unsubscribeGossipCoreTopics()
|
|
291
|
-
.then(() => {
|
|
292
|
-
this.metrics?.syncSwitchGossipSubscriptions.inc({ action: "unsubscribed" });
|
|
293
|
-
this.logger.info("Un-subscribed gossip core topics");
|
|
294
|
-
})
|
|
295
|
-
.catch((e) => {
|
|
296
|
-
this.logger.error("Error unsubscribing to gossip core topics", {}, e);
|
|
297
|
-
});
|
|
280
|
+
if (this.setGossipSubscription(false)) {
|
|
281
|
+
this.logger.warn("Node sync has fallen behind", { slots: syncDiff });
|
|
298
282
|
}
|
|
299
283
|
// also stop searching for unknown blocks
|
|
300
284
|
if (this.unknownBlockSync.isSubscribedToNetwork()) {
|
|
@@ -304,6 +288,42 @@ export class BeaconSync {
|
|
|
304
288
|
}
|
|
305
289
|
}
|
|
306
290
|
};
|
|
291
|
+
setGossipSubscription(subscribe) {
|
|
292
|
+
if ((this.pendingGossipSubscribed ?? this.network.isSubscribedToGossipCoreTopics()) === subscribe)
|
|
293
|
+
return false;
|
|
294
|
+
const applying = this.pendingGossipSubscribed !== undefined;
|
|
295
|
+
this.pendingGossipSubscribed = subscribe;
|
|
296
|
+
if (!applying)
|
|
297
|
+
void this.applyGossipSubscription();
|
|
298
|
+
return true;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Applies the latest requested state one request at a time. Network skips a subscribe issued while an unsubscribe is
|
|
302
|
+
* in flight, so opposite requests must not overlap.
|
|
303
|
+
*/
|
|
304
|
+
async applyGossipSubscription() {
|
|
305
|
+
for (;;) {
|
|
306
|
+
const subscribe = this.pendingGossipSubscribed;
|
|
307
|
+
if (subscribe === undefined || subscribe === this.network.isSubscribedToGossipCoreTopics())
|
|
308
|
+
break;
|
|
309
|
+
try {
|
|
310
|
+
await (subscribe ? this.network.subscribeGossipCoreTopics() : this.network.unsubscribeGossipCoreTopics());
|
|
311
|
+
}
|
|
312
|
+
catch (e) {
|
|
313
|
+
this.logger.error(subscribe ? "Error subscribing to gossip core topics" : "Error unsubscribing to gossip core topics", {}, e);
|
|
314
|
+
// Leave a retry of the same request to the next sync state update
|
|
315
|
+
if (this.pendingGossipSubscribed === subscribe)
|
|
316
|
+
break;
|
|
317
|
+
continue;
|
|
318
|
+
}
|
|
319
|
+
if (this.pendingGossipSubscribed === undefined || this.network.isSubscribedToGossipCoreTopics() !== subscribe) {
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
322
|
+
this.metrics?.syncSwitchGossipSubscriptions.inc({ action: subscribe ? "subscribed" : "unsubscribed" });
|
|
323
|
+
this.logger.info(subscribe ? "Subscribed gossip core topics" : "Un-subscribed gossip core topics");
|
|
324
|
+
}
|
|
325
|
+
this.pendingGossipSubscribed = undefined;
|
|
326
|
+
}
|
|
307
327
|
onClockEpoch = () => {
|
|
308
328
|
// If a node witness the genesis event consider starting gossip
|
|
309
329
|
// Also, ensure that updateSyncState is run at least once per epoch.
|
package/lib/sync/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAEnE,OAAO,EAAS,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAW,YAAY,EAAoB,UAAU,EAAC,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAC,yBAAyB,EAAC,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAgD,SAAS,EAAiB,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAExH,OAAO,EAAC,SAAS,EAAE,cAAc,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAC,YAAY,EAAE,eAAe,EAAE,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAEvF,MAAM,OAAO,UAAU;IACJ,MAAM,CAAS;IACf,OAAO,CAAW;IAClB,KAAK,CAAe;IACpB,EAAE,CAAY;IACd,OAAO,CAAiB;IACxB,IAAI,CAAc;IAElB,SAAS,CAAY;IACrB,gBAAgB,CAAiB;IAElD,uBAAuB;IACN,YAAY,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,mBAAmB,CAAO;IAE3C,YAAY,IAAiB,EAAE,OAAoB;QACjD,MAAM,EAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1F,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,eAAe,CAAC;QAEvE,yEAAyE;QACzE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,YAAY;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACvE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACjE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,4DAA4D;YAC5D,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAEzC,uFAAuF;YACvF,mGAAmG;YACnG,oFAAoF;YACpF,kFAAkF;YAClF,4GAA4G;YAC5G,wFAAwF;YACxF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;YACnD,qFAAqF;YACrF,MAAM,qBAAqB,GAAG,aAAa,GAAG,eAAe,CAAC;YAC9D,MAAM,yBAAyB,GAAG,GAAS,EAAE;gBAC3C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,qBAAqB,EAAE,CAAC;oBACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;oBAC7D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;oBACjE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,0FAA0F;QAC1F,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,aAAa;QACX,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;QACjD,MAAM,SAAS,GACb,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,KAAK,oBAAoB,CAAC,OAAO;YACjE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,KAAK,oBAAoB,CAAC,WAAW,CAAC;QAExE,yCAAyC;QACzC,IAAI,WAAW,IAAI,YAAY,EAAE,CAAC;YAChC,OAAO;gBACL,QAAQ,EAAE,CAAC;gBACX,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,KAAK;gBAChB,YAAY,EAAE,KAAK;gBACnB,SAAS;aACV,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAE7C,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,gBAAgB,CAAC;YAChC,KAAK,SAAS,CAAC,WAAW,CAAC;YAC3B,KAAK,SAAS,CAAC,OAAO;gBACpB,OAAO;oBACL,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC,IAAI;oBACrC,SAAS,EAAE,IAAI;oBACf,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC;oBACrC,SAAS;iBACV,CAAC;YACJ,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO;oBACL,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,YAAY,EAAE,CAAC;oBACf,SAAS,EAAE,KAAK;oBAChB,YAAY,EAAE,iBAAiB,CAAC,IAAI,CAAC;oBACrC,SAAS;iBACV,CAAC;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,SAAS;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,6BAA6B;QACvD,OAAO,KAAK,KAAK,SAAS,CAAC,gBAAgB,IAAI,KAAK,KAAK,SAAS,CAAC,WAAW,CAAC;IACjF,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,CAAC;IACzC,CAAC;IAED,IAAI,KAAK;QACP,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;QAEtD;QACE,0BAA0B;QAC1B,oBAAoB;QACpB,CAAC,WAAW,GAAG,CAAC;YACd,4DAA4D;YAC5D,CAAC,QAAQ,IAAI,WAAW,IAAI,QAAQ,IAAI,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAClF,+EAA+E;YAC/E,wEAAwE;YACxE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACpE,8DAA8D;QAC9D,kBAAkB;UAClB,CAAC;YACD,OAAO,SAAS,CAAC,MAAM,CAAC;QAC1B,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAC5C,QAAQ,cAAc,CAAC,MAAM,EAAE,CAAC;YAC9B,KAAK,eAAe,CAAC,SAAS;gBAC5B,OAAO,SAAS,CAAC,gBAAgB,CAAC;YACpC,KAAK,eAAe,CAAC,IAAI;gBACvB,OAAO,SAAS,CAAC,WAAW,CAAC;YAC/B,KAAK,eAAe,CAAC,IAAI;gBACvB,OAAO,SAAS,CAAC,OAAO,CAAC;YAC3B;gBACE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,uBAAuB;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;IAClD,CAAC;IAED;;;;;;;;;;OAUG;IACK,OAAO,GAAG,CAAC,IAAkD,EAAQ,EAAE;QAC7E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAC3C,sGAAsG;QACtG,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;YAC1G,KAAK,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5G,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,2BAA2B,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ;YACR,mBAAmB,EAAE,WAAW,CAAC,cAAc;YAC/C,kBAAkB,EAAE,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC;YACxD,aAAa,EAAE,WAAW,CAAC,QAAQ;YACnC,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC;YAC9C,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;YAChD,mBAAmB,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YACzD,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YACpC,cAAc,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;SAChD,CAAC,CAAC;QAEH,mBAAmB;QACnB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE3C,IAAI,QAAQ,KAAK,YAAY,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF;;OAEG;IACH,KAAK,CAAC,6BAA6B,CAAC,IAAe,EAAE,MAAc;QACjE,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,IAAI,MAAM,GAAkB,IAAI,CAAC;YACjC,gGAAgG;YAChG,kGAAkG;YAClG,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC;YACxF,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;gBAC5B,IAAI,cAAc,CAAC,SAAS,KAAK,IAAI;oBAAE,OAAO;gBAC9C,MAAM,GAAG,8BAA8B,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC5E,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC;oBACtC,MAAM,GAAG,kCAAkC,CAAC;gBAC9C,CAAC;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oBACvF,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;wBACvB,IAAI,SAAS,IAAI,SAAS;4BAAE,MAAM,GAAG,6CAA6C,CAAC;oBACrF,CAAC;yBAAM,IAAI,IAAI,KAAK,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;wBACzE,mEAAmE;wBACnE,sGAAsG;wBACtG,MAAM,GAAG,wBAAwB,CAAC;oBACpC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE;oBAC9D,IAAI;oBACJ,cAAc,EAAE,MAAM,CAAC,cAAc;oBACrC,IAAI;oBACJ,MAAM;iBACP,CAAC,CAAC;gBACH,IAAI,CAAC,OAAO,EAAE,mCAAmC,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;gBAChE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;gBACnF,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,2CAA2C,EAC3C,EAAC,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,IAAI,EAAC,EACnD,CAAU,CACX,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,UAAU,GAAG,CAAC,IAAqD,EAAQ,EAAE;QACnF,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF;;OAEG;IACK,eAAe,GAAG,GAAS,EAAE;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,6BAA6B;QAEvD,iEAAiE;QACjE,IAAI,KAAK,KAAK,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,yBAAyB,EAAE,CAAC;YAC7F,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC;YAE/C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC;gBACnD,IAAI,CAAC,OAAO;qBACT,yBAAyB,EAAE;qBAC3B,IAAI,CAAC,GAAG,EAAE;oBACT,IAAI,CAAC,OAAO,EAAE,6BAA6B,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,YAAY,EAAC,CAAC,CAAC;oBACxE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;gBACpD,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;YACP,CAAC;YAED,0CAA0C;YAC1C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,EAAE,CAAC;gBACnD,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;gBAC3C,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,YAAY,EAAC,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;QAED,0EAA0E;aACrE,IAAI,KAAK,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;YACrF,IAAI,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,EAAE,CAAC;gBAC5C,4FAA4F;gBAC5F,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;gBAE9C,IAAI,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC;oBAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,QAAQ,QAAQ,CAAC,CAAC;oBACrE,IAAI,CAAC,OAAO;yBACT,2BAA2B,EAAE;yBAC7B,IAAI,CAAC,GAAG,EAAE;wBACT,IAAI,CAAC,OAAO,EAAE,6BAA6B,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,cAAc,EAAC,CAAC,CAAC;wBAC1E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;oBACvD,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;wBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxE,CAAC,CAAC,CAAC;gBACP,CAAC;gBAED,yCAAyC;gBACzC,IAAI,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,EAAE,CAAC;oBAClD,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC;oBAC/C,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,cAAc,EAAC,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEM,YAAY,GAAG,GAAS,EAAE;QAChC,+DAA+D;QAC/D,oEAAoE;QACpE,qFAAqF;QACrF,uDAAuD;QACvD,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC;IAEM,aAAa,CAAC,OAAgB;QACpC,6BAA6B;QAC7B,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAEpD,0BAA0B;QAC1B,MAAM,eAAe,GAAiC;YACpD,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;SACzB,CAAC;QACF,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync/sync.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"bugs": {
|
|
12
12
|
"url": "https://github.com/ChainSafe/lodestar/issues"
|
|
13
13
|
},
|
|
14
|
-
"version": "1.51.0-dev.
|
|
14
|
+
"version": "1.51.0-dev.b889ef5768",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -126,18 +126,18 @@
|
|
|
126
126
|
"@libp2p/prometheus-metrics": "^5.0.31",
|
|
127
127
|
"@libp2p/tcp": "^11.0.30",
|
|
128
128
|
"@libp2p/utils": "^7.4.3",
|
|
129
|
-
"@lodestar/api": "^1.51.0-dev.
|
|
130
|
-
"@lodestar/config": "^1.51.0-dev.
|
|
131
|
-
"@lodestar/db": "^1.51.0-dev.
|
|
132
|
-
"@lodestar/fork-choice": "^1.51.0-dev.
|
|
133
|
-
"@lodestar/logger": "^1.51.0-dev.
|
|
134
|
-
"@lodestar/native": "^1.51.0-dev.
|
|
135
|
-
"@lodestar/params": "^1.51.0-dev.
|
|
136
|
-
"@lodestar/reqresp": "^1.51.0-dev.
|
|
137
|
-
"@lodestar/state-transition": "^1.51.0-dev.
|
|
138
|
-
"@lodestar/types": "^1.51.0-dev.
|
|
139
|
-
"@lodestar/utils": "^1.51.0-dev.
|
|
140
|
-
"@lodestar/validator": "^1.51.0-dev.
|
|
129
|
+
"@lodestar/api": "^1.51.0-dev.b889ef5768",
|
|
130
|
+
"@lodestar/config": "^1.51.0-dev.b889ef5768",
|
|
131
|
+
"@lodestar/db": "^1.51.0-dev.b889ef5768",
|
|
132
|
+
"@lodestar/fork-choice": "^1.51.0-dev.b889ef5768",
|
|
133
|
+
"@lodestar/logger": "^1.51.0-dev.b889ef5768",
|
|
134
|
+
"@lodestar/native": "^1.51.0-dev.b889ef5768",
|
|
135
|
+
"@lodestar/params": "^1.51.0-dev.b889ef5768",
|
|
136
|
+
"@lodestar/reqresp": "^1.51.0-dev.b889ef5768",
|
|
137
|
+
"@lodestar/state-transition": "^1.51.0-dev.b889ef5768",
|
|
138
|
+
"@lodestar/types": "^1.51.0-dev.b889ef5768",
|
|
139
|
+
"@lodestar/utils": "^1.51.0-dev.b889ef5768",
|
|
140
|
+
"@lodestar/validator": "^1.51.0-dev.b889ef5768",
|
|
141
141
|
"@multiformats/multiaddr": "^13.0.1",
|
|
142
142
|
"datastore-core": "^12.0.1",
|
|
143
143
|
"datastore-level": "^13.0.1",
|
|
@@ -159,8 +159,8 @@
|
|
|
159
159
|
"@ethereumjs/rlp": "^4.0.1",
|
|
160
160
|
"@libp2p/interface-internal": "^3.2.0",
|
|
161
161
|
"@libp2p/logger": "^6.2.15",
|
|
162
|
-
"@lodestar/spec-test-util": "^1.51.0-dev.
|
|
163
|
-
"@lodestar/test-utils": "^1.51.0-dev.
|
|
162
|
+
"@lodestar/spec-test-util": "^1.51.0-dev.b889ef5768",
|
|
163
|
+
"@lodestar/test-utils": "^1.51.0-dev.b889ef5768",
|
|
164
164
|
"@types/js-yaml": "^4.0.5",
|
|
165
165
|
"@types/qs": "^6.9.7",
|
|
166
166
|
"@types/tmp": "^0.2.3",
|
|
@@ -174,5 +174,5 @@
|
|
|
174
174
|
"beacon",
|
|
175
175
|
"blockchain"
|
|
176
176
|
],
|
|
177
|
-
"gitHead": "
|
|
177
|
+
"gitHead": "70ae62e34a68d3c7cc925b2c3acf599689036ff0"
|
|
178
178
|
}
|
|
@@ -54,6 +54,9 @@ export async function verifyBlocksSignatures(
|
|
|
54
54
|
// attestations already buffer up to `MAX_BUFFER_WAIT_MS`
|
|
55
55
|
{priority: true}
|
|
56
56
|
);
|
|
57
|
+
// Handlers are attached after the loop, which yields. A rejection in between, e.g. the verifier closing,
|
|
58
|
+
// must not be unhandled. `rejectFirstInvalidResolveAllValid()` still observes it.
|
|
59
|
+
isValidPromises[i].catch(() => {});
|
|
57
60
|
|
|
58
61
|
// getBlockSignatureSets() takes 45ms in benchmarks for 2022Q2 mainnet blocks (100 sigs). When syncing a 32 blocks
|
|
59
62
|
// segments it will block the event loop for 1400 ms, which is too much. This call will allow the event loop to
|
|
@@ -7,7 +7,7 @@ import {Worker, spawn} from "@chainsafe/threads";
|
|
|
7
7
|
self = undefined;
|
|
8
8
|
|
|
9
9
|
import {ISignatureSet} from "@lodestar/state-transition";
|
|
10
|
-
import {Logger} from "@lodestar/utils";
|
|
10
|
+
import {Logger, defer} from "@lodestar/utils";
|
|
11
11
|
import {Metrics} from "../../../metrics/index.js";
|
|
12
12
|
import {LinkedList} from "../../../util/array.js";
|
|
13
13
|
import {callInNextEventLoop} from "../../../util/eventLoop.js";
|
|
@@ -94,7 +94,7 @@ type WorkerStatus =
|
|
|
94
94
|
| {code: WorkerStatusCode.initializing; initPromise: Promise<WorkerApi>}
|
|
95
95
|
| {code: WorkerStatusCode.initializationError; error: Error}
|
|
96
96
|
| {code: WorkerStatusCode.idle; workerApi: WorkerApi}
|
|
97
|
-
| {code: WorkerStatusCode.running; workerApi: WorkerApi};
|
|
97
|
+
| {code: WorkerStatusCode.running; workerApi: WorkerApi; abort: () => void};
|
|
98
98
|
|
|
99
99
|
type WorkerDescriptor = {
|
|
100
100
|
worker: Worker;
|
|
@@ -126,7 +126,7 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
|
|
|
126
126
|
timeout: NodeJS.Timeout;
|
|
127
127
|
} | null = null;
|
|
128
128
|
private blsVerifyAllMultiThread: boolean;
|
|
129
|
-
private
|
|
129
|
+
private closePromise: Promise<void> | undefined;
|
|
130
130
|
private workersBusy = 0;
|
|
131
131
|
|
|
132
132
|
constructor(options: BlsMultiThreadWorkerPoolOptions, modules: BlsMultiThreadWorkerPoolModules) {
|
|
@@ -149,6 +149,7 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
|
|
|
149
149
|
|
|
150
150
|
canAcceptWork(): boolean {
|
|
151
151
|
return (
|
|
152
|
+
this.closePromise === undefined &&
|
|
152
153
|
this.workersBusy < blsPoolSize &&
|
|
153
154
|
// TODO: Should also bound the jobs queue?
|
|
154
155
|
this.jobs.length < MAX_JOBS_CAN_ACCEPT_WORK
|
|
@@ -156,6 +157,7 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
|
|
|
156
157
|
}
|
|
157
158
|
|
|
158
159
|
async verifySignatureSets(sets: ISignatureSet[], opts: VerifySignatureOpts = {}): Promise<boolean> {
|
|
160
|
+
if (this.closePromise !== undefined) throw new QueueError({code: QueueErrorCode.QUEUE_ABORTED});
|
|
159
161
|
this.metrics?.bls.aggregatedPubkeys.inc(getAggregatedPubkeysCount(sets));
|
|
160
162
|
this.metrics?.blsThreadPool.totalSigSets.inc(sets.length);
|
|
161
163
|
if (opts.priority) {
|
|
@@ -208,6 +210,7 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
|
|
|
208
210
|
message: Uint8Array,
|
|
209
211
|
opts: Omit<VerifySignatureOpts, "verifyOnMainThread"> = {}
|
|
210
212
|
): Promise<boolean[]> {
|
|
213
|
+
if (this.closePromise !== undefined) throw new QueueError({code: QueueErrorCode.QUEUE_ABORTED});
|
|
211
214
|
const promises: Promise<boolean[]>[] = [];
|
|
212
215
|
for (const setsChunk of chunkSameMessageSignatureSets(sets)) {
|
|
213
216
|
promises.push(
|
|
@@ -229,9 +232,14 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
|
|
|
229
232
|
return results.flat();
|
|
230
233
|
}
|
|
231
234
|
|
|
232
|
-
|
|
235
|
+
close(): Promise<void> {
|
|
236
|
+
if (this.closePromise !== undefined) return this.closePromise;
|
|
233
237
|
if (this.bufferedJobs) {
|
|
234
238
|
clearTimeout(this.bufferedJobs.timeout);
|
|
239
|
+
for (const jobs of [this.bufferedJobs.jobs, this.bufferedJobs.prioritizedJobs]) {
|
|
240
|
+
for (const job of jobs) job.reject(new QueueError({code: QueueErrorCode.QUEUE_ABORTED}));
|
|
241
|
+
}
|
|
242
|
+
this.bufferedJobs = null;
|
|
235
243
|
}
|
|
236
244
|
|
|
237
245
|
// Abort all jobs
|
|
@@ -241,15 +249,21 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
|
|
|
241
249
|
this.jobs.clear();
|
|
242
250
|
|
|
243
251
|
// Terminate all workers. await to ensure no workers are left hanging
|
|
244
|
-
|
|
252
|
+
this.closePromise = Promise.all(
|
|
245
253
|
Array.from(this.workers.entries()).map(([id, worker]) =>
|
|
246
254
|
// NOTE: 'threads' has not yet updated types, and NodeJS complains with
|
|
247
255
|
// [DEP0132] DeprecationWarning: Passing a callback to worker.terminate() is deprecated. It returns a Promise instead.
|
|
248
|
-
(worker.worker.terminate() as unknown as Promise<void>)
|
|
249
|
-
|
|
250
|
-
|
|
256
|
+
(worker.worker.terminate() as unknown as Promise<void>)
|
|
257
|
+
.catch((e: Error) => {
|
|
258
|
+
this.logger.error("Error terminating worker", {id}, e);
|
|
259
|
+
})
|
|
260
|
+
.finally(() => {
|
|
261
|
+
// threads does not settle outstanding RPC calls when its worker exits.
|
|
262
|
+
if (worker.status.code === WorkerStatusCode.running) worker.status.abort();
|
|
263
|
+
})
|
|
251
264
|
)
|
|
252
|
-
);
|
|
265
|
+
).then(() => {});
|
|
266
|
+
return this.closePromise;
|
|
253
267
|
}
|
|
254
268
|
|
|
255
269
|
private createWorkers(poolSize: number): WorkerDescriptor[] {
|
|
@@ -295,7 +309,7 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
|
|
|
295
309
|
* Register BLS work to be done eventually in a worker
|
|
296
310
|
*/
|
|
297
311
|
private queueBlsWork(job: JobQueueItem): void {
|
|
298
|
-
if (this.
|
|
312
|
+
if (this.closePromise !== undefined) {
|
|
299
313
|
throw new QueueError({code: QueueErrorCode.QUEUE_ABORTED});
|
|
300
314
|
}
|
|
301
315
|
|
|
@@ -354,7 +368,7 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
|
|
|
354
368
|
* Potentially submit jobs to an idle worker, only if there's a worker and jobs
|
|
355
369
|
*/
|
|
356
370
|
private runJob = async (): Promise<void> => {
|
|
357
|
-
if (this.
|
|
371
|
+
if (this.closePromise !== undefined) {
|
|
358
372
|
return;
|
|
359
373
|
}
|
|
360
374
|
|
|
@@ -375,7 +389,12 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
|
|
|
375
389
|
// Maybe it's not useful since all data referenced in jobs is likely referenced by others
|
|
376
390
|
|
|
377
391
|
const workerApi = worker.status.workerApi;
|
|
378
|
-
|
|
392
|
+
const completion = defer<BlsWorkResult>();
|
|
393
|
+
worker.status = {
|
|
394
|
+
code: WorkerStatusCode.running,
|
|
395
|
+
workerApi,
|
|
396
|
+
abort: () => completion.reject(new QueueError({code: QueueErrorCode.QUEUE_ABORTED})),
|
|
397
|
+
};
|
|
379
398
|
this.workersBusy++;
|
|
380
399
|
const jobsStarted: JobQueueItem[] = [];
|
|
381
400
|
let completedJobsCount = 0;
|
|
@@ -441,7 +460,8 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
|
|
|
441
460
|
// If worker communication or result processing throws, all unresolved jobs are rejected.
|
|
442
461
|
|
|
443
462
|
const [jobStartSec, jobStartNs] = process.hrtime();
|
|
444
|
-
|
|
463
|
+
void workerApi.verifyManySignatureSets(workReqs).then(completion.resolve, completion.reject);
|
|
464
|
+
const workResult = await completion.promise;
|
|
445
465
|
const [jobEndSec, jobEndNs] = process.hrtime();
|
|
446
466
|
const {workerId, batchRetries, batchSigsSuccess, verificationCalls, workerStartTime, workerEndTime, results} =
|
|
447
467
|
workResult;
|
|
@@ -485,7 +505,7 @@ export class BlsMultiThreadWorkerPool implements IBlsVerifier {
|
|
|
485
505
|
}
|
|
486
506
|
} catch (e) {
|
|
487
507
|
// Worker communications should never reject
|
|
488
|
-
if (
|
|
508
|
+
if (this.closePromise === undefined) {
|
|
489
509
|
this.logger.error("BlsMultiThreadWorkerPool error", {}, e as Error);
|
|
490
510
|
}
|
|
491
511
|
// Reject jobs that were not already completed
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import {SYNC_COMMITTEE_SUBNET_COUNT, SYNC_COMMITTEE_SUBNET_SIZE} from "@lodestar/params";
|
|
2
2
|
import {IBeaconStateView, isStatePostAltair} from "@lodestar/state-transition";
|
|
3
|
-
import {SubnetID, altair} from "@lodestar/types";
|
|
3
|
+
import {RootHex, Slot, SubnetID, ValidatorIndex, altair} from "@lodestar/types";
|
|
4
4
|
import {toRootHex} from "@lodestar/utils";
|
|
5
|
+
import {Metrics} from "../../metrics/metrics.js";
|
|
5
6
|
import {GossipAction, SyncCommitteeError, SyncCommitteeErrorCode} from "../errors/index.js";
|
|
6
7
|
import {IBeaconChain} from "../interface.js";
|
|
7
8
|
import {getSyncCommitteeSignatureSet} from "./signatureSets/index.js";
|
|
@@ -32,6 +33,33 @@ export async function validateGossipSyncCommittee(
|
|
|
32
33
|
|
|
33
34
|
// [IGNORE] There has been no other valid sync committee signature for the declared slot for the validator referenced
|
|
34
35
|
// by sync_committee_signature.validator_index.
|
|
36
|
+
assertSyncCommitteeMessageNotKnown(chain, slot, subnet, validatorIndex, messageRoot, chain.metrics);
|
|
37
|
+
|
|
38
|
+
// [REJECT] The subnet_id is valid for the given validator, i.e. subnet_id in compute_subnets_for_sync_committee(state, sync_committee_signature.validator_index).
|
|
39
|
+
// Note this validation implies the validator is part of the broader current sync committee along with the correct subcommittee.
|
|
40
|
+
// > Checked in validateGossipSyncCommitteeExceptSig()
|
|
41
|
+
|
|
42
|
+
// [REJECT] The signature is valid for the message beacon_block_root for the validator referenced by validator_index.
|
|
43
|
+
await validateSyncCommitteeSigOnly(chain, headState, syncCommittee);
|
|
44
|
+
|
|
45
|
+
// Re-check after the await: concurrent messages from the same validator all pass the check above.
|
|
46
|
+
// Metrics were already counted by the first check.
|
|
47
|
+
assertSyncCommitteeMessageNotKnown(chain, slot, subnet, validatorIndex, messageRoot, null);
|
|
48
|
+
|
|
49
|
+
// Register this valid item as seen
|
|
50
|
+
chain.seenSyncCommitteeMessages.add(slot, subnet, validatorIndex, messageRoot);
|
|
51
|
+
|
|
52
|
+
return {indicesInSubcommittee};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function assertSyncCommitteeMessageNotKnown(
|
|
56
|
+
chain: IBeaconChain,
|
|
57
|
+
slot: Slot,
|
|
58
|
+
subnet: SubnetID,
|
|
59
|
+
validatorIndex: ValidatorIndex,
|
|
60
|
+
messageRoot: RootHex,
|
|
61
|
+
metrics: Metrics | null
|
|
62
|
+
): void {
|
|
35
63
|
const prevRoot = chain.seenSyncCommitteeMessages.get(slot, subnet, validatorIndex);
|
|
36
64
|
if (prevRoot) {
|
|
37
65
|
let shouldIgnore = false;
|
|
@@ -39,9 +67,9 @@ export async function validateGossipSyncCommittee(
|
|
|
39
67
|
shouldIgnore = true;
|
|
40
68
|
} else {
|
|
41
69
|
const headRoot = chain.forkChoice.getHeadRoot();
|
|
42
|
-
|
|
70
|
+
metrics?.gossipSyncCommittee.equivocationCount.inc();
|
|
43
71
|
if (messageRoot === headRoot) {
|
|
44
|
-
|
|
72
|
+
metrics?.gossipSyncCommittee.equivocationToHeadCount.inc();
|
|
45
73
|
} else {
|
|
46
74
|
shouldIgnore = true;
|
|
47
75
|
}
|
|
@@ -57,18 +85,6 @@ export async function validateGossipSyncCommittee(
|
|
|
57
85
|
});
|
|
58
86
|
}
|
|
59
87
|
}
|
|
60
|
-
|
|
61
|
-
// [REJECT] The subnet_id is valid for the given validator, i.e. subnet_id in compute_subnets_for_sync_committee(state, sync_committee_signature.validator_index).
|
|
62
|
-
// Note this validation implies the validator is part of the broader current sync committee along with the correct subcommittee.
|
|
63
|
-
// > Checked in validateGossipSyncCommitteeExceptSig()
|
|
64
|
-
|
|
65
|
-
// [REJECT] The signature is valid for the message beacon_block_root for the validator referenced by validator_index.
|
|
66
|
-
await validateSyncCommitteeSigOnly(chain, headState, syncCommittee);
|
|
67
|
-
|
|
68
|
-
// Register this valid item as seen
|
|
69
|
-
chain.seenSyncCommitteeMessages.add(slot, subnet, validatorIndex, messageRoot);
|
|
70
|
-
|
|
71
|
-
return {indicesInSubcommittee};
|
|
72
88
|
}
|
|
73
89
|
|
|
74
90
|
export async function validateApiSyncCommittee(
|
|
@@ -92,6 +92,19 @@ export async function validateSyncCommitteeGossipContributionAndProof(
|
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
+
// Re-check after the await: concurrent contributions from the same aggregator all pass the checks above
|
|
96
|
+
if (chain.seenContributionAndProof.isAggregatorKnown(slot, subcommitteeIndex, aggregatorIndex)) {
|
|
97
|
+
throw new SyncCommitteeError(GossipAction.IGNORE, {
|
|
98
|
+
code: SyncCommitteeErrorCode.SYNC_COMMITTEE_AGGREGATOR_ALREADY_KNOWN,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (!skipValidationKnownParticipants && chain.seenContributionAndProof.participantsKnown(contribution)) {
|
|
103
|
+
throw new SyncCommitteeError(GossipAction.IGNORE, {
|
|
104
|
+
code: SyncCommitteeErrorCode.SYNC_COMMITTEE_PARTICIPANTS_ALREADY_KNOWN,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
|
|
95
108
|
// no need to add to seenSyncCommittteeContributionCache here, gossip handler will do that
|
|
96
109
|
chain.seenContributionAndProof.add(contributionAndProof, syncCommitteeParticipantIndices.length);
|
|
97
110
|
|
package/src/sync/sync.ts
CHANGED
|
@@ -33,6 +33,8 @@ export class BeaconSync implements IBeaconSync {
|
|
|
33
33
|
/** For metrics only */
|
|
34
34
|
private readonly peerSyncType = new Map<string, PeerSyncType>();
|
|
35
35
|
private readonly slotImportTolerance: Slot;
|
|
36
|
+
/** The requested subscription state, set while a change is being applied */
|
|
37
|
+
private pendingGossipSubscribed: boolean | undefined;
|
|
36
38
|
|
|
37
39
|
constructor(opts: SyncOptions, modules: SyncModules) {
|
|
38
40
|
const {config, chain, db, metrics, network, logger} = modules;
|
|
@@ -89,6 +91,7 @@ export class BeaconSync implements IBeaconSync {
|
|
|
89
91
|
}
|
|
90
92
|
|
|
91
93
|
close(): void {
|
|
94
|
+
this.pendingGossipSubscribed = undefined;
|
|
92
95
|
this.network.events.off(NetworkEvent.peerConnected, this.addPeer);
|
|
93
96
|
this.network.events.off(NetworkEvent.peerDisconnected, this.removePeer);
|
|
94
97
|
this.chain.clock.off(ClockEvent.epoch, this.onClockEpoch);
|
|
@@ -296,17 +299,7 @@ export class BeaconSync implements IBeaconSync {
|
|
|
296
299
|
if (state === SyncState.Synced && this.chain.clock.currentEpoch >= MIN_EPOCH_TO_START_GOSSIP) {
|
|
297
300
|
this.chain.forkChoice.resumeFastConfirmation();
|
|
298
301
|
|
|
299
|
-
|
|
300
|
-
this.network
|
|
301
|
-
.subscribeGossipCoreTopics()
|
|
302
|
-
.then(() => {
|
|
303
|
-
this.metrics?.syncSwitchGossipSubscriptions.inc({action: "subscribed"});
|
|
304
|
-
this.logger.info("Subscribed gossip core topics");
|
|
305
|
-
})
|
|
306
|
-
.catch((e) => {
|
|
307
|
-
this.logger.error("Error subscribing to gossip core topics", {}, e);
|
|
308
|
-
});
|
|
309
|
-
}
|
|
302
|
+
this.setGossipSubscription(true);
|
|
310
303
|
|
|
311
304
|
// also start searching for unknown blocks
|
|
312
305
|
if (!this.unknownBlockSync.isSubscribedToNetwork()) {
|
|
@@ -322,17 +315,8 @@ export class BeaconSync implements IBeaconSync {
|
|
|
322
315
|
// Same debounce as gossip: transient blips keep the rule running, only a real gap pauses it
|
|
323
316
|
this.chain.forkChoice.pauseFastConfirmation();
|
|
324
317
|
|
|
325
|
-
if (this.
|
|
326
|
-
this.logger.warn(
|
|
327
|
-
this.network
|
|
328
|
-
.unsubscribeGossipCoreTopics()
|
|
329
|
-
.then(() => {
|
|
330
|
-
this.metrics?.syncSwitchGossipSubscriptions.inc({action: "unsubscribed"});
|
|
331
|
-
this.logger.info("Un-subscribed gossip core topics");
|
|
332
|
-
})
|
|
333
|
-
.catch((e) => {
|
|
334
|
-
this.logger.error("Error unsubscribing to gossip core topics", {}, e);
|
|
335
|
-
});
|
|
318
|
+
if (this.setGossipSubscription(false)) {
|
|
319
|
+
this.logger.warn("Node sync has fallen behind", {slots: syncDiff});
|
|
336
320
|
}
|
|
337
321
|
|
|
338
322
|
// also stop searching for unknown blocks
|
|
@@ -344,6 +328,43 @@ export class BeaconSync implements IBeaconSync {
|
|
|
344
328
|
}
|
|
345
329
|
};
|
|
346
330
|
|
|
331
|
+
private setGossipSubscription(subscribe: boolean): boolean {
|
|
332
|
+
if ((this.pendingGossipSubscribed ?? this.network.isSubscribedToGossipCoreTopics()) === subscribe) return false;
|
|
333
|
+
const applying = this.pendingGossipSubscribed !== undefined;
|
|
334
|
+
this.pendingGossipSubscribed = subscribe;
|
|
335
|
+
if (!applying) void this.applyGossipSubscription();
|
|
336
|
+
return true;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Applies the latest requested state one request at a time. Network skips a subscribe issued while an unsubscribe is
|
|
341
|
+
* in flight, so opposite requests must not overlap.
|
|
342
|
+
*/
|
|
343
|
+
private async applyGossipSubscription(): Promise<void> {
|
|
344
|
+
for (;;) {
|
|
345
|
+
const subscribe = this.pendingGossipSubscribed;
|
|
346
|
+
if (subscribe === undefined || subscribe === this.network.isSubscribedToGossipCoreTopics()) break;
|
|
347
|
+
try {
|
|
348
|
+
await (subscribe ? this.network.subscribeGossipCoreTopics() : this.network.unsubscribeGossipCoreTopics());
|
|
349
|
+
} catch (e) {
|
|
350
|
+
this.logger.error(
|
|
351
|
+
subscribe ? "Error subscribing to gossip core topics" : "Error unsubscribing to gossip core topics",
|
|
352
|
+
{},
|
|
353
|
+
e as Error
|
|
354
|
+
);
|
|
355
|
+
// Leave a retry of the same request to the next sync state update
|
|
356
|
+
if (this.pendingGossipSubscribed === subscribe) break;
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
if (this.pendingGossipSubscribed === undefined || this.network.isSubscribedToGossipCoreTopics() !== subscribe) {
|
|
360
|
+
break;
|
|
361
|
+
}
|
|
362
|
+
this.metrics?.syncSwitchGossipSubscriptions.inc({action: subscribe ? "subscribed" : "unsubscribed"});
|
|
363
|
+
this.logger.info(subscribe ? "Subscribed gossip core topics" : "Un-subscribed gossip core topics");
|
|
364
|
+
}
|
|
365
|
+
this.pendingGossipSubscribed = undefined;
|
|
366
|
+
}
|
|
367
|
+
|
|
347
368
|
private onClockEpoch = (): void => {
|
|
348
369
|
// If a node witness the genesis event consider starting gossip
|
|
349
370
|
// Also, ensure that updateSyncState is run at least once per epoch.
|