@lodestar/beacon-node 1.36.0-dev.797fa46c1b → 1.36.0-dev.801b1f4f52

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 (104) hide show
  1. package/lib/chain/errors/blobSidecarError.d.ts +5 -0
  2. package/lib/chain/errors/blobSidecarError.d.ts.map +1 -1
  3. package/lib/chain/errors/blobSidecarError.js.map +1 -1
  4. package/lib/chain/errors/blockError.d.ts +1 -0
  5. package/lib/chain/errors/blockError.d.ts.map +1 -1
  6. package/lib/chain/errors/dataColumnSidecarError.d.ts +21 -14
  7. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -1
  8. package/lib/chain/errors/dataColumnSidecarError.js +4 -0
  9. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  10. package/lib/chain/options.d.ts.map +1 -1
  11. package/lib/chain/options.js +2 -1
  12. package/lib/chain/options.js.map +1 -1
  13. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +16 -1
  14. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  15. package/lib/chain/stateCache/persistentCheckpointsCache.js +31 -1
  16. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  17. package/lib/chain/validation/blobSidecar.d.ts +4 -1
  18. package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
  19. package/lib/chain/validation/blobSidecar.js +46 -11
  20. package/lib/chain/validation/blobSidecar.js.map +1 -1
  21. package/lib/chain/validation/block.d.ts.map +1 -1
  22. package/lib/chain/validation/block.js +1 -0
  23. package/lib/chain/validation/block.js.map +1 -1
  24. package/lib/chain/validation/dataColumnSidecar.d.ts +4 -1
  25. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  26. package/lib/chain/validation/dataColumnSidecar.js +64 -19
  27. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  28. package/lib/network/core/networkCoreWorker.js +6 -1
  29. package/lib/network/core/networkCoreWorker.js.map +1 -1
  30. package/lib/network/core/networkCoreWorkerHandler.js +1 -1
  31. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  32. package/lib/network/events.d.ts +1 -0
  33. package/lib/network/events.d.ts.map +1 -1
  34. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  35. package/lib/network/gossip/gossipsub.js +6 -1
  36. package/lib/network/gossip/gossipsub.js.map +1 -1
  37. package/lib/network/gossip/interface.d.ts +2 -0
  38. package/lib/network/gossip/interface.d.ts.map +1 -1
  39. package/lib/network/peers/discover.js +2 -2
  40. package/lib/network/peers/discover.js.map +1 -1
  41. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  42. package/lib/network/processor/gossipHandlers.js +15 -1
  43. package/lib/network/processor/gossipHandlers.js.map +1 -1
  44. package/lib/network/processor/gossipValidatorFn.d.ts.map +1 -1
  45. package/lib/network/processor/gossipValidatorFn.js +8 -6
  46. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  47. package/lib/network/processor/types.d.ts +2 -0
  48. package/lib/network/processor/types.d.ts.map +1 -1
  49. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  50. package/lib/network/reqresp/ReqRespBeaconNode.js +3 -1
  51. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  52. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +2 -1
  53. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  54. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +11 -2
  55. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  56. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +2 -1
  57. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  58. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +9 -1
  59. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  60. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +2 -1
  61. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -1
  62. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +9 -1
  63. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  64. package/lib/network/reqresp/handlers/index.js +6 -6
  65. package/lib/network/reqresp/handlers/index.js.map +1 -1
  66. package/lib/network/reqresp/types.d.ts +1 -0
  67. package/lib/network/reqresp/types.d.ts.map +1 -1
  68. package/lib/sync/unknownBlock.js +1 -1
  69. package/lib/sync/unknownBlock.js.map +1 -1
  70. package/lib/sync/utils/downloadByRange.d.ts +59 -15
  71. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  72. package/lib/sync/utils/downloadByRange.js +204 -83
  73. package/lib/sync/utils/downloadByRange.js.map +1 -1
  74. package/lib/sync/utils/downloadByRoot.d.ts +8 -14
  75. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  76. package/lib/sync/utils/downloadByRoot.js +18 -33
  77. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  78. package/package.json +15 -15
  79. package/src/chain/errors/blobSidecarError.ts +12 -2
  80. package/src/chain/errors/blockError.ts +1 -1
  81. package/src/chain/errors/dataColumnSidecarError.ts +31 -16
  82. package/src/chain/options.ts +2 -0
  83. package/src/chain/stateCache/persistentCheckpointsCache.ts +45 -2
  84. package/src/chain/validation/blobSidecar.ts +54 -10
  85. package/src/chain/validation/block.ts +1 -0
  86. package/src/chain/validation/dataColumnSidecar.ts +76 -19
  87. package/src/network/core/networkCoreWorker.ts +7 -2
  88. package/src/network/core/networkCoreWorkerHandler.ts +1 -1
  89. package/src/network/events.ts +1 -1
  90. package/src/network/gossip/gossipsub.ts +7 -1
  91. package/src/network/gossip/interface.ts +2 -0
  92. package/src/network/peers/discover.ts +2 -2
  93. package/src/network/processor/gossipHandlers.ts +16 -1
  94. package/src/network/processor/gossipValidatorFn.ts +33 -6
  95. package/src/network/processor/types.ts +2 -0
  96. package/src/network/reqresp/ReqRespBeaconNode.ts +3 -1
  97. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +15 -2
  98. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +13 -1
  99. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +13 -1
  100. package/src/network/reqresp/handlers/index.ts +6 -6
  101. package/src/network/reqresp/types.ts +1 -0
  102. package/src/sync/unknownBlock.ts +1 -1
  103. package/src/sync/utils/downloadByRange.ts +273 -108
  104. package/src/sync/utils/downloadByRoot.ts +22 -56
@@ -1,6 +1,6 @@
1
1
  import { routes } from "@lodestar/api";
2
2
  import { isForkPostDeneb, isForkPostFulu, } from "@lodestar/params";
3
- import { LodestarError, fromHex, prettyBytes, prettyPrintIndices, toHex, toRootHex } from "@lodestar/utils";
3
+ import { LodestarError, fromHex, prettyPrintIndices, toHex, toRootHex } from "@lodestar/utils";
4
4
  import { isBlockInputBlobs, isBlockInputColumns } from "../../chain/blocks/blockInput/blockInput.js";
5
5
  import { BlockInputSource } from "../../chain/blocks/blockInput/types.js";
6
6
  import { validateBlockBlobSidecars } from "../../chain/validation/blobSidecar.js";
@@ -8,12 +8,13 @@ import { validateBlockDataColumnSidecars } from "../../chain/validation/dataColu
8
8
  import { prettyPrintPeerIdStr } from "../../network/util.js";
9
9
  import { byteArrayEquals } from "../../util/bytes.js";
10
10
  import { PendingBlockInputStatus, getBlockInputSyncCacheItemRootHex, isPendingBlockInput, } from "../types.js";
11
- export async function downloadByRoot({ config, seenCache, network, emitter, peerMeta, cacheItem, }) {
11
+ export async function downloadByRoot({ config, chain, network, emitter, peerMeta, cacheItem, }) {
12
12
  const rootHex = getBlockInputSyncCacheItemRootHex(cacheItem);
13
13
  const blockRoot = fromHex(rootHex);
14
14
  const { peerId: peerIdStr } = peerMeta;
15
15
  const { result: { block, blobSidecars, columnSidecars }, warnings, } = await fetchByRoot({
16
16
  config,
17
+ chain,
17
18
  network,
18
19
  cacheItem,
19
20
  blockRoot,
@@ -33,7 +34,7 @@ export async function downloadByRoot({ config, seenCache, network, emitter, peer
33
34
  }
34
35
  }
35
36
  else {
36
- blockInput = seenCache.getByBlock({
37
+ blockInput = chain.seenBlockInputCache.getByBlock({
37
38
  block,
38
39
  peerIdStr,
39
40
  blockRootHex: rootHex,
@@ -47,7 +48,7 @@ export async function downloadByRoot({ config, seenCache, network, emitter, peer
47
48
  if (!blobSidecars) {
48
49
  throw new DownloadByRootError({
49
50
  code: DownloadByRootErrorCode.MISSING_BLOB_RESPONSE,
50
- blockRoot: prettyBytes(rootHex),
51
+ blockRoot: rootHex,
51
52
  peer: peerIdStr,
52
53
  });
53
54
  }
@@ -81,7 +82,7 @@ export async function downloadByRoot({ config, seenCache, network, emitter, peer
81
82
  if (!columnSidecars) {
82
83
  throw new DownloadByRootError({
83
84
  code: DownloadByRootErrorCode.MISSING_COLUMN_RESPONSE,
84
- blockRoot: prettyBytes(rootHex),
85
+ blockRoot: rootHex,
85
86
  peer: peerIdStr,
86
87
  });
87
88
  }
@@ -128,7 +129,7 @@ export async function downloadByRoot({ config, seenCache, network, emitter, peer
128
129
  warnings,
129
130
  };
130
131
  }
131
- export async function fetchByRoot({ config, network, peerMeta, blockRoot, cacheItem, }) {
132
+ export async function fetchByRoot({ config, chain, network, peerMeta, blockRoot, cacheItem, }) {
132
133
  let block;
133
134
  let blobSidecars;
134
135
  let columnSidecarResult;
@@ -150,6 +151,7 @@ export async function fetchByRoot({ config, network, peerMeta, blockRoot, cacheI
150
151
  if (isBlockInputBlobs(cacheItem.blockInput)) {
151
152
  blobSidecars = await fetchAndValidateBlobs({
152
153
  config,
154
+ chain,
153
155
  network,
154
156
  peerIdStr,
155
157
  forkName: forkName,
@@ -161,6 +163,7 @@ export async function fetchByRoot({ config, network, peerMeta, blockRoot, cacheI
161
163
  if (isBlockInputColumns(cacheItem.blockInput)) {
162
164
  columnSidecarResult = await fetchAndValidateColumns({
163
165
  config,
166
+ chain,
164
167
  network,
165
168
  peerMeta,
166
169
  forkName: forkName,
@@ -182,6 +185,7 @@ export async function fetchByRoot({ config, network, peerMeta, blockRoot, cacheI
182
185
  if (isForkPostFulu(forkName)) {
183
186
  columnSidecarResult = await fetchAndValidateColumns({
184
187
  config,
188
+ chain,
185
189
  network,
186
190
  peerMeta,
187
191
  forkName,
@@ -195,6 +199,7 @@ export async function fetchByRoot({ config, network, peerMeta, blockRoot, cacheI
195
199
  const blobCount = commitments.length;
196
200
  blobSidecars = await fetchAndValidateBlobs({
197
201
  config,
202
+ chain,
198
203
  network,
199
204
  peerIdStr,
200
205
  forkName: forkName,
@@ -220,7 +225,7 @@ export async function fetchAndValidateBlock({ config, network, peerIdStr, blockR
220
225
  throw new DownloadByRootError({
221
226
  code: DownloadByRootErrorCode.MISSING_BLOCK_RESPONSE,
222
227
  peer: prettyPrintPeerIdStr(peerIdStr),
223
- blockRoot: prettyBytes(blockRoot),
228
+ blockRoot: toRootHex(blockRoot),
224
229
  });
225
230
  }
226
231
  const receivedRoot = config.getForkTypes(block.message.slot).BeaconBlock.hashTreeRoot(block.message);
@@ -228,20 +233,20 @@ export async function fetchAndValidateBlock({ config, network, peerIdStr, blockR
228
233
  throw new DownloadByRootError({
229
234
  code: DownloadByRootErrorCode.MISMATCH_BLOCK_ROOT,
230
235
  peer: prettyPrintPeerIdStr(peerIdStr),
231
- requestedBlockRoot: prettyBytes(blockRoot),
232
- receivedBlockRoot: prettyBytes(toRootHex(receivedRoot)),
236
+ requestedBlockRoot: toRootHex(blockRoot),
237
+ receivedBlockRoot: toRootHex(receivedRoot),
233
238
  }, "block does not match requested root");
234
239
  }
235
240
  return block;
236
241
  }
237
- export async function fetchAndValidateBlobs({ network, peerIdStr, blockRoot, block, missing, }) {
242
+ export async function fetchAndValidateBlobs({ chain, network, peerIdStr, blockRoot, block, missing, }) {
238
243
  const blobSidecars = await fetchBlobsByRoot({
239
244
  network,
240
245
  peerIdStr,
241
246
  blockRoot,
242
247
  missing,
243
248
  });
244
- await validateBlockBlobSidecars(block.message.slot, blockRoot, missing.length, blobSidecars);
249
+ await validateBlockBlobSidecars(chain, block.message.slot, blockRoot, missing.length, blobSidecars);
245
250
  return blobSidecars;
246
251
  }
247
252
  export async function fetchBlobsByRoot({ network, peerIdStr, blockRoot, missing, indicesInPossession = [], }) {
@@ -253,7 +258,7 @@ export async function fetchBlobsByRoot({ network, peerIdStr, blockRoot, missing,
253
258
  }
254
259
  return await network.sendBlobSidecarsByRoot(peerIdStr, blobsRequest);
255
260
  }
256
- export async function fetchAndValidateColumns({ network, peerMeta, block, blockRoot, missing, }) {
261
+ export async function fetchAndValidateColumns({ chain, network, peerMeta, block, blockRoot, missing, }) {
257
262
  const { peerId: peerIdStr } = peerMeta;
258
263
  const slot = block.message.slot;
259
264
  // TODO GLOAS: Get blob count from somewhere else since blobKzgCommitments is absent from block body
@@ -302,33 +307,13 @@ export async function fetchAndValidateColumns({ network, peerMeta, block, blockR
302
307
  invalidIndices: prettyPrintIndices(extraIndices),
303
308
  }, "Received columnSidecars that were not requested"));
304
309
  }
305
- await validateBlockDataColumnSidecars(slot, blockRoot, blobCount, columnSidecars);
310
+ await validateBlockDataColumnSidecars(chain, slot, blockRoot, blobCount, columnSidecars);
306
311
  return { result: columnSidecars, warnings: warnings.length > 0 ? warnings : null };
307
312
  }
308
313
  // TODO(fulu) not in use, remove?
309
314
  export async function fetchColumnsByRoot({ network, peerMeta, blockRoot, missing, }) {
310
315
  return await network.sendDataColumnSidecarsByRoot(peerMeta.peerId, [{ blockRoot, columns: missing }]);
311
316
  }
312
- // TODO(fulu) not in use, remove?
313
- export async function validateColumnSidecars({ peerMeta, slot, blockRoot, blobCount, missing, needed = [], needToPublish = [], }) {
314
- const requestedIndices = missing;
315
- const extraIndices = [];
316
- for (const columnSidecar of needed) {
317
- if (!requestedIndices.includes(columnSidecar.index)) {
318
- extraIndices.push(columnSidecar.index);
319
- }
320
- }
321
- if (extraIndices.length > 0) {
322
- throw new DownloadByRootError({
323
- code: DownloadByRootErrorCode.EXTRA_SIDECAR_RECEIVED,
324
- peer: prettyPrintPeerIdStr(peerMeta.peerId),
325
- slot,
326
- blockRoot: prettyBytes(blockRoot),
327
- invalidIndices: prettyPrintIndices(extraIndices),
328
- }, "Received a columnSidecar that was not requested");
329
- }
330
- await validateBlockDataColumnSidecars(slot, blockRoot, blobCount, [...needed, ...needToPublish]);
331
- }
332
317
  export var DownloadByRootErrorCode;
333
318
  (function (DownloadByRootErrorCode) {
334
319
  DownloadByRootErrorCode["MISMATCH_BLOCK_ROOT"] = "DOWNLOAD_BY_ROOT_ERROR_MISMATCH_BLOCK_ROOT";
@@ -1 +1 @@
1
- {"version":3,"file":"downloadByRoot.js","sourceRoot":"","sources":["../../../src/sync/utils/downloadByRoot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"downloadByRoot.js","sourceRoot":"","sources":["../../../src/sync/utils/downloadByRoot.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.36.0-dev.797fa46c1b",
14
+ "version": "1.36.0-dev.801b1f4f52",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -129,7 +129,7 @@
129
129
  "@chainsafe/pubkey-index-map": "^3.0.0",
130
130
  "@chainsafe/ssz": "^1.2.2",
131
131
  "@chainsafe/threads": "^1.11.3",
132
- "@crate-crypto/node-eth-kzg": "0.8.0",
132
+ "@crate-crypto/node-eth-kzg": "0.9.1",
133
133
  "@ethersproject/abi": "^5.7.0",
134
134
  "@fastify/bearer-auth": "^10.0.1",
135
135
  "@fastify/cors": "^10.0.1",
@@ -144,19 +144,19 @@
144
144
  "@libp2p/peer-id": "^5.1.0",
145
145
  "@libp2p/prometheus-metrics": "^4.3.15",
146
146
  "@libp2p/tcp": "^10.1.8",
147
- "@lodestar/api": "1.36.0-dev.797fa46c1b",
147
+ "@lodestar/api": "1.36.0-dev.801b1f4f52",
148
148
  "@lodestar/bun": "git+https://github.com/ChainSafe/lodestar-bun.git",
149
- "@lodestar/config": "1.36.0-dev.797fa46c1b",
150
- "@lodestar/db": "1.36.0-dev.797fa46c1b",
151
- "@lodestar/fork-choice": "1.36.0-dev.797fa46c1b",
152
- "@lodestar/light-client": "1.36.0-dev.797fa46c1b",
153
- "@lodestar/logger": "1.36.0-dev.797fa46c1b",
154
- "@lodestar/params": "1.36.0-dev.797fa46c1b",
155
- "@lodestar/reqresp": "1.36.0-dev.797fa46c1b",
156
- "@lodestar/state-transition": "1.36.0-dev.797fa46c1b",
157
- "@lodestar/types": "1.36.0-dev.797fa46c1b",
158
- "@lodestar/utils": "1.36.0-dev.797fa46c1b",
159
- "@lodestar/validator": "1.36.0-dev.797fa46c1b",
149
+ "@lodestar/config": "1.36.0-dev.801b1f4f52",
150
+ "@lodestar/db": "1.36.0-dev.801b1f4f52",
151
+ "@lodestar/fork-choice": "1.36.0-dev.801b1f4f52",
152
+ "@lodestar/light-client": "1.36.0-dev.801b1f4f52",
153
+ "@lodestar/logger": "1.36.0-dev.801b1f4f52",
154
+ "@lodestar/params": "1.36.0-dev.801b1f4f52",
155
+ "@lodestar/reqresp": "1.36.0-dev.801b1f4f52",
156
+ "@lodestar/state-transition": "1.36.0-dev.801b1f4f52",
157
+ "@lodestar/types": "1.36.0-dev.801b1f4f52",
158
+ "@lodestar/utils": "1.36.0-dev.801b1f4f52",
159
+ "@lodestar/validator": "1.36.0-dev.801b1f4f52",
160
160
  "@multiformats/multiaddr": "^12.1.3",
161
161
  "datastore-core": "^10.0.2",
162
162
  "datastore-fs": "^10.0.6",
@@ -192,5 +192,5 @@
192
192
  "beacon",
193
193
  "blockchain"
194
194
  ],
195
- "gitHead": "fa8a9e32618a2e426f7dad0d1314ea0d87ac0cc7"
195
+ "gitHead": "fcebba1a22e7cf95f34d100cad2a8a224571ab97"
196
196
  }
@@ -50,9 +50,19 @@ export type BlobSidecarErrorType =
50
50
  | {code: BlobSidecarErrorCode.FUTURE_SLOT; blockSlot: Slot; currentSlot: Slot}
51
51
  | {code: BlobSidecarErrorCode.WOULD_REVERT_FINALIZED_SLOT; blockSlot: Slot; finalizedSlot: Slot}
52
52
  | {code: BlobSidecarErrorCode.ALREADY_KNOWN; root: RootHex}
53
- | {code: BlobSidecarErrorCode.PARENT_UNKNOWN; parentRoot: RootHex}
53
+ | {
54
+ code: BlobSidecarErrorCode.PARENT_UNKNOWN;
55
+ parentRoot: RootHex;
56
+ slot: Slot;
57
+ blockRoot: RootHex;
58
+ }
54
59
  | {code: BlobSidecarErrorCode.NOT_LATER_THAN_PARENT; parentSlot: Slot; slot: Slot}
55
- | {code: BlobSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID}
60
+ | {
61
+ code: BlobSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID;
62
+ blockRoot: RootHex;
63
+ slot: Slot;
64
+ index: number;
65
+ }
56
66
  | {code: BlobSidecarErrorCode.INCLUSION_PROOF_INVALID; slot: Slot; blobIdx: number}
57
67
  | {code: BlobSidecarErrorCode.INCORRECT_PROPOSER; proposerIndex: ValidatorIndex};
58
68
 
@@ -87,7 +87,7 @@ export type BlockErrorType =
87
87
  | {code: BlockErrorCode.REPEAT_PROPOSAL; proposerIndex: ValidatorIndex}
88
88
  | {code: BlockErrorCode.BLOCK_SLOT_LIMIT_REACHED}
89
89
  | {code: BlockErrorCode.INCORRECT_PROPOSER; proposerIndex: ValidatorIndex}
90
- | {code: BlockErrorCode.PROPOSAL_SIGNATURE_INVALID}
90
+ | {code: BlockErrorCode.PROPOSAL_SIGNATURE_INVALID; blockSlot: Slot}
91
91
  | {code: BlockErrorCode.UNKNOWN_PROPOSER; proposerIndex: ValidatorIndex}
92
92
  | {code: BlockErrorCode.INVALID_SIGNATURE; state: CachedBeaconStateAllForks}
93
93
  | {
@@ -12,10 +12,14 @@ export enum DataColumnSidecarErrorCode {
12
12
 
13
13
  // Validation errors when validating against an existing block
14
14
 
15
+ /** Block and sidecars header root mismatch */
16
+ INCORRECT_HEADER_ROOT = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_HEADER_ROOT",
15
17
  /** Block and sidecars data column count mismatch */
16
18
  INCORRECT_SIDECAR_COUNT = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_SIDECAR_COUNT",
17
19
  /** Sidecar doesn't match block */
18
20
  INCORRECT_BLOCK = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_BLOCK",
21
+ /** Sidecar cell count not as expected */
22
+ INCORRECT_CELL_COUNT = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_CELL_COUNT",
19
23
  /** Sidecar kzg proof count not as expected */
20
24
  INCORRECT_KZG_COMMITMENTS_COUNT = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_KZG_COMMITMENTS_COUNT",
21
25
  /** Sidecar kzg proof count not as expected */
@@ -35,49 +39,60 @@ export enum DataColumnSidecarErrorCode {
35
39
  }
36
40
 
37
41
  export type DataColumnSidecarErrorType =
38
- | {code: DataColumnSidecarErrorCode.INVALID_INDEX; slot: Slot; columnIdx: number}
39
- | {code: DataColumnSidecarErrorCode.NO_COMMITMENTS; slot: Slot; columnIdx: number}
42
+ | {code: DataColumnSidecarErrorCode.INVALID_INDEX; slot: Slot; columnIndex: number}
43
+ | {code: DataColumnSidecarErrorCode.NO_COMMITMENTS; slot: Slot; columnIndex: number}
40
44
  | {
41
45
  code: DataColumnSidecarErrorCode.MISMATCHED_LENGTHS;
42
46
  columnLength: number;
43
47
  commitmentsLength: number;
44
48
  proofsLength: number;
45
49
  }
46
- | {code: DataColumnSidecarErrorCode.INVALID_SUBNET; columnIdx: number; gossipSubnet: SubnetID}
50
+ | {code: DataColumnSidecarErrorCode.INVALID_SUBNET; columnIndex: number; gossipSubnet: SubnetID}
47
51
  | {
48
52
  code: DataColumnSidecarErrorCode.TOO_MANY_KZG_COMMITMENTS;
49
53
  slot: number;
50
- columnIdx: number;
54
+ columnIndex: number;
51
55
  count: number;
52
56
  limit: number;
53
57
  }
54
- | {code: DataColumnSidecarErrorCode.ALREADY_KNOWN; columnIdx: number; slot: Slot}
58
+ | {code: DataColumnSidecarErrorCode.ALREADY_KNOWN; columnIndex: number; slot: Slot}
55
59
  | {code: DataColumnSidecarErrorCode.FUTURE_SLOT; blockSlot: Slot; currentSlot: Slot}
56
60
  | {code: DataColumnSidecarErrorCode.WOULD_REVERT_FINALIZED_SLOT; blockSlot: Slot; finalizedSlot: Slot}
57
- | {code: DataColumnSidecarErrorCode.PARENT_UNKNOWN; parentRoot: RootHex}
58
- | {code: DataColumnSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID}
61
+ | {
62
+ code: DataColumnSidecarErrorCode.PARENT_UNKNOWN;
63
+ parentRoot: RootHex;
64
+ slot: Slot;
65
+ }
66
+ | {
67
+ code: DataColumnSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID;
68
+ slot: Slot;
69
+ blockRoot: RootHex;
70
+ index: number;
71
+ }
59
72
  | {code: DataColumnSidecarErrorCode.NOT_LATER_THAN_PARENT; parentSlot: Slot; slot: Slot}
60
- | {code: DataColumnSidecarErrorCode.INCLUSION_PROOF_INVALID; slot: Slot; columnIdx: number}
61
- | {code: DataColumnSidecarErrorCode.INVALID_KZG_PROOF; slot: Slot; columnIdx: number}
73
+ | {code: DataColumnSidecarErrorCode.INCLUSION_PROOF_INVALID; slot: Slot; columnIndex: number}
74
+ | {code: DataColumnSidecarErrorCode.INVALID_KZG_PROOF; slot: Slot; columnIndex: number}
62
75
  | {code: DataColumnSidecarErrorCode.INCORRECT_SIDECAR_COUNT; slot: number; expected: number; actual: number}
63
76
  | {
64
77
  code: DataColumnSidecarErrorCode.INCORRECT_BLOCK;
65
78
  slot: number;
66
- columnIdx: number;
79
+ columnIndex: number;
67
80
  expected: string;
68
81
  actual: string;
69
82
  }
70
83
  | {
71
- code: DataColumnSidecarErrorCode.INCORRECT_KZG_COMMITMENTS_COUNT;
84
+ code: DataColumnSidecarErrorCode.INCORRECT_HEADER_ROOT;
72
85
  slot: number;
73
- columnIdx: number;
74
- expected: number;
75
- actual: number;
86
+ expected: string;
87
+ actual: string;
76
88
  }
77
89
  | {
78
- code: DataColumnSidecarErrorCode.INCORRECT_KZG_PROOF_COUNT;
90
+ code:
91
+ | DataColumnSidecarErrorCode.INCORRECT_CELL_COUNT
92
+ | DataColumnSidecarErrorCode.INCORRECT_KZG_COMMITMENTS_COUNT
93
+ | DataColumnSidecarErrorCode.INCORRECT_KZG_PROOF_COUNT;
79
94
  slot: number;
80
- columnIdx: number;
95
+ columnIndex: number;
81
96
  expected: number;
82
97
  actual: number;
83
98
  }
@@ -8,6 +8,7 @@ import {ShufflingCacheOpts} from "./shufflingCache.js";
8
8
  import {DEFAULT_MAX_BLOCK_STATES, FIFOBlockStateCacheOpts} from "./stateCache/fifoBlockStateCache.js";
9
9
  import {
10
10
  DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY,
11
+ DEFAULT_MAX_CP_STATE_ON_DISK,
11
12
  PersistentCheckpointStateCacheOpts,
12
13
  } from "./stateCache/persistentCheckpointsCache.js";
13
14
  import {ValidatorMonitorOpts} from "./validatorMonitor.js";
@@ -132,4 +133,5 @@ export const defaultChainOptions: IChainOptions = {
132
133
  nHistoricalStatesFileDataStore: true,
133
134
  maxBlockStates: DEFAULT_MAX_BLOCK_STATES,
134
135
  maxCPStateEpochsInMemory: DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY,
136
+ maxCPStateEpochsOnDisk: DEFAULT_MAX_CP_STATE_ON_DISK,
135
137
  };
@@ -17,8 +17,10 @@ import {MapTracker} from "./mapMetrics.js";
17
17
  import {BlockStateCache, CacheItemType, CheckpointHex, CheckpointStateCache} from "./types.js";
18
18
 
19
19
  export type PersistentCheckpointStateCacheOpts = {
20
- /** Keep max n states in memory, persist the rest to disk */
20
+ /** Keep max n state epochs in memory, persist the rest to disk */
21
21
  maxCPStateEpochsInMemory?: number;
22
+ /** Keep max n state epochs on disk */
23
+ maxCPStateEpochsOnDisk?: number;
22
24
  };
23
25
 
24
26
  type PersistentCheckpointStateCacheModules = {
@@ -58,6 +60,14 @@ type LoadedStateBytesData = {persistedKey: DatastoreKey; stateBytes: Uint8Array}
58
60
  */
59
61
  export const DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY = 3;
60
62
 
63
+ /**
64
+ * By default we don't prune any persistent checkpoint states as it's not safe to delete them during
65
+ * long non-finality as we don't know the state of the chain and there could be a deep (hundreds of epochs) reorg
66
+ * if there two competing chains with similar weight but we wouldn't have a close enough state to pivot to this chain
67
+ * and instead require a resync from last finalized checkpoint state which could be very far in the past.
68
+ */
69
+ export const DEFAULT_MAX_CP_STATE_ON_DISK = Infinity;
70
+
61
71
  // TODO GLOAS: re-evaluate this timing
62
72
  const PROCESS_CHECKPOINT_STATES_BPS = 6667;
63
73
 
@@ -104,6 +114,7 @@ export class PersistentCheckpointStateCache implements CheckpointStateCache {
104
114
  private preComputedCheckpoint: string | null = null;
105
115
  private preComputedCheckpointHits: number | null = null;
106
116
  private readonly maxEpochsInMemory: number;
117
+ private readonly maxEpochsOnDisk: number;
107
118
  private readonly datastore: CPStateDatastore;
108
119
  private readonly blockStateCache: BlockStateCache;
109
120
  private readonly bufferPool?: BufferPool | null;
@@ -139,10 +150,16 @@ export class PersistentCheckpointStateCache implements CheckpointStateCache {
139
150
  this.logger = logger;
140
151
  this.clock = clock;
141
152
  this.signal = signal;
153
+
142
154
  if (opts.maxCPStateEpochsInMemory !== undefined && opts.maxCPStateEpochsInMemory < 0) {
143
155
  throw new Error("maxEpochsInMemory must be >= 0");
144
156
  }
157
+ if (opts.maxCPStateEpochsOnDisk !== undefined && opts.maxCPStateEpochsOnDisk < 0) {
158
+ throw new Error("maxCPStateEpochsOnDisk must be >= 0");
159
+ }
160
+
145
161
  this.maxEpochsInMemory = opts.maxCPStateEpochsInMemory ?? DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY;
162
+ this.maxEpochsOnDisk = opts.maxCPStateEpochsOnDisk ?? DEFAULT_MAX_CP_STATE_ON_DISK;
146
163
  // Specify different datastore for testing
147
164
  this.datastore = datastore;
148
165
  this.blockStateCache = blockStateCache;
@@ -324,6 +341,7 @@ export class PersistentCheckpointStateCache implements CheckpointStateCache {
324
341
  this.logger.verbose("Added checkpoint state to memory", {epoch: cp.epoch, rootHex: cpHex.rootHex});
325
342
  }
326
343
  this.epochIndex.getOrDefault(cp.epoch).add(cpHex.rootHex);
344
+ this.prunePersistedStates();
327
345
  }
328
346
 
329
347
  /**
@@ -766,13 +784,38 @@ export class PersistentCheckpointStateCache implements CheckpointStateCache {
766
784
  this.cache.delete(key);
767
785
  }
768
786
  this.epochIndex.delete(epoch);
769
- this.logger.verbose("Pruned finalized checkpoints states for epoch", {
787
+ this.logger.verbose("Pruned checkpoint states for epoch", {
770
788
  epoch,
771
789
  persistCount,
772
790
  rootHexes: Array.from(rootHexes).join(","),
773
791
  });
774
792
  }
775
793
 
794
+ /**
795
+ * Prune persisted checkpoint states from disk.
796
+ * Note that this should handle all possible errors and not throw.
797
+ */
798
+ private prunePersistedStates(): void {
799
+ // epochsOnDisk epochsInMemory
800
+ // |----------------------------------------------------------|----------------------|
801
+ const maxTrackedEpochs = this.maxEpochsOnDisk + this.maxEpochsInMemory;
802
+ if (this.epochIndex.size <= maxTrackedEpochs) {
803
+ return;
804
+ }
805
+
806
+ const sortedEpochs = Array.from(this.epochIndex.keys()).sort((a, b) => a - b);
807
+ const pruneEpochs = sortedEpochs.slice(0, sortedEpochs.length - maxTrackedEpochs);
808
+ for (const epoch of pruneEpochs) {
809
+ this.deleteAllEpochItems(epoch).catch((e) =>
810
+ this.logger.debug(
811
+ "Error delete all epoch items",
812
+ {epoch, maxEpochsOnDisk: this.maxEpochsOnDisk, maxEpochsInMemory: this.maxEpochsInMemory},
813
+ e as Error
814
+ )
815
+ );
816
+ }
817
+ }
818
+
776
819
  /**
777
820
  * Serialize validators to bytes leveraging the buffer pool to save memory allocation.
778
821
  * - As monitored on holesky as of Jan 2024, it helps save ~500ms state reload time (4.3s vs 3.8s)
@@ -8,7 +8,8 @@ import {
8
8
  import {
9
9
  computeEpochAtSlot,
10
10
  computeStartSlotAtEpoch,
11
- getBlockHeaderProposerSignatureSet,
11
+ getBlockHeaderProposerSignatureSetByHeaderSlot,
12
+ getBlockHeaderProposerSignatureSetByParentStateSlot,
12
13
  } from "@lodestar/state-transition";
13
14
  import {BlobIndex, Root, Slot, SubnetID, deneb, ssz} from "@lodestar/types";
14
15
  import {toRootHex, verifyMerkleBranch} from "@lodestar/utils";
@@ -100,7 +101,12 @@ export async function validateGossipBlobSidecar(
100
101
  // descend from the finalized root.
101
102
  // (Non-Lighthouse): Since we prune all blocks non-descendant from finalized checking the `db.block` database won't be useful to guard
102
103
  // against known bad fork blocks, so we throw PARENT_UNKNOWN for cases (1) and (2)
103
- throw new BlobSidecarGossipError(GossipAction.IGNORE, {code: BlobSidecarErrorCode.PARENT_UNKNOWN, parentRoot});
104
+ throw new BlobSidecarGossipError(GossipAction.IGNORE, {
105
+ code: BlobSidecarErrorCode.PARENT_UNKNOWN,
106
+ parentRoot,
107
+ blockRoot: blockHex,
108
+ slot: blobSlot,
109
+ });
104
110
  }
105
111
 
106
112
  // [REJECT] The blob is from a higher slot than its parent.
@@ -120,15 +126,23 @@ export async function validateGossipBlobSidecar(
120
126
  const blockState = await chain.regen
121
127
  .getBlockSlotState(parentRoot, blobSlot, {dontTransferCache: true}, RegenCaller.validateGossipBlock)
122
128
  .catch(() => {
123
- throw new BlobSidecarGossipError(GossipAction.IGNORE, {code: BlobSidecarErrorCode.PARENT_UNKNOWN, parentRoot});
129
+ throw new BlobSidecarGossipError(GossipAction.IGNORE, {
130
+ code: BlobSidecarErrorCode.PARENT_UNKNOWN,
131
+ parentRoot,
132
+ blockRoot: blockHex,
133
+ slot: blobSlot,
134
+ });
124
135
  });
125
136
 
126
137
  // [REJECT] The proposer signature, signed_beacon_block.signature, is valid with respect to the proposer_index pubkey.
127
- const signatureSet = getBlockHeaderProposerSignatureSet(blockState, blobSidecar.signedBlockHeader);
138
+ const signatureSet = getBlockHeaderProposerSignatureSetByParentStateSlot(blockState, blobSidecar.signedBlockHeader);
128
139
  // Don't batch so verification is not delayed
129
140
  if (!(await chain.bls.verifySignatureSets([signatureSet], {verifyOnMainThread: true}))) {
130
141
  throw new BlobSidecarGossipError(GossipAction.REJECT, {
131
142
  code: BlobSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID,
143
+ blockRoot: blockHex,
144
+ index: blobSidecar.index,
145
+ slot: blobSlot,
132
146
  });
133
147
  }
134
148
 
@@ -175,8 +189,12 @@ export async function validateGossipBlobSidecar(
175
189
  * Validate some blob sidecars in a block
176
190
  *
177
191
  * Requires the block to be known to the node
192
+ *
193
+ * NOTE: chain is optional to skip signature verification. Helpful for testing purposes and so that can control whether
194
+ * signature gets checked depending on the reqresp method that is being checked
178
195
  */
179
196
  export async function validateBlockBlobSidecars(
197
+ chain: IBeaconChain | null,
180
198
  blockSlot: Slot,
181
199
  blockRoot: Root,
182
200
  blockBlobCount: number,
@@ -196,7 +214,8 @@ export async function validateBlockBlobSidecars(
196
214
  }
197
215
 
198
216
  // Hash the first sidecar block header and compare the rest via (cheaper) equality
199
- const firstSidecarBlockHeader = blobSidecars[0].signedBlockHeader.message;
217
+ const firstSidecarSignedBlockHeader = blobSidecars[0].signedBlockHeader;
218
+ const firstSidecarBlockHeader = firstSidecarSignedBlockHeader.message;
200
219
  const firstBlockRoot = ssz.phase0.BeaconBlockHeader.hashTreeRoot(firstSidecarBlockHeader);
201
220
  if (Buffer.compare(blockRoot, firstBlockRoot) !== 0) {
202
221
  throw new BlobSidecarValidationError(
@@ -211,17 +230,42 @@ export async function validateBlockBlobSidecars(
211
230
  );
212
231
  }
213
232
 
233
+ if (chain !== null) {
234
+ const headState = await chain.getHeadState();
235
+ const signatureSet = getBlockHeaderProposerSignatureSetByHeaderSlot(headState, firstSidecarSignedBlockHeader);
236
+
237
+ if (
238
+ !(await chain.bls.verifySignatureSets([signatureSet], {
239
+ batchable: true,
240
+ priority: true,
241
+ verifyOnMainThread: false,
242
+ }))
243
+ ) {
244
+ throw new BlobSidecarValidationError({
245
+ code: BlobSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID,
246
+ blockRoot: toRootHex(blockRoot),
247
+ slot: blockSlot,
248
+ index: blobSidecars[0].index,
249
+ });
250
+ }
251
+ }
252
+
214
253
  const commitments = [];
215
254
  const blobs = [];
216
255
  const proofs = [];
217
- for (const blobSidecar of blobSidecars) {
218
- const blobIdx = blobSidecar.index;
219
- if (!ssz.phase0.BeaconBlockHeader.equals(blobSidecar.signedBlockHeader.message, firstSidecarBlockHeader)) {
256
+ for (let i = 0; i < blobSidecars.length; i++) {
257
+ const blobSidecar = blobSidecars[i];
258
+ const blobIndex = blobSidecar.index;
259
+
260
+ if (
261
+ i !== 0 &&
262
+ !ssz.phase0.SignedBeaconBlockHeader.equals(blobSidecar.signedBlockHeader, firstSidecarSignedBlockHeader)
263
+ ) {
220
264
  throw new BlobSidecarValidationError(
221
265
  {
222
266
  code: BlobSidecarErrorCode.INCORRECT_BLOCK,
223
267
  slot: blockSlot,
224
- blobIdx,
268
+ blobIdx: blobIndex,
225
269
  expected: toRootHex(blockRoot),
226
270
  actual: "unknown - compared via equality",
227
271
  },
@@ -234,7 +278,7 @@ export async function validateBlockBlobSidecars(
234
278
  {
235
279
  code: BlobSidecarErrorCode.INCLUSION_PROOF_INVALID,
236
280
  slot: blockSlot,
237
- blobIdx,
281
+ blobIdx: blobIndex,
238
282
  },
239
283
  "BlobSidecar inclusion proof invalid"
240
284
  );
@@ -158,6 +158,7 @@ export async function validateGossipBlock(
158
158
  if (!(await chain.bls.verifySignatureSets([signatureSet], {verifyOnMainThread: true}))) {
159
159
  throw new BlockGossipError(GossipAction.REJECT, {
160
160
  code: BlockErrorCode.PROPOSAL_SIGNATURE_INVALID,
161
+ blockSlot,
161
162
  });
162
163
  }
163
164