@lodestar/beacon-node 1.51.0-dev.f8eff664d2 → 1.51.0-dev.f921fbf6b7

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 (632) hide show
  1. package/lib/api/impl/api.js +1 -1
  2. package/lib/api/impl/api.js.map +1 -1
  3. package/lib/api/impl/beacon/blocks/index.d.ts +2 -1
  4. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/blocks/index.js +48 -95
  6. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  7. package/lib/api/impl/beacon/index.d.ts +2 -1
  8. package/lib/api/impl/beacon/index.d.ts.map +1 -1
  9. package/lib/api/impl/beacon/index.js +2 -2
  10. package/lib/api/impl/beacon/index.js.map +1 -1
  11. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  12. package/lib/api/impl/beacon/pool/index.js +22 -2
  13. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  14. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  15. package/lib/api/impl/beacon/state/index.js +8 -2
  16. package/lib/api/impl/beacon/state/index.js.map +1 -1
  17. package/lib/api/impl/beacon/state/utils.d.ts +3 -2
  18. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  19. package/lib/api/impl/beacon/state/utils.js +17 -9
  20. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  21. package/lib/api/impl/debug/index.d.ts.map +1 -1
  22. package/lib/api/impl/debug/index.js +3 -0
  23. package/lib/api/impl/debug/index.js.map +1 -1
  24. package/lib/api/impl/validator/index.d.ts +6 -0
  25. package/lib/api/impl/validator/index.d.ts.map +1 -1
  26. package/lib/api/impl/validator/index.js +143 -35
  27. package/lib/api/impl/validator/index.js.map +1 -1
  28. package/lib/api/options.d.ts +2 -0
  29. package/lib/api/options.d.ts.map +1 -1
  30. package/lib/api/options.js +1 -0
  31. package/lib/api/options.js.map +1 -1
  32. package/lib/chain/GetBlobsTracker.d.ts +13 -2
  33. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  34. package/lib/chain/GetBlobsTracker.js +69 -35
  35. package/lib/chain/GetBlobsTracker.js.map +1 -1
  36. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  37. package/lib/chain/archiveStore/archiveStore.js +1 -0
  38. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  39. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +4 -0
  40. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  41. package/lib/chain/archiveStore/utils/archiveBlocks.js +61 -97
  42. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  43. package/lib/chain/blocks/blockInput/blockInput.d.ts +11 -56
  44. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  45. package/lib/chain/blocks/blockInput/blockInput.js +5 -241
  46. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  47. package/lib/chain/blocks/blockInput/errors.d.ts +2 -4
  48. package/lib/chain/blocks/blockInput/errors.d.ts.map +1 -1
  49. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  50. package/lib/chain/blocks/blockInput/types.d.ts +2 -18
  51. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  52. package/lib/chain/blocks/blockInput/types.js +0 -1
  53. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  54. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  55. package/lib/chain/blocks/importBlock.js +42 -57
  56. package/lib/chain/blocks/importBlock.js.map +1 -1
  57. package/lib/chain/blocks/importExecutionPayload.d.ts +10 -11
  58. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  59. package/lib/chain/blocks/importExecutionPayload.js +82 -20
  60. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  61. package/lib/chain/blocks/index.d.ts.map +1 -1
  62. package/lib/chain/blocks/index.js +4 -4
  63. package/lib/chain/blocks/index.js.map +1 -1
  64. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +12 -9
  65. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
  66. package/lib/chain/blocks/payloadEnvelopeProcessor.js +24 -19
  67. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  68. package/lib/chain/blocks/types.d.ts +7 -19
  69. package/lib/chain/blocks/types.d.ts.map +1 -1
  70. package/lib/chain/blocks/types.js +5 -24
  71. package/lib/chain/blocks/types.js.map +1 -1
  72. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  73. package/lib/chain/blocks/verifyBlock.js +18 -7
  74. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  75. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  76. package/lib/chain/blocks/verifyBlocksDataAvailability.js +14 -2
  77. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  78. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -1
  79. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  80. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +7 -3
  81. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  82. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  83. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -0
  84. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  85. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  86. package/lib/chain/blocks/verifyBlocksSignatures.js +10 -5
  87. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  88. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +3 -3
  89. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
  90. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +11 -6
  91. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  92. package/lib/chain/blocks/writeBlockInputToDb.d.ts +0 -2
  93. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  94. package/lib/chain/blocks/writeBlockInputToDb.js +6 -24
  95. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  96. package/lib/chain/bls/interface.d.ts +2 -0
  97. package/lib/chain/bls/interface.d.ts.map +1 -1
  98. package/lib/chain/bls/multithread/index.d.ts +1 -1
  99. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  100. package/lib/chain/bls/multithread/index.js +50 -22
  101. package/lib/chain/bls/multithread/index.js.map +1 -1
  102. package/lib/chain/bls/multithread/types.d.ts +1 -1
  103. package/lib/chain/bls/multithread/types.d.ts.map +1 -1
  104. package/lib/chain/bls/multithread/worker.js +1 -1
  105. package/lib/chain/bls/multithread/worker.js.map +1 -1
  106. package/lib/chain/bls/singleThread.js +1 -1
  107. package/lib/chain/bls/singleThread.js.map +1 -1
  108. package/lib/chain/bls/utils.js +1 -1
  109. package/lib/chain/bls/utils.js.map +1 -1
  110. package/lib/chain/chain.d.ts +26 -4
  111. package/lib/chain/chain.d.ts.map +1 -1
  112. package/lib/chain/chain.js +127 -43
  113. package/lib/chain/chain.js.map +1 -1
  114. package/lib/chain/emitter.d.ts +7 -7
  115. package/lib/chain/emitter.d.ts.map +1 -1
  116. package/lib/chain/emitter.js +5 -5
  117. package/lib/chain/emitter.js.map +1 -1
  118. package/lib/chain/errors/blockError.d.ts +1 -1
  119. package/lib/chain/errors/blockError.d.ts.map +1 -1
  120. package/lib/chain/errors/blockError.js +1 -1
  121. package/lib/chain/errors/blockError.js.map +1 -1
  122. package/lib/chain/errors/executionPayloadBid.d.ts +11 -1
  123. package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
  124. package/lib/chain/errors/executionPayloadBid.js +2 -0
  125. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  126. package/lib/chain/errors/executionPayloadEnvelope.d.ts +7 -0
  127. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  128. package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
  129. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  130. package/lib/chain/errors/inclusionList.d.ts +60 -0
  131. package/lib/chain/errors/inclusionList.d.ts.map +1 -0
  132. package/lib/chain/errors/inclusionList.js +19 -0
  133. package/lib/chain/errors/inclusionList.js.map +1 -0
  134. package/lib/chain/errors/index.d.ts +1 -1
  135. package/lib/chain/errors/index.d.ts.map +1 -1
  136. package/lib/chain/errors/index.js +1 -1
  137. package/lib/chain/errors/index.js.map +1 -1
  138. package/lib/chain/forkChoice/index.d.ts +11 -1
  139. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  140. package/lib/chain/forkChoice/index.js +11 -0
  141. package/lib/chain/forkChoice/index.js.map +1 -1
  142. package/lib/chain/forkChoiceExecutionEngine.d.ts +51 -0
  143. package/lib/chain/forkChoiceExecutionEngine.d.ts.map +1 -0
  144. package/lib/chain/forkChoiceExecutionEngine.js +117 -0
  145. package/lib/chain/forkChoiceExecutionEngine.js.map +1 -0
  146. package/lib/chain/interface.d.ts +10 -7
  147. package/lib/chain/interface.d.ts.map +1 -1
  148. package/lib/chain/interface.js.map +1 -1
  149. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +17 -4
  150. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  151. package/lib/chain/opPools/aggregatedAttestationPool.js +199 -46
  152. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  153. package/lib/chain/opPools/attestationPool.d.ts +1 -1
  154. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  155. package/lib/chain/opPools/attestationPool.js +15 -4
  156. package/lib/chain/opPools/attestationPool.js.map +1 -1
  157. package/lib/chain/opPools/inclusionListStore.d.ts +63 -0
  158. package/lib/chain/opPools/inclusionListStore.d.ts.map +1 -0
  159. package/lib/chain/opPools/inclusionListStore.js +171 -0
  160. package/lib/chain/opPools/inclusionListStore.js.map +1 -0
  161. package/lib/chain/opPools/index.d.ts +2 -0
  162. package/lib/chain/opPools/index.d.ts.map +1 -1
  163. package/lib/chain/opPools/index.js +2 -0
  164. package/lib/chain/opPools/index.js.map +1 -1
  165. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  166. package/lib/chain/opPools/payloadAttestationPool.js +17 -7
  167. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  168. package/lib/chain/opPools/singleAttestationPool.d.ts +77 -0
  169. package/lib/chain/opPools/singleAttestationPool.d.ts.map +1 -0
  170. package/lib/chain/opPools/singleAttestationPool.js +209 -0
  171. package/lib/chain/opPools/singleAttestationPool.js.map +1 -0
  172. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  173. package/lib/chain/opPools/syncCommitteeMessagePool.js +9 -3
  174. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  175. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  176. package/lib/chain/opPools/syncContributionAndProofPool.js +11 -3
  177. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  178. package/lib/chain/opPools/utils.d.ts +1 -1
  179. package/lib/chain/opPools/utils.d.ts.map +1 -1
  180. package/lib/chain/opPools/utils.js +1 -1
  181. package/lib/chain/opPools/utils.js.map +1 -1
  182. package/lib/chain/options.d.ts +5 -3
  183. package/lib/chain/options.d.ts.map +1 -1
  184. package/lib/chain/options.js +0 -1
  185. package/lib/chain/options.js.map +1 -1
  186. package/lib/chain/produceBlock/produceBlockBody.d.ts +6 -3
  187. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  188. package/lib/chain/produceBlock/produceBlockBody.js +32 -11
  189. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  190. package/lib/chain/proposerTracker.d.ts +31 -0
  191. package/lib/chain/proposerTracker.d.ts.map +1 -0
  192. package/lib/chain/proposerTracker.js +75 -0
  193. package/lib/chain/proposerTracker.js.map +1 -0
  194. package/lib/chain/regen/interface.d.ts +2 -2
  195. package/lib/chain/regen/interface.d.ts.map +1 -1
  196. package/lib/chain/regen/interface.js +1 -1
  197. package/lib/chain/regen/interface.js.map +1 -1
  198. package/lib/chain/regen/queued.d.ts +1 -1
  199. package/lib/chain/regen/queued.d.ts.map +1 -1
  200. package/lib/chain/regen/queued.js +5 -3
  201. package/lib/chain/regen/queued.js.map +1 -1
  202. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -14
  203. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  204. package/lib/chain/seenCache/seenGossipBlockInput.js +6 -65
  205. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  206. package/lib/chain/validation/executionPayloadBid.d.ts +0 -15
  207. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  208. package/lib/chain/validation/executionPayloadBid.js +37 -158
  209. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  210. package/lib/chain/validation/executionPayloadEnvelope.d.ts +6 -0
  211. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  212. package/lib/chain/validation/executionPayloadEnvelope.js +53 -0
  213. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  214. package/lib/chain/validation/inclusionList.d.ts +14 -0
  215. package/lib/chain/validation/inclusionList.d.ts.map +1 -0
  216. package/lib/chain/validation/inclusionList.js +150 -0
  217. package/lib/chain/validation/inclusionList.js.map +1 -0
  218. package/lib/chain/validation/index.d.ts +1 -0
  219. package/lib/chain/validation/index.d.ts.map +1 -1
  220. package/lib/chain/validation/index.js +1 -0
  221. package/lib/chain/validation/index.js.map +1 -1
  222. package/lib/chain/validatorMonitor.d.ts +1 -2
  223. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  224. package/lib/chain/validatorMonitor.js +0 -3
  225. package/lib/chain/validatorMonitor.js.map +1 -1
  226. package/lib/db/beacon.d.ts +7 -0
  227. package/lib/db/beacon.d.ts.map +1 -1
  228. package/lib/db/beacon.js +34 -0
  229. package/lib/db/beacon.js.map +1 -1
  230. package/lib/db/dataColumnStore.d.ts +1 -1
  231. package/lib/db/dataColumnStore.d.ts.map +1 -1
  232. package/lib/db/dataColumnStore.js +1 -4
  233. package/lib/db/dataColumnStore.js.map +1 -1
  234. package/lib/db/flatFileStore/flatFileStore.js +5 -5
  235. package/lib/db/flatFileStore/flatFileStore.js.map +1 -1
  236. package/lib/db/flatFileStore/slotIndex.d.ts.map +1 -1
  237. package/lib/db/flatFileStore/slotIndex.js +2 -2
  238. package/lib/db/flatFileStore/slotIndex.js.map +1 -1
  239. package/lib/db/interface.d.ts +1 -0
  240. package/lib/db/interface.d.ts.map +1 -1
  241. package/lib/db/repositories/blobSidecars.d.ts +0 -1
  242. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  243. package/lib/db/repositories/blobSidecars.js +0 -1
  244. package/lib/db/repositories/blobSidecars.js.map +1 -1
  245. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +6 -0
  246. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  247. package/lib/db/repositories/dataColumnSidecarArchive.js +19 -0
  248. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  249. package/lib/execution/builder/apiClient.d.ts +14 -8
  250. package/lib/execution/builder/apiClient.d.ts.map +1 -1
  251. package/lib/execution/builder/apiClient.js +12 -10
  252. package/lib/execution/builder/apiClient.js.map +1 -1
  253. package/lib/execution/builder/http.d.ts +2 -0
  254. package/lib/execution/builder/http.d.ts.map +1 -1
  255. package/lib/execution/builder/http.js +2 -0
  256. package/lib/execution/builder/http.js.map +1 -1
  257. package/lib/execution/builder/validateBid.d.ts.map +1 -1
  258. package/lib/execution/builder/validateBid.js +14 -1
  259. package/lib/execution/builder/validateBid.js.map +1 -1
  260. package/lib/execution/engine/blobVersionedHashes.d.ts +1 -1
  261. package/lib/execution/engine/blobVersionedHashes.d.ts.map +1 -1
  262. package/lib/execution/engine/blobVersionedHashes.js.map +1 -1
  263. package/lib/execution/engine/disabled.d.ts +1 -0
  264. package/lib/execution/engine/disabled.d.ts.map +1 -1
  265. package/lib/execution/engine/disabled.js +3 -0
  266. package/lib/execution/engine/disabled.js.map +1 -1
  267. package/lib/execution/engine/http.d.ts +12 -8
  268. package/lib/execution/engine/http.d.ts.map +1 -1
  269. package/lib/execution/engine/http.js +35 -14
  270. package/lib/execution/engine/http.js.map +1 -1
  271. package/lib/execution/engine/index.d.ts +1 -1
  272. package/lib/execution/engine/index.d.ts.map +1 -1
  273. package/lib/execution/engine/index.js +1 -1
  274. package/lib/execution/engine/index.js.map +1 -1
  275. package/lib/execution/engine/interface.d.ts +29 -8
  276. package/lib/execution/engine/interface.d.ts.map +1 -1
  277. package/lib/execution/engine/interface.js.map +1 -1
  278. package/lib/execution/engine/jsonRpcTransport.d.ts +5 -6
  279. package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -1
  280. package/lib/execution/engine/jsonRpcTransport.js +34 -20
  281. package/lib/execution/engine/jsonRpcTransport.js.map +1 -1
  282. package/lib/execution/engine/mock.d.ts +1 -1
  283. package/lib/execution/engine/mock.d.ts.map +1 -1
  284. package/lib/execution/engine/mock.js +31 -11
  285. package/lib/execution/engine/mock.js.map +1 -1
  286. package/lib/execution/engine/payloadIdCache.d.ts +5 -3
  287. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  288. package/lib/execution/engine/payloadIdCache.js +15 -4
  289. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  290. package/lib/execution/engine/restTransport.d.ts +4 -5
  291. package/lib/execution/engine/restTransport.d.ts.map +1 -1
  292. package/lib/execution/engine/restTransport.js +4 -15
  293. package/lib/execution/engine/restTransport.js.map +1 -1
  294. package/lib/execution/engine/sszTypes.d.ts +38 -47
  295. package/lib/execution/engine/sszTypes.d.ts.map +1 -1
  296. package/lib/execution/engine/sszTypes.js +0 -5
  297. package/lib/execution/engine/sszTypes.js.map +1 -1
  298. package/lib/execution/engine/transport.d.ts +4 -14
  299. package/lib/execution/engine/transport.d.ts.map +1 -1
  300. package/lib/execution/engine/types.d.ts +25 -9
  301. package/lib/execution/engine/types.d.ts.map +1 -1
  302. package/lib/execution/engine/types.js +19 -14
  303. package/lib/execution/engine/types.js.map +1 -1
  304. package/lib/execution/engine/utils.d.ts.map +1 -1
  305. package/lib/execution/engine/utils.js +3 -2
  306. package/lib/execution/engine/utils.js.map +1 -1
  307. package/lib/index.d.ts +1 -0
  308. package/lib/index.d.ts.map +1 -1
  309. package/lib/index.js +2 -0
  310. package/lib/index.js.map +1 -1
  311. package/lib/metrics/metrics/beacon.d.ts +16 -9
  312. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  313. package/lib/metrics/metrics/beacon.js +35 -30
  314. package/lib/metrics/metrics/beacon.js.map +1 -1
  315. package/lib/metrics/metrics/lodestar.d.ts +42 -8
  316. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  317. package/lib/metrics/metrics/lodestar.js +104 -18
  318. package/lib/metrics/metrics/lodestar.js.map +1 -1
  319. package/lib/metrics/server/http.js +5 -5
  320. package/lib/metrics/server/http.js.map +1 -1
  321. package/lib/monitoring/service.js +1 -1
  322. package/lib/monitoring/service.js.map +1 -1
  323. package/lib/network/core/networkCore.d.ts +4 -1
  324. package/lib/network/core/networkCore.d.ts.map +1 -1
  325. package/lib/network/core/networkCore.js +7 -0
  326. package/lib/network/core/networkCore.js.map +1 -1
  327. package/lib/network/core/networkCoreWorker.js +2 -0
  328. package/lib/network/core/networkCoreWorker.js.map +1 -1
  329. package/lib/network/core/networkCoreWorkerHandler.d.ts +4 -1
  330. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  331. package/lib/network/core/networkCoreWorkerHandler.js +6 -0
  332. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  333. package/lib/network/core/types.d.ts +6 -1
  334. package/lib/network/core/types.d.ts.map +1 -1
  335. package/lib/network/gossip/gossipsub.d.ts +1 -0
  336. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  337. package/lib/network/gossip/gossipsub.js +10 -0
  338. package/lib/network/gossip/gossipsub.js.map +1 -1
  339. package/lib/network/gossip/interface.d.ts +8 -9
  340. package/lib/network/gossip/interface.d.ts.map +1 -1
  341. package/lib/network/gossip/interface.js +1 -1
  342. package/lib/network/gossip/interface.js.map +1 -1
  343. package/lib/network/gossip/topic.d.ts +13 -21
  344. package/lib/network/gossip/topic.d.ts.map +1 -1
  345. package/lib/network/gossip/topic.js +13 -24
  346. package/lib/network/gossip/topic.js.map +1 -1
  347. package/lib/network/interface.d.ts +5 -5
  348. package/lib/network/interface.d.ts.map +1 -1
  349. package/lib/network/libp2p/index.d.ts.map +1 -1
  350. package/lib/network/libp2p/index.js +5 -1
  351. package/lib/network/libp2p/index.js.map +1 -1
  352. package/lib/network/network.d.ts +9 -7
  353. package/lib/network/network.d.ts.map +1 -1
  354. package/lib/network/network.js +58 -35
  355. package/lib/network/network.js.map +1 -1
  356. package/lib/network/options.d.ts +2 -0
  357. package/lib/network/options.d.ts.map +1 -1
  358. package/lib/network/options.js +2 -0
  359. package/lib/network/options.js.map +1 -1
  360. package/lib/network/peers/peerManager.d.ts +2 -1
  361. package/lib/network/peers/peerManager.d.ts.map +1 -1
  362. package/lib/network/peers/peerManager.js +28 -1
  363. package/lib/network/peers/peerManager.js.map +1 -1
  364. package/lib/network/peers/utils/assertPeerRelevance.d.ts +9 -1
  365. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -1
  366. package/lib/network/peers/utils/assertPeerRelevance.js +32 -21
  367. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  368. package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +1 -1
  369. package/lib/network/peers/utils/enrSubnetsDeserialize.js +5 -2
  370. package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
  371. package/lib/network/peers/utils/prioritizePeers.d.ts +4 -1
  372. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  373. package/lib/network/peers/utils/prioritizePeers.js +8 -16
  374. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  375. package/lib/network/peers/utils/subnetMap.d.ts +5 -2
  376. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  377. package/lib/network/peers/utils/subnetMap.js +6 -3
  378. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  379. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
  380. package/lib/network/processor/extractSlotRootFns.js +1 -8
  381. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  382. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  383. package/lib/network/processor/gossipHandlers.js +118 -149
  384. package/lib/network/processor/gossipHandlers.js.map +1 -1
  385. package/lib/network/processor/gossipQueues/index.js +6 -6
  386. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  387. package/lib/network/processor/gossipValidatorFn.js +5 -5
  388. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  389. package/lib/network/processor/index.d.ts +11 -0
  390. package/lib/network/processor/index.d.ts.map +1 -1
  391. package/lib/network/processor/index.js +66 -30
  392. package/lib/network/processor/index.js.map +1 -1
  393. package/lib/network/reqresp/ReqRespBeaconNode.js +6 -3
  394. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  395. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +2 -2
  396. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  397. package/lib/network/reqresp/handlers/inclusionListsByIndices.d.ts +10 -0
  398. package/lib/network/reqresp/handlers/inclusionListsByIndices.d.ts.map +1 -0
  399. package/lib/network/reqresp/handlers/inclusionListsByIndices.js +30 -0
  400. package/lib/network/reqresp/handlers/inclusionListsByIndices.js.map +1 -0
  401. package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
  402. package/lib/network/reqresp/handlers/index.js +6 -12
  403. package/lib/network/reqresp/handlers/index.js.map +1 -1
  404. package/lib/network/reqresp/protocols.d.ts +1 -2
  405. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  406. package/lib/network/reqresp/protocols.js +5 -10
  407. package/lib/network/reqresp/protocols.js.map +1 -1
  408. package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
  409. package/lib/network/reqresp/rateLimit.js +5 -17
  410. package/lib/network/reqresp/rateLimit.js.map +1 -1
  411. package/lib/network/reqresp/types.d.ts +6 -9
  412. package/lib/network/reqresp/types.d.ts.map +1 -1
  413. package/lib/network/reqresp/types.js +4 -7
  414. package/lib/network/reqresp/types.js.map +1 -1
  415. package/lib/network/subnets/attnetsService.d.ts +35 -5
  416. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  417. package/lib/network/subnets/attnetsService.js +84 -6
  418. package/lib/network/subnets/attnetsService.js.map +1 -1
  419. package/lib/network/subnets/interface.d.ts +7 -0
  420. package/lib/network/subnets/interface.d.ts.map +1 -1
  421. package/lib/network/subnets/interface.js.map +1 -1
  422. package/lib/node/nodejs.d.ts +3 -1
  423. package/lib/node/nodejs.d.ts.map +1 -1
  424. package/lib/node/nodejs.js +47 -21
  425. package/lib/node/nodejs.js.map +1 -1
  426. package/lib/node/options.d.ts +3 -1
  427. package/lib/node/options.d.ts.map +1 -1
  428. package/lib/node/options.js +4 -2
  429. package/lib/node/options.js.map +1 -1
  430. package/lib/sync/interface.d.ts.map +1 -1
  431. package/lib/sync/interface.js.map +1 -1
  432. package/lib/sync/range/batch.d.ts +2 -3
  433. package/lib/sync/range/batch.d.ts.map +1 -1
  434. package/lib/sync/range/batch.js +9 -22
  435. package/lib/sync/range/batch.js.map +1 -1
  436. package/lib/sync/range/chain.d.ts.map +1 -1
  437. package/lib/sync/range/chain.js +2 -15
  438. package/lib/sync/range/chain.js.map +1 -1
  439. package/lib/sync/sync.d.ts +7 -0
  440. package/lib/sync/sync.d.ts.map +1 -1
  441. package/lib/sync/sync.js +61 -3
  442. package/lib/sync/sync.js.map +1 -1
  443. package/lib/sync/unknownBlock.d.ts.map +1 -1
  444. package/lib/sync/unknownBlock.js +43 -25
  445. package/lib/sync/unknownBlock.js.map +1 -1
  446. package/lib/sync/utils/downloadByRange.d.ts +6 -34
  447. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  448. package/lib/sync/utils/downloadByRange.js +24 -128
  449. package/lib/sync/utils/downloadByRange.js.map +1 -1
  450. package/lib/sync/utils/downloadByRoot.d.ts +2 -18
  451. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  452. package/lib/sync/utils/downloadByRoot.js +14 -99
  453. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  454. package/lib/util/blobs.d.ts +1 -7
  455. package/lib/util/blobs.d.ts.map +1 -1
  456. package/lib/util/blobs.js +0 -19
  457. package/lib/util/blobs.js.map +1 -1
  458. package/lib/util/execution.d.ts +3 -4
  459. package/lib/util/execution.d.ts.map +1 -1
  460. package/lib/util/execution.js +1 -73
  461. package/lib/util/execution.js.map +1 -1
  462. package/lib/util/file.d.ts.map +1 -1
  463. package/lib/util/file.js +8 -9
  464. package/lib/util/file.js.map +1 -1
  465. package/lib/util/queue/itemQueue.js +1 -1
  466. package/lib/util/queue/itemQueue.js.map +1 -1
  467. package/lib/util/sszBytes.d.ts +5 -1
  468. package/lib/util/sszBytes.d.ts.map +1 -1
  469. package/lib/util/sszBytes.js +36 -19
  470. package/lib/util/sszBytes.js.map +1 -1
  471. package/lib/util/types.d.ts +0 -5
  472. package/lib/util/types.d.ts.map +1 -1
  473. package/lib/util/types.js +1 -2
  474. package/lib/util/types.js.map +1 -1
  475. package/package.json +31 -32
  476. package/src/api/impl/api.ts +1 -1
  477. package/src/api/impl/beacon/blocks/index.ts +81 -126
  478. package/src/api/impl/beacon/index.ts +3 -1
  479. package/src/api/impl/beacon/pool/index.ts +31 -1
  480. package/src/api/impl/beacon/state/index.ts +10 -1
  481. package/src/api/impl/beacon/state/utils.ts +20 -10
  482. package/src/api/impl/debug/index.ts +4 -0
  483. package/src/api/impl/validator/index.ts +178 -39
  484. package/src/api/options.ts +3 -0
  485. package/src/chain/GetBlobsTracker.ts +82 -52
  486. package/src/chain/archiveStore/archiveStore.ts +1 -0
  487. package/src/chain/archiveStore/utils/archiveBlocks.ts +76 -130
  488. package/src/chain/blocks/blockInput/blockInput.ts +11 -343
  489. package/src/chain/blocks/blockInput/errors.ts +1 -2
  490. package/src/chain/blocks/blockInput/types.ts +2 -20
  491. package/src/chain/blocks/importBlock.ts +58 -77
  492. package/src/chain/blocks/importExecutionPayload.ts +123 -36
  493. package/src/chain/blocks/index.ts +11 -4
  494. package/src/chain/blocks/payloadEnvelopeProcessor.ts +35 -24
  495. package/src/chain/blocks/types.ts +8 -29
  496. package/src/chain/blocks/verifyBlock.ts +31 -16
  497. package/src/chain/blocks/verifyBlocksDataAvailability.ts +16 -2
  498. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -6
  499. package/src/chain/blocks/verifyBlocksSanityChecks.ts +4 -1
  500. package/src/chain/blocks/verifyBlocksSignatures.ts +10 -5
  501. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +14 -6
  502. package/src/chain/blocks/writeBlockInputToDb.ts +6 -29
  503. package/src/chain/bls/interface.ts +2 -0
  504. package/src/chain/bls/multithread/index.ts +48 -24
  505. package/src/chain/bls/multithread/types.ts +1 -1
  506. package/src/chain/bls/multithread/worker.ts +1 -5
  507. package/src/chain/bls/singleThread.ts +1 -1
  508. package/src/chain/bls/utils.ts +1 -1
  509. package/src/chain/chain.ts +144 -42
  510. package/src/chain/emitter.ts +8 -8
  511. package/src/chain/errors/blockError.ts +1 -1
  512. package/src/chain/errors/executionPayloadBid.ts +12 -0
  513. package/src/chain/errors/executionPayloadEnvelope.ts +8 -0
  514. package/src/chain/errors/inclusionList.ts +38 -0
  515. package/src/chain/errors/index.ts +1 -1
  516. package/src/chain/forkChoice/index.ts +11 -0
  517. package/src/chain/forkChoiceExecutionEngine.ts +183 -0
  518. package/src/chain/interface.ts +11 -6
  519. package/src/chain/opPools/aggregatedAttestationPool.ts +246 -43
  520. package/src/chain/opPools/attestationPool.ts +16 -4
  521. package/src/chain/opPools/inclusionListStore.ts +208 -0
  522. package/src/chain/opPools/index.ts +2 -0
  523. package/src/chain/opPools/payloadAttestationPool.ts +18 -7
  524. package/src/chain/opPools/singleAttestationPool.ts +287 -0
  525. package/src/chain/opPools/syncCommitteeMessagePool.ts +10 -3
  526. package/src/chain/opPools/syncContributionAndProofPool.ts +13 -3
  527. package/src/chain/opPools/utils.ts +1 -1
  528. package/src/chain/options.ts +5 -4
  529. package/src/chain/produceBlock/produceBlockBody.ts +67 -22
  530. package/src/chain/proposerTracker.ts +94 -0
  531. package/src/chain/regen/interface.ts +2 -2
  532. package/src/chain/regen/queued.ts +6 -4
  533. package/src/chain/seenCache/seenGossipBlockInput.ts +9 -93
  534. package/src/chain/validation/executionPayloadBid.ts +54 -183
  535. package/src/chain/validation/executionPayloadEnvelope.ts +68 -1
  536. package/src/chain/validation/inclusionList.ts +192 -0
  537. package/src/chain/validation/index.ts +1 -0
  538. package/src/chain/validatorMonitor.ts +0 -6
  539. package/src/db/beacon.ts +44 -0
  540. package/src/db/dataColumnStore.ts +2 -4
  541. package/src/db/flatFileStore/flatFileStore.ts +7 -7
  542. package/src/db/flatFileStore/slotIndex.ts +4 -3
  543. package/src/db/interface.ts +2 -0
  544. package/src/db/repositories/blobSidecars.ts +0 -1
  545. package/src/db/repositories/dataColumnSidecarArchive.ts +20 -0
  546. package/src/execution/builder/apiClient.ts +16 -13
  547. package/src/execution/builder/http.ts +4 -0
  548. package/src/execution/builder/validateBid.ts +23 -2
  549. package/src/execution/engine/blobVersionedHashes.ts +1 -1
  550. package/src/execution/engine/disabled.ts +4 -0
  551. package/src/execution/engine/http.ts +59 -47
  552. package/src/execution/engine/index.ts +1 -1
  553. package/src/execution/engine/interface.ts +46 -13
  554. package/src/execution/engine/jsonRpcTransport.ts +56 -31
  555. package/src/execution/engine/mock.ts +32 -14
  556. package/src/execution/engine/payloadIdCache.ts +24 -6
  557. package/src/execution/engine/restTransport.ts +18 -23
  558. package/src/execution/engine/sszTypes.ts +0 -9
  559. package/src/execution/engine/transport.ts +13 -17
  560. package/src/execution/engine/types.ts +44 -24
  561. package/src/execution/engine/utils.ts +4 -2
  562. package/src/index.ts +2 -0
  563. package/src/metrics/metrics/beacon.ts +37 -30
  564. package/src/metrics/metrics/lodestar.ts +106 -18
  565. package/src/metrics/server/http.ts +5 -5
  566. package/src/monitoring/service.ts +1 -1
  567. package/src/network/core/networkCore.ts +11 -1
  568. package/src/network/core/networkCoreWorker.ts +2 -0
  569. package/src/network/core/networkCoreWorkerHandler.ts +8 -1
  570. package/src/network/core/types.ts +6 -1
  571. package/src/network/gossip/gossipsub.ts +11 -0
  572. package/src/network/gossip/interface.ts +5 -5
  573. package/src/network/gossip/topic.ts +14 -25
  574. package/src/network/interface.ts +4 -5
  575. package/src/network/libp2p/index.ts +5 -1
  576. package/src/network/network.ts +66 -58
  577. package/src/network/options.ts +4 -0
  578. package/src/network/peers/peerManager.ts +28 -3
  579. package/src/network/peers/utils/assertPeerRelevance.ts +39 -23
  580. package/src/network/peers/utils/enrSubnetsDeserialize.ts +5 -2
  581. package/src/network/peers/utils/prioritizePeers.ts +14 -22
  582. package/src/network/peers/utils/subnetMap.ts +6 -3
  583. package/src/network/processor/extractSlotRootFns.ts +0 -9
  584. package/src/network/processor/gossipHandlers.ts +150 -183
  585. package/src/network/processor/gossipQueues/index.ts +6 -6
  586. package/src/network/processor/gossipValidatorFn.ts +5 -5
  587. package/src/network/processor/index.ts +58 -28
  588. package/src/network/processor/types.ts +1 -1
  589. package/src/network/reqresp/ReqRespBeaconNode.ts +7 -7
  590. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -2
  591. package/src/network/reqresp/handlers/inclusionListsByIndices.ts +44 -0
  592. package/src/network/reqresp/handlers/index.ts +5 -17
  593. package/src/network/reqresp/protocols.ts +6 -12
  594. package/src/network/reqresp/rateLimit.ts +5 -17
  595. package/src/network/reqresp/types.ts +6 -13
  596. package/src/network/subnets/attnetsService.ts +94 -6
  597. package/src/network/subnets/interface.ts +7 -0
  598. package/src/node/nodejs.ts +58 -22
  599. package/src/node/options.ts +9 -6
  600. package/src/sync/interface.ts +1 -0
  601. package/src/sync/range/batch.ts +9 -21
  602. package/src/sync/range/chain.ts +2 -14
  603. package/src/sync/sync.ts +65 -4
  604. package/src/sync/unknownBlock.ts +48 -36
  605. package/src/sync/utils/downloadByRange.ts +31 -230
  606. package/src/sync/utils/downloadByRoot.ts +15 -142
  607. package/src/util/blobs.ts +0 -34
  608. package/src/util/execution.ts +8 -102
  609. package/src/util/file.ts +8 -9
  610. package/src/util/queue/itemQueue.ts +1 -1
  611. package/src/util/sszBytes.ts +42 -24
  612. package/src/util/types.ts +1 -8
  613. package/lib/chain/errors/blobSidecarError.d.ts +0 -108
  614. package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
  615. package/lib/chain/errors/blobSidecarError.js +0 -38
  616. package/lib/chain/errors/blobSidecarError.js.map +0 -1
  617. package/lib/chain/validation/blobSidecar.d.ts +0 -16
  618. package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
  619. package/lib/chain/validation/blobSidecar.js +0 -276
  620. package/lib/chain/validation/blobSidecar.js.map +0 -1
  621. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +0 -9
  622. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
  623. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +0 -91
  624. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +0 -1
  625. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts +0 -5
  626. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
  627. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +0 -46
  628. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +0 -1
  629. package/src/chain/errors/blobSidecarError.ts +0 -70
  630. package/src/chain/validation/blobSidecar.ts +0 -357
  631. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -133
  632. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -69
@@ -1,4 +1,3 @@
1
- import {BitArray} from "@chainsafe/ssz";
2
1
  import {ChainForkConfig} from "@lodestar/config";
3
2
  import {
4
3
  IForkChoice,
@@ -16,7 +15,6 @@ import {
16
15
  ForkPostGloas,
17
16
  ForkPreGloas,
18
17
  ForkSeq,
19
- INCLUSION_LIST_COMMITTEE_SIZE,
20
18
  isForkPostAltair,
21
19
  isForkPostBellatrix,
22
20
  isForkPostGloas,
@@ -74,14 +72,15 @@ import {
74
72
  } from "@lodestar/utils";
75
73
  import {ZERO_HASH_HEX} from "../../constants/index.js";
76
74
  import {numToQuantity} from "../../execution/engine/utils.js";
77
- import {IExecutionBuilder, IExecutionEngine, PayloadAttributes, PayloadId} from "../../execution/index.js";
75
+ import {IExecutionBuilder, PayloadAttributes, PayloadId} from "../../execution/index.js";
78
76
  import {getShufflingDependentRoot} from "../../util/dependentRoot.js";
79
77
  import {fromGraffitiBytes} from "../../util/graffiti.js";
80
78
  import {kzg} from "../../util/kzg.js";
81
79
  import {BeaconProposerCache} from "../beaconProposerCache.js";
82
80
  import type {BeaconChain} from "../chain.js";
81
+ import {ForkChoiceExecutionEngine} from "../forkChoiceExecutionEngine.js";
83
82
  import {CommonBlockBody} from "../interface.js";
84
- import {ProposerPreferencesPool} from "../opPools/index.js";
83
+ import {InclusionListStore, ProposerPreferencesPool} from "../opPools/index.js";
85
84
  import {validateBlobsAndKzgCommitments, validateCellsAndKzgCommitments} from "./validateBlobsAndKzgCommitments.js";
86
85
 
87
86
  // Time to provide the EL to generate a payload from new payload id
@@ -391,8 +390,19 @@ export async function produceBlockBody<T extends BlockType>(
391
390
  executionRequestsRoot: ssz.gloas.ExecutionRequests.hashTreeRoot(executionRequests as gloas.ExecutionRequests),
392
391
  };
393
392
  if (ForkSeq[fork] >= ForkSeq.heze) {
394
- // TODO HEZE: populate from inclusion list pool once IL aggregation is wired up.
395
- (bid as heze.ExecutionPayloadBid).inclusionListBits = BitArray.fromBitLen(INCLUSION_LIST_COMMITTEE_SIZE);
393
+ // Built from the full view (only_timely=False), a superset of the receiver's timely-only
394
+ // is_inclusion_list_bits_inclusive check
395
+ const inclusionListSlot = blockSlot - 1;
396
+ (bid as heze.ExecutionPayloadBid).inclusionListBits = this.inclusionListStore.getInclusionListBits(
397
+ inclusionListSlot,
398
+ getShufflingDependentRoot(
399
+ this.forkChoice,
400
+ computeEpochAtSlot(inclusionListSlot),
401
+ computeEpochAtSlot(parentBlock.slot),
402
+ parentBlock
403
+ ),
404
+ false
405
+ );
396
406
  }
397
407
  const signedBid: gloas.SignedExecutionPayloadBid = {
398
408
  message: bid,
@@ -733,10 +743,11 @@ export async function produceBlockBody<T extends BlockType>(
733
743
  */
734
744
  export async function prepareExecutionPayload(
735
745
  chain: {
736
- executionEngine: IExecutionEngine;
746
+ executionEngine: ForkChoiceExecutionEngine;
737
747
  config: ChainForkConfig;
738
748
  forkChoice: IForkChoice;
739
749
  proposerPreferencesPool: ProposerPreferencesPool;
750
+ inclusionListStore: InclusionListStore;
740
751
  },
741
752
  logger: Logger,
742
753
  fork: ForkPostBellatrix,
@@ -756,12 +767,25 @@ export async function prepareExecutionPayload(
756
767
  const timestamp = computeTimeAtSlot(chain.config, state.slot, state.genesisTime);
757
768
  const prevRandao = state.getRandaoMix(state.epoch);
758
769
 
770
+ // Post-heze the inclusion lists are part of the cache key, so a list set that changed since the
771
+ // payload was prepared triggers a new forkchoiceUpdated instead of reusing a payload built without them
772
+ let attributes = payloadAttributes;
773
+ if (attributes === undefined && ForkSeq[fork] >= ForkSeq.heze) {
774
+ attributes = preparePayloadAttributes(fork, chain, {
775
+ prepareState: state,
776
+ prepareSlot: state.slot,
777
+ parentBlockRoot,
778
+ parentBlockHash,
779
+ feeRecipient: suggestedFeeRecipient,
780
+ });
781
+ }
782
+
759
783
  const payloadIdCached = chain.executionEngine.payloadIdCache.get({
760
784
  headBlockHash: toRootHex(parentBlockHash),
761
- finalizedBlockHash,
762
785
  timestamp: numToQuantity(timestamp),
763
786
  prevRandao: toHex(prevRandao),
764
787
  suggestedFeeRecipient,
788
+ inclusionListTransactions: attributes?.inclusionListTransactions,
765
789
  });
766
790
 
767
791
  // prepareExecutionPayload will throw error via notifyForkchoiceUpdate if
@@ -782,22 +806,20 @@ export async function prepareExecutionPayload(
782
806
  prepType = PayloadPreparationType.Fresh;
783
807
  }
784
808
 
785
- const attributes: PayloadAttributes =
786
- payloadAttributes ??
787
- preparePayloadAttributes(fork, chain, {
788
- prepareState: state,
789
- prepareSlot: state.slot,
790
- parentBlockRoot,
791
- parentBlockHash,
792
- feeRecipient: suggestedFeeRecipient,
793
- });
794
-
795
809
  payloadId = await chain.executionEngine.notifyForkchoiceUpdate(
796
810
  fork,
811
+ toRootHex(parentBlockRoot),
797
812
  toRootHex(parentBlockHash),
798
813
  safeBlockHash,
799
814
  finalizedBlockHash,
800
- attributes
815
+ attributes ??
816
+ preparePayloadAttributes(fork, chain, {
817
+ prepareState: state,
818
+ prepareSlot: state.slot,
819
+ parentBlockRoot,
820
+ parentBlockHash,
821
+ feeRecipient: suggestedFeeRecipient,
822
+ })
801
823
  );
802
824
  logger.verbose("Prepared payload id from execution engine", {payloadId});
803
825
  }
@@ -842,6 +864,7 @@ export function getPayloadAttributesForSSE(
842
864
  config: ChainForkConfig;
843
865
  forkChoice: IForkChoice;
844
866
  proposerPreferencesPool: ProposerPreferencesPool;
867
+ inclusionListStore: InclusionListStore;
845
868
  },
846
869
  {
847
870
  prepareState,
@@ -898,6 +921,7 @@ function preparePayloadAttributes(
898
921
  config: ChainForkConfig;
899
922
  forkChoice: IForkChoice;
900
923
  proposerPreferencesPool: ProposerPreferencesPool;
924
+ inclusionListStore: InclusionListStore;
901
925
  },
902
926
  {
903
927
  prepareState,
@@ -966,8 +990,27 @@ function preparePayloadAttributes(
966
990
  }
967
991
 
968
992
  if (ForkSeq[fork] >= ForkSeq.heze) {
969
- // TODO HEZE: populate from inclusion list pool once IL aggregation is wired up.
970
- (payloadAttributes as heze.SSEPayloadAttributes["payloadAttributes"]).inclusionListTransactions = [];
993
+ // Built from the full view including untimely lists (only_timely=False in prepare_execution_payload),
994
+ // a superset of the timely-only set every validator enforces
995
+ const parentBlockRootHex = toRootHex(parentBlockRoot);
996
+ const parentBlock = chain.forkChoice.getBlockHexAndBlockHash(parentBlockRootHex, toRootHex(parentBlockHash));
997
+ if (parentBlock === null) {
998
+ throw new Error(
999
+ `Parent block not in fork choice for Heze payload attributes parentBlockRoot=${parentBlockRootHex} parentBlockHash=${toRootHex(parentBlockHash)}`
1000
+ );
1001
+ }
1002
+ const inclusionListSlot = prepareSlot - 1;
1003
+ (payloadAttributes as heze.SSEPayloadAttributes["payloadAttributes"]).inclusionListTransactions =
1004
+ chain.inclusionListStore.getInclusionListTransactions(
1005
+ inclusionListSlot,
1006
+ getShufflingDependentRoot(
1007
+ chain.forkChoice,
1008
+ computeEpochAtSlot(inclusionListSlot),
1009
+ computeEpochAtSlot(parentBlock.slot),
1010
+ parentBlock
1011
+ ),
1012
+ false
1013
+ );
971
1014
  }
972
1015
 
973
1016
  return payloadAttributes;
@@ -1084,11 +1127,13 @@ export async function produceCommonBlockBody<T extends BlockType>(
1084
1127
  this.opPool.getSlashingsAndExits(currentState, blockType, this.metrics);
1085
1128
 
1086
1129
  const endAttestations = stepsMetrics?.startTimer();
1130
+ // TODO: extract to a separate BeaconChain method to coordinate the 2 op-pools
1087
1131
  const attestations = this.aggregatedAttestationPool.getAttestationsForBlock(
1088
1132
  fork,
1089
1133
  this.forkChoice,
1090
1134
  this.shufflingCache,
1091
- currentState
1135
+ currentState,
1136
+ this.singleAttestationPool
1092
1137
  );
1093
1138
  endAttestations?.({
1094
1139
  step: BlockProductionStep.attestations,
@@ -0,0 +1,94 @@
1
+ import {MIN_ATTESTATION_INCLUSION_DELAY} from "@lodestar/params";
2
+ import {computeEpochAtSlot, computeStartSlotAtEpoch} from "@lodestar/state-transition";
3
+ import {Slot} from "@lodestar/types";
4
+ import {Metrics} from "../metrics/metrics.js";
5
+
6
+ /**
7
+ * Track upcoming block proposals of validators connected to this node, and the vote slots those blocks can include,
8
+ * to only then insert single attestations into the SingleAttestationPool
9
+ */
10
+ export class ProposerTracker {
11
+ /** Local proposal slots that have not passed yet */
12
+ private readonly proposalSlots = new Set<Slot>();
13
+ /** Vote slots of tracked proposals, see `getFirstIncludableVoteSlot` */
14
+ private readonly collectableSlots = new Set<Slot>();
15
+ private clockSlot = 0;
16
+
17
+ /**
18
+ * @param ignoreProposalDuty dev only, collect every vote slot a block at the clock slot can include regardless of
19
+ * local proposals
20
+ */
21
+ constructor(
22
+ private readonly ignoreProposalDuty = false,
23
+ metrics: Metrics | null = null
24
+ ) {
25
+ metrics?.proposerTracker.proposalSlots.addCollect(() =>
26
+ metrics.proposerTracker.proposalSlots.set(this.proposalSlots.size)
27
+ );
28
+ metrics?.proposerTracker.collectableSlot.addCollect(() =>
29
+ metrics.proposerTracker.collectableSlot.set(this.shouldCollect(this.clockSlot) ? 1 : 0)
30
+ );
31
+ }
32
+
33
+ /**
34
+ * Idempotent, a known proposal is ignored
35
+ * @returns true if the proposal was not tracked before
36
+ */
37
+ addProposal(proposalSlot: Slot): boolean {
38
+ if (this.proposalSlots.has(proposalSlot)) {
39
+ return false;
40
+ }
41
+
42
+ this.proposalSlots.add(proposalSlot);
43
+ for (
44
+ let voteSlot = getFirstIncludableVoteSlot(proposalSlot);
45
+ voteSlot <= proposalSlot - MIN_ATTESTATION_INCLUSION_DELAY;
46
+ voteSlot++
47
+ ) {
48
+ this.collectableSlots.add(voteSlot);
49
+ }
50
+ return true;
51
+ }
52
+
53
+ shouldCollect(attestationSlot: Slot): boolean {
54
+ if (this.ignoreProposalDuty) {
55
+ // to test block production without proposal duties
56
+ return attestationSlot >= getFirstIncludableVoteSlot(this.clockSlot);
57
+ }
58
+ return this.collectableSlots.has(attestationSlot);
59
+ }
60
+
61
+ /**
62
+ * Drop proposals that have passed. A proposal is kept during its own slot so that its single attestations stay
63
+ * available until the block is produced. Vote slots are dropped once no remaining proposal can include them.
64
+ */
65
+ prune(clockSlot: Slot): void {
66
+ this.clockSlot = clockSlot;
67
+ for (const proposalSlot of this.proposalSlots) {
68
+ if (proposalSlot < clockSlot) {
69
+ this.proposalSlots.delete(proposalSlot);
70
+ }
71
+ }
72
+
73
+ if (this.proposalSlots.size === 0) {
74
+ this.collectableSlots.clear();
75
+ return;
76
+ }
77
+
78
+ // Each remaining proposal covers its own vote slots, so a vote slot below the lowest one is covered by none
79
+ const lowestCollectableVoteSlot = getFirstIncludableVoteSlot(Math.min(...this.proposalSlots));
80
+ for (const voteSlot of this.collectableSlots) {
81
+ if (voteSlot < lowestCollectableVoteSlot) {
82
+ this.collectableSlots.delete(voteSlot);
83
+ }
84
+ }
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Since deneb (EIP-7045) a block includes attestations of its current and previous epoch, so the first vote slot it can
90
+ * include is the start of the previous epoch, 32 to 63 slots before it on mainnet
91
+ */
92
+ function getFirstIncludableVoteSlot(blockSlot: Slot): Slot {
93
+ return computeStartSlotAtEpoch(Math.max(computeEpochAtSlot(blockSlot) - 1, 0));
94
+ }
@@ -24,7 +24,7 @@ export enum RegenCaller {
24
24
  validateApiVoluntaryExit = "validateApiVoluntaryExit",
25
25
  publishDeferredVoluntaryExits = "publishDeferredVoluntaryExits",
26
26
  validateGossipExecutionPayloadBid = "validateGossipExecutionPayloadBid",
27
- validateApiExecutionPayloadBid = "validateApiExecutionPayloadBid",
27
+ validateGossipInclusionList = "validateGossipInclusionList",
28
28
  validateGossipPayloadAttestationMessage = "validateGossipPayloadAttestationMessage",
29
29
  validateGossipProposerPreferences = "validateGossipProposerPreferences",
30
30
  onForkChoiceFinalized = "onForkChoiceFinalized",
@@ -52,7 +52,7 @@ export interface IStateRegenerator extends IStateRegeneratorInternal {
52
52
  onCheckpoint(finalizedEpoch: Epoch, justifiedEpoch: Epoch, headStateRoot: RootHex): void;
53
53
  processState(blockRootHex: RootHex, postState: IBeaconStateView): void;
54
54
  addCheckpointState(cp: phase0.Checkpoint, item: IBeaconStateView): void;
55
- updateHeadState(newHead: ProtoBlock, maybeHeadState: IBeaconStateView): void;
55
+ updateHeadState(newHead: ProtoBlock, maybeHeadState?: IBeaconStateView): void;
56
56
  updatePreComputedCheckpoint(rootHex: RootHex, epoch: Epoch): number | null;
57
57
  }
58
58
 
@@ -154,18 +154,20 @@ export class QueuedStateRegenerator implements IStateRegenerator {
154
154
  this.checkpointStateCache.add(cp, item);
155
155
  }
156
156
 
157
- updateHeadState(newHead: ProtoBlock, maybeHeadState: IBeaconStateView): void {
157
+ updateHeadState(newHead: ProtoBlock, maybeHeadState?: IBeaconStateView): void {
158
158
  const {stateRoot: newHeadStateRoot, blockRoot: newHeadBlockRoot, slot: newHeadSlot} = newHead;
159
- const maybeHeadStateRoot = toRootHex(maybeHeadState.hashTreeRoot());
159
+ const maybeHeadStateRoot = maybeHeadState ? toRootHex(maybeHeadState.hashTreeRoot()) : undefined;
160
160
  const logCtx = {
161
161
  newHeadSlot,
162
162
  newHeadBlockRoot,
163
163
  newHeadStateRoot,
164
- maybeHeadSlot: maybeHeadState.slot,
164
+ maybeHeadSlot: maybeHeadState?.slot,
165
165
  maybeHeadStateRoot,
166
166
  };
167
167
  const headState =
168
- newHeadStateRoot === maybeHeadStateRoot ? maybeHeadState : this.blockStateCache.get(newHeadStateRoot);
168
+ maybeHeadState && newHeadStateRoot === maybeHeadStateRoot
169
+ ? maybeHeadState
170
+ : this.blockStateCache.get(newHeadStateRoot);
169
171
 
170
172
  if (headState) {
171
173
  this.blockStateCache.setHeadState(headState);
@@ -4,15 +4,14 @@ import {
4
4
  ForkName,
5
5
  ForkPostFulu,
6
6
  ForkPostGloas,
7
- ForkPreDeneb,
7
+ ForkPreFulu,
8
8
  ForkPreGloas,
9
9
  SLOTS_PER_EPOCH,
10
- isForkPostDeneb,
11
10
  isForkPostFulu,
12
11
  isForkPostGloas,
13
12
  } from "@lodestar/params";
14
13
  import {computeStartSlotAtEpoch} from "@lodestar/state-transition";
15
- import {BLSSignature, RootHex, SignedBeaconBlock, Slot, deneb, fulu} from "@lodestar/types";
14
+ import {BLSSignature, RootHex, SignedBeaconBlock, Slot, fulu} from "@lodestar/types";
16
15
  import {LodestarError, Logger, byteArrayEquals, pruneSetToMax} from "@lodestar/utils";
17
16
  import {Metrics} from "../../metrics/metrics.js";
18
17
  import {MAX_LOOK_AHEAD_EPOCHS} from "../../sync/constants.js";
@@ -21,19 +20,15 @@ import {CustodyConfig} from "../../util/dataColumns.js";
21
20
  import {SerializedCache} from "../../util/serializedCache.js";
22
21
  import {
23
22
  BlockInput,
24
- BlockInputBlobs,
25
23
  BlockInputColumns,
26
24
  BlockInputNoData,
27
25
  BlockInputPreData,
28
26
  BlockWithSource,
29
27
  DAType,
30
- ForkBlobsDA,
31
28
  IBlockInput,
32
29
  LogMetaBasic,
33
- LogMetaBlobs,
34
30
  LogMetaColumns,
35
31
  SourceMeta,
36
- isBlockInputBlobs,
37
32
  isBlockInputColumns,
38
33
  isDaOutOfRange,
39
34
  } from "../blocks/blockInput/index.js";
@@ -62,20 +57,17 @@ export type SeenBlockInputCacheModules = {
62
57
  logger?: Logger;
63
58
  };
64
59
 
65
- export type GetByBlobOptions = {
60
+ export type GetByColumnOptions = {
66
61
  throwErrorIfAlreadyKnown?: boolean;
67
62
  };
68
63
 
69
64
  /**
70
65
  * Consumers that create BlockInputs or change types of old BlockInputs
71
66
  *
72
- * - gossipHandlers (block and blob)
73
- * - beaconBlocksMaybeBlobsByRange
74
- * - unavailableBeaconBlobsByRoot (beaconBlocksMaybeBlobsByRoot)
67
+ * - gossipHandlers (block and data column)
68
+ * - cacheByRangeResponses in sync/utils/downloadByRange.ts
69
+ * - downloadByRoot in sync/utils/downloadByRoot.ts
75
70
  * - publishBlock in the beacon/blocks/index.ts API
76
- * https://github.com/ChainSafe/lodestar/blob/unstable/packages/beacon-node/src/api/impl/beacon/blocks/index.ts#L62
77
- * - maybeValidateBlobs in verifyBlocksDataAvailability (is_data_available spec function)
78
- * https://github.com/ChainSafe/lodestar/blob/unstable/packages/beacon-node/src/chain/blocks/verifyBlocksDataAvailability.ts#L111
79
71
  *
80
72
  *
81
73
  * Pruning management for SeenBlockInputCache
@@ -238,17 +230,6 @@ export class SeenBlockInput {
238
230
  seenTimestampSec,
239
231
  peerIdStr,
240
232
  });
241
- } else if (!isForkPostDeneb(forkName)) {
242
- // Pre-deneb
243
- blockInput = BlockInputPreData.createFromBlock({
244
- block: block as SignedBeaconBlock<ForkPreDeneb>,
245
- blockRootHex,
246
- daOutOfRange,
247
- forkName,
248
- source,
249
- seenTimestampSec,
250
- peerIdStr,
251
- });
252
233
  } else if (isForkPostFulu(forkName)) {
253
234
  // Fulu Only
254
235
  blockInput = BlockInputColumns.createFromBlock({
@@ -263,9 +244,8 @@ export class SeenBlockInput {
263
244
  peerIdStr,
264
245
  });
265
246
  } else {
266
- // Deneb and Electra
267
- blockInput = BlockInputBlobs.createFromBlock({
268
- block: block as SignedBeaconBlock<ForkBlobsDA>,
247
+ blockInput = BlockInputPreData.createFromBlock({
248
+ block: block as SignedBeaconBlock<ForkPreFulu>,
269
249
  blockRootHex,
270
250
  daOutOfRange,
271
251
  forkName,
@@ -288,66 +268,6 @@ export class SeenBlockInput {
288
268
  return blockInput as BlockInput;
289
269
  }
290
270
 
291
- getByBlob(
292
- {
293
- blockRootHex,
294
- blobSidecar,
295
- source,
296
- seenTimestampSec,
297
- peerIdStr,
298
- }: SourceMeta & {blockRootHex: RootHex; blobSidecar: deneb.BlobSidecar},
299
- opts: GetByBlobOptions = {}
300
- ): BlockInputBlobs {
301
- // TODO(peerDAS): Why is it necessary to static cast this here. All conditional paths result in a valid value so should be defined correctly below
302
- let blockInput = this.blockInputs.get(blockRootHex) as IBlockInput;
303
- let created = false;
304
- if (!blockInput) {
305
- created = true;
306
- const {forkName, daOutOfRange} = this.buildCommonProps(blobSidecar.signedBlockHeader.message.slot);
307
- blockInput = BlockInputBlobs.createFromBlob({
308
- blobSidecar,
309
- blockRootHex,
310
- daOutOfRange,
311
- forkName,
312
- source,
313
- seenTimestampSec,
314
- peerIdStr,
315
- });
316
- this.metrics?.seenCache.blockInput.createdByBlob.inc();
317
- this.blockInputs.set(blockRootHex, blockInput);
318
- }
319
-
320
- if (!isBlockInputBlobs(blockInput)) {
321
- throw new SeenBlockInputCacheError(
322
- {
323
- code: SeenBlockInputCacheErrorCode.WRONG_BLOCK_INPUT_TYPE,
324
- cachedType: blockInput.type,
325
- requestedType: DAType.Blobs,
326
- ...blockInput.getLogMeta(),
327
- },
328
- `BlockInputType mismatch adding blobIndex=${blobSidecar.index}`
329
- );
330
- }
331
-
332
- if (!blockInput.hasBlob(blobSidecar.index)) {
333
- blockInput.addBlob({blobSidecar, blockRootHex, source, seenTimestampSec, peerIdStr});
334
- } else if (!created) {
335
- this.logger?.debug(
336
- `Attempt to cache blob index #${blobSidecar.index} but is already cached on BlockInput`,
337
- blockInput.getLogMeta()
338
- );
339
- this.metrics?.seenCache.blockInput.duplicateBlobCount.inc({source});
340
- if (opts.throwErrorIfAlreadyKnown) {
341
- throw new SeenBlockInputCacheError({
342
- code: SeenBlockInputCacheErrorCode.GOSSIP_BLOB_ALREADY_KNOWN,
343
- ...blockInput.getLogMeta(),
344
- });
345
- }
346
- }
347
-
348
- return blockInput;
349
- }
350
-
351
271
  getByColumn(
352
272
  {
353
273
  blockRootHex,
@@ -356,7 +276,7 @@ export class SeenBlockInput {
356
276
  source,
357
277
  peerIdStr,
358
278
  }: SourceMeta & {blockRootHex: RootHex; columnSidecar: fulu.DataColumnSidecar},
359
- opts: GetByBlobOptions = {}
279
+ opts: GetByColumnOptions = {}
360
280
  ): BlockInputColumns {
361
281
  let blockInput = this.blockInputs.get(blockRootHex);
362
282
  let created = false;
@@ -473,7 +393,6 @@ export class SeenBlockInput {
473
393
 
474
394
  enum SeenBlockInputCacheErrorCode {
475
395
  WRONG_BLOCK_INPUT_TYPE = "BLOCK_INPUT_CACHE_ERROR_WRONG_BLOCK_INPUT_TYPE",
476
- GOSSIP_BLOB_ALREADY_KNOWN = "BLOCK_INPUT_CACHE_ERROR_GOSSIP_BLOB_ALREADY_KNOWN",
477
396
  GOSSIP_COLUMN_ALREADY_KNOWN = "BLOCK_INPUT_CACHE_ERROR_GOSSIP_COLUMN_ALREADY_KNOWN",
478
397
  }
479
398
 
@@ -483,9 +402,6 @@ type SeenBlockInputCacheErrorType =
483
402
  cachedType: DAType;
484
403
  requestedType: DAType;
485
404
  })
486
- | (LogMetaBlobs & {
487
- code: SeenBlockInputCacheErrorCode.GOSSIP_BLOB_ALREADY_KNOWN;
488
- })
489
405
  | (LogMetaColumns & {
490
406
  code: SeenBlockInputCacheErrorCode.GOSSIP_COLUMN_ALREADY_KNOWN;
491
407
  });