@lodestar/beacon-node 1.30.0-dev.2ff1784005 → 1.30.0-dev.3658525884

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.
Files changed (63) hide show
  1. package/README.md +1 -1
  2. package/lib/api/impl/beacon/pool/index.js +1 -1
  3. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  4. package/lib/api/impl/beacon/state/index.js +14 -9
  5. package/lib/api/impl/beacon/state/index.js.map +1 -1
  6. package/lib/api/impl/lodestar/index.js.map +1 -1
  7. package/lib/api/impl/proof/index.js +4 -2
  8. package/lib/api/impl/proof/index.js.map +1 -1
  9. package/lib/api/impl/validator/index.js.map +1 -1
  10. package/lib/chain/archiveStore/archiveStore.d.ts +0 -1
  11. package/lib/chain/archiveStore/archiveStore.js +14 -13
  12. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  13. package/lib/chain/archiveStore/historicalState/worker.js +0 -2
  14. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  15. package/lib/chain/archiveStore/interface.d.ts +1 -0
  16. package/lib/chain/beaconProposerCache.d.ts +1 -3
  17. package/lib/chain/beaconProposerCache.js +1 -2
  18. package/lib/chain/beaconProposerCache.js.map +1 -1
  19. package/lib/chain/blocks/blockInput/blockInput.d.ts +164 -0
  20. package/lib/chain/blocks/blockInput/blockInput.js +522 -0
  21. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -0
  22. package/lib/chain/blocks/blockInput/errors.d.ts +38 -0
  23. package/lib/chain/blocks/blockInput/errors.js +17 -0
  24. package/lib/chain/blocks/blockInput/errors.js.map +1 -0
  25. package/lib/chain/blocks/blockInput/index.d.ts +4 -0
  26. package/lib/chain/blocks/blockInput/index.js +4 -0
  27. package/lib/chain/blocks/blockInput/index.js.map +1 -0
  28. package/lib/chain/blocks/blockInput/types.d.ts +116 -0
  29. package/lib/chain/blocks/blockInput/types.js +19 -0
  30. package/lib/chain/blocks/blockInput/types.js.map +1 -0
  31. package/lib/chain/bls/multithread/index.d.ts +1 -1
  32. package/lib/chain/bls/multithread/index.js +1 -1
  33. package/lib/chain/bls/multithread/index.js.map +1 -1
  34. package/lib/chain/bls/multithread/jobItem.d.ts +1 -1
  35. package/lib/chain/bls/multithread/jobItem.js +4 -12
  36. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  37. package/lib/chain/chain.js +3 -0
  38. package/lib/chain/chain.js.map +1 -1
  39. package/lib/chain/options.js +1 -0
  40. package/lib/chain/options.js.map +1 -1
  41. package/lib/chain/regen/queued.d.ts +0 -1
  42. package/lib/chain/regen/queued.js +0 -1
  43. package/lib/chain/regen/queued.js.map +1 -1
  44. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  45. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  46. package/lib/execution/engine/payloadIdCache.d.ts +0 -3
  47. package/lib/execution/engine/payloadIdCache.js +1 -2
  48. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  49. package/lib/metrics/metrics/lodestar.d.ts +1 -1
  50. package/lib/metrics/metrics/lodestar.js +4 -4
  51. package/lib/metrics/metrics/lodestar.js.map +1 -1
  52. package/lib/network/core/networkCore.js +3 -16
  53. package/lib/network/core/networkCore.js.map +1 -1
  54. package/lib/network/core/networkCoreWorkerHandler.d.ts +4 -3
  55. package/lib/network/network.d.ts +0 -1
  56. package/lib/network/network.js +0 -1
  57. package/lib/network/network.js.map +1 -1
  58. package/lib/network/peers/discover.d.ts +0 -4
  59. package/lib/network/peers/discover.js +1 -3
  60. package/lib/network/peers/discover.js.map +1 -1
  61. package/lib/network/peers/peerManager.js +0 -1
  62. package/lib/network/peers/peerManager.js.map +1 -1
  63. package/package.json +20 -20
@@ -0,0 +1,522 @@
1
+ import { fromHex, prettyBytes, toHex, withTimeout } from "@lodestar/utils";
2
+ import { kzgCommitmentToVersionedHash } from "../../../util/blobs.js";
3
+ import { byteArrayEquals } from "../../../util/bytes.js";
4
+ import { BlockInputError, BlockInputErrorCode } from "./errors.js";
5
+ import { DAType, } from "./types.js";
6
+ export function createPromise() {
7
+ let resolve;
8
+ let reject;
9
+ const promise = new Promise((_resolve, _reject) => {
10
+ resolve = _resolve;
11
+ reject = _reject;
12
+ });
13
+ return {
14
+ promise,
15
+ resolve,
16
+ reject,
17
+ };
18
+ }
19
+ class AbstractBlockInput {
20
+ constructor(init) {
21
+ this.blockPromise = createPromise();
22
+ this.dataPromise = createPromise();
23
+ this.daOutOfRange = init.daOutOfRange;
24
+ this.timeCreated = init.timeCreated;
25
+ this.forkName = init.forkName;
26
+ this.slot = init.slot;
27
+ this.blockRootHex = init.blockRootHex;
28
+ this.parentRootHex = init.parentRootHex;
29
+ }
30
+ hasBlock() {
31
+ return this.state.hasBlock;
32
+ }
33
+ getBlock() {
34
+ if (!this.state.hasBlock) {
35
+ throw new BlockInputError({
36
+ code: BlockInputErrorCode.MISSING_BLOCK,
37
+ blockRoot: this.blockRootHex,
38
+ }, "Cannot getBlock from BlockInput without a block");
39
+ }
40
+ return this.state.block;
41
+ }
42
+ getBlockSource() {
43
+ if (!this.state.hasBlock) {
44
+ throw new BlockInputError({
45
+ code: BlockInputErrorCode.MISSING_BLOCK,
46
+ blockRoot: this.blockRootHex,
47
+ }, "Cannot getBlockSource from BlockInput without a block");
48
+ }
49
+ return this.state.source;
50
+ }
51
+ hasAllData() {
52
+ return this.state.hasAllData;
53
+ }
54
+ hasBlockAndAllData() {
55
+ return this.state.hasBlock && this.state.hasAllData;
56
+ }
57
+ getLogMeta() {
58
+ return {
59
+ blockRoot: prettyBytes(this.blockRootHex),
60
+ slot: this.slot,
61
+ };
62
+ }
63
+ getTimeComplete() {
64
+ if (!this.state.hasBlock || !this.state.hasAllData) {
65
+ throw new BlockInputError({
66
+ code: BlockInputErrorCode.MISSING_TIME_COMPLETE,
67
+ blockRoot: this.blockRootHex,
68
+ }, "Cannot getTimeComplete from BlockInput without a block and data");
69
+ }
70
+ return this.state.timeCompleteSec;
71
+ }
72
+ waitForBlock(timeout, signal) {
73
+ if (!this.state.hasBlock) {
74
+ return withTimeout(() => this.blockPromise.promise, timeout, signal);
75
+ }
76
+ return Promise.resolve(this.state.block);
77
+ }
78
+ waitForAllData(timeout, signal) {
79
+ return withTimeout(() => this.dataPromise.promise, timeout, signal);
80
+ }
81
+ async waitForBlockAndAllData(timeout, signal) {
82
+ if (!this.state.hasBlock || !this.state.hasAllData) {
83
+ await withTimeout(() => Promise.all([this.blockPromise.promise, this.dataPromise.promise]), timeout, signal);
84
+ }
85
+ return this;
86
+ }
87
+ }
88
+ /**
89
+ * Pre-DA, BlockInput only has a single state.
90
+ * - the block simply exists
91
+ */
92
+ export class BlockInputPreData extends AbstractBlockInput {
93
+ constructor(init, state) {
94
+ super(init);
95
+ this.type = DAType.PreData;
96
+ this.state = state;
97
+ }
98
+ static createFromBlock(props) {
99
+ const init = {
100
+ daOutOfRange: props.daOutOfRange,
101
+ timeCreated: props.source.seenTimestampSec,
102
+ forkName: props.forkName,
103
+ slot: props.block.message.slot,
104
+ blockRootHex: props.blockRootHex,
105
+ parentRootHex: toHex(props.block.message.parentRoot),
106
+ };
107
+ const state = {
108
+ hasBlock: true,
109
+ hasAllData: true,
110
+ block: props.block,
111
+ source: props.source,
112
+ timeCompleteSec: props.source.seenTimestampSec,
113
+ };
114
+ return new BlockInputPreData(init, state);
115
+ }
116
+ addBlock(_) {
117
+ throw new BlockInputError({
118
+ code: BlockInputErrorCode.INVALID_CONSTRUCTION,
119
+ blockRoot: this.blockRootHex,
120
+ }, "Cannot addBlock to BlockInputPreData");
121
+ }
122
+ }
123
+ /**
124
+ * With blobs, BlockInput has several states:
125
+ * - The block is seen and all blobs are seen
126
+ * - The block is seen and all blobs are not yet seen
127
+ * - The block is yet not seen and its unknown if all blobs are seen
128
+ */
129
+ export class BlockInputBlobs extends AbstractBlockInput {
130
+ constructor(init, state) {
131
+ super(init);
132
+ this.type = DAType.Blobs;
133
+ this.blobsCache = new Map();
134
+ this.state = state;
135
+ }
136
+ static createFromBlock(props) {
137
+ const hasAllData = props.daOutOfRange || props.block.message.body.blobKzgCommitments.length === 0;
138
+ const state = {
139
+ hasBlock: true,
140
+ hasAllData,
141
+ versionedHashes: props.block.message.body.blobKzgCommitments.map(kzgCommitmentToVersionedHash),
142
+ block: props.block,
143
+ source: props.source,
144
+ timeCompleteSec: hasAllData ? props.source.seenTimestampSec : undefined,
145
+ };
146
+ const init = {
147
+ daOutOfRange: props.daOutOfRange,
148
+ timeCreated: props.source.seenTimestampSec,
149
+ forkName: props.forkName,
150
+ slot: props.block.message.slot,
151
+ blockRootHex: props.blockRootHex,
152
+ parentRootHex: toHex(props.block.message.parentRoot),
153
+ };
154
+ const blockInput = new BlockInputBlobs(init, state);
155
+ blockInput.blockPromise.resolve(props.block);
156
+ if (hasAllData) {
157
+ blockInput.dataPromise.resolve([]);
158
+ }
159
+ return blockInput;
160
+ }
161
+ static createFromBlob(props) {
162
+ const state = {
163
+ hasBlock: false,
164
+ hasAllData: false,
165
+ };
166
+ const init = {
167
+ daOutOfRange: props.daOutOfRange,
168
+ timeCreated: props.seenTimestampSec,
169
+ forkName: props.forkName,
170
+ blockRootHex: props.blockRootHex,
171
+ parentRootHex: toHex(props.blobSidecar.signedBlockHeader.message.parentRoot),
172
+ slot: props.blobSidecar.signedBlockHeader.message.slot,
173
+ };
174
+ const blockInput = new BlockInputBlobs(init, state);
175
+ blockInput.blobsCache.set(props.blobSidecar.index, {
176
+ blobSidecar: props.blobSidecar,
177
+ source: props.source,
178
+ seenTimestampSec: props.seenTimestampSec,
179
+ peerIdStr: props.peerIdStr,
180
+ });
181
+ return blockInput;
182
+ }
183
+ getLogMeta() {
184
+ return {
185
+ blockRoot: prettyBytes(this.blockRootHex),
186
+ slot: this.slot,
187
+ expectedBlobs: this.state.hasBlock ? this.state.block.message.body.blobKzgCommitments.length : "unknown",
188
+ receivedBlobs: this.blobsCache.size,
189
+ };
190
+ }
191
+ addBlock({ blockRootHex, block, source }) {
192
+ if (!this.state.hasBlock) {
193
+ throw new BlockInputError({
194
+ code: BlockInputErrorCode.INVALID_CONSTRUCTION,
195
+ blockRoot: this.blockRootHex,
196
+ }, "Cannot addBlock to BlockInputBlobs after it already has a block");
197
+ }
198
+ // this check suffices for checking slot, parentRoot, and forkName
199
+ if (blockRootHex !== this.blockRootHex) {
200
+ throw new BlockInputError({
201
+ code: BlockInputErrorCode.MISMATCHED_ROOT_HEX,
202
+ blockInputRoot: this.blockRootHex,
203
+ mismatchedRoot: blockRootHex,
204
+ source: source.source,
205
+ peerId: `${source.peerIdStr}`,
206
+ }, "addBlock blockRootHex does not match BlockInput.blockRootHex");
207
+ }
208
+ for (const { blobSidecar } of this.blobsCache.values()) {
209
+ if (!blockAndBlobArePaired(block, blobSidecar)) {
210
+ this.blobsCache.delete(blobSidecar.index);
211
+ // TODO: (@matthewkeil) spec says to ignore invalid blobs but should we downscore the peer maybe?
212
+ // this.logger?.error(`Removing blobIndex=${blobSidecar.index} from BlockInput`, {}, err);
213
+ }
214
+ }
215
+ const hasAllData = this.blobsCache.size === block.message.body.blobKzgCommitments.length;
216
+ this.state = {
217
+ ...this.state,
218
+ hasAllData,
219
+ block,
220
+ versionedHashes: block.message.body.blobKzgCommitments.map(kzgCommitmentToVersionedHash),
221
+ source,
222
+ timeCompleteSec: hasAllData ? source.seenTimestampSec : undefined,
223
+ };
224
+ this.blockPromise.resolve(block);
225
+ if (hasAllData) {
226
+ this.dataPromise.resolve(this.getBlobs());
227
+ }
228
+ }
229
+ hasBlob(blobIndex) {
230
+ return this.blobsCache.has(blobIndex);
231
+ }
232
+ addBlob({ blockRootHex, blobSidecar, source, peerIdStr, seenTimestampSec }) {
233
+ if (this.state.hasAllData) {
234
+ throw new BlockInputError({
235
+ code: BlockInputErrorCode.INVALID_CONSTRUCTION,
236
+ blockRoot: this.blockRootHex,
237
+ }, "Cannot addBlob to BlockInputBlobs after it already is complete");
238
+ }
239
+ if (this.blobsCache.has(blobSidecar.index)) {
240
+ throw new BlockInputError({
241
+ code: BlockInputErrorCode.INVALID_CONSTRUCTION,
242
+ blockRoot: this.blockRootHex,
243
+ }, "Cannot addBlob to BlockInputBlobs with duplicate blobIndex");
244
+ }
245
+ // this check suffices for checking slot, parentRoot, and forkName
246
+ if (blockRootHex !== this.blockRootHex) {
247
+ throw new BlockInputError({
248
+ code: BlockInputErrorCode.MISMATCHED_ROOT_HEX,
249
+ blockInputRoot: this.blockRootHex,
250
+ mismatchedRoot: blockRootHex,
251
+ source: source,
252
+ peerId: `${peerIdStr}`,
253
+ }, "Blob BeaconBlockHeader blockRootHex does not match BlockInput.blockRootHex");
254
+ }
255
+ if (this.state.hasBlock) {
256
+ assertBlockAndBlobArePaired(this.blockRootHex, this.state.block, blobSidecar);
257
+ }
258
+ this.blobsCache.set(blobSidecar.index, { blobSidecar, source, seenTimestampSec, peerIdStr });
259
+ if (this.state.hasBlock && this.blobsCache.size === this.state.block.message.body.blobKzgCommitments.length) {
260
+ this.state = {
261
+ ...this.state,
262
+ hasAllData: true,
263
+ timeCompleteSec: seenTimestampSec,
264
+ };
265
+ this.dataPromise.resolve([...this.blobsCache.values()].map(({ blobSidecar }) => blobSidecar));
266
+ }
267
+ }
268
+ getVersionedHashes() {
269
+ if (!this.state.hasBlock) {
270
+ throw new BlockInputError({
271
+ code: BlockInputErrorCode.INCOMPLETE_DATA,
272
+ ...this.getLogMeta(),
273
+ }, "Cannot get versioned hashes. Block is unknown");
274
+ }
275
+ return this.state.versionedHashes;
276
+ }
277
+ getMissingBlobMeta() {
278
+ if (!this.state.hasBlock) {
279
+ throw new BlockInputError({
280
+ code: BlockInputErrorCode.INCOMPLETE_DATA,
281
+ ...this.getLogMeta(),
282
+ }, "Cannot get missing blobs. Block is unknown");
283
+ }
284
+ if (this.state.hasAllData) {
285
+ return [];
286
+ }
287
+ const blobMeta = [];
288
+ const versionedHashes = this.state.versionedHashes;
289
+ for (let index = 0; index < versionedHashes.length; index++) {
290
+ if (!this.blobsCache.has(index)) {
291
+ blobMeta.push({
292
+ index,
293
+ blockRoot: fromHex(this.blockRootHex),
294
+ versionHash: versionedHashes[index],
295
+ });
296
+ }
297
+ }
298
+ return blobMeta;
299
+ }
300
+ getAllBlobsWithSource() {
301
+ if (!this.state.hasAllData) {
302
+ throw new BlockInputError({
303
+ code: BlockInputErrorCode.INCOMPLETE_DATA,
304
+ ...this.getLogMeta(),
305
+ }, "Cannot get all blobs. DA status is not complete");
306
+ }
307
+ return [...this.blobsCache.values()];
308
+ }
309
+ getBlobs() {
310
+ return this.getAllBlobsWithSource().map(({ blobSidecar }) => blobSidecar);
311
+ }
312
+ }
313
+ function blockAndBlobArePaired(block, blobSidecar) {
314
+ return byteArrayEquals(block.message.body.blobKzgCommitments[blobSidecar.index], blobSidecar.kzgCommitment);
315
+ }
316
+ function assertBlockAndBlobArePaired(blockRootHex, block, blobSidecar) {
317
+ if (!blockAndBlobArePaired(block, blobSidecar)) {
318
+ // TODO: (@matthewkeil) should this eject the bad blob instead? No way to tell if the blob or the block
319
+ // has the invalid commitment. Guessing it would be the blob though because we match via block
320
+ // hashTreeRoot and we do not take a hashTreeRoot of the BlobSidecar
321
+ throw new BlockInputError({
322
+ code: BlockInputErrorCode.MISMATCHED_KZG_COMMITMENT,
323
+ blockRoot: blockRootHex,
324
+ slot: block.message.slot,
325
+ sidecarIndex: blobSidecar.index,
326
+ }, "BlobSidecar commitment does not match block commitment");
327
+ }
328
+ }
329
+ /**
330
+ * With columns, BlockInput has several states:
331
+ * - The block is seen and all required sampled columns are seen
332
+ * - The block is seen and all required sampled columns are not yet seen
333
+ * - The block is not yet seen and all required sampled columns are seen
334
+ * - The block is not yet seen and all required sampled columns are not yet seen
335
+ */
336
+ export class BlockInputColumns extends AbstractBlockInput {
337
+ constructor(init, state, sampledColumns, custodyColumns) {
338
+ super(init);
339
+ this.type = DAType.Columns;
340
+ this.columnsCache = new Map();
341
+ this.state = state;
342
+ this.sampledColumns = sampledColumns;
343
+ this.custodyColumns = custodyColumns;
344
+ }
345
+ static createFromBlock(props) {
346
+ const hasAllData = props.daOutOfRange ||
347
+ props.block.message.body.blobKzgCommitments.length === 0 ||
348
+ props.sampledColumns.length === 0;
349
+ const state = {
350
+ hasBlock: true,
351
+ hasAllData,
352
+ versionedHashes: props.block.message.body.blobKzgCommitments.map(kzgCommitmentToVersionedHash),
353
+ block: props.block,
354
+ source: props.source,
355
+ timeCreated: props.source.seenTimestampSec,
356
+ timeCompleteSec: hasAllData ? props.source.seenTimestampSec : undefined,
357
+ };
358
+ const init = {
359
+ daOutOfRange: props.daOutOfRange,
360
+ timeCreated: props.source.seenTimestampSec,
361
+ forkName: props.forkName,
362
+ blockRootHex: props.blockRootHex,
363
+ parentRootHex: toHex(props.block.message.parentRoot),
364
+ slot: props.block.message.slot,
365
+ };
366
+ const blockInput = new BlockInputColumns(init, state, props.sampledColumns, props.custodyColumns);
367
+ blockInput.blockPromise.resolve(props.block);
368
+ if (hasAllData) {
369
+ blockInput.dataPromise.resolve([]);
370
+ }
371
+ return blockInput;
372
+ }
373
+ static createFromColumn(props) {
374
+ const hasAllData = props.sampledColumns.length === 0;
375
+ const state = {
376
+ hasBlock: false,
377
+ hasAllData,
378
+ versionedHashes: props.columnSidecar.kzgCommitments.map(kzgCommitmentToVersionedHash),
379
+ };
380
+ const init = {
381
+ daOutOfRange: false,
382
+ timeCreated: props.seenTimestampSec,
383
+ forkName: props.forkName,
384
+ blockRootHex: props.blockRootHex,
385
+ parentRootHex: toHex(props.columnSidecar.signedBlockHeader.message.parentRoot),
386
+ slot: props.columnSidecar.signedBlockHeader.message.slot,
387
+ };
388
+ const blockInput = new BlockInputColumns(init, state, props.sampledColumns, props.custodyColumns);
389
+ if (hasAllData) {
390
+ blockInput.dataPromise.resolve([]);
391
+ }
392
+ return blockInput;
393
+ }
394
+ getLogMeta() {
395
+ return {
396
+ blockRoot: prettyBytes(this.blockRootHex),
397
+ slot: this.slot,
398
+ expectedColumns: this.state.hasBlock && this.state.block.message.body.blobKzgCommitments.length === 0
399
+ ? 0
400
+ : this.sampledColumns.length,
401
+ receivedColumns: this.getSampledColumns().length,
402
+ };
403
+ }
404
+ addBlock(props) {
405
+ if (this.state.hasBlock) {
406
+ throw new BlockInputError({
407
+ code: BlockInputErrorCode.INVALID_CONSTRUCTION,
408
+ blockRoot: this.blockRootHex,
409
+ }, "Cannot addBlock to BlockInputColumns after it already has a block");
410
+ }
411
+ if (props.blockRootHex !== this.blockRootHex) {
412
+ throw new BlockInputError({
413
+ code: BlockInputErrorCode.MISMATCHED_ROOT_HEX,
414
+ blockInputRoot: this.blockRootHex,
415
+ mismatchedRoot: props.blockRootHex,
416
+ source: props.source.source,
417
+ peerId: `${props.source.peerIdStr}`,
418
+ }, "addBlock blockRootHex does not match BlockInput.blockRootHex");
419
+ }
420
+ for (const { columnSidecar } of this.columnsCache.values()) {
421
+ if (!blockAndColumnArePaired(props.block, columnSidecar)) {
422
+ this.columnsCache.delete(columnSidecar.index);
423
+ // this.logger?.error(`Removing columnIndex=${columnSidecar.index} from BlockInput`, {}, err);
424
+ }
425
+ }
426
+ const hasAllData = props.block.message.body.blobKzgCommitments.length === 0 || this.state.hasAllData;
427
+ this.state = {
428
+ ...this.state,
429
+ hasBlock: true,
430
+ hasAllData,
431
+ block: props.block,
432
+ source: props.source,
433
+ timeCompleteSec: hasAllData ? props.source.seenTimestampSec : undefined,
434
+ };
435
+ this.blockPromise.resolve(props.block);
436
+ }
437
+ addColumn({ blockRootHex, columnSidecar, source, seenTimestampSec, peerIdStr }) {
438
+ if (blockRootHex !== this.blockRootHex) {
439
+ throw new BlockInputError({
440
+ code: BlockInputErrorCode.MISMATCHED_ROOT_HEX,
441
+ blockInputRoot: this.blockRootHex,
442
+ mismatchedRoot: blockRootHex,
443
+ source: source,
444
+ peerId: `${peerIdStr}`,
445
+ }, "Column BeaconBlockHeader blockRootHex does not match BlockInput.blockRootHex");
446
+ }
447
+ if (this.state.hasBlock) {
448
+ assertBlockAndColumnArePaired(this.blockRootHex, this.state.block, columnSidecar);
449
+ }
450
+ this.columnsCache.set(columnSidecar.index, { columnSidecar, source, seenTimestampSec, peerIdStr });
451
+ const sampledColumns = this.getSampledColumns();
452
+ const hasAllData = this.state.hasAllData || sampledColumns.length === this.sampledColumns.length;
453
+ this.state = {
454
+ ...this.state,
455
+ hasAllData: hasAllData || this.state.hasAllData,
456
+ timeCompleteSec: hasAllData ? seenTimestampSec : undefined,
457
+ };
458
+ if (hasAllData && sampledColumns !== null) {
459
+ this.dataPromise.resolve(sampledColumns);
460
+ }
461
+ }
462
+ hasColumn(columnIndex) {
463
+ return this.columnsCache.has(columnIndex);
464
+ }
465
+ getVersionedHashes() {
466
+ return this.state.versionedHashes;
467
+ }
468
+ getCustodyColumns() {
469
+ const columns = [];
470
+ for (const index of this.custodyColumns) {
471
+ const column = this.columnsCache.get(index);
472
+ if (column) {
473
+ columns.push(column.columnSidecar);
474
+ }
475
+ }
476
+ return columns;
477
+ }
478
+ getSampledColumns() {
479
+ const columns = [];
480
+ for (const index of this.sampledColumns) {
481
+ const column = this.columnsCache.get(index);
482
+ if (column) {
483
+ columns.push(column.columnSidecar);
484
+ }
485
+ }
486
+ return columns;
487
+ }
488
+ getAllColumnsWithSource() {
489
+ return [...this.columnsCache.values()];
490
+ }
491
+ getAllColumns() {
492
+ return this.getAllColumnsWithSource().map(({ columnSidecar }) => columnSidecar);
493
+ }
494
+ getMissingSampledColumnMeta() {
495
+ if (this.state.hasAllData) {
496
+ return [];
497
+ }
498
+ const needed = [];
499
+ const blockRoot = fromHex(this.blockRootHex);
500
+ for (const index of this.sampledColumns) {
501
+ if (!this.columnsCache.has(index)) {
502
+ needed.push({ index, blockRoot });
503
+ }
504
+ }
505
+ return needed;
506
+ }
507
+ }
508
+ function blockAndColumnArePaired(block, columnSidecar) {
509
+ return (block.message.body.blobKzgCommitments.length === columnSidecar.kzgCommitments.length &&
510
+ block.message.body.blobKzgCommitments.every((commitment, index) => byteArrayEquals(commitment, columnSidecar.kzgCommitments[index])));
511
+ }
512
+ function assertBlockAndColumnArePaired(blockRootHex, block, columnSidecar) {
513
+ if (!blockAndColumnArePaired(block, columnSidecar)) {
514
+ throw new BlockInputError({
515
+ code: BlockInputErrorCode.MISMATCHED_KZG_COMMITMENT,
516
+ blockRoot: blockRootHex,
517
+ slot: block.message.slot,
518
+ sidecarIndex: columnSidecar.index,
519
+ }, "DataColumnsSidecar kzgCommitment does not match block kzgCommitment");
520
+ }
521
+ }
522
+ //# sourceMappingURL=blockInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockInput.js","sourceRoot":"","sources":["../../../../src/chain/blocks/blockInput/blockInput.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { Slot } from "@lodestar/types";
2
+ import { LodestarError } from "@lodestar/utils";
3
+ import { PeerIdStr } from "../../../util/peerId.js";
4
+ import { BlockInputSource, LogMetaBlobs, LogMetaColumns } from "./types.js";
5
+ export declare enum BlockInputErrorCode {
6
+ INVALID_CONSTRUCTION = "BLOCK_INPUT_ERROR_INVALID_CONSTRUCTION",
7
+ INCOMPLETE_DATA = "BLOCK_INPUT_ERROR_INCOMPLETE_DATA",
8
+ MISSING_BLOCK = "BLOCK_INPUT_ERROR_MISSING_BLOCK",
9
+ MISSING_TIME_COMPLETE = "BLOCK_INPUT_ERROR_MISSING_TIME_COMPLETE",
10
+ MISMATCHED_ROOT_HEX = "BLOCK_INPUT_ERROR_MISMATCHED_ROOT_HEX",
11
+ MISMATCHED_KZG_COMMITMENT = "BLOCK_INPUT_ERROR_MISMATCHED_KZG_COMMITMENT"
12
+ }
13
+ export type BlockInputErrorType = {
14
+ code: BlockInputErrorCode.MISSING_BLOCK | BlockInputErrorCode.MISSING_TIME_COMPLETE;
15
+ blockRoot: string;
16
+ } | {
17
+ code: BlockInputErrorCode.INVALID_CONSTRUCTION;
18
+ blockRoot: string;
19
+ } | {
20
+ code: BlockInputErrorCode.MISMATCHED_ROOT_HEX;
21
+ blockInputRoot: string;
22
+ mismatchedRoot: string;
23
+ source: BlockInputSource;
24
+ peerId: PeerIdStr;
25
+ } | {
26
+ code: BlockInputErrorCode.MISMATCHED_KZG_COMMITMENT;
27
+ blockRoot: string;
28
+ slot: undefined | Slot;
29
+ sidecarIndex: number;
30
+ commitmentIndex?: number;
31
+ } | (LogMetaBlobs & {
32
+ code: BlockInputErrorCode.INCOMPLETE_DATA;
33
+ }) | (LogMetaColumns & {
34
+ code: BlockInputErrorCode.INCOMPLETE_DATA;
35
+ });
36
+ export declare class BlockInputError extends LodestarError<BlockInputErrorType> {
37
+ }
38
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1,17 @@
1
+ import { LodestarError } from "@lodestar/utils";
2
+ export var BlockInputErrorCode;
3
+ (function (BlockInputErrorCode) {
4
+ // Bad Arguments
5
+ BlockInputErrorCode["INVALID_CONSTRUCTION"] = "BLOCK_INPUT_ERROR_INVALID_CONSTRUCTION";
6
+ // Attempt to get all data but some is missing
7
+ BlockInputErrorCode["INCOMPLETE_DATA"] = "BLOCK_INPUT_ERROR_INCOMPLETE_DATA";
8
+ // Missing class property values for getters
9
+ BlockInputErrorCode["MISSING_BLOCK"] = "BLOCK_INPUT_ERROR_MISSING_BLOCK";
10
+ BlockInputErrorCode["MISSING_TIME_COMPLETE"] = "BLOCK_INPUT_ERROR_MISSING_TIME_COMPLETE";
11
+ // Mismatched values
12
+ BlockInputErrorCode["MISMATCHED_ROOT_HEX"] = "BLOCK_INPUT_ERROR_MISMATCHED_ROOT_HEX";
13
+ BlockInputErrorCode["MISMATCHED_KZG_COMMITMENT"] = "BLOCK_INPUT_ERROR_MISMATCHED_KZG_COMMITMENT";
14
+ })(BlockInputErrorCode || (BlockInputErrorCode = {}));
15
+ export class BlockInputError extends LodestarError {
16
+ }
17
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/chain/blocks/blockInput/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAI9C,MAAM,CAAN,IAAY,mBAcX;AAdD,WAAY,mBAAmB;IAC7B,gBAAgB;IAChB,sFAA+D,CAAA;IAE/D,8CAA8C;IAC9C,4EAAqD,CAAA;IAErD,4CAA4C;IAC5C,wEAAiD,CAAA;IACjD,wFAAiE,CAAA;IAEjE,oBAAoB;IACpB,oFAA6D,CAAA;IAC7D,gGAAyE,CAAA;AAC3E,CAAC,EAdW,mBAAmB,KAAnB,mBAAmB,QAc9B;AA4BD,MAAM,OAAO,eAAgB,SAAQ,aAAkC;CAAG"}
@@ -0,0 +1,4 @@
1
+ export * from "./blockInput.js";
2
+ export * from "./errors.js";
3
+ export * from "./types.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,4 @@
1
+ export * from "./blockInput.js";
2
+ export * from "./errors.js";
3
+ export * from "./types.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/chain/blocks/blockInput/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}