@lodestar/beacon-node 1.51.0-dev.17f78227c7 → 1.51.0-dev.1b22218e60

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 (642) 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/aggregateAndProof.js +1 -1
  207. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  208. package/lib/chain/validation/attestation.js +1 -1
  209. package/lib/chain/validation/attestation.js.map +1 -1
  210. package/lib/chain/validation/executionPayloadBid.d.ts +0 -15
  211. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  212. package/lib/chain/validation/executionPayloadBid.js +37 -158
  213. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  214. package/lib/chain/validation/executionPayloadEnvelope.d.ts +6 -0
  215. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  216. package/lib/chain/validation/executionPayloadEnvelope.js +53 -0
  217. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  218. package/lib/chain/validation/inclusionList.d.ts +14 -0
  219. package/lib/chain/validation/inclusionList.d.ts.map +1 -0
  220. package/lib/chain/validation/inclusionList.js +150 -0
  221. package/lib/chain/validation/inclusionList.js.map +1 -0
  222. package/lib/chain/validation/index.d.ts +1 -0
  223. package/lib/chain/validation/index.d.ts.map +1 -1
  224. package/lib/chain/validation/index.js +1 -0
  225. package/lib/chain/validation/index.js.map +1 -1
  226. package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
  227. package/lib/chain/validation/syncCommittee.js +16 -10
  228. package/lib/chain/validation/syncCommittee.js.map +1 -1
  229. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  230. package/lib/chain/validation/syncCommitteeContributionAndProof.js +11 -0
  231. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  232. package/lib/chain/validatorMonitor.d.ts +1 -2
  233. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  234. package/lib/chain/validatorMonitor.js +0 -3
  235. package/lib/chain/validatorMonitor.js.map +1 -1
  236. package/lib/db/beacon.d.ts +7 -0
  237. package/lib/db/beacon.d.ts.map +1 -1
  238. package/lib/db/beacon.js +34 -0
  239. package/lib/db/beacon.js.map +1 -1
  240. package/lib/db/dataColumnStore.d.ts +1 -1
  241. package/lib/db/dataColumnStore.d.ts.map +1 -1
  242. package/lib/db/dataColumnStore.js +1 -4
  243. package/lib/db/dataColumnStore.js.map +1 -1
  244. package/lib/db/flatFileStore/flatFileStore.js +5 -5
  245. package/lib/db/flatFileStore/flatFileStore.js.map +1 -1
  246. package/lib/db/flatFileStore/slotIndex.d.ts.map +1 -1
  247. package/lib/db/flatFileStore/slotIndex.js +2 -2
  248. package/lib/db/flatFileStore/slotIndex.js.map +1 -1
  249. package/lib/db/interface.d.ts +1 -0
  250. package/lib/db/interface.d.ts.map +1 -1
  251. package/lib/db/repositories/blobSidecars.d.ts +0 -1
  252. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  253. package/lib/db/repositories/blobSidecars.js +0 -1
  254. package/lib/db/repositories/blobSidecars.js.map +1 -1
  255. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +6 -0
  256. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  257. package/lib/db/repositories/dataColumnSidecarArchive.js +19 -0
  258. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  259. package/lib/execution/builder/apiClient.d.ts +14 -8
  260. package/lib/execution/builder/apiClient.d.ts.map +1 -1
  261. package/lib/execution/builder/apiClient.js +12 -10
  262. package/lib/execution/builder/apiClient.js.map +1 -1
  263. package/lib/execution/builder/http.d.ts +2 -0
  264. package/lib/execution/builder/http.d.ts.map +1 -1
  265. package/lib/execution/builder/http.js +2 -0
  266. package/lib/execution/builder/http.js.map +1 -1
  267. package/lib/execution/builder/validateBid.d.ts.map +1 -1
  268. package/lib/execution/builder/validateBid.js +14 -1
  269. package/lib/execution/builder/validateBid.js.map +1 -1
  270. package/lib/execution/engine/blobVersionedHashes.d.ts +1 -1
  271. package/lib/execution/engine/blobVersionedHashes.d.ts.map +1 -1
  272. package/lib/execution/engine/blobVersionedHashes.js.map +1 -1
  273. package/lib/execution/engine/disabled.d.ts +1 -0
  274. package/lib/execution/engine/disabled.d.ts.map +1 -1
  275. package/lib/execution/engine/disabled.js +3 -0
  276. package/lib/execution/engine/disabled.js.map +1 -1
  277. package/lib/execution/engine/http.d.ts +12 -8
  278. package/lib/execution/engine/http.d.ts.map +1 -1
  279. package/lib/execution/engine/http.js +35 -14
  280. package/lib/execution/engine/http.js.map +1 -1
  281. package/lib/execution/engine/index.d.ts +1 -1
  282. package/lib/execution/engine/index.d.ts.map +1 -1
  283. package/lib/execution/engine/index.js +1 -1
  284. package/lib/execution/engine/index.js.map +1 -1
  285. package/lib/execution/engine/interface.d.ts +29 -8
  286. package/lib/execution/engine/interface.d.ts.map +1 -1
  287. package/lib/execution/engine/interface.js.map +1 -1
  288. package/lib/execution/engine/jsonRpcTransport.d.ts +5 -6
  289. package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -1
  290. package/lib/execution/engine/jsonRpcTransport.js +34 -20
  291. package/lib/execution/engine/jsonRpcTransport.js.map +1 -1
  292. package/lib/execution/engine/mock.d.ts +1 -1
  293. package/lib/execution/engine/mock.d.ts.map +1 -1
  294. package/lib/execution/engine/mock.js +31 -11
  295. package/lib/execution/engine/mock.js.map +1 -1
  296. package/lib/execution/engine/payloadIdCache.d.ts +5 -3
  297. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  298. package/lib/execution/engine/payloadIdCache.js +15 -4
  299. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  300. package/lib/execution/engine/restTransport.d.ts +4 -5
  301. package/lib/execution/engine/restTransport.d.ts.map +1 -1
  302. package/lib/execution/engine/restTransport.js +4 -15
  303. package/lib/execution/engine/restTransport.js.map +1 -1
  304. package/lib/execution/engine/sszTypes.d.ts +38 -47
  305. package/lib/execution/engine/sszTypes.d.ts.map +1 -1
  306. package/lib/execution/engine/sszTypes.js +0 -5
  307. package/lib/execution/engine/sszTypes.js.map +1 -1
  308. package/lib/execution/engine/transport.d.ts +4 -14
  309. package/lib/execution/engine/transport.d.ts.map +1 -1
  310. package/lib/execution/engine/types.d.ts +25 -9
  311. package/lib/execution/engine/types.d.ts.map +1 -1
  312. package/lib/execution/engine/types.js +19 -14
  313. package/lib/execution/engine/types.js.map +1 -1
  314. package/lib/execution/engine/utils.d.ts.map +1 -1
  315. package/lib/execution/engine/utils.js +3 -2
  316. package/lib/execution/engine/utils.js.map +1 -1
  317. package/lib/index.d.ts +1 -0
  318. package/lib/index.d.ts.map +1 -1
  319. package/lib/index.js +2 -0
  320. package/lib/index.js.map +1 -1
  321. package/lib/metrics/metrics/beacon.d.ts +16 -9
  322. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  323. package/lib/metrics/metrics/beacon.js +35 -30
  324. package/lib/metrics/metrics/beacon.js.map +1 -1
  325. package/lib/metrics/metrics/lodestar.d.ts +42 -8
  326. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  327. package/lib/metrics/metrics/lodestar.js +104 -18
  328. package/lib/metrics/metrics/lodestar.js.map +1 -1
  329. package/lib/metrics/server/http.js +5 -5
  330. package/lib/metrics/server/http.js.map +1 -1
  331. package/lib/monitoring/service.js +1 -1
  332. package/lib/monitoring/service.js.map +1 -1
  333. package/lib/network/core/networkCore.d.ts +4 -1
  334. package/lib/network/core/networkCore.d.ts.map +1 -1
  335. package/lib/network/core/networkCore.js +7 -0
  336. package/lib/network/core/networkCore.js.map +1 -1
  337. package/lib/network/core/networkCoreWorker.js +2 -0
  338. package/lib/network/core/networkCoreWorker.js.map +1 -1
  339. package/lib/network/core/networkCoreWorkerHandler.d.ts +4 -1
  340. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  341. package/lib/network/core/networkCoreWorkerHandler.js +6 -0
  342. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  343. package/lib/network/core/types.d.ts +6 -1
  344. package/lib/network/core/types.d.ts.map +1 -1
  345. package/lib/network/gossip/gossipsub.d.ts +1 -0
  346. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  347. package/lib/network/gossip/gossipsub.js +10 -0
  348. package/lib/network/gossip/gossipsub.js.map +1 -1
  349. package/lib/network/gossip/interface.d.ts +8 -9
  350. package/lib/network/gossip/interface.d.ts.map +1 -1
  351. package/lib/network/gossip/interface.js +1 -1
  352. package/lib/network/gossip/interface.js.map +1 -1
  353. package/lib/network/gossip/topic.d.ts +13 -21
  354. package/lib/network/gossip/topic.d.ts.map +1 -1
  355. package/lib/network/gossip/topic.js +13 -24
  356. package/lib/network/gossip/topic.js.map +1 -1
  357. package/lib/network/interface.d.ts +5 -5
  358. package/lib/network/interface.d.ts.map +1 -1
  359. package/lib/network/libp2p/index.d.ts.map +1 -1
  360. package/lib/network/libp2p/index.js +5 -1
  361. package/lib/network/libp2p/index.js.map +1 -1
  362. package/lib/network/network.d.ts +9 -7
  363. package/lib/network/network.d.ts.map +1 -1
  364. package/lib/network/network.js +58 -35
  365. package/lib/network/network.js.map +1 -1
  366. package/lib/network/options.d.ts +2 -0
  367. package/lib/network/options.d.ts.map +1 -1
  368. package/lib/network/options.js +2 -0
  369. package/lib/network/options.js.map +1 -1
  370. package/lib/network/peers/peerManager.d.ts +2 -1
  371. package/lib/network/peers/peerManager.d.ts.map +1 -1
  372. package/lib/network/peers/peerManager.js +28 -1
  373. package/lib/network/peers/peerManager.js.map +1 -1
  374. package/lib/network/peers/utils/assertPeerRelevance.d.ts +9 -1
  375. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -1
  376. package/lib/network/peers/utils/assertPeerRelevance.js +32 -21
  377. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  378. package/lib/network/peers/utils/prioritizePeers.d.ts +4 -1
  379. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  380. package/lib/network/peers/utils/prioritizePeers.js +8 -16
  381. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  382. package/lib/network/peers/utils/subnetMap.d.ts +5 -2
  383. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  384. package/lib/network/peers/utils/subnetMap.js +6 -3
  385. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  386. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
  387. package/lib/network/processor/extractSlotRootFns.js +1 -8
  388. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  389. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  390. package/lib/network/processor/gossipHandlers.js +118 -149
  391. package/lib/network/processor/gossipHandlers.js.map +1 -1
  392. package/lib/network/processor/gossipQueues/index.js +6 -6
  393. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  394. package/lib/network/processor/gossipValidatorFn.js +5 -5
  395. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  396. package/lib/network/processor/index.d.ts +6 -0
  397. package/lib/network/processor/index.d.ts.map +1 -1
  398. package/lib/network/processor/index.js +56 -29
  399. package/lib/network/processor/index.js.map +1 -1
  400. package/lib/network/reqresp/ReqRespBeaconNode.js +6 -3
  401. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  402. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +2 -2
  403. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  404. package/lib/network/reqresp/handlers/inclusionListsByIndices.d.ts +10 -0
  405. package/lib/network/reqresp/handlers/inclusionListsByIndices.d.ts.map +1 -0
  406. package/lib/network/reqresp/handlers/inclusionListsByIndices.js +30 -0
  407. package/lib/network/reqresp/handlers/inclusionListsByIndices.js.map +1 -0
  408. package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
  409. package/lib/network/reqresp/handlers/index.js +6 -12
  410. package/lib/network/reqresp/handlers/index.js.map +1 -1
  411. package/lib/network/reqresp/protocols.d.ts +1 -2
  412. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  413. package/lib/network/reqresp/protocols.js +5 -10
  414. package/lib/network/reqresp/protocols.js.map +1 -1
  415. package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
  416. package/lib/network/reqresp/rateLimit.js +5 -17
  417. package/lib/network/reqresp/rateLimit.js.map +1 -1
  418. package/lib/network/reqresp/types.d.ts +6 -9
  419. package/lib/network/reqresp/types.d.ts.map +1 -1
  420. package/lib/network/reqresp/types.js +4 -7
  421. package/lib/network/reqresp/types.js.map +1 -1
  422. package/lib/network/subnets/attnetsService.d.ts +35 -5
  423. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  424. package/lib/network/subnets/attnetsService.js +84 -6
  425. package/lib/network/subnets/attnetsService.js.map +1 -1
  426. package/lib/network/subnets/interface.d.ts +7 -0
  427. package/lib/network/subnets/interface.d.ts.map +1 -1
  428. package/lib/network/subnets/interface.js.map +1 -1
  429. package/lib/node/nodejs.d.ts +3 -1
  430. package/lib/node/nodejs.d.ts.map +1 -1
  431. package/lib/node/nodejs.js +47 -21
  432. package/lib/node/nodejs.js.map +1 -1
  433. package/lib/node/options.d.ts +3 -1
  434. package/lib/node/options.d.ts.map +1 -1
  435. package/lib/node/options.js +4 -2
  436. package/lib/node/options.js.map +1 -1
  437. package/lib/sync/interface.d.ts.map +1 -1
  438. package/lib/sync/interface.js.map +1 -1
  439. package/lib/sync/range/batch.d.ts +2 -3
  440. package/lib/sync/range/batch.d.ts.map +1 -1
  441. package/lib/sync/range/batch.js +9 -22
  442. package/lib/sync/range/batch.js.map +1 -1
  443. package/lib/sync/range/chain.d.ts.map +1 -1
  444. package/lib/sync/range/chain.js +2 -15
  445. package/lib/sync/range/chain.js.map +1 -1
  446. package/lib/sync/sync.d.ts +15 -0
  447. package/lib/sync/sync.d.ts.map +1 -1
  448. package/lib/sync/sync.js +103 -25
  449. package/lib/sync/sync.js.map +1 -1
  450. package/lib/sync/unknownBlock.d.ts.map +1 -1
  451. package/lib/sync/unknownBlock.js +43 -25
  452. package/lib/sync/unknownBlock.js.map +1 -1
  453. package/lib/sync/utils/downloadByRange.d.ts +6 -34
  454. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  455. package/lib/sync/utils/downloadByRange.js +24 -128
  456. package/lib/sync/utils/downloadByRange.js.map +1 -1
  457. package/lib/sync/utils/downloadByRoot.d.ts +2 -18
  458. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  459. package/lib/sync/utils/downloadByRoot.js +14 -99
  460. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  461. package/lib/util/blobs.d.ts +1 -7
  462. package/lib/util/blobs.d.ts.map +1 -1
  463. package/lib/util/blobs.js +0 -19
  464. package/lib/util/blobs.js.map +1 -1
  465. package/lib/util/execution.d.ts +3 -4
  466. package/lib/util/execution.d.ts.map +1 -1
  467. package/lib/util/execution.js +1 -73
  468. package/lib/util/execution.js.map +1 -1
  469. package/lib/util/file.d.ts.map +1 -1
  470. package/lib/util/file.js +8 -9
  471. package/lib/util/file.js.map +1 -1
  472. package/lib/util/queue/itemQueue.js +1 -1
  473. package/lib/util/queue/itemQueue.js.map +1 -1
  474. package/lib/util/sszBytes.d.ts +5 -1
  475. package/lib/util/sszBytes.d.ts.map +1 -1
  476. package/lib/util/sszBytes.js +36 -19
  477. package/lib/util/sszBytes.js.map +1 -1
  478. package/lib/util/types.d.ts +0 -5
  479. package/lib/util/types.d.ts.map +1 -1
  480. package/lib/util/types.js +1 -2
  481. package/lib/util/types.js.map +1 -1
  482. package/package.json +31 -32
  483. package/src/api/impl/api.ts +1 -1
  484. package/src/api/impl/beacon/blocks/index.ts +81 -126
  485. package/src/api/impl/beacon/index.ts +3 -1
  486. package/src/api/impl/beacon/pool/index.ts +31 -1
  487. package/src/api/impl/beacon/state/index.ts +10 -1
  488. package/src/api/impl/beacon/state/utils.ts +20 -10
  489. package/src/api/impl/debug/index.ts +4 -0
  490. package/src/api/impl/validator/index.ts +178 -39
  491. package/src/api/options.ts +3 -0
  492. package/src/chain/GetBlobsTracker.ts +82 -52
  493. package/src/chain/archiveStore/archiveStore.ts +1 -0
  494. package/src/chain/archiveStore/utils/archiveBlocks.ts +76 -130
  495. package/src/chain/blocks/blockInput/blockInput.ts +11 -343
  496. package/src/chain/blocks/blockInput/errors.ts +1 -2
  497. package/src/chain/blocks/blockInput/types.ts +2 -20
  498. package/src/chain/blocks/importBlock.ts +58 -77
  499. package/src/chain/blocks/importExecutionPayload.ts +123 -36
  500. package/src/chain/blocks/index.ts +11 -4
  501. package/src/chain/blocks/payloadEnvelopeProcessor.ts +35 -24
  502. package/src/chain/blocks/types.ts +8 -29
  503. package/src/chain/blocks/verifyBlock.ts +31 -16
  504. package/src/chain/blocks/verifyBlocksDataAvailability.ts +16 -2
  505. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -6
  506. package/src/chain/blocks/verifyBlocksSanityChecks.ts +4 -1
  507. package/src/chain/blocks/verifyBlocksSignatures.ts +10 -5
  508. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +14 -6
  509. package/src/chain/blocks/writeBlockInputToDb.ts +6 -29
  510. package/src/chain/bls/interface.ts +2 -0
  511. package/src/chain/bls/multithread/index.ts +48 -24
  512. package/src/chain/bls/multithread/types.ts +1 -1
  513. package/src/chain/bls/multithread/worker.ts +1 -5
  514. package/src/chain/bls/singleThread.ts +1 -1
  515. package/src/chain/bls/utils.ts +1 -1
  516. package/src/chain/chain.ts +144 -42
  517. package/src/chain/emitter.ts +8 -8
  518. package/src/chain/errors/blockError.ts +1 -1
  519. package/src/chain/errors/executionPayloadBid.ts +12 -0
  520. package/src/chain/errors/executionPayloadEnvelope.ts +8 -0
  521. package/src/chain/errors/inclusionList.ts +38 -0
  522. package/src/chain/errors/index.ts +1 -1
  523. package/src/chain/forkChoice/index.ts +11 -0
  524. package/src/chain/forkChoiceExecutionEngine.ts +183 -0
  525. package/src/chain/interface.ts +11 -6
  526. package/src/chain/opPools/aggregatedAttestationPool.ts +246 -43
  527. package/src/chain/opPools/attestationPool.ts +16 -4
  528. package/src/chain/opPools/inclusionListStore.ts +208 -0
  529. package/src/chain/opPools/index.ts +2 -0
  530. package/src/chain/opPools/payloadAttestationPool.ts +18 -7
  531. package/src/chain/opPools/singleAttestationPool.ts +287 -0
  532. package/src/chain/opPools/syncCommitteeMessagePool.ts +10 -3
  533. package/src/chain/opPools/syncContributionAndProofPool.ts +13 -3
  534. package/src/chain/opPools/utils.ts +1 -1
  535. package/src/chain/options.ts +5 -4
  536. package/src/chain/produceBlock/produceBlockBody.ts +67 -22
  537. package/src/chain/proposerTracker.ts +94 -0
  538. package/src/chain/regen/interface.ts +2 -2
  539. package/src/chain/regen/queued.ts +6 -4
  540. package/src/chain/seenCache/seenGossipBlockInput.ts +9 -93
  541. package/src/chain/validation/aggregateAndProof.ts +1 -1
  542. package/src/chain/validation/attestation.ts +1 -1
  543. package/src/chain/validation/executionPayloadBid.ts +54 -183
  544. package/src/chain/validation/executionPayloadEnvelope.ts +68 -1
  545. package/src/chain/validation/inclusionList.ts +192 -0
  546. package/src/chain/validation/index.ts +1 -0
  547. package/src/chain/validation/syncCommittee.ts +31 -15
  548. package/src/chain/validation/syncCommitteeContributionAndProof.ts +13 -0
  549. package/src/chain/validatorMonitor.ts +0 -6
  550. package/src/db/beacon.ts +44 -0
  551. package/src/db/dataColumnStore.ts +2 -4
  552. package/src/db/flatFileStore/flatFileStore.ts +7 -7
  553. package/src/db/flatFileStore/slotIndex.ts +4 -3
  554. package/src/db/interface.ts +2 -0
  555. package/src/db/repositories/blobSidecars.ts +0 -1
  556. package/src/db/repositories/dataColumnSidecarArchive.ts +20 -0
  557. package/src/execution/builder/apiClient.ts +16 -13
  558. package/src/execution/builder/http.ts +4 -0
  559. package/src/execution/builder/validateBid.ts +23 -2
  560. package/src/execution/engine/blobVersionedHashes.ts +1 -1
  561. package/src/execution/engine/disabled.ts +4 -0
  562. package/src/execution/engine/http.ts +59 -47
  563. package/src/execution/engine/index.ts +1 -1
  564. package/src/execution/engine/interface.ts +46 -13
  565. package/src/execution/engine/jsonRpcTransport.ts +56 -31
  566. package/src/execution/engine/mock.ts +32 -14
  567. package/src/execution/engine/payloadIdCache.ts +24 -6
  568. package/src/execution/engine/restTransport.ts +18 -23
  569. package/src/execution/engine/sszTypes.ts +0 -9
  570. package/src/execution/engine/transport.ts +13 -17
  571. package/src/execution/engine/types.ts +44 -24
  572. package/src/execution/engine/utils.ts +4 -2
  573. package/src/index.ts +2 -0
  574. package/src/metrics/metrics/beacon.ts +37 -30
  575. package/src/metrics/metrics/lodestar.ts +106 -18
  576. package/src/metrics/server/http.ts +5 -5
  577. package/src/monitoring/service.ts +1 -1
  578. package/src/network/core/networkCore.ts +11 -1
  579. package/src/network/core/networkCoreWorker.ts +2 -0
  580. package/src/network/core/networkCoreWorkerHandler.ts +8 -1
  581. package/src/network/core/types.ts +6 -1
  582. package/src/network/gossip/gossipsub.ts +11 -0
  583. package/src/network/gossip/interface.ts +5 -5
  584. package/src/network/gossip/topic.ts +14 -25
  585. package/src/network/interface.ts +4 -5
  586. package/src/network/libp2p/index.ts +5 -1
  587. package/src/network/network.ts +66 -58
  588. package/src/network/options.ts +4 -0
  589. package/src/network/peers/peerManager.ts +28 -3
  590. package/src/network/peers/utils/assertPeerRelevance.ts +39 -23
  591. package/src/network/peers/utils/prioritizePeers.ts +14 -22
  592. package/src/network/peers/utils/subnetMap.ts +6 -3
  593. package/src/network/processor/extractSlotRootFns.ts +0 -9
  594. package/src/network/processor/gossipHandlers.ts +150 -183
  595. package/src/network/processor/gossipQueues/index.ts +6 -6
  596. package/src/network/processor/gossipValidatorFn.ts +5 -5
  597. package/src/network/processor/index.ts +48 -27
  598. package/src/network/processor/types.ts +1 -1
  599. package/src/network/reqresp/ReqRespBeaconNode.ts +7 -7
  600. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -2
  601. package/src/network/reqresp/handlers/inclusionListsByIndices.ts +44 -0
  602. package/src/network/reqresp/handlers/index.ts +5 -17
  603. package/src/network/reqresp/protocols.ts +6 -12
  604. package/src/network/reqresp/rateLimit.ts +5 -17
  605. package/src/network/reqresp/types.ts +6 -13
  606. package/src/network/subnets/attnetsService.ts +94 -6
  607. package/src/network/subnets/interface.ts +7 -0
  608. package/src/node/nodejs.ts +58 -22
  609. package/src/node/options.ts +9 -6
  610. package/src/sync/interface.ts +1 -0
  611. package/src/sync/range/batch.ts +9 -21
  612. package/src/sync/range/chain.ts +2 -14
  613. package/src/sync/sync.ts +108 -26
  614. package/src/sync/unknownBlock.ts +48 -36
  615. package/src/sync/utils/downloadByRange.ts +31 -230
  616. package/src/sync/utils/downloadByRoot.ts +15 -142
  617. package/src/util/blobs.ts +0 -34
  618. package/src/util/execution.ts +8 -102
  619. package/src/util/file.ts +8 -9
  620. package/src/util/queue/itemQueue.ts +1 -1
  621. package/src/util/sszBytes.ts +42 -24
  622. package/src/util/types.ts +1 -8
  623. package/lib/chain/errors/blobSidecarError.d.ts +0 -108
  624. package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
  625. package/lib/chain/errors/blobSidecarError.js +0 -38
  626. package/lib/chain/errors/blobSidecarError.js.map +0 -1
  627. package/lib/chain/validation/blobSidecar.d.ts +0 -16
  628. package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
  629. package/lib/chain/validation/blobSidecar.js +0 -276
  630. package/lib/chain/validation/blobSidecar.js.map +0 -1
  631. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +0 -9
  632. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
  633. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +0 -91
  634. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +0 -1
  635. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts +0 -5
  636. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
  637. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +0 -46
  638. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +0 -1
  639. package/src/chain/errors/blobSidecarError.ts +0 -70
  640. package/src/chain/validation/blobSidecar.ts +0 -357
  641. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -133
  642. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -69
@@ -125,7 +125,6 @@ type WorkOpts = {
125
125
  const executeGossipWorkOrderObj: Record<GossipType, WorkOpts> = {
126
126
  [GossipType.beacon_block]: {bypassQueue: true},
127
127
  [GossipType.execution_payload]: {bypassQueue: true},
128
- [GossipType.blob_sidecar]: {bypassQueue: true},
129
128
  [GossipType.data_column_sidecar]: {bypassQueue: true},
130
129
  [GossipType.beacon_aggregate_and_proof]: {},
131
130
  [GossipType.voluntary_exit]: {},
@@ -140,6 +139,7 @@ const executeGossipWorkOrderObj: Record<GossipType, WorkOpts> = {
140
139
  [GossipType.payload_attestation_message]: {},
141
140
  [GossipType.execution_payload_bid]: {},
142
141
  [GossipType.proposer_preferences]: {},
142
+ [GossipType.inclusion_list]: {},
143
143
  };
144
144
  const executeGossipWorkOrder = Object.keys(executeGossipWorkOrderObj) as (keyof typeof executeGossipWorkOrderObj)[];
145
145
 
@@ -243,6 +243,12 @@ type SearchUnknownRootTarget =
243
243
  * Such that enough work is processed to fill either one of the queue.
244
244
  */
245
245
  export class NetworkProcessor {
246
+ private stopped = false;
247
+ /**
248
+ * Replaced by dropAllJobs(). Loops that yield while re-queueing awaiting messages compare it after each yield
249
+ * and stop, so no message is queued after a drop.
250
+ */
251
+ private jobGeneration = Symbol();
246
252
  private readonly chain: IBeaconChain;
247
253
  private readonly core: INetworkCore;
248
254
  private readonly events: NetworkEventBus;
@@ -334,16 +340,27 @@ export class NetworkProcessor {
334
340
  }
335
341
 
336
342
  async stop(): Promise<void> {
343
+ if (this.stopped) return;
344
+ this.stopped = true;
337
345
  this.events.off(NetworkEvent.pendingGossipsubMessage, this.onPendingGossipsubMessage);
338
346
  this.chain.emitter.off(routes.events.EventType.block, this.onBlockProcessed);
339
347
  this.chain.emitter.off(routes.events.EventType.executionPayload, this.onPayloadEnvelopeProcessed);
340
- this.chain.emitter.off(ClockEvent.slot, this.onClockSlot);
348
+ this.chain.clock.off(ClockEvent.slot, this.onClockSlot);
349
+ this.dropAllJobs();
341
350
  }
342
351
 
343
352
  dropAllJobs(): void {
353
+ this.jobGeneration = Symbol();
344
354
  for (const topic of executeGossipWorkOrder) {
345
355
  this.gossipQueues[topic].clear();
346
356
  }
357
+ this.awaitingMessagesByBlockRoot.clear();
358
+ this.awaitingBlockMessageCount = 0;
359
+ this.awaitingMessagesByPayloadBlockRoot.clear();
360
+ this.awaitingPayloadMessageCount = 0;
361
+ this.searchedRootsBySlot.clear();
362
+ this.bufferedRootsBySlot.clear();
363
+ this.fatalPeers.clear();
347
364
  }
348
365
 
349
366
  dumpGossipQueue(topic: GossipType): PendingGossipsubMessage[] {
@@ -363,7 +380,7 @@ export class NetworkProcessor {
363
380
  * prefer them as by-root download candidates.
364
381
  */
365
382
  searchUnknownBlock({slot, root}: SlotRootHex, source: BlockInputSource, peer?: PeerIdStr): void {
366
- if (this.chain.seenBlock(root)) {
383
+ if (this.stopped || this.chain.seenBlock(root)) {
367
384
  return;
368
385
  }
369
386
  const entry = this.searchedRootsBySlot.getOrDefault(slot).getOrDefault(root);
@@ -397,7 +414,7 @@ export class NetworkProcessor {
397
414
  peer?: PeerIdStr,
398
415
  slotIsPayloadSlot = false
399
416
  ): void {
400
- if (this.chain.seenPayloadEnvelope(root)) {
417
+ if (this.stopped || this.chain.seenPayloadEnvelope(root)) {
401
418
  return;
402
419
  }
403
420
  const entry = this.searchedRootsBySlot.getOrDefault(slot).getOrDefault(root);
@@ -800,6 +817,7 @@ export class NetworkProcessor {
800
817
  this.awaitingBlockMessageCount -= total;
801
818
  }
802
819
 
820
+ const generation = this.jobGeneration;
803
821
  const nowSec = Date.now() / 1000;
804
822
  let count = 0;
805
823
  // TODO: we can group attestations to process in batches but since we have the SeenAttestationDatas
@@ -818,6 +836,7 @@ export class NetworkProcessor {
818
836
  if (count === MAX_AWAITING_GOSSIP_OBJECTS_PER_TICK) {
819
837
  count = 0;
820
838
  await sleep(AWAITING_GOSSIP_OBJECTS_YIELD_EVERY_MS);
839
+ if (generation !== this.jobGeneration) return;
821
840
  }
822
841
  }
823
842
  }
@@ -842,6 +861,7 @@ export class NetworkProcessor {
842
861
  this.awaitingPayloadMessageCount -= total;
843
862
  }
844
863
 
864
+ const generation = this.jobGeneration;
845
865
  const nowSec = Date.now() / 1000;
846
866
  let count = 0;
847
867
  for (const messages of messagesByTopic.values()) {
@@ -857,6 +877,7 @@ export class NetworkProcessor {
857
877
  if (count === MAX_AWAITING_GOSSIP_OBJECTS_PER_TICK) {
858
878
  count = 0;
859
879
  await sleep(AWAITING_GOSSIP_OBJECTS_YIELD_EVERY_MS);
880
+ if (generation !== this.jobGeneration) return;
860
881
  }
861
882
  }
862
883
  }
@@ -866,19 +887,20 @@ export class NetworkProcessor {
866
887
  const nowSec = Date.now() / 1000;
867
888
  const minSlot = clockSlot - MAX_UNKNOWN_ROOTS_SLOT_CACHE_SIZE;
868
889
 
869
- for (const [slot, searchedRoots] of this.searchedRootsBySlot) {
890
+ for (const [slot, bufferedRoots] of this.bufferedRootsBySlot) {
870
891
  if (slot > minSlot) continue;
871
892
 
872
- // expire messages awaiting an unknown block for these roots. Only roots this slot did a BLOCK search
873
- // for (blockPeerIds set) have block waits keyed here; skipping the rest avoids deleting a payload wait
874
- // that a newer slot created for the same root (block/envelope searches share searchedRootsBySlot).
875
- for (const [rootHex, entry] of searchedRoots) {
876
- if (entry.blockPeerIds === undefined) continue;
893
+ for (const rootHex of bufferedRoots) {
877
894
  const messagesByTopic = this.awaitingMessagesByBlockRoot.get(rootHex);
878
895
  if (messagesByTopic === undefined) continue;
879
- let removed = 0;
896
+ let remaining = 0;
880
897
  for (const messages of messagesByTopic.values()) {
881
898
  for (const message of messages) {
899
+ // the same root may be buffered again from a newer slot, keep those messages.
900
+ // msgSlot is always set before buffering, a missing one expires rather than leaks
901
+ if ((message.msgSlot ?? minSlot) > minSlot) continue;
902
+ messages.delete(message);
903
+ this.awaitingBlockMessageCount--;
882
904
  const topicType = message.topic.type;
883
905
  this.metrics?.awaitingBlockGossipMessages.reject.inc({
884
906
  topic: topicType,
@@ -890,22 +912,22 @@ export class NetworkProcessor {
890
912
  );
891
913
  // No need to report the dropped job to gossip. It will be eventually pruned from the mcache
892
914
  }
893
- removed += messages.size;
894
- }
895
- if (this.awaitingMessagesByBlockRoot.delete(rootHex)) {
896
- this.awaitingBlockMessageCount -= removed;
915
+ remaining += messages.size;
897
916
  }
917
+ if (remaining === 0) this.awaitingMessagesByBlockRoot.delete(rootHex);
898
918
  }
899
919
 
900
- // expire messages awaiting an unknown payload envelope for these roots. Symmetric to the block pass:
901
- // only roots this slot did an ENVELOPE search for (envelopePeerIds set) have payload waits keyed here.
902
- for (const [rootHex, entry] of searchedRoots) {
903
- if (entry.envelopePeerIds === undefined) continue;
920
+ for (const rootHex of bufferedRoots) {
904
921
  const messagesByTopic = this.awaitingMessagesByPayloadBlockRoot.get(rootHex);
905
922
  if (messagesByTopic === undefined) continue;
906
- let removed = 0;
923
+ let remaining = 0;
907
924
  for (const messages of messagesByTopic.values()) {
908
925
  for (const message of messages) {
926
+ // the same root may be buffered again from a newer slot, keep those messages.
927
+ // msgSlot is always set before buffering, a missing one expires rather than leaks
928
+ if ((message.msgSlot ?? minSlot) > minSlot) continue;
929
+ messages.delete(message);
930
+ this.awaitingPayloadMessageCount--;
909
931
  const topicType = message.topic.type;
910
932
  this.metrics?.awaitingPayloadGossipMessages.reject.inc({
911
933
  topic: topicType,
@@ -917,18 +939,16 @@ export class NetworkProcessor {
917
939
  );
918
940
  // No need to report the dropped job to gossip. It will be eventually pruned from the mcache
919
941
  }
920
- removed += messages.size;
921
- }
922
- if (this.awaitingMessagesByPayloadBlockRoot.delete(rootHex)) {
923
- this.awaitingPayloadMessageCount -= removed;
942
+ remaining += messages.size;
924
943
  }
944
+ if (remaining === 0) this.awaitingMessagesByPayloadBlockRoot.delete(rootHex);
925
945
  }
926
946
 
927
- this.searchedRootsBySlot.delete(slot);
947
+ this.bufferedRootsBySlot.delete(slot);
928
948
  }
929
949
 
930
- for (const slot of this.bufferedRootsBySlot.keys()) {
931
- if (slot <= minSlot) this.bufferedRootsBySlot.delete(slot);
950
+ for (const slot of this.searchedRootsBySlot.keys()) {
951
+ if (slot <= minSlot) this.searchedRootsBySlot.delete(slot);
932
952
  }
933
953
 
934
954
  for (const [peer, slot] of this.fatalPeers) {
@@ -937,6 +957,7 @@ export class NetworkProcessor {
937
957
  };
938
958
 
939
959
  private executeWork(): void {
960
+ if (this.stopped) return;
940
961
  // TODO: Maybe de-bounce by timing the last time executeWork was run
941
962
 
942
963
  this.metrics?.networkProcessor.executeWorkCalls.inc();
@@ -11,7 +11,7 @@ export type GossipAttestationsWork = {
11
11
  export type PendingGossipsubMessage = {
12
12
  topic: GossipTopic;
13
13
  msg: Message;
14
- // only available for beacon_attestation and aggregate_and_proof
14
+ // set for every topic with a slot, held messages expire by it
15
15
  msgSlot?: Slot;
16
16
  msgId: string;
17
17
  propagationSource: PeerIdStr;
@@ -267,13 +267,6 @@ export class ReqRespBeaconNode extends ReqResp {
267
267
  );
268
268
  }
269
269
 
270
- if (ForkSeq[fork] >= ForkSeq.deneb) {
271
- protocolsAtFork.push(
272
- [protocols.BlobSidecarsByRoot(fork, this.config), this.getHandler(ReqRespMethod.BlobSidecarsByRoot)],
273
- [protocols.BlobSidecarsByRange(fork, this.config), this.getHandler(ReqRespMethod.BlobSidecarsByRange)]
274
- );
275
- }
276
-
277
270
  if (ForkSeq[fork] < ForkSeq.fulu) {
278
271
  // Unregister StatusV1, MetadataV2 at the fork boundary, so only declare for pre-fulu
279
272
  protocolsAtFork.push(
@@ -311,6 +304,13 @@ export class ReqRespBeaconNode extends ReqResp {
311
304
  );
312
305
  }
313
306
 
307
+ if (ForkSeq[fork] >= ForkSeq.heze) {
308
+ protocolsAtFork.push([
309
+ protocols.InclusionListsByIndices(fork, this.config),
310
+ this.getHandler(ReqRespMethod.InclusionListsByIndices),
311
+ ]);
312
+ }
313
+
314
314
  return protocolsAtFork;
315
315
  }
316
316
 
@@ -3,7 +3,7 @@ import {BeaconConfig} from "@lodestar/config";
3
3
  import {GENESIS_SLOT, isForkPostDeneb} from "@lodestar/params";
4
4
  import {RespStatus, ResponseError, ResponseOutgoing} from "@lodestar/reqresp";
5
5
  import {computeEpochAtSlot} from "@lodestar/state-transition";
6
- import {deneb, phase0} from "@lodestar/types";
6
+ import {phase0} from "@lodestar/types";
7
7
  import {IBeaconChain} from "../../../chain/index.js";
8
8
  import {IBeaconDb} from "../../../db/index.js";
9
9
  import {prettyPrintPeerId} from "../../util.js";
@@ -104,7 +104,7 @@ export async function* onBeaconBlocksByRange(
104
104
  export function validateBeaconBlocksByRangeRequest(
105
105
  config: BeaconConfig,
106
106
  request: phase0.BeaconBlocksByRangeRequest
107
- ): deneb.BlobSidecarsByRangeRequest {
107
+ ): Pick<phase0.BeaconBlocksByRangeRequest, "startSlot" | "count"> {
108
108
  const {startSlot} = request;
109
109
  let {count} = request;
110
110
 
@@ -0,0 +1,44 @@
1
+ import {PeerId} from "@libp2p/interface";
2
+ import {ResponseOutgoing} from "@lodestar/reqresp";
3
+ import {computeEpochAtSlot, computeStartSlotAtEpoch} from "@lodestar/state-transition";
4
+ import {heze, ssz} from "@lodestar/types";
5
+ import {toRootHex} from "@lodestar/utils";
6
+ import {IBeaconChain} from "../../../chain/index.js";
7
+ import {prettyPrintPeerId} from "../../util.js";
8
+
9
+ /**
10
+ * Only lists that passed gossip validation are stored and the store skips equivocators, so the spec's
11
+ * "SHOULD NOT respond with lists that fail gossip validation or are from equivocators" holds by construction.
12
+ */
13
+ export async function* onInclusionListsByIndices(
14
+ requestBody: heze.InclusionListsByIndicesRequest,
15
+ chain: IBeaconChain,
16
+ peerId: PeerId,
17
+ peerClient: string
18
+ ): AsyncIterable<ResponseOutgoing> {
19
+ const {slot, dependentRoot, indices} = requestBody;
20
+
21
+ const minimumRequestSlot = Math.max(
22
+ chain.clock.currentSlot - chain.config.MIN_SLOTS_FOR_INCLUSION_LISTS_REQUESTS,
23
+ computeStartSlotAtEpoch(chain.config.HEZE_FORK_EPOCH)
24
+ );
25
+ if (slot < minimumRequestSlot) {
26
+ chain.logger.debug("Cannot serve InclusionListsByIndices: slot below minimum request slot", {
27
+ slot,
28
+ minimumRequestSlot,
29
+ peer: prettyPrintPeerId(peerId),
30
+ client: peerClient,
31
+ });
32
+ return;
33
+ }
34
+
35
+ const signedInclusionLists = chain.inclusionListStore.getByIndices(slot, toRootHex(dependentRoot), indices);
36
+
37
+ const boundary = chain.config.getForkBoundaryAtEpoch(computeEpochAtSlot(slot));
38
+ for (const signedInclusionList of signedInclusionLists.slice(0, chain.config.MAX_REQUEST_INCLUSION_LIST)) {
39
+ yield {
40
+ data: ssz.heze.SignedInclusionList.serialize(signedInclusionList),
41
+ boundary,
42
+ };
43
+ }
44
+ }
@@ -5,7 +5,6 @@ import {IBeaconChain} from "../../../chain/index.js";
5
5
  import {IBeaconDb} from "../../../db/index.js";
6
6
  import {
7
7
  BeaconBlocksByRootRequestType,
8
- BlobSidecarsByRootRequestType,
9
8
  DataColumnSidecarsByRootRequestType,
10
9
  ExecutionPayloadEnvelopesByRootRequestType,
11
10
  } from "../../../util/types.js";
@@ -13,12 +12,11 @@ import {GetReqRespHandlerFn, ReqRespMethod} from "../types.js";
13
12
  import {onBeaconBlocksByHead} from "./beaconBlocksByHead.js";
14
13
  import {onBeaconBlocksByRange} from "./beaconBlocksByRange.js";
15
14
  import {onBeaconBlocksByRoot} from "./beaconBlocksByRoot.js";
16
- import {onBlobSidecarsByRange} from "./blobSidecarsByRange.js";
17
- import {onBlobSidecarsByRoot} from "./blobSidecarsByRoot.js";
18
15
  import {onDataColumnSidecarsByRange} from "./dataColumnSidecarsByRange.js";
19
16
  import {onDataColumnSidecarsByRoot} from "./dataColumnSidecarsByRoot.js";
20
17
  import {onExecutionPayloadEnvelopesByRange} from "./executionPayloadEnvelopesByRange.js";
21
18
  import {onExecutionPayloadEnvelopesByRoot} from "./executionPayloadEnvelopesByRoot.js";
19
+ import {onInclusionListsByIndices} from "./inclusionListsByIndices.js";
22
20
  import {onLightClientBootstrap} from "./lightClientBootstrap.js";
23
21
  import {onLightClientFinalityUpdate} from "./lightClientFinalityUpdate.js";
24
22
  import {onLightClientOptimisticUpdate} from "./lightClientOptimisticUpdate.js";
@@ -89,20 +87,6 @@ export function getReqRespHandlers({db, chain}: {db: IBeaconDb; chain: IBeaconCh
89
87
  const body = deserializeRequestBody(ssz.fulu.BeaconBlocksByHeadRequest, req.data);
90
88
  return onBeaconBlocksByHead(body, chain, peerId, peerClient);
91
89
  },
92
- [ReqRespMethod.BlobSidecarsByRoot]: (req) => {
93
- const fork = chain.config.getForkName(chain.clock.currentSlot);
94
- const body = deserializeRequestBody(BlobSidecarsByRootRequestType(fork, chain.config), req.data);
95
- return onBlobSidecarsByRoot(body, chain);
96
- },
97
- [ReqRespMethod.BlobSidecarsByRange]: (req) => {
98
- const body = deserializeRequestBody(ssz.deneb.BlobSidecarsByRangeRequest, req.data);
99
- return trackByRangeResponse(
100
- chain,
101
- ReqRespMethod.BlobSidecarsByRange,
102
- body.count,
103
- onBlobSidecarsByRange(body, chain, db)
104
- );
105
- },
106
90
  [ReqRespMethod.DataColumnSidecarsByRange]: (req, peerId, peerClient) => {
107
91
  const body = deserializeRequestBody(ssz.fulu.DataColumnSidecarsByRangeRequest, req.data);
108
92
  return trackByRangeResponse(
@@ -142,6 +126,10 @@ export function getReqRespHandlers({db, chain}: {db: IBeaconDb; chain: IBeaconCh
142
126
  },
143
127
  [ReqRespMethod.LightClientFinalityUpdate]: () => onLightClientFinalityUpdate(chain),
144
128
  [ReqRespMethod.LightClientOptimisticUpdate]: () => onLightClientOptimisticUpdate(chain),
129
+ [ReqRespMethod.InclusionListsByIndices]: (req, peerId, peerClient) => {
130
+ const body = deserializeRequestBody(ssz.heze.InclusionListsByIndicesRequest, req.data);
131
+ return onInclusionListsByIndices(body, chain, peerId, peerClient);
132
+ },
145
133
  };
146
134
 
147
135
  return (method) => handlers[method];
@@ -77,18 +77,6 @@ export const BeaconBlocksByHead = toProtocol({
77
77
  contextBytesType: ContextBytesType.ForkDigest,
78
78
  });
79
79
 
80
- export const BlobSidecarsByRange = toProtocol({
81
- method: ReqRespMethod.BlobSidecarsByRange,
82
- version: Version.V1,
83
- contextBytesType: ContextBytesType.ForkDigest,
84
- });
85
-
86
- export const BlobSidecarsByRoot = toProtocol({
87
- method: ReqRespMethod.BlobSidecarsByRoot,
88
- version: Version.V1,
89
- contextBytesType: ContextBytesType.ForkDigest,
90
- });
91
-
92
80
  export const DataColumnSidecarsByRange = toProtocol({
93
81
  method: ReqRespMethod.DataColumnSidecarsByRange,
94
82
  version: Version.V1,
@@ -113,6 +101,12 @@ export const ExecutionPayloadEnvelopesByRange = toProtocol({
113
101
  contextBytesType: ContextBytesType.ForkDigest,
114
102
  });
115
103
 
104
+ export const InclusionListsByIndices = toProtocol({
105
+ method: ReqRespMethod.InclusionListsByIndices,
106
+ version: Version.V1,
107
+ contextBytesType: ContextBytesType.ForkDigest,
108
+ });
109
+
116
110
  export const LightClientBootstrap = toProtocol({
117
111
  method: ReqRespMethod.LightClientBootstrap,
118
112
  version: Version.V1,
@@ -1,5 +1,5 @@
1
1
  import {BeaconConfig} from "@lodestar/config";
2
- import {ForkName, MAX_REQUEST_LIGHT_CLIENT_UPDATES, isForkPostDeneb, isForkPostElectra} from "@lodestar/params";
2
+ import {ForkName, MAX_REQUEST_LIGHT_CLIENT_UPDATES, isForkPostDeneb} from "@lodestar/params";
3
3
  import {InboundRateLimitQuota} from "@lodestar/reqresp";
4
4
  import {ReqRespMethod, RequestBodyByMethod, requestSszTypeByMethod} from "./types.js";
5
5
 
@@ -44,22 +44,6 @@ export const rateLimitQuotas: (fork: ForkName, config: BeaconConfig) => Record<R
44
44
  byPeer: {quota: config.MAX_REQUEST_BLOCKS_DENEB, quotaTimeMs: 10_000},
45
45
  getRequestCount: getRequestCountFn(fork, config, ReqRespMethod.BeaconBlocksByHead, (req) => req.count),
46
46
  },
47
- [ReqRespMethod.BlobSidecarsByRange]: {
48
- // Rationale: MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK
49
- byPeer: {
50
- quota: isForkPostElectra(fork) ? config.MAX_REQUEST_BLOB_SIDECARS_ELECTRA : config.MAX_REQUEST_BLOB_SIDECARS,
51
- quotaTimeMs: 10_000,
52
- },
53
- getRequestCount: getRequestCountFn(fork, config, ReqRespMethod.BlobSidecarsByRange, (req) => req.count),
54
- },
55
- [ReqRespMethod.BlobSidecarsByRoot]: {
56
- // Rationale: quota of BeaconBlocksByRoot * MAX_BLOBS_PER_BLOCK
57
- byPeer: {
58
- quota: isForkPostElectra(fork) ? config.MAX_REQUEST_BLOB_SIDECARS_ELECTRA : config.MAX_REQUEST_BLOB_SIDECARS,
59
- quotaTimeMs: 10_000,
60
- },
61
- getRequestCount: getRequestCountFn(fork, config, ReqRespMethod.BlobSidecarsByRoot, (req) => req.length),
62
- },
63
47
  [ReqRespMethod.DataColumnSidecarsByRange]: {
64
48
  // Rationale: MAX_REQUEST_BLOCKS_DENEB * NUMBER_OF_COLUMNS
65
49
  byPeer: {quota: config.MAX_REQUEST_DATA_COLUMN_SIDECARS, quotaTimeMs: 10_000},
@@ -109,6 +93,10 @@ export const rateLimitQuotas: (fork: ForkName, config: BeaconConfig) => Record<R
109
93
  // Allow 2 per slot and a very safe bound until there's more testing of real usage.
110
94
  byPeer: {quota: 2, quotaTimeMs: config.getSlotDurationMs(fork)},
111
95
  },
96
+ [ReqRespMethod.InclusionListsByIndices]: {
97
+ // Peers only backfill what gossip missed, so a small per-slot allowance is enough
98
+ byPeer: {quota: 5, quotaTimeMs: config.getSlotDurationMs(fork)},
99
+ },
112
100
  [ReqRespMethod.LightClientOptimisticUpdate]: {
113
101
  // Optimistic updates should not be requested more than once per slot.
114
102
  // Allow 2 per slot and a very safe bound until there's more testing of real usage.
@@ -13,9 +13,9 @@ import {
13
13
  SignedBeaconBlock,
14
14
  Status,
15
15
  altair,
16
- deneb,
17
16
  fulu,
18
17
  gloas,
18
+ heze,
19
19
  phase0,
20
20
  ssz,
21
21
  sszTypesFor,
@@ -23,8 +23,6 @@ import {
23
23
  import {
24
24
  BeaconBlocksByRootRequest,
25
25
  BeaconBlocksByRootRequestType,
26
- BlobSidecarsByRootRequest,
27
- BlobSidecarsByRootRequestType,
28
26
  DataColumnSidecarsByRootRequest,
29
27
  DataColumnSidecarsByRootRequestType,
30
28
  ExecutionPayloadEnvelopesByRootRequest,
@@ -43,8 +41,6 @@ export enum ReqRespMethod {
43
41
  BeaconBlocksByRange = "beacon_blocks_by_range",
44
42
  BeaconBlocksByRoot = "beacon_blocks_by_root",
45
43
  BeaconBlocksByHead = "beacon_blocks_by_head",
46
- BlobSidecarsByRange = "blob_sidecars_by_range",
47
- BlobSidecarsByRoot = "blob_sidecars_by_root",
48
44
  DataColumnSidecarsByRange = "data_column_sidecars_by_range",
49
45
  DataColumnSidecarsByRoot = "data_column_sidecars_by_root",
50
46
  ExecutionPayloadEnvelopesByRoot = "execution_payload_envelopes_by_root",
@@ -53,6 +49,7 @@ export enum ReqRespMethod {
53
49
  LightClientUpdatesByRange = "light_client_updates_by_range",
54
50
  LightClientFinalityUpdate = "light_client_finality_update",
55
51
  LightClientOptimisticUpdate = "light_client_optimistic_update",
52
+ InclusionListsByIndices = "inclusion_lists_by_indices",
56
53
  }
57
54
 
58
55
  // To typesafe events to network
@@ -64,8 +61,6 @@ export type RequestBodyByMethod = {
64
61
  [ReqRespMethod.BeaconBlocksByRange]: phase0.BeaconBlocksByRangeRequest;
65
62
  [ReqRespMethod.BeaconBlocksByRoot]: BeaconBlocksByRootRequest;
66
63
  [ReqRespMethod.BeaconBlocksByHead]: fulu.BeaconBlocksByHeadRequest;
67
- [ReqRespMethod.BlobSidecarsByRange]: deneb.BlobSidecarsByRangeRequest;
68
- [ReqRespMethod.BlobSidecarsByRoot]: BlobSidecarsByRootRequest;
69
64
  [ReqRespMethod.DataColumnSidecarsByRange]: fulu.DataColumnSidecarsByRangeRequest;
70
65
  [ReqRespMethod.DataColumnSidecarsByRoot]: DataColumnSidecarsByRootRequest;
71
66
  [ReqRespMethod.ExecutionPayloadEnvelopesByRoot]: ExecutionPayloadEnvelopesByRootRequest;
@@ -74,6 +69,7 @@ export type RequestBodyByMethod = {
74
69
  [ReqRespMethod.LightClientUpdatesByRange]: altair.LightClientUpdatesByRange;
75
70
  [ReqRespMethod.LightClientFinalityUpdate]: null;
76
71
  [ReqRespMethod.LightClientOptimisticUpdate]: null;
72
+ [ReqRespMethod.InclusionListsByIndices]: heze.InclusionListsByIndicesRequest;
77
73
  };
78
74
 
79
75
  type ResponseBodyByMethod = {
@@ -85,8 +81,6 @@ type ResponseBodyByMethod = {
85
81
  [ReqRespMethod.BeaconBlocksByRange]: SignedBeaconBlock;
86
82
  [ReqRespMethod.BeaconBlocksByRoot]: SignedBeaconBlock;
87
83
  [ReqRespMethod.BeaconBlocksByHead]: SignedBeaconBlock;
88
- [ReqRespMethod.BlobSidecarsByRange]: deneb.BlobSidecar;
89
- [ReqRespMethod.BlobSidecarsByRoot]: deneb.BlobSidecar;
90
84
  [ReqRespMethod.DataColumnSidecarsByRange]: DataColumnSidecar;
91
85
  [ReqRespMethod.DataColumnSidecarsByRoot]: DataColumnSidecar;
92
86
  [ReqRespMethod.ExecutionPayloadEnvelopesByRoot]: gloas.SignedExecutionPayloadEnvelope;
@@ -96,6 +90,7 @@ type ResponseBodyByMethod = {
96
90
  [ReqRespMethod.LightClientUpdatesByRange]: LightClientUpdate;
97
91
  [ReqRespMethod.LightClientFinalityUpdate]: LightClientFinalityUpdate;
98
92
  [ReqRespMethod.LightClientOptimisticUpdate]: LightClientOptimisticUpdate;
93
+ [ReqRespMethod.InclusionListsByIndices]: heze.SignedInclusionList;
99
94
  };
100
95
 
101
96
  /** Request SSZ type for each method and ForkName */
@@ -115,8 +110,6 @@ export const requestSszTypeByMethod: (
115
110
  [ReqRespMethod.BeaconBlocksByRange]: ssz.phase0.BeaconBlocksByRangeRequest,
116
111
  [ReqRespMethod.BeaconBlocksByRoot]: BeaconBlocksByRootRequestType(fork, config),
117
112
  [ReqRespMethod.BeaconBlocksByHead]: ssz.fulu.BeaconBlocksByHeadRequest,
118
- [ReqRespMethod.BlobSidecarsByRange]: ssz.deneb.BlobSidecarsByRangeRequest,
119
- [ReqRespMethod.BlobSidecarsByRoot]: BlobSidecarsByRootRequestType(fork, config),
120
113
  [ReqRespMethod.DataColumnSidecarsByRange]: ssz.fulu.DataColumnSidecarsByRangeRequest,
121
114
  [ReqRespMethod.DataColumnSidecarsByRoot]: DataColumnSidecarsByRootRequestType(config),
122
115
  [ReqRespMethod.ExecutionPayloadEnvelopesByRoot]: ExecutionPayloadEnvelopesByRootRequestType(config),
@@ -126,6 +119,7 @@ export const requestSszTypeByMethod: (
126
119
  [ReqRespMethod.LightClientUpdatesByRange]: ssz.altair.LightClientUpdatesByRange,
127
120
  [ReqRespMethod.LightClientFinalityUpdate]: null,
128
121
  [ReqRespMethod.LightClientOptimisticUpdate]: null,
122
+ [ReqRespMethod.InclusionListsByIndices]: ssz.heze.InclusionListsByIndicesRequest,
129
123
  });
130
124
 
131
125
  export type ResponseTypeGetter<T> = (fork: ForkName, version: number) => Type<T>;
@@ -147,8 +141,6 @@ export const responseSszTypeByMethod: {[K in ReqRespMethod]: ResponseTypeGetter<
147
141
  [ReqRespMethod.BeaconBlocksByRange]: blocksResponseType,
148
142
  [ReqRespMethod.BeaconBlocksByRoot]: blocksResponseType,
149
143
  [ReqRespMethod.BeaconBlocksByHead]: (fork) => ssz[fork].SignedBeaconBlock,
150
- [ReqRespMethod.BlobSidecarsByRange]: () => ssz.deneb.BlobSidecar,
151
- [ReqRespMethod.BlobSidecarsByRoot]: () => ssz.deneb.BlobSidecar,
152
144
  [ReqRespMethod.LightClientBootstrap]: (fork) => sszTypesFor(onlyPostAltairFork(fork)).LightClientBootstrap,
153
145
  [ReqRespMethod.LightClientUpdatesByRange]: (fork) => sszTypesFor(onlyPostAltairFork(fork)).LightClientUpdate,
154
146
  [ReqRespMethod.LightClientFinalityUpdate]: (fork) => sszTypesFor(onlyPostAltairFork(fork)).LightClientFinalityUpdate,
@@ -158,6 +150,7 @@ export const responseSszTypeByMethod: {[K in ReqRespMethod]: ResponseTypeGetter<
158
150
  [ReqRespMethod.ExecutionPayloadEnvelopesByRange]: () => ssz.gloas.SignedExecutionPayloadEnvelope,
159
151
  [ReqRespMethod.LightClientOptimisticUpdate]: (fork) =>
160
152
  sszTypesFor(onlyPostAltairFork(fork)).LightClientOptimisticUpdate,
153
+ [ReqRespMethod.InclusionListsByIndices]: () => ssz.heze.SignedInclusionList,
161
154
  };
162
155
 
163
156
  function onlyPostAltairFork(fork: ForkName): ForkPostAltair {