@lodestar/beacon-node 1.51.0-dev.c99cf49add → 1.51.0-dev.cda05d18f1

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 (645) 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/ColumnReconstructionTracker.d.ts +11 -11
  33. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
  34. package/lib/chain/ColumnReconstructionTracker.js +46 -40
  35. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  36. package/lib/chain/GetBlobsTracker.d.ts +13 -2
  37. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  38. package/lib/chain/GetBlobsTracker.js +69 -35
  39. package/lib/chain/GetBlobsTracker.js.map +1 -1
  40. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  41. package/lib/chain/archiveStore/archiveStore.js +1 -0
  42. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  43. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +4 -0
  44. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  45. package/lib/chain/archiveStore/utils/archiveBlocks.js +61 -97
  46. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  47. package/lib/chain/blocks/blockInput/blockInput.d.ts +11 -56
  48. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  49. package/lib/chain/blocks/blockInput/blockInput.js +5 -241
  50. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  51. package/lib/chain/blocks/blockInput/errors.d.ts +2 -4
  52. package/lib/chain/blocks/blockInput/errors.d.ts.map +1 -1
  53. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  54. package/lib/chain/blocks/blockInput/types.d.ts +2 -18
  55. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  56. package/lib/chain/blocks/blockInput/types.js +0 -1
  57. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  58. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  59. package/lib/chain/blocks/importBlock.js +42 -57
  60. package/lib/chain/blocks/importBlock.js.map +1 -1
  61. package/lib/chain/blocks/importExecutionPayload.d.ts +10 -11
  62. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  63. package/lib/chain/blocks/importExecutionPayload.js +82 -20
  64. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  65. package/lib/chain/blocks/index.d.ts.map +1 -1
  66. package/lib/chain/blocks/index.js +4 -4
  67. package/lib/chain/blocks/index.js.map +1 -1
  68. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +12 -9
  69. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
  70. package/lib/chain/blocks/payloadEnvelopeProcessor.js +24 -19
  71. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  72. package/lib/chain/blocks/types.d.ts +7 -19
  73. package/lib/chain/blocks/types.d.ts.map +1 -1
  74. package/lib/chain/blocks/types.js +5 -24
  75. package/lib/chain/blocks/types.js.map +1 -1
  76. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  77. package/lib/chain/blocks/verifyBlock.js +18 -7
  78. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  79. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  80. package/lib/chain/blocks/verifyBlocksDataAvailability.js +14 -2
  81. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  82. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -1
  83. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  84. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +7 -3
  85. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  86. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  87. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -0
  88. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  89. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  90. package/lib/chain/blocks/verifyBlocksSignatures.js +10 -5
  91. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  92. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +3 -3
  93. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
  94. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +11 -6
  95. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  96. package/lib/chain/blocks/writeBlockInputToDb.d.ts +0 -2
  97. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  98. package/lib/chain/blocks/writeBlockInputToDb.js +6 -24
  99. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  100. package/lib/chain/bls/interface.d.ts +2 -0
  101. package/lib/chain/bls/interface.d.ts.map +1 -1
  102. package/lib/chain/bls/multithread/index.d.ts +1 -1
  103. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  104. package/lib/chain/bls/multithread/index.js +50 -22
  105. package/lib/chain/bls/multithread/index.js.map +1 -1
  106. package/lib/chain/bls/multithread/types.d.ts +1 -1
  107. package/lib/chain/bls/multithread/types.d.ts.map +1 -1
  108. package/lib/chain/bls/multithread/worker.js +1 -1
  109. package/lib/chain/bls/multithread/worker.js.map +1 -1
  110. package/lib/chain/bls/singleThread.js +1 -1
  111. package/lib/chain/bls/singleThread.js.map +1 -1
  112. package/lib/chain/bls/utils.js +1 -1
  113. package/lib/chain/bls/utils.js.map +1 -1
  114. package/lib/chain/chain.d.ts +26 -4
  115. package/lib/chain/chain.d.ts.map +1 -1
  116. package/lib/chain/chain.js +128 -43
  117. package/lib/chain/chain.js.map +1 -1
  118. package/lib/chain/emitter.d.ts +7 -7
  119. package/lib/chain/emitter.d.ts.map +1 -1
  120. package/lib/chain/emitter.js +5 -5
  121. package/lib/chain/emitter.js.map +1 -1
  122. package/lib/chain/errors/blockError.d.ts +1 -1
  123. package/lib/chain/errors/blockError.d.ts.map +1 -1
  124. package/lib/chain/errors/blockError.js +1 -1
  125. package/lib/chain/errors/blockError.js.map +1 -1
  126. package/lib/chain/errors/executionPayloadBid.d.ts +11 -1
  127. package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
  128. package/lib/chain/errors/executionPayloadBid.js +2 -0
  129. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  130. package/lib/chain/errors/executionPayloadEnvelope.d.ts +7 -0
  131. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  132. package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
  133. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  134. package/lib/chain/errors/inclusionList.d.ts +60 -0
  135. package/lib/chain/errors/inclusionList.d.ts.map +1 -0
  136. package/lib/chain/errors/inclusionList.js +19 -0
  137. package/lib/chain/errors/inclusionList.js.map +1 -0
  138. package/lib/chain/errors/index.d.ts +1 -1
  139. package/lib/chain/errors/index.d.ts.map +1 -1
  140. package/lib/chain/errors/index.js +1 -1
  141. package/lib/chain/errors/index.js.map +1 -1
  142. package/lib/chain/forkChoice/index.d.ts +11 -1
  143. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  144. package/lib/chain/forkChoice/index.js +11 -0
  145. package/lib/chain/forkChoice/index.js.map +1 -1
  146. package/lib/chain/forkChoiceExecutionEngine.d.ts +51 -0
  147. package/lib/chain/forkChoiceExecutionEngine.d.ts.map +1 -0
  148. package/lib/chain/forkChoiceExecutionEngine.js +117 -0
  149. package/lib/chain/forkChoiceExecutionEngine.js.map +1 -0
  150. package/lib/chain/interface.d.ts +10 -7
  151. package/lib/chain/interface.d.ts.map +1 -1
  152. package/lib/chain/interface.js.map +1 -1
  153. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +17 -4
  154. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  155. package/lib/chain/opPools/aggregatedAttestationPool.js +199 -46
  156. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  157. package/lib/chain/opPools/attestationPool.d.ts +1 -1
  158. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  159. package/lib/chain/opPools/attestationPool.js +15 -4
  160. package/lib/chain/opPools/attestationPool.js.map +1 -1
  161. package/lib/chain/opPools/inclusionListStore.d.ts +63 -0
  162. package/lib/chain/opPools/inclusionListStore.d.ts.map +1 -0
  163. package/lib/chain/opPools/inclusionListStore.js +171 -0
  164. package/lib/chain/opPools/inclusionListStore.js.map +1 -0
  165. package/lib/chain/opPools/index.d.ts +2 -0
  166. package/lib/chain/opPools/index.d.ts.map +1 -1
  167. package/lib/chain/opPools/index.js +2 -0
  168. package/lib/chain/opPools/index.js.map +1 -1
  169. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  170. package/lib/chain/opPools/payloadAttestationPool.js +17 -7
  171. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  172. package/lib/chain/opPools/singleAttestationPool.d.ts +77 -0
  173. package/lib/chain/opPools/singleAttestationPool.d.ts.map +1 -0
  174. package/lib/chain/opPools/singleAttestationPool.js +209 -0
  175. package/lib/chain/opPools/singleAttestationPool.js.map +1 -0
  176. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  177. package/lib/chain/opPools/syncCommitteeMessagePool.js +9 -3
  178. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  179. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  180. package/lib/chain/opPools/syncContributionAndProofPool.js +11 -3
  181. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  182. package/lib/chain/opPools/utils.d.ts +1 -1
  183. package/lib/chain/opPools/utils.d.ts.map +1 -1
  184. package/lib/chain/opPools/utils.js +1 -1
  185. package/lib/chain/opPools/utils.js.map +1 -1
  186. package/lib/chain/options.d.ts +5 -3
  187. package/lib/chain/options.d.ts.map +1 -1
  188. package/lib/chain/options.js +0 -1
  189. package/lib/chain/options.js.map +1 -1
  190. package/lib/chain/produceBlock/produceBlockBody.d.ts +6 -3
  191. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  192. package/lib/chain/produceBlock/produceBlockBody.js +32 -11
  193. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  194. package/lib/chain/proposerTracker.d.ts +31 -0
  195. package/lib/chain/proposerTracker.d.ts.map +1 -0
  196. package/lib/chain/proposerTracker.js +75 -0
  197. package/lib/chain/proposerTracker.js.map +1 -0
  198. package/lib/chain/regen/interface.d.ts +2 -2
  199. package/lib/chain/regen/interface.d.ts.map +1 -1
  200. package/lib/chain/regen/interface.js +1 -1
  201. package/lib/chain/regen/interface.js.map +1 -1
  202. package/lib/chain/regen/queued.d.ts +1 -1
  203. package/lib/chain/regen/queued.d.ts.map +1 -1
  204. package/lib/chain/regen/queued.js +5 -3
  205. package/lib/chain/regen/queued.js.map +1 -1
  206. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -14
  207. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  208. package/lib/chain/seenCache/seenGossipBlockInput.js +6 -65
  209. package/lib/chain/seenCache/seenGossipBlockInput.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 +49 -8
  326. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  327. package/lib/metrics/metrics/lodestar.js +128 -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/enrSubnetsDeserialize.d.ts.map +1 -1
  379. package/lib/network/peers/utils/enrSubnetsDeserialize.js +5 -2
  380. package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
  381. package/lib/network/peers/utils/prioritizePeers.d.ts +4 -1
  382. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  383. package/lib/network/peers/utils/prioritizePeers.js +8 -16
  384. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  385. package/lib/network/peers/utils/subnetMap.d.ts +5 -2
  386. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  387. package/lib/network/peers/utils/subnetMap.js +6 -3
  388. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  389. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
  390. package/lib/network/processor/extractSlotRootFns.js +1 -8
  391. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  392. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  393. package/lib/network/processor/gossipHandlers.js +118 -149
  394. package/lib/network/processor/gossipHandlers.js.map +1 -1
  395. package/lib/network/processor/gossipQueues/index.js +6 -6
  396. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  397. package/lib/network/processor/gossipValidatorFn.js +5 -5
  398. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  399. package/lib/network/processor/index.d.ts +11 -0
  400. package/lib/network/processor/index.d.ts.map +1 -1
  401. package/lib/network/processor/index.js +66 -30
  402. package/lib/network/processor/index.js.map +1 -1
  403. package/lib/network/reqresp/ReqRespBeaconNode.js +6 -3
  404. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  405. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +2 -2
  406. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  407. package/lib/network/reqresp/handlers/inclusionListsByIndices.d.ts +10 -0
  408. package/lib/network/reqresp/handlers/inclusionListsByIndices.d.ts.map +1 -0
  409. package/lib/network/reqresp/handlers/inclusionListsByIndices.js +30 -0
  410. package/lib/network/reqresp/handlers/inclusionListsByIndices.js.map +1 -0
  411. package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
  412. package/lib/network/reqresp/handlers/index.js +6 -12
  413. package/lib/network/reqresp/handlers/index.js.map +1 -1
  414. package/lib/network/reqresp/protocols.d.ts +1 -2
  415. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  416. package/lib/network/reqresp/protocols.js +5 -10
  417. package/lib/network/reqresp/protocols.js.map +1 -1
  418. package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
  419. package/lib/network/reqresp/rateLimit.js +5 -17
  420. package/lib/network/reqresp/rateLimit.js.map +1 -1
  421. package/lib/network/reqresp/types.d.ts +6 -9
  422. package/lib/network/reqresp/types.d.ts.map +1 -1
  423. package/lib/network/reqresp/types.js +4 -7
  424. package/lib/network/reqresp/types.js.map +1 -1
  425. package/lib/network/subnets/attnetsService.d.ts +35 -5
  426. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  427. package/lib/network/subnets/attnetsService.js +84 -6
  428. package/lib/network/subnets/attnetsService.js.map +1 -1
  429. package/lib/network/subnets/interface.d.ts +7 -0
  430. package/lib/network/subnets/interface.d.ts.map +1 -1
  431. package/lib/network/subnets/interface.js.map +1 -1
  432. package/lib/node/nodejs.d.ts +3 -1
  433. package/lib/node/nodejs.d.ts.map +1 -1
  434. package/lib/node/nodejs.js +47 -21
  435. package/lib/node/nodejs.js.map +1 -1
  436. package/lib/node/options.d.ts +3 -1
  437. package/lib/node/options.d.ts.map +1 -1
  438. package/lib/node/options.js +4 -2
  439. package/lib/node/options.js.map +1 -1
  440. package/lib/sync/interface.d.ts.map +1 -1
  441. package/lib/sync/interface.js.map +1 -1
  442. package/lib/sync/range/batch.d.ts +2 -3
  443. package/lib/sync/range/batch.d.ts.map +1 -1
  444. package/lib/sync/range/batch.js +9 -22
  445. package/lib/sync/range/batch.js.map +1 -1
  446. package/lib/sync/range/chain.d.ts.map +1 -1
  447. package/lib/sync/range/chain.js +2 -15
  448. package/lib/sync/range/chain.js.map +1 -1
  449. package/lib/sync/sync.d.ts +15 -0
  450. package/lib/sync/sync.d.ts.map +1 -1
  451. package/lib/sync/sync.js +103 -25
  452. package/lib/sync/sync.js.map +1 -1
  453. package/lib/sync/unknownBlock.d.ts.map +1 -1
  454. package/lib/sync/unknownBlock.js +43 -25
  455. package/lib/sync/unknownBlock.js.map +1 -1
  456. package/lib/sync/utils/downloadByRange.d.ts +6 -34
  457. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  458. package/lib/sync/utils/downloadByRange.js +24 -128
  459. package/lib/sync/utils/downloadByRange.js.map +1 -1
  460. package/lib/sync/utils/downloadByRoot.d.ts +2 -18
  461. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  462. package/lib/sync/utils/downloadByRoot.js +14 -99
  463. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  464. package/lib/util/blobs.d.ts +1 -7
  465. package/lib/util/blobs.d.ts.map +1 -1
  466. package/lib/util/blobs.js +0 -19
  467. package/lib/util/blobs.js.map +1 -1
  468. package/lib/util/execution.d.ts +3 -4
  469. package/lib/util/execution.d.ts.map +1 -1
  470. package/lib/util/execution.js +1 -73
  471. package/lib/util/execution.js.map +1 -1
  472. package/lib/util/file.d.ts.map +1 -1
  473. package/lib/util/file.js +8 -9
  474. package/lib/util/file.js.map +1 -1
  475. package/lib/util/queue/itemQueue.js +1 -1
  476. package/lib/util/queue/itemQueue.js.map +1 -1
  477. package/lib/util/sszBytes.d.ts +5 -1
  478. package/lib/util/sszBytes.d.ts.map +1 -1
  479. package/lib/util/sszBytes.js +36 -19
  480. package/lib/util/sszBytes.js.map +1 -1
  481. package/lib/util/types.d.ts +0 -5
  482. package/lib/util/types.d.ts.map +1 -1
  483. package/lib/util/types.js +1 -2
  484. package/lib/util/types.js.map +1 -1
  485. package/package.json +31 -32
  486. package/src/api/impl/api.ts +1 -1
  487. package/src/api/impl/beacon/blocks/index.ts +81 -126
  488. package/src/api/impl/beacon/index.ts +3 -1
  489. package/src/api/impl/beacon/pool/index.ts +31 -1
  490. package/src/api/impl/beacon/state/index.ts +10 -1
  491. package/src/api/impl/beacon/state/utils.ts +20 -10
  492. package/src/api/impl/debug/index.ts +4 -0
  493. package/src/api/impl/validator/index.ts +178 -39
  494. package/src/api/options.ts +3 -0
  495. package/src/chain/ColumnReconstructionTracker.ts +60 -41
  496. package/src/chain/GetBlobsTracker.ts +82 -52
  497. package/src/chain/archiveStore/archiveStore.ts +1 -0
  498. package/src/chain/archiveStore/utils/archiveBlocks.ts +76 -130
  499. package/src/chain/blocks/blockInput/blockInput.ts +11 -343
  500. package/src/chain/blocks/blockInput/errors.ts +1 -2
  501. package/src/chain/blocks/blockInput/types.ts +2 -20
  502. package/src/chain/blocks/importBlock.ts +58 -77
  503. package/src/chain/blocks/importExecutionPayload.ts +123 -36
  504. package/src/chain/blocks/index.ts +11 -4
  505. package/src/chain/blocks/payloadEnvelopeProcessor.ts +35 -24
  506. package/src/chain/blocks/types.ts +8 -29
  507. package/src/chain/blocks/verifyBlock.ts +31 -16
  508. package/src/chain/blocks/verifyBlocksDataAvailability.ts +16 -2
  509. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -6
  510. package/src/chain/blocks/verifyBlocksSanityChecks.ts +4 -1
  511. package/src/chain/blocks/verifyBlocksSignatures.ts +10 -5
  512. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +14 -6
  513. package/src/chain/blocks/writeBlockInputToDb.ts +6 -29
  514. package/src/chain/bls/interface.ts +2 -0
  515. package/src/chain/bls/multithread/index.ts +48 -24
  516. package/src/chain/bls/multithread/types.ts +1 -1
  517. package/src/chain/bls/multithread/worker.ts +1 -5
  518. package/src/chain/bls/singleThread.ts +1 -1
  519. package/src/chain/bls/utils.ts +1 -1
  520. package/src/chain/chain.ts +145 -42
  521. package/src/chain/emitter.ts +8 -8
  522. package/src/chain/errors/blockError.ts +1 -1
  523. package/src/chain/errors/executionPayloadBid.ts +12 -0
  524. package/src/chain/errors/executionPayloadEnvelope.ts +8 -0
  525. package/src/chain/errors/inclusionList.ts +38 -0
  526. package/src/chain/errors/index.ts +1 -1
  527. package/src/chain/forkChoice/index.ts +11 -0
  528. package/src/chain/forkChoiceExecutionEngine.ts +183 -0
  529. package/src/chain/interface.ts +11 -6
  530. package/src/chain/opPools/aggregatedAttestationPool.ts +246 -43
  531. package/src/chain/opPools/attestationPool.ts +16 -4
  532. package/src/chain/opPools/inclusionListStore.ts +208 -0
  533. package/src/chain/opPools/index.ts +2 -0
  534. package/src/chain/opPools/payloadAttestationPool.ts +18 -7
  535. package/src/chain/opPools/singleAttestationPool.ts +287 -0
  536. package/src/chain/opPools/syncCommitteeMessagePool.ts +10 -3
  537. package/src/chain/opPools/syncContributionAndProofPool.ts +13 -3
  538. package/src/chain/opPools/utils.ts +1 -1
  539. package/src/chain/options.ts +5 -4
  540. package/src/chain/produceBlock/produceBlockBody.ts +67 -22
  541. package/src/chain/proposerTracker.ts +94 -0
  542. package/src/chain/regen/interface.ts +2 -2
  543. package/src/chain/regen/queued.ts +6 -4
  544. package/src/chain/seenCache/seenGossipBlockInput.ts +9 -93
  545. package/src/chain/validation/executionPayloadBid.ts +54 -183
  546. package/src/chain/validation/executionPayloadEnvelope.ts +68 -1
  547. package/src/chain/validation/inclusionList.ts +192 -0
  548. package/src/chain/validation/index.ts +1 -0
  549. package/src/chain/validation/syncCommittee.ts +31 -15
  550. package/src/chain/validation/syncCommitteeContributionAndProof.ts +13 -0
  551. package/src/chain/validatorMonitor.ts +0 -6
  552. package/src/db/beacon.ts +44 -0
  553. package/src/db/dataColumnStore.ts +2 -4
  554. package/src/db/flatFileStore/flatFileStore.ts +7 -7
  555. package/src/db/flatFileStore/slotIndex.ts +4 -3
  556. package/src/db/interface.ts +2 -0
  557. package/src/db/repositories/blobSidecars.ts +0 -1
  558. package/src/db/repositories/dataColumnSidecarArchive.ts +20 -0
  559. package/src/execution/builder/apiClient.ts +16 -13
  560. package/src/execution/builder/http.ts +4 -0
  561. package/src/execution/builder/validateBid.ts +23 -2
  562. package/src/execution/engine/blobVersionedHashes.ts +1 -1
  563. package/src/execution/engine/disabled.ts +4 -0
  564. package/src/execution/engine/http.ts +59 -47
  565. package/src/execution/engine/index.ts +1 -1
  566. package/src/execution/engine/interface.ts +46 -13
  567. package/src/execution/engine/jsonRpcTransport.ts +56 -31
  568. package/src/execution/engine/mock.ts +32 -14
  569. package/src/execution/engine/payloadIdCache.ts +24 -6
  570. package/src/execution/engine/restTransport.ts +18 -23
  571. package/src/execution/engine/sszTypes.ts +0 -9
  572. package/src/execution/engine/transport.ts +13 -17
  573. package/src/execution/engine/types.ts +44 -24
  574. package/src/execution/engine/utils.ts +4 -2
  575. package/src/index.ts +2 -0
  576. package/src/metrics/metrics/beacon.ts +37 -30
  577. package/src/metrics/metrics/lodestar.ts +131 -18
  578. package/src/metrics/server/http.ts +5 -5
  579. package/src/monitoring/service.ts +1 -1
  580. package/src/network/core/networkCore.ts +11 -1
  581. package/src/network/core/networkCoreWorker.ts +2 -0
  582. package/src/network/core/networkCoreWorkerHandler.ts +8 -1
  583. package/src/network/core/types.ts +6 -1
  584. package/src/network/gossip/gossipsub.ts +11 -0
  585. package/src/network/gossip/interface.ts +5 -5
  586. package/src/network/gossip/topic.ts +14 -25
  587. package/src/network/interface.ts +4 -5
  588. package/src/network/libp2p/index.ts +5 -1
  589. package/src/network/network.ts +66 -58
  590. package/src/network/options.ts +4 -0
  591. package/src/network/peers/peerManager.ts +28 -3
  592. package/src/network/peers/utils/assertPeerRelevance.ts +39 -23
  593. package/src/network/peers/utils/enrSubnetsDeserialize.ts +5 -2
  594. package/src/network/peers/utils/prioritizePeers.ts +14 -22
  595. package/src/network/peers/utils/subnetMap.ts +6 -3
  596. package/src/network/processor/extractSlotRootFns.ts +0 -9
  597. package/src/network/processor/gossipHandlers.ts +150 -183
  598. package/src/network/processor/gossipQueues/index.ts +6 -6
  599. package/src/network/processor/gossipValidatorFn.ts +5 -5
  600. package/src/network/processor/index.ts +58 -28
  601. package/src/network/processor/types.ts +1 -1
  602. package/src/network/reqresp/ReqRespBeaconNode.ts +7 -7
  603. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -2
  604. package/src/network/reqresp/handlers/inclusionListsByIndices.ts +44 -0
  605. package/src/network/reqresp/handlers/index.ts +5 -17
  606. package/src/network/reqresp/protocols.ts +6 -12
  607. package/src/network/reqresp/rateLimit.ts +5 -17
  608. package/src/network/reqresp/types.ts +6 -13
  609. package/src/network/subnets/attnetsService.ts +94 -6
  610. package/src/network/subnets/interface.ts +7 -0
  611. package/src/node/nodejs.ts +58 -22
  612. package/src/node/options.ts +9 -6
  613. package/src/sync/interface.ts +1 -0
  614. package/src/sync/range/batch.ts +9 -21
  615. package/src/sync/range/chain.ts +2 -14
  616. package/src/sync/sync.ts +108 -26
  617. package/src/sync/unknownBlock.ts +48 -36
  618. package/src/sync/utils/downloadByRange.ts +31 -230
  619. package/src/sync/utils/downloadByRoot.ts +15 -142
  620. package/src/util/blobs.ts +0 -34
  621. package/src/util/execution.ts +8 -102
  622. package/src/util/file.ts +8 -9
  623. package/src/util/queue/itemQueue.ts +1 -1
  624. package/src/util/sszBytes.ts +42 -24
  625. package/src/util/types.ts +1 -8
  626. package/lib/chain/errors/blobSidecarError.d.ts +0 -108
  627. package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
  628. package/lib/chain/errors/blobSidecarError.js +0 -38
  629. package/lib/chain/errors/blobSidecarError.js.map +0 -1
  630. package/lib/chain/validation/blobSidecar.d.ts +0 -16
  631. package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
  632. package/lib/chain/validation/blobSidecar.js +0 -276
  633. package/lib/chain/validation/blobSidecar.js.map +0 -1
  634. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +0 -9
  635. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
  636. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +0 -91
  637. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +0 -1
  638. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts +0 -5
  639. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
  640. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +0 -46
  641. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +0 -1
  642. package/src/chain/errors/blobSidecarError.ts +0 -70
  643. package/src/chain/validation/blobSidecar.ts +0 -357
  644. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -133
  645. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -69
@@ -63,7 +63,7 @@ export type NetworkProcessorOpts = GossipHandlerOpts & {
63
63
  /**
64
64
  * Keep up to 3 slot of unknown roots, so we don't always emit to UnknownBlock sync.
65
65
  */
66
- const MAX_UNKNOWN_ROOTS_SLOT_CACHE_SIZE = 3;
66
+ export const MAX_UNKNOWN_ROOTS_SLOT_CACHE_SIZE = 3;
67
67
 
68
68
  /**
69
69
  * Max distinct roots we BUFFER messages for, per slot. Kept tight to avoid the OOM
@@ -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);
@@ -665,6 +682,7 @@ export class NetworkProcessor {
665
682
  *
666
683
  * For DOS protection, the message is ignored (reject metric incremented) when any cap is hit:
667
684
  * - MAX_QUEUED_UNKNOWN_BLOCK_GOSSIP_OBJECTS: global awaiting-block message count
685
+ * - MAX_UNKNOWN_ROOTS_SLOT_CACHE_SIZE: message slot already pruned by onClockSlot, so not bounded by the per-slot root budget
668
686
  * - MAX_BUFFERED_ROOTS_PER_SLOT: distinct roots we buffer messages for, per slot
669
687
  * - MAX_AWAITING_MESSAGES_PER_ROOT[topic]: messages buffered per (root, topic)
670
688
  */
@@ -675,6 +693,10 @@ export class NetworkProcessor {
675
693
  metric?.reject.inc({reason: ReprocessRejectReason.reached_limit, topic: topicType});
676
694
  return;
677
695
  }
696
+ if (slot <= this.chain.clock.currentSlot - MAX_UNKNOWN_ROOTS_SLOT_CACHE_SIZE) {
697
+ metric?.reject.inc({reason: ReprocessRejectReason.expired, topic: topicType});
698
+ return;
699
+ }
678
700
  // per-(root, topic) message cap: e.g. <= NUMBER_OF_COLUMNS columns per root
679
701
  const perRootCap = MAX_AWAITING_MESSAGES_PER_ROOT[topicType];
680
702
  if (
@@ -701,6 +723,10 @@ export class NetworkProcessor {
701
723
  metric?.reject.inc({reason: ReprocessRejectReason.reached_limit, topic: topicType});
702
724
  return;
703
725
  }
726
+ if (slot <= this.chain.clock.currentSlot - MAX_UNKNOWN_ROOTS_SLOT_CACHE_SIZE) {
727
+ metric?.reject.inc({reason: ReprocessRejectReason.expired, topic: topicType});
728
+ return;
729
+ }
704
730
  const perRootCap = MAX_AWAITING_MESSAGES_PER_ROOT[topicType];
705
731
  if (
706
732
  perRootCap !== undefined &&
@@ -791,6 +817,7 @@ export class NetworkProcessor {
791
817
  this.awaitingBlockMessageCount -= total;
792
818
  }
793
819
 
820
+ const generation = this.jobGeneration;
794
821
  const nowSec = Date.now() / 1000;
795
822
  let count = 0;
796
823
  // TODO: we can group attestations to process in batches but since we have the SeenAttestationDatas
@@ -809,6 +836,7 @@ export class NetworkProcessor {
809
836
  if (count === MAX_AWAITING_GOSSIP_OBJECTS_PER_TICK) {
810
837
  count = 0;
811
838
  await sleep(AWAITING_GOSSIP_OBJECTS_YIELD_EVERY_MS);
839
+ if (generation !== this.jobGeneration) return;
812
840
  }
813
841
  }
814
842
  }
@@ -833,6 +861,7 @@ export class NetworkProcessor {
833
861
  this.awaitingPayloadMessageCount -= total;
834
862
  }
835
863
 
864
+ const generation = this.jobGeneration;
836
865
  const nowSec = Date.now() / 1000;
837
866
  let count = 0;
838
867
  for (const messages of messagesByTopic.values()) {
@@ -848,6 +877,7 @@ export class NetworkProcessor {
848
877
  if (count === MAX_AWAITING_GOSSIP_OBJECTS_PER_TICK) {
849
878
  count = 0;
850
879
  await sleep(AWAITING_GOSSIP_OBJECTS_YIELD_EVERY_MS);
880
+ if (generation !== this.jobGeneration) return;
851
881
  }
852
882
  }
853
883
  }
@@ -857,19 +887,20 @@ export class NetworkProcessor {
857
887
  const nowSec = Date.now() / 1000;
858
888
  const minSlot = clockSlot - MAX_UNKNOWN_ROOTS_SLOT_CACHE_SIZE;
859
889
 
860
- for (const [slot, searchedRoots] of this.searchedRootsBySlot) {
890
+ for (const [slot, bufferedRoots] of this.bufferedRootsBySlot) {
861
891
  if (slot > minSlot) continue;
862
892
 
863
- // expire messages awaiting an unknown block for these roots. Only roots this slot did a BLOCK search
864
- // for (blockPeerIds set) have block waits keyed here; skipping the rest avoids deleting a payload wait
865
- // that a newer slot created for the same root (block/envelope searches share searchedRootsBySlot).
866
- for (const [rootHex, entry] of searchedRoots) {
867
- if (entry.blockPeerIds === undefined) continue;
893
+ for (const rootHex of bufferedRoots) {
868
894
  const messagesByTopic = this.awaitingMessagesByBlockRoot.get(rootHex);
869
895
  if (messagesByTopic === undefined) continue;
870
- let removed = 0;
896
+ let remaining = 0;
871
897
  for (const messages of messagesByTopic.values()) {
872
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--;
873
904
  const topicType = message.topic.type;
874
905
  this.metrics?.awaitingBlockGossipMessages.reject.inc({
875
906
  topic: topicType,
@@ -881,22 +912,22 @@ export class NetworkProcessor {
881
912
  );
882
913
  // No need to report the dropped job to gossip. It will be eventually pruned from the mcache
883
914
  }
884
- removed += messages.size;
885
- }
886
- if (this.awaitingMessagesByBlockRoot.delete(rootHex)) {
887
- this.awaitingBlockMessageCount -= removed;
915
+ remaining += messages.size;
888
916
  }
917
+ if (remaining === 0) this.awaitingMessagesByBlockRoot.delete(rootHex);
889
918
  }
890
919
 
891
- // expire messages awaiting an unknown payload envelope for these roots. Symmetric to the block pass:
892
- // only roots this slot did an ENVELOPE search for (envelopePeerIds set) have payload waits keyed here.
893
- for (const [rootHex, entry] of searchedRoots) {
894
- if (entry.envelopePeerIds === undefined) continue;
920
+ for (const rootHex of bufferedRoots) {
895
921
  const messagesByTopic = this.awaitingMessagesByPayloadBlockRoot.get(rootHex);
896
922
  if (messagesByTopic === undefined) continue;
897
- let removed = 0;
923
+ let remaining = 0;
898
924
  for (const messages of messagesByTopic.values()) {
899
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--;
900
931
  const topicType = message.topic.type;
901
932
  this.metrics?.awaitingPayloadGossipMessages.reject.inc({
902
933
  topic: topicType,
@@ -908,18 +939,16 @@ export class NetworkProcessor {
908
939
  );
909
940
  // No need to report the dropped job to gossip. It will be eventually pruned from the mcache
910
941
  }
911
- removed += messages.size;
912
- }
913
- if (this.awaitingMessagesByPayloadBlockRoot.delete(rootHex)) {
914
- this.awaitingPayloadMessageCount -= removed;
942
+ remaining += messages.size;
915
943
  }
944
+ if (remaining === 0) this.awaitingMessagesByPayloadBlockRoot.delete(rootHex);
916
945
  }
917
946
 
918
- this.searchedRootsBySlot.delete(slot);
947
+ this.bufferedRootsBySlot.delete(slot);
919
948
  }
920
949
 
921
- for (const slot of this.bufferedRootsBySlot.keys()) {
922
- if (slot <= minSlot) this.bufferedRootsBySlot.delete(slot);
950
+ for (const slot of this.searchedRootsBySlot.keys()) {
951
+ if (slot <= minSlot) this.searchedRootsBySlot.delete(slot);
923
952
  }
924
953
 
925
954
  for (const [peer, slot] of this.fatalPeers) {
@@ -928,6 +957,7 @@ export class NetworkProcessor {
928
957
  };
929
958
 
930
959
  private executeWork(): void {
960
+ if (this.stopped) return;
931
961
  // TODO: Maybe de-bounce by timing the last time executeWork was run
932
962
 
933
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 {