@lodestar/beacon-node 1.43.0-dev.2740f92909 → 1.43.0-dev.2fba242f5d

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 (387) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +17 -9
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/pool/index.js +45 -2
  6. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  7. package/lib/api/impl/beacon/state/utils.d.ts +2 -2
  8. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  9. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  10. package/lib/api/impl/debug/index.d.ts.map +1 -1
  11. package/lib/api/impl/debug/index.js +0 -1
  12. package/lib/api/impl/debug/index.js.map +1 -1
  13. package/lib/api/impl/lodestar/index.js +1 -1
  14. package/lib/api/impl/lodestar/index.js.map +1 -1
  15. package/lib/api/impl/validator/index.d.ts.map +1 -1
  16. package/lib/api/impl/validator/index.js +67 -5
  17. package/lib/api/impl/validator/index.js.map +1 -1
  18. package/lib/chain/GetBlobsTracker.d.ts +1 -1
  19. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  20. package/lib/chain/GetBlobsTracker.js +1 -2
  21. package/lib/chain/GetBlobsTracker.js.map +1 -1
  22. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  23. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  24. package/lib/chain/archiveStore/interface.d.ts +4 -4
  25. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  26. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +4 -4
  27. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  28. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +2 -4
  29. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  30. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +2 -2
  31. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  32. package/lib/chain/archiveStore/utils/archiveBlocks.js +110 -58
  33. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  34. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  35. package/lib/chain/blocks/importBlock.js +49 -53
  36. package/lib/chain/blocks/importBlock.js.map +1 -1
  37. package/lib/chain/blocks/importExecutionPayload.d.ts +28 -14
  38. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  39. package/lib/chain/blocks/importExecutionPayload.js +88 -88
  40. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  41. package/lib/chain/blocks/index.d.ts +5 -3
  42. package/lib/chain/blocks/index.d.ts.map +1 -1
  43. package/lib/chain/blocks/index.js +59 -26
  44. package/lib/chain/blocks/index.js.map +1 -1
  45. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +4 -0
  46. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
  47. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +25 -1
  48. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
  49. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +1 -0
  50. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  51. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +5 -0
  52. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
  53. package/lib/chain/blocks/payloadEnvelopeProcessor.js +7 -5
  54. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  55. package/lib/chain/blocks/types.d.ts +16 -21
  56. package/lib/chain/blocks/types.d.ts.map +1 -1
  57. package/lib/chain/blocks/utils/chainSegment.d.ts +23 -2
  58. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
  59. package/lib/chain/blocks/utils/chainSegment.js +89 -12
  60. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  61. package/lib/chain/blocks/verifyBlock.d.ts +5 -3
  62. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  63. package/lib/chain/blocks/verifyBlock.js +50 -7
  64. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  65. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +0 -4
  66. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  67. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -2
  68. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  69. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts +2 -1
  70. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  71. package/lib/chain/blocks/verifyBlocksSanityChecks.js +25 -5
  72. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  73. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +24 -0
  74. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -0
  75. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +76 -0
  76. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -0
  77. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +14 -0
  78. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -0
  79. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +30 -0
  80. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -0
  81. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts +1 -1
  82. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts.map +1 -1
  83. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js +2 -11
  84. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js.map +1 -1
  85. package/lib/chain/chain.d.ts +8 -6
  86. package/lib/chain/chain.d.ts.map +1 -1
  87. package/lib/chain/chain.js +38 -43
  88. package/lib/chain/chain.js.map +1 -1
  89. package/lib/chain/emitter.d.ts +16 -15
  90. package/lib/chain/emitter.d.ts.map +1 -1
  91. package/lib/chain/emitter.js +5 -4
  92. package/lib/chain/emitter.js.map +1 -1
  93. package/lib/chain/errors/attestationError.d.ts +8 -1
  94. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  95. package/lib/chain/errors/attestationError.js +4 -0
  96. package/lib/chain/errors/attestationError.js.map +1 -1
  97. package/lib/chain/errors/blockError.d.ts +8 -1
  98. package/lib/chain/errors/blockError.d.ts.map +1 -1
  99. package/lib/chain/errors/blockError.js +2 -0
  100. package/lib/chain/errors/blockError.js.map +1 -1
  101. package/lib/chain/errors/executionPayloadBid.d.ts +5 -0
  102. package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
  103. package/lib/chain/errors/executionPayloadBid.js +1 -0
  104. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  105. package/lib/chain/errors/executionPayloadEnvelope.d.ts +5 -0
  106. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  107. package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
  108. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  109. package/lib/chain/errors/index.d.ts +1 -0
  110. package/lib/chain/errors/index.d.ts.map +1 -1
  111. package/lib/chain/errors/index.js +1 -0
  112. package/lib/chain/errors/index.js.map +1 -1
  113. package/lib/chain/errors/proposerPreferences.d.ts +33 -0
  114. package/lib/chain/errors/proposerPreferences.d.ts.map +1 -0
  115. package/lib/chain/errors/proposerPreferences.js +13 -0
  116. package/lib/chain/errors/proposerPreferences.js.map +1 -0
  117. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  118. package/lib/chain/forkChoice/index.js +11 -15
  119. package/lib/chain/forkChoice/index.js.map +1 -1
  120. package/lib/chain/interface.d.ts +7 -5
  121. package/lib/chain/interface.d.ts.map +1 -1
  122. package/lib/chain/interface.js.map +1 -1
  123. package/lib/chain/opPools/payloadAttestationPool.d.ts +3 -2
  124. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  125. package/lib/chain/opPools/payloadAttestationPool.js +26 -4
  126. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  127. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  128. package/lib/chain/prepareNextSlot.js +47 -23
  129. package/lib/chain/prepareNextSlot.js.map +1 -1
  130. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +3 -9
  131. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  132. package/lib/chain/produceBlock/computeNewStateRoot.js +5 -32
  133. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  134. package/lib/chain/produceBlock/produceBlockBody.d.ts +12 -8
  135. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  136. package/lib/chain/produceBlock/produceBlockBody.js +67 -25
  137. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  138. package/lib/chain/regen/errors.d.ts +1 -11
  139. package/lib/chain/regen/errors.d.ts.map +1 -1
  140. package/lib/chain/regen/errors.js +0 -2
  141. package/lib/chain/regen/errors.js.map +1 -1
  142. package/lib/chain/regen/interface.d.ts +7 -12
  143. package/lib/chain/regen/interface.d.ts.map +1 -1
  144. package/lib/chain/regen/interface.js +1 -0
  145. package/lib/chain/regen/interface.js.map +1 -1
  146. package/lib/chain/regen/queued.d.ts +6 -11
  147. package/lib/chain/regen/queued.d.ts.map +1 -1
  148. package/lib/chain/regen/queued.js +9 -44
  149. package/lib/chain/regen/queued.js.map +1 -1
  150. package/lib/chain/regen/regen.d.ts +0 -5
  151. package/lib/chain/regen/regen.d.ts.map +1 -1
  152. package/lib/chain/regen/regen.js +8 -38
  153. package/lib/chain/regen/regen.js.map +1 -1
  154. package/lib/chain/seenCache/index.d.ts +1 -0
  155. package/lib/chain/seenCache/index.d.ts.map +1 -1
  156. package/lib/chain/seenCache/index.js +1 -0
  157. package/lib/chain/seenCache/index.js.map +1 -1
  158. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +19 -6
  159. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  160. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +40 -22
  161. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  162. package/lib/chain/seenCache/seenProposerPreferences.d.ts +15 -0
  163. package/lib/chain/seenCache/seenProposerPreferences.d.ts.map +1 -0
  164. package/lib/chain/seenCache/seenProposerPreferences.js +25 -0
  165. package/lib/chain/seenCache/seenProposerPreferences.js.map +1 -0
  166. package/lib/chain/stateCache/datastore/db.d.ts +5 -4
  167. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  168. package/lib/chain/stateCache/datastore/db.js +10 -32
  169. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  170. package/lib/chain/stateCache/datastore/file.d.ts +1 -1
  171. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  172. package/lib/chain/stateCache/datastore/file.js +5 -5
  173. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  174. package/lib/chain/stateCache/datastore/types.d.ts +1 -1
  175. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -1
  176. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +1 -7
  177. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  178. package/lib/chain/stateCache/fifoBlockStateCache.js +0 -8
  179. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  180. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +13 -30
  181. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  182. package/lib/chain/stateCache/persistentCheckpointsCache.js +120 -216
  183. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  184. package/lib/chain/stateCache/types.d.ts +8 -15
  185. package/lib/chain/stateCache/types.d.ts.map +1 -1
  186. package/lib/chain/stateCache/types.js.map +1 -1
  187. package/lib/chain/validation/aggregateAndProof.js +12 -0
  188. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  189. package/lib/chain/validation/attestation.d.ts.map +1 -1
  190. package/lib/chain/validation/attestation.js +12 -0
  191. package/lib/chain/validation/attestation.js.map +1 -1
  192. package/lib/chain/validation/block.d.ts.map +1 -1
  193. package/lib/chain/validation/block.js +1 -0
  194. package/lib/chain/validation/block.js.map +1 -1
  195. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  196. package/lib/chain/validation/executionPayloadBid.js +13 -1
  197. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  198. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  199. package/lib/chain/validation/executionPayloadEnvelope.js +21 -11
  200. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  201. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
  202. package/lib/chain/validation/payloadAttestationMessage.js +4 -3
  203. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  204. package/lib/chain/validation/proposerPreferences.d.ts +8 -0
  205. package/lib/chain/validation/proposerPreferences.d.ts.map +1 -0
  206. package/lib/chain/validation/proposerPreferences.js +69 -0
  207. package/lib/chain/validation/proposerPreferences.js.map +1 -0
  208. package/lib/db/repositories/executionPayloadEnvelopeArchive.js +1 -1
  209. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -1
  210. package/lib/execution/engine/http.d.ts.map +1 -1
  211. package/lib/execution/engine/http.js +21 -14
  212. package/lib/execution/engine/http.js.map +1 -1
  213. package/lib/execution/engine/interface.d.ts +1 -0
  214. package/lib/execution/engine/interface.d.ts.map +1 -1
  215. package/lib/execution/engine/mock.d.ts.map +1 -1
  216. package/lib/execution/engine/mock.js +6 -0
  217. package/lib/execution/engine/mock.js.map +1 -1
  218. package/lib/execution/engine/types.d.ts +20 -0
  219. package/lib/execution/engine/types.d.ts.map +1 -1
  220. package/lib/execution/engine/types.js +18 -0
  221. package/lib/execution/engine/types.js.map +1 -1
  222. package/lib/metrics/metrics/lodestar.d.ts +1 -0
  223. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  224. package/lib/metrics/metrics/lodestar.js +4 -0
  225. package/lib/metrics/metrics/lodestar.js.map +1 -1
  226. package/lib/network/gossip/interface.d.ts +7 -1
  227. package/lib/network/gossip/interface.d.ts.map +1 -1
  228. package/lib/network/gossip/interface.js +1 -0
  229. package/lib/network/gossip/interface.js.map +1 -1
  230. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  231. package/lib/network/gossip/scoringParameters.js +12 -1
  232. package/lib/network/gossip/scoringParameters.js.map +1 -1
  233. package/lib/network/gossip/topic.d.ts +30 -748
  234. package/lib/network/gossip/topic.d.ts.map +1 -1
  235. package/lib/network/gossip/topic.js +6 -0
  236. package/lib/network/gossip/topic.js.map +1 -1
  237. package/lib/network/interface.d.ts +1 -0
  238. package/lib/network/interface.d.ts.map +1 -1
  239. package/lib/network/network.d.ts +1 -0
  240. package/lib/network/network.d.ts.map +1 -1
  241. package/lib/network/network.js +6 -1
  242. package/lib/network/network.js.map +1 -1
  243. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  244. package/lib/network/processor/gossipHandlers.js +46 -22
  245. package/lib/network/processor/gossipHandlers.js.map +1 -1
  246. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
  247. package/lib/network/processor/gossipQueues/index.js +5 -0
  248. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  249. package/lib/network/processor/index.d.ts.map +1 -1
  250. package/lib/network/processor/index.js +6 -5
  251. package/lib/network/processor/index.js.map +1 -1
  252. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  253. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +14 -6
  254. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  255. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  256. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +11 -5
  257. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  258. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  259. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +17 -5
  260. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  261. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -1
  262. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +7 -4
  263. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -1
  264. package/lib/node/nodejs.d.ts.map +1 -1
  265. package/lib/node/nodejs.js +6 -4
  266. package/lib/node/nodejs.js.map +1 -1
  267. package/lib/sync/range/batch.d.ts +23 -2
  268. package/lib/sync/range/batch.d.ts.map +1 -1
  269. package/lib/sync/range/batch.js +84 -33
  270. package/lib/sync/range/batch.js.map +1 -1
  271. package/lib/sync/range/chain.d.ts +6 -2
  272. package/lib/sync/range/chain.d.ts.map +1 -1
  273. package/lib/sync/range/chain.js +26 -7
  274. package/lib/sync/range/chain.js.map +1 -1
  275. package/lib/sync/range/range.d.ts.map +1 -1
  276. package/lib/sync/range/range.js +17 -6
  277. package/lib/sync/range/range.js.map +1 -1
  278. package/lib/sync/types.d.ts +34 -0
  279. package/lib/sync/types.d.ts.map +1 -1
  280. package/lib/sync/types.js +34 -0
  281. package/lib/sync/types.js.map +1 -1
  282. package/lib/sync/unknownBlock.d.ts +22 -1
  283. package/lib/sync/unknownBlock.d.ts.map +1 -1
  284. package/lib/sync/unknownBlock.js +602 -53
  285. package/lib/sync/unknownBlock.js.map +1 -1
  286. package/lib/sync/utils/downloadByRange.d.ts +46 -10
  287. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  288. package/lib/sync/utils/downloadByRange.js +164 -24
  289. package/lib/sync/utils/downloadByRange.js.map +1 -1
  290. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  291. package/lib/sync/utils/downloadByRoot.js +16 -2
  292. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  293. package/lib/sync/utils/pendingBlocksTree.d.ts +0 -1
  294. package/lib/sync/utils/pendingBlocksTree.d.ts.map +1 -1
  295. package/lib/sync/utils/pendingBlocksTree.js +0 -9
  296. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  297. package/lib/util/sszBytes.d.ts.map +1 -1
  298. package/lib/util/sszBytes.js +16 -3
  299. package/lib/util/sszBytes.js.map +1 -1
  300. package/package.json +17 -16
  301. package/src/api/impl/beacon/blocks/index.ts +22 -9
  302. package/src/api/impl/beacon/pool/index.ts +83 -1
  303. package/src/api/impl/beacon/state/utils.ts +2 -2
  304. package/src/api/impl/debug/index.ts +0 -1
  305. package/src/api/impl/lodestar/index.ts +1 -1
  306. package/src/api/impl/validator/index.ts +83 -6
  307. package/src/chain/GetBlobsTracker.ts +1 -2
  308. package/src/chain/archiveStore/archiveStore.ts +5 -5
  309. package/src/chain/archiveStore/interface.ts +4 -4
  310. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +6 -8
  311. package/src/chain/archiveStore/utils/archiveBlocks.ts +153 -94
  312. package/src/chain/blocks/importBlock.ts +50 -77
  313. package/src/chain/blocks/importExecutionPayload.ts +109 -101
  314. package/src/chain/blocks/index.ts +74 -24
  315. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +33 -1
  316. package/src/chain/blocks/payloadEnvelopeInput/types.ts +1 -0
  317. package/src/chain/blocks/payloadEnvelopeProcessor.ts +7 -6
  318. package/src/chain/blocks/types.ts +16 -26
  319. package/src/chain/blocks/utils/chainSegment.ts +114 -17
  320. package/src/chain/blocks/verifyBlock.ts +70 -9
  321. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +6 -4
  322. package/src/chain/blocks/verifyBlocksSanityChecks.ts +26 -7
  323. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +129 -0
  324. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +41 -0
  325. package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +9 -18
  326. package/src/chain/chain.ts +53 -65
  327. package/src/chain/emitter.ts +15 -14
  328. package/src/chain/errors/attestationError.ts +6 -1
  329. package/src/chain/errors/blockError.ts +4 -1
  330. package/src/chain/errors/executionPayloadBid.ts +6 -0
  331. package/src/chain/errors/executionPayloadEnvelope.ts +6 -0
  332. package/src/chain/errors/index.ts +1 -0
  333. package/src/chain/errors/proposerPreferences.ts +39 -0
  334. package/src/chain/forkChoice/index.ts +8 -20
  335. package/src/chain/interface.ts +11 -3
  336. package/src/chain/opPools/payloadAttestationPool.ts +29 -8
  337. package/src/chain/prepareNextSlot.ts +55 -24
  338. package/src/chain/produceBlock/computeNewStateRoot.ts +6 -43
  339. package/src/chain/produceBlock/produceBlockBody.ts +89 -27
  340. package/src/chain/regen/errors.ts +1 -6
  341. package/src/chain/regen/interface.ts +7 -12
  342. package/src/chain/regen/queued.ts +14 -55
  343. package/src/chain/regen/regen.ts +10 -43
  344. package/src/chain/seenCache/index.ts +1 -0
  345. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +47 -25
  346. package/src/chain/seenCache/seenProposerPreferences.ts +29 -0
  347. package/src/chain/stateCache/datastore/db.ts +10 -33
  348. package/src/chain/stateCache/datastore/file.ts +5 -6
  349. package/src/chain/stateCache/datastore/types.ts +2 -3
  350. package/src/chain/stateCache/fifoBlockStateCache.ts +1 -10
  351. package/src/chain/stateCache/persistentCheckpointsCache.ts +139 -247
  352. package/src/chain/stateCache/types.ts +8 -14
  353. package/src/chain/validation/aggregateAndProof.ts +13 -0
  354. package/src/chain/validation/attestation.ts +13 -0
  355. package/src/chain/validation/block.ts +1 -0
  356. package/src/chain/validation/executionPayloadBid.ts +14 -0
  357. package/src/chain/validation/executionPayloadEnvelope.ts +22 -12
  358. package/src/chain/validation/payloadAttestationMessage.ts +5 -3
  359. package/src/chain/validation/proposerPreferences.ts +91 -0
  360. package/src/db/repositories/executionPayloadEnvelopeArchive.ts +1 -1
  361. package/src/execution/engine/http.ts +21 -14
  362. package/src/execution/engine/interface.ts +1 -0
  363. package/src/execution/engine/mock.ts +8 -1
  364. package/src/execution/engine/types.ts +41 -0
  365. package/src/metrics/metrics/lodestar.ts +4 -0
  366. package/src/network/gossip/interface.ts +6 -0
  367. package/src/network/gossip/scoringParameters.ts +14 -1
  368. package/src/network/gossip/topic.ts +6 -0
  369. package/src/network/interface.ts +1 -0
  370. package/src/network/network.ts +12 -1
  371. package/src/network/processor/gossipHandlers.ts +61 -27
  372. package/src/network/processor/gossipQueues/index.ts +5 -0
  373. package/src/network/processor/index.ts +6 -5
  374. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +14 -6
  375. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +11 -5
  376. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +17 -5
  377. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +7 -4
  378. package/src/node/nodejs.ts +6 -4
  379. package/src/sync/range/batch.ts +142 -38
  380. package/src/sync/range/chain.ts +37 -9
  381. package/src/sync/range/range.ts +18 -6
  382. package/src/sync/types.ts +72 -0
  383. package/src/sync/unknownBlock.ts +760 -57
  384. package/src/sync/utils/downloadByRange.ts +274 -39
  385. package/src/sync/utils/downloadByRoot.ts +24 -2
  386. package/src/sync/utils/pendingBlocksTree.ts +0 -15
  387. package/src/util/sszBytes.ts +21 -3
@@ -28,9 +28,10 @@ async function persistOrphanedBlock(slot, blockRoot, bytes, opts) {
28
28
  * the next run should not reprocess finalzied block of this run.
29
29
  */
30
30
  export async function archiveBlocks(config, db, forkChoice, lightclientServer, logger, finalizedCheckpoint, currentEpoch, archiveDataEpochs, persistOrphanedBlocks, persistOrphanedBlocksDir) {
31
- // Use fork choice to determine the blocks to archive and delete
32
- // getAllAncestorBlocks response includes the finalized block, so it's also moved to the cold db
33
- const { ancestors: finalizedCanonicalBlocks, nonAncestors: finalizedNonCanonicalBlocks } = forkChoice.getAllAncestorAndNonAncestorBlocks(finalizedCheckpoint.rootHex, finalizedCheckpoint.payloadStatus);
31
+ // Use fork choice to determine the blocks to archive and delete.
32
+ // `ancestors` is the canonical walk back from the finalized root, including the previous finalized
33
+ // block as its last element.
34
+ const { ancestors: finalizedCanonicalBlocks, nonAncestors: finalizedNonCanonicalBlocks } = forkChoice.getAllAncestorAndNonAncestorBlocksDefaultStatus(finalizedCheckpoint.rootHex);
34
35
  // NOTE: The finalized block will be exactly the first block of `epoch` or previous
35
36
  const finalizedPostDeneb = finalizedCheckpoint.epoch >= config.DENEB_FORK_EPOCH;
36
37
  const finalizedPostFulu = finalizedCheckpoint.epoch >= config.FULU_FORK_EPOCH;
@@ -41,24 +42,34 @@ export async function archiveBlocks(config, db, forkChoice, lightclientServer, l
41
42
  }));
42
43
  const logCtx = { currentEpoch, finalizedEpoch: finalizedCheckpoint.epoch, finalizedRoot: finalizedCheckpoint.rootHex };
43
44
  if (finalizedCanonicalBlockRoots.length > 0) {
44
- await migrateBlocksFromHotToColdDb(db, finalizedCanonicalBlockRoots);
45
+ const migratedSlots = await migrateBlocksFromHotToColdDb(db, logger, finalizedCanonicalBlockRoots);
45
46
  logger.verbose("Migrated blocks from hot DB to cold DB", {
46
47
  ...logCtx,
47
48
  fromSlot: finalizedCanonicalBlockRoots[0].slot,
48
49
  toSlot: finalizedCanonicalBlockRoots.at(-1)?.slot,
49
50
  size: finalizedCanonicalBlockRoots.length,
51
+ migratedEntries: migratedSlots.length,
52
+ slotRange: prettyPrintIndices(migratedSlots),
50
53
  });
51
54
  if (finalizedPostDeneb) {
52
- const migratedEntries = await migrateBlobSidecarsFromHotToColdDb(config, db, finalizedCanonicalBlockRoots, currentEpoch);
55
+ const migratedEntries = await migrateBlobSidecarsFromHotToColdDb(config, db, logger, finalizedCanonicalBlockRoots, currentEpoch);
53
56
  logger.verbose("Migrated blobSidecars from hot DB to cold DB", { ...logCtx, migratedEntries });
54
57
  }
55
58
  if (finalizedPostFulu) {
56
- const migratedEntries = await migrateDataColumnSidecarsFromHotToColdDb(config, db, logger, finalizedCanonicalBlockRoots, currentEpoch);
57
- logger.verbose("Migrated dataColumnSidecars from hot DB to cold DB", { ...logCtx, migratedEntries });
59
+ const migratedSlots = await migrateDataColumnSidecarsFromHotToColdDb(config, db, logger, finalizedCanonicalBlocks, currentEpoch);
60
+ logger.verbose("Migrated dataColumnSidecars from hot DB to cold DB", {
61
+ ...logCtx,
62
+ migratedEntries: migratedSlots.length,
63
+ slotRange: prettyPrintIndices(migratedSlots),
64
+ });
58
65
  }
59
66
  if (finalizedPostGloas) {
60
- const migratedEntries = await migrateExecutionPayloadEnvelopesFromHotToColdDb(config, db, logger, finalizedCanonicalBlocks);
61
- logger.verbose("Migrated executionPayloadEnvelopes from hot DB to cold DB", { ...logCtx, migratedEntries });
67
+ const migratedSlots = await migrateExecutionPayloadEnvelopesFromHotToColdDb(config, db, logger, finalizedCanonicalBlocks);
68
+ logger.verbose("Migrated executionPayloadEnvelopes from hot DB to cold DB", {
69
+ ...logCtx,
70
+ migratedEntries: migratedSlots.length,
71
+ slotRange: prettyPrintIndices(migratedSlots),
72
+ });
62
73
  }
63
74
  }
64
75
  // deleteNonCanonicalBlocks
@@ -82,22 +93,25 @@ export async function archiveBlocks(config, db, forkChoice, lightclientServer, l
82
93
  }
83
94
  }));
84
95
  }
85
- await db.block.batchDelete(nonCanonicalBlockRoots);
86
- logger.verbose("Deleted non canonical blocks from hot DB", {
96
+ const nonCanonicalSlots = finalizedNonCanonicalBlocks.map((summary) => summary.slot).sort((a, b) => a - b);
97
+ const nonCanonicalLogCtx = {
87
98
  ...logCtx,
88
- slots: finalizedNonCanonicalBlocks.map((summary) => summary.slot).join(","),
89
- });
99
+ count: nonCanonicalBlockRoots.length,
100
+ slotRange: prettyPrintIndices(nonCanonicalSlots),
101
+ };
102
+ await db.block.batchDelete(nonCanonicalBlockRoots);
103
+ logger.verbose("Deleted non canonical blocks from hot DB", nonCanonicalLogCtx);
90
104
  if (finalizedPostDeneb) {
91
105
  await db.blobSidecars.batchDelete(nonCanonicalBlockRoots);
92
- logger.verbose("Deleted non canonical blobSidecars from hot DB", logCtx);
106
+ logger.verbose("Deleted non canonical blobSidecars from hot DB", nonCanonicalLogCtx);
93
107
  }
94
108
  if (finalizedPostFulu) {
95
109
  await db.dataColumnSidecar.deleteMany(nonCanonicalBlockRoots);
96
- logger.verbose("Deleted non canonical dataColumnSidecars from hot DB", logCtx);
110
+ logger.verbose("Deleted non canonical dataColumnSidecars from hot DB", nonCanonicalLogCtx);
97
111
  }
98
112
  if (finalizedPostGloas) {
99
113
  await db.executionPayloadEnvelope.batchDelete(nonCanonicalBlockRoots);
100
- logger.verbose("Deleted non canonical executionPayloadEnvelopes from hot DB", logCtx);
114
+ logger.verbose("Deleted non canonical executionPayloadEnvelopes from hot DB", nonCanonicalLogCtx);
101
115
  }
102
116
  }
103
117
  // Delete expired blobs
@@ -170,22 +184,25 @@ export async function archiveBlocks(config, db, forkChoice, lightclientServer, l
170
184
  totalArchived: finalizedCanonicalBlocks.length,
171
185
  });
172
186
  }
173
- async function migrateBlocksFromHotToColdDb(db, blocks) {
174
- // Start from `i=0`: 1st block in iterateAncestorBlocks() is the finalized block itself
175
- // we move it to blockArchive but forkchoice still have it to check next onBlock calls
176
- // the next iterateAncestorBlocks call does not return this block
187
+ async function migrateBlocksFromHotToColdDb(db, logger, blocks) {
188
+ // The input includes the previous finalized block as the last ancestor; its SignedBeaconBlock
189
+ // was archived on a previous run and is no longer in hot db. `getBinary` returning null for any
190
+ // block in the batch is therefore treated as "already migrated, skip" rather than an error.
191
+ const migratedSlots = [];
177
192
  for (let i = 0; i < blocks.length; i += BLOCK_BATCH_SIZE) {
178
193
  const toIdx = Math.min(i + BLOCK_BATCH_SIZE, blocks.length);
179
194
  const canonicalBlocks = blocks.slice(i, toIdx);
180
- // processCanonicalBlocks
181
195
  if (canonicalBlocks.length === 0)
182
- return;
196
+ break;
183
197
  // load Buffer instead of SignedBeaconBlock to improve performance
184
- const canonicalBlockEntries = await Promise.all(canonicalBlocks.map(async (block) => {
185
- // Here we assume the blocks are already in the hot db
198
+ const canonicalBlockEntries = (await Promise.all(canonicalBlocks.map(async (block) => {
186
199
  const blockBuffer = await db.block.getBinary(block.root);
187
200
  if (!blockBuffer) {
188
- throw Error(`Block not found for slot ${block.slot} root ${toRootHex(block.root)}`);
201
+ logger.debug("Block in forkchoice but missing in hot db, could be already archived", {
202
+ slot: block.slot,
203
+ root: toRootHex(block.root),
204
+ });
205
+ return null;
189
206
  }
190
207
  return {
191
208
  key: block.slot,
@@ -195,19 +212,24 @@ async function migrateBlocksFromHotToColdDb(db, blocks) {
195
212
  // TODO: Benchmark if faster to slice Buffer or fromHex()
196
213
  parentRoot: getParentRootFromSignedBlock(blockBuffer),
197
214
  };
198
- }));
199
- // put to blockArchive db and delete block db
215
+ }))).filter((entry) => entry !== null);
216
+ if (canonicalBlockEntries.length === 0)
217
+ continue;
200
218
  await Promise.all([
201
219
  db.blockArchive.batchPutBinary(canonicalBlockEntries),
202
- db.block.batchDelete(canonicalBlocks.map((block) => block.root)),
220
+ db.block.batchDelete(canonicalBlockEntries.map((entry) => entry.blockRoot)),
203
221
  ]);
222
+ for (const entry of canonicalBlockEntries)
223
+ migratedSlots.push(entry.slot);
204
224
  }
225
+ // Ancestor walk is newest → oldest; sort ascending so `prettyPrintIndices` renders cleanly.
226
+ return migratedSlots.sort((a, b) => a - b);
205
227
  }
206
228
  /**
207
229
  * Migrate blobSidecars from hot db to cold db.
208
230
  * @returns true if we do that, false if block is out of range data.
209
231
  */
210
- async function migrateBlobSidecarsFromHotToColdDb(config, db, blocks, currentEpoch) {
232
+ async function migrateBlobSidecarsFromHotToColdDb(config, db, logger, blocks, currentEpoch) {
211
233
  let migratedWrappedBlobSidecars = 0;
212
234
  for (let i = 0; i < blocks.length; i += BLOB_SIDECAR_BATCH_SIZE) {
213
235
  const toIdx = Math.min(i + BLOB_SIDECAR_BATCH_SIZE, blocks.length);
@@ -216,7 +238,7 @@ async function migrateBlobSidecarsFromHotToColdDb(config, db, blocks, currentEpo
216
238
  if (canonicalBlocks.length === 0)
217
239
  break;
218
240
  // load Buffer instead of ssz deserialized to improve performance
219
- const canonicalBlobSidecarsEntries = await Promise.all(canonicalBlocks
241
+ const canonicalBlobSidecarsEntries = (await Promise.all(canonicalBlocks
220
242
  .filter((block) => {
221
243
  const blockSlot = block.slot;
222
244
  const blockEpoch = computeEpochAtSlot(blockSlot);
@@ -227,14 +249,19 @@ async function migrateBlobSidecarsFromHotToColdDb(config, db, blocks, currentEpo
227
249
  blockEpoch >= currentEpoch - config.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS);
228
250
  })
229
251
  .map(async (block) => {
230
- // Here we assume the blob sidecars are already in the hot db
231
- // instead of checking first the block input cache
252
+ // The ancestor walk includes the boundary (previous finalized) block; on first
253
+ // finalization that boundary is the anchor which has no blob sidecars in hot db.
254
+ // Treat a null hot-db entry as "nothing to migrate" rather than an error.
232
255
  const bytes = await db.blobSidecars.getBinary(block.root);
233
256
  if (!bytes) {
234
- throw Error(`No blobSidecars found for slot ${block.slot} root ${toRootHex(block.root)}`);
257
+ logger.debug("BlobSidecars in forkchoice but missing in hot db, could be already archived", {
258
+ slot: block.slot,
259
+ root: toRootHex(block.root),
260
+ });
261
+ return null;
235
262
  }
236
263
  return { key: block.slot, value: bytes };
237
- }));
264
+ }))).filter((e) => e !== null);
238
265
  // put to blockArchive db and delete block db
239
266
  await Promise.all([
240
267
  db.blobSidecarsArchive.batchPutBinary(canonicalBlobSidecarsEntries),
@@ -245,17 +272,27 @@ async function migrateBlobSidecarsFromHotToColdDb(config, db, blocks, currentEpo
245
272
  return migratedWrappedBlobSidecars;
246
273
  }
247
274
  // TODO: This function can be simplified further by reducing layers of promises in a loop
248
- async function migrateDataColumnSidecarsFromHotToColdDb(config, db, logger, blocks, currentEpoch) {
249
- let migratedWrappedDataColumns = 0;
275
+ /**
276
+ * Post-gloas the data columns of a Gloas block are tied to its execution payload envelope —
277
+ * columns only exist once the FULL variant of the block is in the proto-array. Pre-Gloas (Fulu)
278
+ * blocks only have a FULL variant, so the `payloadStatus === FULL` filter passes them all.
279
+ * Blocks whose canonical variant is PENDING/EMPTY are skipped here — their columns will be picked
280
+ * up on a later run once the FULL variant appears in the ancestor walk.
281
+ */
282
+ async function migrateDataColumnSidecarsFromHotToColdDb(config, db, logger, canonicalBlocks, currentEpoch) {
283
+ const columnBlocks = canonicalBlocks.filter((block) => config.getForkSeq(block.slot) < ForkSeq.gloas || block.payloadStatus === PayloadStatus.FULL);
284
+ if (columnBlocks.length === 0)
285
+ return [];
286
+ const blocks = columnBlocks.map((block) => ({ slot: block.slot, root: fromHex(block.blockRoot) }));
287
+ const migratedSlots = [];
250
288
  for (let i = 0; i < blocks.length; i += BLOB_SIDECAR_BATCH_SIZE) {
251
289
  const toIdx = Math.min(i + BLOB_SIDECAR_BATCH_SIZE, blocks.length);
252
- const canonicalBlocks = blocks.slice(i, toIdx);
253
- // processCanonicalBlocks
254
- if (canonicalBlocks.length === 0)
290
+ const batch = blocks.slice(i, toIdx);
291
+ if (batch.length === 0)
255
292
  break;
256
293
  const promises = [];
257
294
  // load Buffer instead of ssz deserialized to improve performance
258
- for (const block of canonicalBlocks) {
295
+ for (const block of batch) {
259
296
  const blockSlot = block.slot;
260
297
  const blockEpoch = computeEpochAtSlot(blockSlot);
261
298
  if (config.getForkSeq(blockSlot) < ForkSeq.fulu ||
@@ -265,27 +302,38 @@ async function migrateDataColumnSidecarsFromHotToColdDb(config, db, logger, bloc
265
302
  }
266
303
  // Here we assume the data column sidecars are already in the hot db
267
304
  const dataColumnSidecarBytes = await fromAsync(db.dataColumnSidecar.valuesStreamBinary(block.root));
268
- // there could be 0 dataColumnSidecarBytes if block has no blob
269
- logger.verbose("migrateDataColumnSidecarsFromHotToColdDb", {
305
+ if (dataColumnSidecarBytes.length === 0) {
306
+ // Empty stream: either the block has no blobs, or columns were already archived on a
307
+ // previous run (boundary block). Nothing to migrate.
308
+ logger.debug("DataColumnSidecars in forkchoice but missing in hot db, could be already archived", {
309
+ slot: block.slot,
310
+ root: toRootHex(block.root),
311
+ });
312
+ continue;
313
+ }
314
+ logger.verbose("Migrated dataColumnSidecars for block", {
270
315
  currentEpoch,
271
316
  slot: block.slot,
272
317
  root: toRootHex(block.root),
273
318
  numSidecars: dataColumnSidecarBytes.length,
274
319
  });
275
320
  promises.push(db.dataColumnSidecarArchive.putManyBinary(block.slot, dataColumnSidecarBytes.map((p) => ({ key: p.id, value: p.value }))));
276
- migratedWrappedDataColumns += dataColumnSidecarBytes.length;
321
+ migratedSlots.push(block.slot);
277
322
  }
278
- promises.push(db.dataColumnSidecar.deleteMany(canonicalBlocks.map((block) => block.root)));
279
- // put to blockArchive db and delete block db
323
+ promises.push(db.dataColumnSidecar.deleteMany(batch.map((block) => block.root)));
280
324
  await Promise.all(promises);
281
325
  }
282
- return migratedWrappedDataColumns;
326
+ // Ancestor walk is newest → oldest; sort ascending so `prettyPrintIndices` renders cleanly.
327
+ return migratedSlots.sort((a, b) => a - b);
283
328
  }
329
+ /**
330
+ * Post-gloas given a finalized checkpoint at a block root, payload of that block root
331
+ * is not considered finalized, hence they are archived in the next run.
332
+ */
284
333
  async function migrateExecutionPayloadEnvelopesFromHotToColdDb(config, db, logger, canonicalBlocks) {
285
- let migratedEnvelopes = 0;
286
- const payloadBlocks = canonicalBlocks.filter((block) => config.getForkSeq(block.slot) >= ForkSeq.gloas && block.payloadStatus === PayloadStatus.FULL);
334
+ const payloadBlocks = canonicalBlocks.filter((block) => config.getForkSeq(block.slot) < ForkSeq.gloas || block.payloadStatus === PayloadStatus.FULL);
287
335
  if (payloadBlocks.length === 0)
288
- return 0;
336
+ return [];
289
337
  const blocks = payloadBlocks.map((block) => ({ slot: block.slot, root: fromHex(block.blockRoot) }));
290
338
  const envelopeEntries = [];
291
339
  const migratedRoots = [];
@@ -297,17 +345,21 @@ async function migrateExecutionPayloadEnvelopesFromHotToColdDb(config, db, logge
297
345
  migratedRoots.push(blocks[i].root);
298
346
  }
299
347
  else {
300
- logger.debug("Payload in forkchoice but missing in db", { slot: blocks[i].slot, root: toRootHex(blocks[i].root) });
348
+ logger.debug("ExecutionPayloadEnvelope in forkchoice but missing in hot db, could be already archived", {
349
+ slot: blocks[i].slot,
350
+ root: toRootHex(blocks[i].root),
351
+ });
301
352
  }
302
353
  }
303
- if (envelopeEntries.length > 0) {
304
- await Promise.all([
305
- db.executionPayloadEnvelopeArchive.batchPutBinary(envelopeEntries),
306
- db.executionPayloadEnvelope.batchDelete(migratedRoots),
307
- ]);
308
- migratedEnvelopes = envelopeEntries.length;
309
- }
310
- return migratedEnvelopes;
354
+ if (envelopeEntries.length === 0)
355
+ return [];
356
+ await Promise.all([
357
+ db.executionPayloadEnvelopeArchive.batchPutBinary(envelopeEntries),
358
+ db.executionPayloadEnvelope.batchDelete(migratedRoots),
359
+ ]);
360
+ // Slots are ascending in hot-db key order — sort to guarantee `prettyPrintIndices` output is clean
361
+ // regardless of ancestor-walk order (newest → oldest).
362
+ return envelopeEntries.map((entry) => entry.key).sort((a, b) => a - b);
311
363
  }
312
364
  /**
313
365
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"archiveBlocks.js","sourceRoot":"","sources":["../../../../src/chain/archiveStore/utils/archiveBlocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"archiveBlocks.js","sourceRoot":"","sources":["../../../../src/chain/archiveStore/utils/archiveBlocks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"importBlock.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/importBlock.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,eAAe,EAKhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gBAAgB,EAQjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,WAAW,EAKX,OAAO,EAEP,MAAM,EAEP,MAAM,iBAAiB,CAAC;AAMzB,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAM7C,OAAO,EAAuB,kBAAkB,EAAE,eAAe,EAAC,MAAM,YAAY,CAAC;AAYrF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,WAAW,EACjB,kBAAkB,EAAE,kBAAkB,EACtC,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CA6iBf;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,WAAW,EAEjB,CAAC,EAAE,gBAAgB,EACnB,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,EACxB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,GAC5C,IAAI,CAQN;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,CAAC,eAAe,CAAC,EACzC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,GAC7C,IAAI,CA+BN"}
1
+ {"version":3,"file":"importBlock.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/importBlock.ts"],"names":[],"mappings":"AAWA,OAAO,EAAiB,eAAe,EAA+C,MAAM,kBAAkB,CAAC;AAC/G,OAAO,EACL,gBAAgB,EAQjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,WAAW,EAAgC,OAAO,EAAsB,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAMpH,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAM7C,OAAO,EAAuB,kBAAkB,EAAE,eAAe,EAAC,MAAM,YAAY,CAAC;AAYrF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,WAAW,EACjB,kBAAkB,EAAE,kBAAkB,EACtC,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CAoiBf;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,WAAW,EAEjB,CAAC,EAAE,gBAAgB,EACnB,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,EACxB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,GAC5C,IAAI,CAQN;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,MAAM,CAAC,UAAU,EACzB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,CAAC,eAAe,CAAC,EACzC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,GAC7C,IAAI,CA+BN"}
@@ -1,9 +1,9 @@
1
1
  import { BitArray } from "@chainsafe/ssz";
2
2
  import { routes } from "@lodestar/api";
3
- import { AncestorStatus, EpochDifference, ExecutionStatus, ForkChoiceError, ForkChoiceErrorCode, NotReorgedReason, getSafeExecutionBlockHash, isGloasBlock, } from "@lodestar/fork-choice";
4
- import { ForkSeq, MAX_SEED_LOOKAHEAD, SLOTS_PER_EPOCH, } from "@lodestar/params";
3
+ import { AncestorStatus, EpochDifference, ExecutionStatus, ForkChoiceError, ForkChoiceErrorCode, NotReorgedReason, getSafeExecutionBlockHash, } from "@lodestar/fork-choice";
4
+ import { ForkSeq, MAX_SEED_LOOKAHEAD, SLOTS_PER_EPOCH } from "@lodestar/params";
5
5
  import { RootCache, computeEpochAtSlot, computeStartSlotAtEpoch, computeTimeAtSlot, isStartSlotOfEpoch, isStatePostAltair, isStatePostBellatrix, } from "@lodestar/state-transition";
6
- import { isGloasBeaconBlock, ssz, } from "@lodestar/types";
6
+ import { isGloasBeaconBlock, ssz } from "@lodestar/types";
7
7
  import { isErrorAborted, toRootHex } from "@lodestar/utils";
8
8
  import { ZERO_HASH_HEX } from "../../constants/index.js";
9
9
  import { callInNextEventLoop } from "../../util/eventLoop.js";
@@ -12,7 +12,7 @@ import { isQueueErrorAborted } from "../../util/queue/index.js";
12
12
  import { ChainEvent } from "../emitter.js";
13
13
  import { ForkchoiceCaller } from "../forkChoice/index.js";
14
14
  import { REPROCESS_MIN_TIME_TO_NEXT_SLOT_SEC } from "../reprocess.js";
15
- import { toCheckpointHexPayload } from "../stateCache/persistentCheckpointsCache.js";
15
+ import { toCheckpointHex } from "../stateCache/persistentCheckpointsCache.js";
16
16
  import { isBlockInputBlobs, isBlockInputColumns } from "./blockInput/blockInput.js";
17
17
  import { AttestationImportOpt } from "./types.js";
18
18
  import { getCheckpointFromState } from "./utils/checkpoint.js";
@@ -45,7 +45,8 @@ const EVENTSTREAM_EMIT_RECENT_BLOCK_SLOTS = 64;
45
45
  * 7. Add post state to stateCache
46
46
  */
47
47
  export async function importBlock(fullyVerifiedBlock, opts) {
48
- const { blockInput, postBlockState, parentBlockSlot, executionStatus, dataAvailabilityStatus, indexedAttestations } = fullyVerifiedBlock;
48
+ const { blockInput, postState, parentBlockSlot, dataAvailabilityStatus, indexedAttestations } = fullyVerifiedBlock;
49
+ let { executionStatus } = fullyVerifiedBlock;
49
50
  const block = blockInput.getBlock();
50
51
  const source = blockInput.getBlockSource();
51
52
  const { slot: blockSlot } = block.message;
@@ -55,7 +56,7 @@ export async function importBlock(fullyVerifiedBlock, opts) {
55
56
  const currentEpoch = computeEpochAtSlot(currentSlot);
56
57
  const blockEpoch = computeEpochAtSlot(blockSlot);
57
58
  const prevFinalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
58
- const blockDelaySec = fullyVerifiedBlock.seenTimestampSec - computeTimeAtSlot(this.config, blockSlot, postBlockState.genesisTime);
59
+ const blockDelaySec = fullyVerifiedBlock.seenTimestampSec - computeTimeAtSlot(this.config, blockSlot, postState.genesisTime);
59
60
  const recvToValLatency = Date.now() / 1000 - (opts.seenTimestampSec ?? Date.now() / 1000);
60
61
  const fork = this.config.getForkSeq(blockSlot);
61
62
  // this is just a type assertion since blockinput with dataPromise type will not end up here
@@ -74,42 +75,37 @@ export async function importBlock(fullyVerifiedBlock, opts) {
74
75
  });
75
76
  // 2. Import block to fork choice
76
77
  // Should compute checkpoint balances before forkchoice.onBlock
77
- this.checkpointBalancesCache.processState(blockRootHex, postBlockState);
78
- const blockSummary = this.forkChoice.onBlock(block.message, postBlockState, blockDelaySec, currentSlot, fork >= ForkSeq.gloas ? ExecutionStatus.PayloadSeparated : executionStatus, dataAvailabilityStatus);
78
+ this.checkpointBalancesCache.processState(blockRootHex, postState);
79
+ if (fork >= ForkSeq.gloas) {
80
+ const parentRootHex = toRootHex(block.message.parentRoot);
81
+ const parentBlock = this.forkChoice.getBlockHexDefaultStatus(parentRootHex);
82
+ if (parentBlock === null) {
83
+ throw Error(`Parent block not found in forkChoice, parentRoot=${parentRootHex}`);
84
+ }
85
+ if (parentBlock.executionStatus === ExecutionStatus.Invalid) {
86
+ throw Error(`Parent block has invalid execution status, parentRoot=${parentRootHex}`);
87
+ }
88
+ executionStatus = parentBlock.executionStatus;
89
+ }
90
+ const blockSummary = this.forkChoice.onBlock(block.message, postState, blockDelaySec, currentSlot, executionStatus, dataAvailabilityStatus);
79
91
  // This adds the state necessary to process the next block
80
92
  // Some block event handlers require state being in state cache so need to do this before emitting EventType.block
81
- // Pre-Gloas: blockSummary.payloadStatus is always FULL, payloadPresent = true
82
- // Post-Gloas: blockSummary.payloadStatus is always PENDING, so payloadPresent = false (block state only, no payload processing yet)
83
- const payloadPresent = !isGloasBlock(blockSummary);
84
- // processState manages both block state and payload state variants together for memory/disk management
85
- this.regen.processBlockState(blockRootHex, postBlockState);
86
- // For Gloas blocks, create PayloadEnvelopeInput so it's available for later payload import
87
- if (fork >= ForkSeq.gloas) {
88
- const payloadInput = this.seenPayloadEnvelopeInputCache.add({
89
- blockRootHex,
90
- block: block,
91
- forkName: blockInput.forkName,
92
- sampledColumns: this.custodyConfig.sampledColumns,
93
- custodyColumns: this.custodyConfig.custodyColumns,
94
- timeCreatedSec: fullyVerifiedBlock.seenTimestampSec,
95
- });
96
- this.logger.debug("Created PayloadEnvelopeInput for block", {
97
- slot: blockSlot,
98
- root: blockRootHex,
99
- source: source.source,
100
- ...(opts.seenTimestampSec !== undefined ? { recvToImport: Date.now() / 1000 - opts.seenTimestampSec } : {}),
101
- });
93
+ this.regen.processState(blockRootHex, postState);
94
+ // For range sync we skip triggerGetBlobs because column fetching is handled in the range path.
95
+ if (fork >= ForkSeq.gloas && !opts.fromRangeSync) {
96
+ const payloadInput = this.seenPayloadEnvelopeInputCache.get(blockRootHex);
97
+ // PayloadEnvelopeInput is supposed to have right after we have block
98
+ // there are 4 sources of them: gossip, by root, by range and api
99
+ if (!payloadInput) {
100
+ throw Error(`PayloadEnvelopeInput not seeded for block ${blockRootHex} before importBlock`);
101
+ }
102
102
  // Immediately attempt fetch of data columns from execution engine as the bid contains kzg commitments
103
103
  // which is all the information we need so there is no reason to delay until execution payload arrives
104
104
  // TODO GLOAS: If we want EL retries after this initial attempt, add an explicit retry policy here
105
105
  // (for example later in the slot). Do not couple retries to incoming gossip columns.
106
- this.getBlobsTracker.triggerGetBlobs(payloadInput, () => {
107
- // TODO GLOAS: come up with a better mechanism to trigger processExecutionPayload after data becomes available,
108
- // similar to how pre-gloas uses waitForBlockAndAllData with a cutoff timeout and incompleteBlockInput event
109
- this.processExecutionPayload(payloadInput, { validSignature: true }).catch((e) => {
110
- this.logger.debug("Error processing execution payload after getBlobs", { slot: blockSlot, root: blockRootHex }, e);
111
- });
112
- });
106
+ // Columns fetched here feed payloadInput.addColumn, which resolves waitForAllData for any
107
+ // in-flight importExecutionPayload. No processExecutionPayload trigger needed from this path.
108
+ this.getBlobsTracker.triggerGetBlobs(payloadInput);
113
109
  }
114
110
  this.metrics?.importBlock.bySource.inc({ source: source.source });
115
111
  this.logger.verbose("Added block to forkchoice and state cache", { slot: blockSlot, root: blockRootHex });
@@ -125,7 +121,7 @@ export async function importBlock(fullyVerifiedBlock, opts) {
125
121
  if (opts.importAttestations === AttestationImportOpt.Force ||
126
122
  (opts.importAttestations !== AttestationImportOpt.Skip && blockEpoch >= currentEpoch - FORK_CHOICE_ATT_EPOCH_LIMIT)) {
127
123
  const attestations = block.message.body.attestations;
128
- const rootCache = new RootCache(postBlockState);
124
+ const rootCache = new RootCache(postState);
129
125
  const invalidAttestationErrorsByCode = new Map();
130
126
  const addAttestation = fork >= ForkSeq.electra ? addAttestationPostElectra : addAttestationPreElectra;
131
127
  for (let i = 0; i < attestations.length; i++) {
@@ -134,7 +130,7 @@ export async function importBlock(fullyVerifiedBlock, opts) {
134
130
  const indexedAttestation = indexedAttestations[i];
135
131
  const { target, beaconBlockRoot } = attestation.data;
136
132
  const attDataRoot = toRootHex(ssz.phase0.AttestationData.hashTreeRoot(indexedAttestation.data));
137
- addAttestation.call(this, postBlockState, target, attDataRoot, attestation, indexedAttestation);
133
+ addAttestation.call(this, postState, target, attDataRoot, attestation, indexedAttestation);
138
134
  // Duplicated logic from fork-choice onAttestation validation logic.
139
135
  // Attestations outside of this range will be dropped as Errors, so no need to import
140
136
  if (opts.importAttestations === AttestationImportOpt.Force ||
@@ -214,7 +210,7 @@ export async function importBlock(fullyVerifiedBlock, opts) {
214
210
  const currFinalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
215
211
  if (newHead.blockRoot !== oldHead.blockRoot) {
216
212
  // Set head state as strong reference
217
- this.regen.updateHeadState(newHead, postBlockState);
213
+ this.regen.updateHeadState(newHead, postState);
218
214
  try {
219
215
  this.emitter.emit(routes.events.EventType.head, {
220
216
  block: newHead.blockRoot,
@@ -275,8 +271,8 @@ export async function importBlock(fullyVerifiedBlock, opts) {
275
271
  // we want to import block asap so do this in the next event loop
276
272
  callInNextEventLoop(() => {
277
273
  try {
278
- if (isStatePostAltair(postBlockState)) {
279
- this.lightClientServer?.onImportBlockHead(block.message, postBlockState, parentBlockSlot);
274
+ if (isStatePostAltair(postState)) {
275
+ this.lightClientServer?.onImportBlockHead(block.message, postState, parentBlockSlot);
280
276
  }
281
277
  }
282
278
  catch (e) {
@@ -294,11 +290,11 @@ export async function importBlock(fullyVerifiedBlock, opts) {
294
290
  // Suppress fcu call if shouldOverrideFcu is true. This only happens if we have proposer boost reorg enabled
295
291
  // and the block is weak and can potentially be reorged out.
296
292
  let shouldOverrideFcu = false;
297
- if (blockSlot >= currentSlot && isStatePostBellatrix(postBlockState) && postBlockState.isExecutionStateType) {
293
+ if (blockSlot >= currentSlot && isStatePostBellatrix(postState) && postState.isExecutionStateType) {
298
294
  let notOverrideFcuReason = NotReorgedReason.Unknown;
299
295
  const proposalSlot = blockSlot + 1;
300
296
  try {
301
- const proposerIndex = postBlockState.getBeaconProposer(proposalSlot);
297
+ const proposerIndex = postState.getBeaconProposer(proposalSlot);
302
298
  const feeRecipient = this.beaconProposerCache.get(proposerIndex);
303
299
  if (feeRecipient) {
304
300
  // We would set this to true if
@@ -367,24 +363,24 @@ export async function importBlock(fullyVerifiedBlock, opts) {
367
363
  });
368
364
  }
369
365
  }
370
- if (!postBlockState.isStateValidatorsNodesPopulated()) {
371
- this.logger.verbose("After importBlock caching postState without SSZ cache", { slot: postBlockState.slot });
366
+ if (!postState.isStateValidatorsNodesPopulated()) {
367
+ this.logger.verbose("After importBlock caching postState without SSZ cache", { slot: postState.slot });
372
368
  }
373
369
  // Cache shufflings when crossing an epoch boundary
374
370
  const parentEpoch = computeEpochAtSlot(parentBlockSlot);
375
371
  if (parentEpoch < blockEpoch) {
376
- this.shufflingCache.processState(postBlockState);
372
+ this.shufflingCache.processState(postState);
377
373
  this.logger.verbose("Processed shuffling for next epoch", { parentEpoch, blockEpoch, slot: blockSlot });
378
374
  }
379
375
  if (blockSlot % SLOTS_PER_EPOCH === 0) {
380
376
  // Cache state to preserve epoch transition work
381
- const checkpointState = postBlockState;
377
+ const checkpointState = postState;
382
378
  const cp = getCheckpointFromState(checkpointState);
383
- this.regen.addCheckpointState(cp, checkpointState, payloadPresent);
379
+ this.regen.addCheckpointState(cp, checkpointState);
384
380
  // consumers should not mutate state ever
385
381
  this.emitter.emit(ChainEvent.checkpoint, cp, checkpointState);
386
382
  // Note: in-lined code from previos handler of ChainEvent.checkpoint
387
- this.logger.verbose("Checkpoint processed", toCheckpointHexPayload(cp, payloadPresent));
383
+ this.logger.verbose("Checkpoint processed", toCheckpointHex(cp));
388
384
  const activeValidatorsCount = checkpointState.activeValidatorCount;
389
385
  this.metrics?.currentActiveValidators.set(activeValidatorsCount);
390
386
  this.metrics?.currentValidators.set({ status: "active" }, activeValidatorsCount);
@@ -396,7 +392,7 @@ export async function importBlock(fullyVerifiedBlock, opts) {
396
392
  const justifiedEpoch = justifiedCheckpoint.epoch;
397
393
  const preJustifiedEpoch = parentBlockSummary.justifiedEpoch;
398
394
  if (justifiedEpoch > preJustifiedEpoch) {
399
- this.logger.verbose("Checkpoint justified", toCheckpointHexPayload(justifiedCheckpoint, payloadPresent));
395
+ this.logger.verbose("Checkpoint justified", toCheckpointHex(justifiedCheckpoint));
400
396
  this.metrics?.previousJustifiedEpoch.set(checkpointState.previousJustifiedCheckpoint.epoch);
401
397
  this.metrics?.currentJustifiedEpoch.set(justifiedCheckpoint.epoch);
402
398
  }
@@ -410,7 +406,7 @@ export async function importBlock(fullyVerifiedBlock, opts) {
410
406
  state: toRootHex(checkpointState.hashTreeRoot()),
411
407
  executionOptimistic: false,
412
408
  });
413
- this.logger.verbose("Checkpoint finalized", toCheckpointHexPayload(finalizedCheckpoint, payloadPresent));
409
+ this.logger.verbose("Checkpoint finalized", toCheckpointHex(finalizedCheckpoint));
414
410
  this.metrics?.finalizedEpoch.set(finalizedCheckpoint.epoch);
415
411
  }
416
412
  }
@@ -458,8 +454,8 @@ export async function importBlock(fullyVerifiedBlock, opts) {
458
454
  this.metrics?.parentBlockDistance.observe(blockSlot - parentBlockSlot);
459
455
  this.metrics?.proposerBalanceDeltaAny.observe(fullyVerifiedBlock.proposerBalanceDelta);
460
456
  this.validatorMonitor?.registerImportedBlock(block.message, fullyVerifiedBlock);
461
- if (isStatePostAltair(fullyVerifiedBlock.postBlockState)) {
462
- this.validatorMonitor?.registerSyncAggregateInBlock(blockEpoch, block.message.body.syncAggregate, fullyVerifiedBlock.postBlockState.currentSyncCommitteeIndexed.validatorIndices);
457
+ if (isStatePostAltair(fullyVerifiedBlock.postState)) {
458
+ this.validatorMonitor?.registerSyncAggregateInBlock(blockEpoch, block.message.body.syncAggregate, fullyVerifiedBlock.postState.currentSyncCommitteeIndexed.validatorIndices);
463
459
  }
464
460
  if (isBlockInputColumns(blockInput)) {
465
461
  for (const { source } of blockInput.getSampledColumnsWithSource()) {