@lodestar/beacon-node 1.48.0-dev.baa28132d2 → 1.48.0-dev.bb3ffba9e9

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 (235) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +4 -4
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/validator/index.d.ts.map +1 -1
  5. package/lib/api/impl/validator/index.js +39 -39
  6. package/lib/api/impl/validator/index.js.map +1 -1
  7. package/lib/chain/archiveStore/archiveStore.d.ts +1 -0
  8. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  9. package/lib/chain/archiveStore/archiveStore.js +1 -0
  10. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  11. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
  12. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +1 -0
  13. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  14. package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +1 -1
  15. package/lib/chain/archiveStore/historicalState/metrics.js +12 -1
  16. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  17. package/lib/chain/archiveStore/historicalState/types.d.ts +2 -0
  18. package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -1
  19. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  20. package/lib/chain/archiveStore/historicalState/worker.js +4 -1
  21. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  22. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  23. package/lib/chain/archiveStore/utils/archiveBlocks.js +31 -34
  24. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  25. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  26. package/lib/chain/blocks/importBlock.js +0 -13
  27. package/lib/chain/blocks/importBlock.js.map +1 -1
  28. package/lib/chain/blocks/index.d.ts.map +1 -1
  29. package/lib/chain/blocks/index.js +3 -2
  30. package/lib/chain/blocks/index.js.map +1 -1
  31. package/lib/chain/blocks/utils/chainSegment.d.ts +1 -1
  32. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
  33. package/lib/chain/blocks/utils/chainSegment.js +10 -1
  34. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  35. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  36. package/lib/chain/blocks/writeBlockInputToDb.js +9 -16
  37. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  38. package/lib/chain/chain.d.ts +9 -3
  39. package/lib/chain/chain.d.ts.map +1 -1
  40. package/lib/chain/chain.js +127 -73
  41. package/lib/chain/chain.js.map +1 -1
  42. package/lib/chain/emitter.d.ts +1 -1
  43. package/lib/chain/emitter.js +1 -1
  44. package/lib/chain/errors/blockError.d.ts +19 -7
  45. package/lib/chain/errors/blockError.d.ts.map +1 -1
  46. package/lib/chain/errors/blockError.js +2 -2
  47. package/lib/chain/errors/blockError.js.map +1 -1
  48. package/lib/chain/errors/dataColumnSidecarError.d.ts +15 -2
  49. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -1
  50. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  51. package/lib/chain/errors/executionPayloadEnvelope.d.ts +10 -11
  52. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  53. package/lib/chain/errors/executionPayloadEnvelope.js +0 -2
  54. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  55. package/lib/chain/interface.d.ts +2 -2
  56. package/lib/chain/interface.d.ts.map +1 -1
  57. package/lib/chain/prepareNextSlot.js +13 -13
  58. package/lib/chain/prepareNextSlot.js.map +1 -1
  59. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  60. package/lib/chain/produceBlock/produceBlockBody.js +46 -64
  61. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  62. package/lib/chain/validation/block.d.ts.map +1 -1
  63. package/lib/chain/validation/block.js +35 -54
  64. package/lib/chain/validation/block.js.map +1 -1
  65. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  66. package/lib/chain/validation/dataColumnSidecar.js +38 -13
  67. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  68. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  69. package/lib/chain/validation/executionPayloadEnvelope.js +10 -29
  70. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  71. package/lib/chain/validatorMonitor.d.ts +7 -1
  72. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  73. package/lib/chain/validatorMonitor.js +22 -5
  74. package/lib/chain/validatorMonitor.js.map +1 -1
  75. package/lib/db/beacon.d.ts +14 -5
  76. package/lib/db/beacon.d.ts.map +1 -1
  77. package/lib/db/beacon.js +17 -3
  78. package/lib/db/beacon.js.map +1 -1
  79. package/lib/db/dataColumnStore.d.ts +39 -0
  80. package/lib/db/dataColumnStore.d.ts.map +1 -0
  81. package/lib/db/dataColumnStore.js +81 -0
  82. package/lib/db/dataColumnStore.js.map +1 -0
  83. package/lib/db/flatFileStore/atomicWrite.d.ts +8 -0
  84. package/lib/db/flatFileStore/atomicWrite.d.ts.map +1 -0
  85. package/lib/db/flatFileStore/atomicWrite.js +61 -0
  86. package/lib/db/flatFileStore/atomicWrite.js.map +1 -0
  87. package/lib/db/flatFileStore/dcolFormat.d.ts +90 -0
  88. package/lib/db/flatFileStore/dcolFormat.d.ts.map +1 -0
  89. package/lib/db/flatFileStore/dcolFormat.js +286 -0
  90. package/lib/db/flatFileStore/dcolFormat.js.map +1 -0
  91. package/lib/db/flatFileStore/errors.d.ts +82 -0
  92. package/lib/db/flatFileStore/errors.d.ts.map +1 -0
  93. package/lib/db/flatFileStore/errors.js +32 -0
  94. package/lib/db/flatFileStore/errors.js.map +1 -0
  95. package/lib/db/flatFileStore/flatFileStore.d.ts +41 -0
  96. package/lib/db/flatFileStore/flatFileStore.d.ts.map +1 -0
  97. package/lib/db/flatFileStore/flatFileStore.js +251 -0
  98. package/lib/db/flatFileStore/flatFileStore.js.map +1 -0
  99. package/lib/db/flatFileStore/index.d.ts +4 -0
  100. package/lib/db/flatFileStore/index.d.ts.map +1 -0
  101. package/lib/db/flatFileStore/index.js +2 -0
  102. package/lib/db/flatFileStore/index.js.map +1 -0
  103. package/lib/db/flatFileStore/interface.d.ts +25 -0
  104. package/lib/db/flatFileStore/interface.d.ts.map +1 -0
  105. package/lib/db/flatFileStore/interface.js +2 -0
  106. package/lib/db/flatFileStore/interface.js.map +1 -0
  107. package/lib/db/flatFileStore/metrics.d.ts +24 -0
  108. package/lib/db/flatFileStore/metrics.d.ts.map +1 -0
  109. package/lib/db/flatFileStore/metrics.js +25 -0
  110. package/lib/db/flatFileStore/metrics.js.map +1 -0
  111. package/lib/db/flatFileStore/path.d.ts +9 -0
  112. package/lib/db/flatFileStore/path.d.ts.map +1 -0
  113. package/lib/db/flatFileStore/path.js +21 -0
  114. package/lib/db/flatFileStore/path.js.map +1 -0
  115. package/lib/db/flatFileStore/slotIndex.d.ts +14 -0
  116. package/lib/db/flatFileStore/slotIndex.d.ts.map +1 -0
  117. package/lib/db/flatFileStore/slotIndex.js +46 -0
  118. package/lib/db/flatFileStore/slotIndex.js.map +1 -0
  119. package/lib/db/flatFileStore/snappy.d.ts +3 -0
  120. package/lib/db/flatFileStore/snappy.d.ts.map +1 -0
  121. package/lib/db/flatFileStore/snappy.js +12 -0
  122. package/lib/db/flatFileStore/snappy.js.map +1 -0
  123. package/lib/db/index.d.ts +1 -0
  124. package/lib/db/index.d.ts.map +1 -1
  125. package/lib/db/interface.d.ts +8 -1
  126. package/lib/db/interface.d.ts.map +1 -1
  127. package/lib/db/repositories/blockArchive.d.ts +8 -1
  128. package/lib/db/repositories/blockArchive.d.ts.map +1 -1
  129. package/lib/db/repositories/blockArchive.js +65 -28
  130. package/lib/db/repositories/blockArchive.js.map +1 -1
  131. package/lib/db/repositories/blockArchiveIndex.d.ts +1 -2
  132. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
  133. package/lib/db/repositories/blockArchiveIndex.js +3 -7
  134. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  135. package/lib/execution/engine/mock.d.ts.map +1 -1
  136. package/lib/execution/engine/mock.js +4 -1
  137. package/lib/execution/engine/mock.js.map +1 -1
  138. package/lib/metrics/metrics/lodestar.d.ts +18 -0
  139. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  140. package/lib/metrics/metrics/lodestar.js +55 -1
  141. package/lib/metrics/metrics/lodestar.js.map +1 -1
  142. package/lib/monitoring/clientStats.js +1 -1
  143. package/lib/monitoring/clientStats.js.map +1 -1
  144. package/lib/network/gossip/encoding.d.ts.map +1 -1
  145. package/lib/network/gossip/encoding.js +0 -7
  146. package/lib/network/gossip/encoding.js.map +1 -1
  147. package/lib/network/gossip/topic.d.ts +2 -1
  148. package/lib/network/gossip/topic.d.ts.map +1 -1
  149. package/lib/network/gossip/topic.js +4 -20
  150. package/lib/network/gossip/topic.js.map +1 -1
  151. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  152. package/lib/network/processor/gossipHandlers.js +6 -7
  153. package/lib/network/processor/gossipHandlers.js.map +1 -1
  154. package/lib/network/processor/index.d.ts +49 -3
  155. package/lib/network/processor/index.d.ts.map +1 -1
  156. package/lib/network/processor/index.js +232 -98
  157. package/lib/network/processor/index.js.map +1 -1
  158. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  159. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +112 -91
  160. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  161. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -1
  162. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +2 -0
  163. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  164. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  165. package/lib/network/reqresp/protocols.js +6 -22
  166. package/lib/network/reqresp/protocols.js.map +1 -1
  167. package/lib/network/reqresp/rateLimit.js +2 -1
  168. package/lib/network/reqresp/rateLimit.js.map +1 -1
  169. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts +2 -1
  170. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -1
  171. package/lib/network/reqresp/utils/dataColumnResponseValidation.js +14 -9
  172. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  173. package/lib/node/nodejs.d.ts +2 -1
  174. package/lib/node/nodejs.d.ts.map +1 -1
  175. package/lib/node/nodejs.js +4 -2
  176. package/lib/node/nodejs.js.map +1 -1
  177. package/lib/util/sszBytes.d.ts +6 -0
  178. package/lib/util/sszBytes.d.ts.map +1 -1
  179. package/lib/util/sszBytes.js +1 -1
  180. package/lib/util/sszBytes.js.map +1 -1
  181. package/package.json +18 -19
  182. package/src/api/impl/beacon/blocks/index.ts +8 -4
  183. package/src/api/impl/validator/index.ts +44 -43
  184. package/src/chain/archiveStore/archiveStore.ts +6 -1
  185. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +1 -0
  186. package/src/chain/archiveStore/historicalState/metrics.ts +14 -1
  187. package/src/chain/archiveStore/historicalState/types.ts +2 -0
  188. package/src/chain/archiveStore/historicalState/worker.ts +4 -1
  189. package/src/chain/archiveStore/utils/archiveBlocks.ts +34 -39
  190. package/src/chain/blocks/importBlock.ts +0 -13
  191. package/src/chain/blocks/index.ts +13 -2
  192. package/src/chain/blocks/utils/chainSegment.ts +10 -1
  193. package/src/chain/blocks/writeBlockInputToDb.ts +10 -17
  194. package/src/chain/chain.ts +149 -80
  195. package/src/chain/emitter.ts +1 -1
  196. package/src/chain/errors/blockError.ts +22 -10
  197. package/src/chain/errors/dataColumnSidecarError.ts +24 -8
  198. package/src/chain/errors/executionPayloadEnvelope.ts +14 -11
  199. package/src/chain/interface.ts +2 -2
  200. package/src/chain/prepareNextSlot.ts +16 -16
  201. package/src/chain/produceBlock/produceBlockBody.ts +50 -71
  202. package/src/chain/validation/block.ts +35 -70
  203. package/src/chain/validation/dataColumnSidecar.ts +47 -14
  204. package/src/chain/validation/executionPayloadEnvelope.ts +10 -37
  205. package/src/chain/validatorMonitor.ts +24 -7
  206. package/src/db/beacon.ts +33 -6
  207. package/src/db/dataColumnStore.ts +113 -0
  208. package/src/db/flatFileStore/atomicWrite.ts +65 -0
  209. package/src/db/flatFileStore/dcolFormat.ts +389 -0
  210. package/src/db/flatFileStore/errors.ts +53 -0
  211. package/src/db/flatFileStore/flatFileStore.ts +310 -0
  212. package/src/db/flatFileStore/index.ts +3 -0
  213. package/src/db/flatFileStore/interface.ts +21 -0
  214. package/src/db/flatFileStore/metrics.ts +48 -0
  215. package/src/db/flatFileStore/path.ts +32 -0
  216. package/src/db/flatFileStore/slotIndex.ts +56 -0
  217. package/src/db/flatFileStore/snappy.ts +14 -0
  218. package/src/db/index.ts +1 -0
  219. package/src/db/interface.ts +9 -1
  220. package/src/db/repositories/blockArchive.ts +89 -30
  221. package/src/db/repositories/blockArchiveIndex.ts +4 -9
  222. package/src/execution/engine/mock.ts +4 -1
  223. package/src/metrics/metrics/lodestar.ts +57 -1
  224. package/src/monitoring/clientStats.ts +1 -1
  225. package/src/network/gossip/encoding.ts +0 -7
  226. package/src/network/gossip/topic.ts +3 -25
  227. package/src/network/processor/gossipHandlers.ts +11 -11
  228. package/src/network/processor/index.ts +263 -148
  229. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +139 -105
  230. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +2 -0
  231. package/src/network/reqresp/protocols.ts +7 -24
  232. package/src/network/reqresp/rateLimit.ts +2 -1
  233. package/src/network/reqresp/utils/dataColumnResponseValidation.ts +15 -7
  234. package/src/node/nodejs.ts +6 -1
  235. package/src/util/sszBytes.ts +1 -1
@@ -115,13 +115,14 @@ export declare class BeaconChain implements IBeaconChain {
115
115
  private _earliestAvailableSlot;
116
116
  get earliestAvailableSlot(): Slot;
117
117
  set earliestAvailableSlot(slot: Slot);
118
- constructor(opts: IChainOptions, { privateKey, config, pubkeyCache, db, dbName, dataDir, logger, processShutdownCallback, clock, metrics, validatorMonitor, anchorState, isAnchorStateFinalized, executionEngine, executionBuilder, builderApiClientOpts, }: {
118
+ constructor(opts: IChainOptions, { privateKey, config, pubkeyCache, db, dbName, dataDir, dataColumnDir, logger, processShutdownCallback, clock, metrics, validatorMonitor, anchorState, isAnchorStateFinalized, executionEngine, executionBuilder, builderApiClientOpts, }: {
119
119
  privateKey: PrivateKey;
120
120
  config: BeaconConfig;
121
121
  pubkeyCache: PubkeyCache;
122
122
  db: IBeaconDb;
123
123
  dbName: string;
124
124
  dataDir: string;
125
+ dataColumnDir?: string;
125
126
  logger: Logger;
126
127
  processShutdownCallback: ProcessShutdownCallback;
127
128
  /** Used for testing to supply fake clock */
@@ -229,6 +230,11 @@ export declare class BeaconChain implements IBeaconChain {
229
230
  private produceProposerSlashing;
230
231
  getStatus(): Status;
231
232
  recomputeForkChoiceHead(caller: ForkchoiceCaller): ProtoBlock;
233
+ /**
234
+ * Emit `head` and `head_v2` when the fork choice head differs between two observations. Every caller that
235
+ * can move the head, `updateAndGetHead()` and `updateTime()`, must capture the head before and pass both.
236
+ */
237
+ private emitHeadEvents;
232
238
  predictProposerHead(): ProtoBlock;
233
239
  getProposerHead(slot: Slot): ProtoBlock;
234
240
  /**
@@ -243,8 +249,8 @@ export declare class BeaconChain implements IBeaconChain {
243
249
  * persist preState, postState and block for further investigation.
244
250
  */
245
251
  persistInvalidStateRoot(preState: IBeaconStateView, postState: IBeaconStateView, block: SignedBeaconBlock): Promise<void>;
246
- persistInvalidSszValue<T>(type: Type<T>, sszObject: T, suffix?: string): void;
247
- persistInvalidSszBytes(typeName: string, sszBytes: Uint8Array, suffix?: string): void;
252
+ persistInvalidSszValue<T>(type: Type<T>, sszObject: T, suffix?: string, rootHex?: RootHex): void;
253
+ persistInvalidSszBytes(typeName: string, sszBytes: Uint8Array, rootHex: RootHex, suffix?: string): void;
248
254
  /**
249
255
  * Regenerate state for attestation verification, this does not happen with default chain option of maxSkipSlots = 32 .
250
256
  * However, need to handle just in case. Lodestar doesn't support multiple regen state requests for attestation verification
@@ -1 +1 @@
1
- {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain/chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain/chain.ts"],"names":[],"mappings":"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"}
@@ -159,7 +159,7 @@ export class BeaconChain {
159
159
  this.emitter.emit(ChainEvent.updateStatus);
160
160
  }
161
161
  }
162
- constructor(opts, { privateKey, config, pubkeyCache, db, dbName, dataDir, logger, processShutdownCallback, clock, metrics, validatorMonitor, anchorState, isAnchorStateFinalized, executionEngine, executionBuilder, builderApiClientOpts, }) {
162
+ constructor(opts, { privateKey, config, pubkeyCache, db, dbName, dataDir, dataColumnDir, logger, processShutdownCallback, clock, metrics, validatorMonitor, anchorState, isAnchorStateFinalized, executionEngine, executionBuilder, builderApiClientOpts, }) {
163
163
  this.opts = opts;
164
164
  this.config = config;
165
165
  this.db = db;
@@ -324,7 +324,12 @@ export class BeaconChain {
324
324
  metrics,
325
325
  config,
326
326
  });
327
- this.archiveStore = new ArchiveStore({ db, chain: this, logger: logger, metrics }, { ...opts, dbName, anchorState: { finalizedCheckpoint: anchorState.finalizedCheckpoint } }, signal);
327
+ this.archiveStore = new ArchiveStore({ db, chain: this, logger: logger, metrics }, {
328
+ ...opts,
329
+ dbName,
330
+ dataColumnDir: dataColumnDir ?? path.join(dataDir, "data_columns"),
331
+ anchorState: { finalizedCheckpoint: anchorState.finalizedCheckpoint },
332
+ }, signal);
328
333
  this.unfinalizedBlockWrites = new JobItemQueue(persistBlockInput.bind(this), {
329
334
  maxLength: DEFAULT_MAX_PENDING_UNFINALIZED_BLOCK_WRITES,
330
335
  signal,
@@ -690,11 +695,14 @@ export class BeaconChain {
690
695
  }
691
696
  async getDataColumnSidecars(blockSlot, blockRootHex) {
692
697
  const fork = this.config.getForkName(blockSlot);
698
+ const sidecarsByIndex = new Map();
693
699
  if (isForkPostGloas(fork)) {
694
700
  // After gloas, columns are tracked in PayloadEnvelopeInput
695
701
  const payloadInput = this.seenPayloadEnvelopeInputCache.get(blockRootHex);
696
702
  if (payloadInput) {
697
- return payloadInput.getAllColumns();
703
+ for (const sidecar of payloadInput.getAllColumns()) {
704
+ sidecarsByIndex.set(sidecar.index, sidecar);
705
+ }
698
706
  }
699
707
  }
700
708
  else {
@@ -704,33 +712,38 @@ export class BeaconChain {
704
712
  if (!isBlockInputColumns(blockInput)) {
705
713
  throw new Error(`Expected block input to have columns: slot=${blockSlot} root=${blockRootHex}`);
706
714
  }
707
- return blockInput.getAllColumns();
715
+ for (const sidecar of blockInput.getAllColumns()) {
716
+ sidecarsByIndex.set(sidecar.index, sidecar);
717
+ }
708
718
  }
709
719
  }
710
- const sidecarsUnfinalized = await this.db.dataColumnSidecar.values(fromHex(blockRootHex));
711
- if (sidecarsUnfinalized.length > 0) {
712
- return sidecarsUnfinalized;
720
+ for (const sidecar of await this.db.dataColumns.getAll({ slot: blockSlot, blockRoot: blockRootHex })) {
721
+ if (!sidecarsByIndex.has(sidecar.index))
722
+ sidecarsByIndex.set(sidecar.index, sidecar);
713
723
  }
714
- const sidecarsFinalized = await this.db.dataColumnSidecarArchive.values(blockSlot);
715
- return sidecarsFinalized;
724
+ return [...sidecarsByIndex.values()].sort((a, b) => a.index - b.index);
716
725
  }
717
726
  async getSerializedDataColumnSidecars(blockSlot, blockRootHex, indices) {
718
727
  const fork = this.config.getForkName(blockSlot);
728
+ const dataColumnSidecars = indices.map(() => undefined);
719
729
  if (isForkPostGloas(fork)) {
720
730
  // After gloas, columns are tracked in PayloadEnvelopeInput
721
731
  const payloadInput = this.seenPayloadEnvelopeInputCache.get(blockRootHex);
722
732
  if (payloadInput) {
723
- return indices.map((index) => {
733
+ for (let i = 0; i < indices.length; i++) {
734
+ const index = indices[i];
724
735
  const sidecar = payloadInput.getColumn(index);
725
736
  if (!sidecar) {
726
- return undefined;
737
+ continue;
727
738
  }
728
739
  const serialized = this.serializedCache.get(sidecar);
729
740
  if (serialized) {
730
- return serialized;
741
+ dataColumnSidecars[i] = serialized;
731
742
  }
732
- return sszTypesFor(fork).DataColumnSidecar.serialize(sidecar);
733
- });
743
+ else {
744
+ dataColumnSidecars[i] = sszTypesFor(fork).DataColumnSidecar.serialize(sidecar);
745
+ }
746
+ }
734
747
  }
735
748
  }
736
749
  else {
@@ -740,25 +753,35 @@ export class BeaconChain {
740
753
  if (!isBlockInputColumns(blockInput)) {
741
754
  throw new Error(`Expected block input to have columns: slot=${blockSlot} root=${blockRootHex}`);
742
755
  }
743
- return indices.map((index) => {
756
+ for (let i = 0; i < indices.length; i++) {
757
+ const index = indices[i];
744
758
  const sidecar = blockInput.getColumn(index);
745
759
  if (!sidecar) {
746
- return undefined;
760
+ continue;
747
761
  }
748
762
  const serialized = this.serializedCache.get(sidecar);
749
763
  if (serialized) {
750
- return serialized;
764
+ dataColumnSidecars[i] = serialized;
751
765
  }
752
- return sszTypesFor(blockInput.forkName).DataColumnSidecar.serialize(sidecar);
753
- });
766
+ else {
767
+ dataColumnSidecars[i] = sszTypesFor(blockInput.forkName).DataColumnSidecar.serialize(sidecar);
768
+ }
769
+ }
754
770
  }
755
771
  }
756
- const sidecarsUnfinalized = await this.db.dataColumnSidecar.getManyBinary(fromHex(blockRootHex), indices);
757
- if (sidecarsUnfinalized.some((sidecar) => sidecar != null)) {
758
- return sidecarsUnfinalized;
772
+ const missingPositions = dataColumnSidecars
773
+ .map((sidecar, position) => (sidecar === undefined ? position : -1))
774
+ .filter((position) => position !== -1);
775
+ if (missingPositions.length > 0) {
776
+ const persistedSidecars = await this.db.dataColumns.getManyBinary({ slot: blockSlot, blockRoot: blockRootHex }, missingPositions.map((position) => indices[position]));
777
+ for (let i = 0; i < missingPositions.length; i++) {
778
+ const sidecar = persistedSidecars[i];
779
+ if (sidecar !== undefined) {
780
+ dataColumnSidecars[missingPositions[i]] = sidecar;
781
+ }
782
+ }
759
783
  }
760
- const sidecarsFinalized = await this.db.dataColumnSidecarArchive.getManyBinary(blockSlot, indices);
761
- return sidecarsFinalized;
784
+ return dataColumnSidecars;
762
785
  }
763
786
  async produceCommonBlockBody(blockAttributes) {
764
787
  const { slot, parentBlock } = blockAttributes;
@@ -914,44 +937,7 @@ export class BeaconChain {
914
937
  try {
915
938
  const prevHead = this.forkChoice.getHead();
916
939
  const head = this.forkChoice.updateAndGetHead({ mode: UpdateHeadOpt.GetCanonicalHead }).head;
917
- const headRootChanged = head.blockRoot !== prevHead.blockRoot;
918
- if (!headRootChanged && prevHead.payloadStatus === head.payloadStatus) {
919
- return head;
920
- }
921
- try {
922
- const previousDutyDependentRoot = this.forkChoice.getDependentRoot(head, EpochDifference.previous);
923
- const currentDutyDependentRoot = this.forkChoice.getDependentRoot(head, EpochDifference.current);
924
- const epochTransition = computeStartSlotAtEpoch(computeEpochAtSlot(head.slot)) === head.slot;
925
- const executionOptimistic = isOptimisticBlock(head);
926
- if (headRootChanged) {
927
- this.emitter.emit(routes.events.EventType.head, {
928
- block: head.blockRoot,
929
- epochTransition,
930
- slot: head.slot,
931
- state: head.stateRoot,
932
- previousDutyDependentRoot,
933
- currentDutyDependentRoot,
934
- executionOptimistic,
935
- });
936
- }
937
- this.emitter.emit(routes.events.EventType.headV2, {
938
- version: this.config.getForkName(head.slot),
939
- data: {
940
- slot: head.slot,
941
- block: head.blockRoot,
942
- state: head.stateRoot,
943
- payloadStatus: head.payloadStatus === PayloadStatus.FULL ? "full" : "empty",
944
- epochTransition,
945
- currentEpochDependentRoot: previousDutyDependentRoot,
946
- nextEpochDependentRoot: currentDutyDependentRoot,
947
- executionOptimistic,
948
- },
949
- });
950
- }
951
- catch (e) {
952
- // getDependentRoot() may fail with error: "No block for root" as we can see in holesky non-finality issue
953
- this.logger.debug("Error emitting head/head_v2 event", { slot: head.slot, root: head.blockRoot, headRootChanged }, e);
954
- }
940
+ this.emitHeadEvents(prevHead, head);
955
941
  return head;
956
942
  }
957
943
  catch (e) {
@@ -962,6 +948,50 @@ export class BeaconChain {
962
948
  timer?.();
963
949
  }
964
950
  }
951
+ /**
952
+ * Emit `head` and `head_v2` when the fork choice head differs between two observations. Every caller that
953
+ * can move the head, `updateAndGetHead()` and `updateTime()`, must capture the head before and pass both.
954
+ */
955
+ emitHeadEvents(prevHead, head) {
956
+ const headRootChanged = head.blockRoot !== prevHead.blockRoot;
957
+ if (!headRootChanged && prevHead.payloadStatus === head.payloadStatus) {
958
+ return;
959
+ }
960
+ try {
961
+ const previousDutyDependentRoot = this.forkChoice.getDependentRoot(head, EpochDifference.previous);
962
+ const currentDutyDependentRoot = this.forkChoice.getDependentRoot(head, EpochDifference.current);
963
+ const epochTransition = computeStartSlotAtEpoch(computeEpochAtSlot(head.slot)) === head.slot;
964
+ const executionOptimistic = isOptimisticBlock(head);
965
+ if (headRootChanged) {
966
+ this.emitter.emit(routes.events.EventType.head, {
967
+ block: head.blockRoot,
968
+ epochTransition,
969
+ slot: head.slot,
970
+ state: head.stateRoot,
971
+ previousDutyDependentRoot,
972
+ currentDutyDependentRoot,
973
+ executionOptimistic,
974
+ });
975
+ }
976
+ this.emitter.emit(routes.events.EventType.headV2, {
977
+ version: this.config.getForkName(head.slot),
978
+ data: {
979
+ slot: head.slot,
980
+ block: head.blockRoot,
981
+ state: head.stateRoot,
982
+ payloadStatus: head.payloadStatus === PayloadStatus.FULL ? "full" : "empty",
983
+ epochTransition,
984
+ currentEpochDependentRoot: previousDutyDependentRoot,
985
+ nextEpochDependentRoot: currentDutyDependentRoot,
986
+ executionOptimistic,
987
+ },
988
+ });
989
+ }
990
+ catch (e) {
991
+ // getDependentRoot() may fail with error: "No block for root" as we can see in holesky non-finality issue
992
+ this.logger.debug("Error emitting head/head_v2 event", { slot: head.slot, root: head.blockRoot, headRootChanged }, e);
993
+ }
994
+ }
965
995
  predictProposerHead() {
966
996
  this.metrics?.forkChoice.requests.inc();
967
997
  const timer = this.metrics?.forkChoice.findHead.startTimer({ caller: FindHeadFnName.predictProposerHead });
@@ -1014,11 +1044,11 @@ export class BeaconChain {
1014
1044
  const slot = data.slot;
1015
1045
  if (isBlindedBeaconBlock(data)) {
1016
1046
  const sszType = this.config.getPostBellatrixForkTypes(slot).BlindedBeaconBlock;
1017
- void this.persistSszObject("BlindedBeaconBlock", sszType.serialize(data), sszType.hashTreeRoot(data), suffix);
1047
+ void this.persistSszObject("BlindedBeaconBlock", sszType.serialize(data), toRootHex(sszType.hashTreeRoot(data)), suffix);
1018
1048
  }
1019
1049
  else {
1020
1050
  const sszType = this.config.getForkTypes(slot).BeaconBlock;
1021
- void this.persistSszObject("BeaconBlock", sszType.serialize(data), sszType.hashTreeRoot(data), suffix);
1051
+ void this.persistSszObject("BeaconBlock", sszType.serialize(data), toRootHex(sszType.hashTreeRoot(data)), suffix);
1022
1052
  }
1023
1053
  }
1024
1054
  /**
@@ -1031,19 +1061,21 @@ export class BeaconChain {
1031
1061
  const postStateRoot = postState.hashTreeRoot();
1032
1062
  const logStr = `slot_${blockSlot}_invalid_state_root_${toRootHex(postStateRoot)}`;
1033
1063
  await Promise.all([
1034
- this.persistSszObject(`SignedBeaconBlock_slot_${blockSlot}`, blockType.serialize(block), blockType.hashTreeRoot(block), `${logStr}_block`),
1035
- this.persistSszObject(`preState_slot_${preState.slot}_BeaconState`, preState.serialize(), preState.hashTreeRoot(), `${logStr}_pre_state`),
1036
- this.persistSszObject(`postState_slot_${postState.slot}_BeaconState`, postState.serialize(), postState.hashTreeRoot(), `${logStr}_post_state`),
1064
+ this.persistSszObject(`SignedBeaconBlock_slot_${blockSlot}`, blockType.serialize(block), toRootHex(this.config.getForkTypes(blockSlot).BeaconBlock.hashTreeRoot(block.message)), `${logStr}_block`),
1065
+ this.persistSszObject(`preState_slot_${preState.slot}_BeaconState`, preState.serialize(), toRootHex(preState.hashTreeRoot()), `${logStr}_pre_state`),
1066
+ this.persistSszObject(`postState_slot_${postState.slot}_BeaconState`, postState.serialize(), toRootHex(postStateRoot), `${logStr}_post_state`),
1037
1067
  ]);
1038
1068
  }
1039
- persistInvalidSszValue(type, sszObject, suffix) {
1069
+ persistInvalidSszValue(type, sszObject, suffix, rootHex) {
1040
1070
  if (this.opts.persistInvalidSszObjects) {
1041
- void this.persistSszObject(type.typeName, type.serialize(sszObject), type.hashTreeRoot(sszObject), suffix);
1071
+ void this.persistSszObject(type.typeName, type.serialize(sszObject),
1072
+ // in SignedBeaconBlock case, we want to use BeaconBlock root instead
1073
+ rootHex ?? toRootHex(type.hashTreeRoot(sszObject)), suffix);
1042
1074
  }
1043
1075
  }
1044
- persistInvalidSszBytes(typeName, sszBytes, suffix) {
1076
+ persistInvalidSszBytes(typeName, sszBytes, rootHex, suffix) {
1045
1077
  if (this.opts.persistInvalidSszObjects) {
1046
- void this.persistSszObject(typeName, sszBytes, sszBytes, suffix);
1078
+ void this.persistSszObject(typeName, sszBytes, rootHex, suffix);
1047
1079
  }
1048
1080
  }
1049
1081
  /**
@@ -1152,13 +1184,13 @@ export class BeaconChain {
1152
1184
  // If there's no state available in the same branch of checkpoint use blockState regardless of its epoch
1153
1185
  return { state: blockState, stateId: "block_state_any_epoch", shouldWarn: true };
1154
1186
  }
1155
- async persistSszObject(prefix, bytes, root, logStr) {
1187
+ async persistSszObject(prefix, bytes, rootHex, logStr) {
1156
1188
  const now = new Date();
1157
1189
  // yyyy-MM-dd
1158
1190
  const dateStr = now.toISOString().split("T")[0];
1159
1191
  // by default store to lodestar_archive of current dir
1160
1192
  const dirpath = path.join(this.opts.persistInvalidSszObjectsDir ?? "invalid_ssz_objects", dateStr);
1161
- const filepath = path.join(dirpath, `${prefix}_${toRootHex(root)}.ssz`);
1193
+ const filepath = path.join(dirpath, `${prefix}_${rootHex}.ssz`);
1162
1194
  await ensureDir(dirpath);
1163
1195
  // as of Feb 17 2022 there are a lot of duplicate files stored with different date suffixes
1164
1196
  // remove date suffixes in file name, and check duplicate to avoid redundant persistence
@@ -1193,7 +1225,10 @@ export class BeaconChain {
1193
1225
  if (this.forkChoice.irrecoverableError) {
1194
1226
  this.processShutdownCallback(this.forkChoice.irrecoverableError);
1195
1227
  }
1228
+ // updateTime() recomputes the head on epoch-boundary checkpoint pull-up and under fast confirmation
1229
+ const prevHead = this.forkChoice.getHead();
1196
1230
  this.forkChoice.updateTime(slot);
1231
+ this.emitHeadEvents(prevHead, this.forkChoice.getHead());
1197
1232
  this.metrics?.clockSlot.set(slot);
1198
1233
  this.attestationPool.prune(slot);
1199
1234
  this.aggregatedAttestationPool.prune(slot);
@@ -1243,6 +1278,25 @@ export class BeaconChain {
1243
1278
  }
1244
1279
  async onForkChoiceFinalized(cp) {
1245
1280
  this.logger.verbose("Fork choice finalized", { epoch: cp.epoch, root: cp.rootHex });
1281
+ this.metrics?.finalizedEpoch.set(cp.epoch);
1282
+ const finalizedBlock = this.forkChoice.getBlockHexDefaultStatus(cp.rootHex);
1283
+ if (finalizedBlock) {
1284
+ // The callback runs synchronously inside fork choice checkpoint updates, defer writing to subscribers
1285
+ callInNextEventLoop(() => {
1286
+ this.emitter.emit(routes.events.EventType.finalizedCheckpoint, {
1287
+ block: cp.rootHex,
1288
+ epoch: cp.epoch,
1289
+ state: finalizedBlock.stateRoot,
1290
+ executionOptimistic: isOptimisticBlock(finalizedBlock),
1291
+ });
1292
+ });
1293
+ }
1294
+ else {
1295
+ this.logger.debug("Finalized block not found in fork choice, skip finalized_checkpoint event", {
1296
+ epoch: cp.epoch,
1297
+ root: cp.rootHex,
1298
+ });
1299
+ }
1246
1300
  const finalizedSlot = computeStartSlotAtEpoch(cp.epoch);
1247
1301
  this.seenBlockProposers.prune(finalizedSlot);
1248
1302
  // Update validator custody to account for effective balance changes