@lodestar/beacon-node 1.51.0-dev.c6e566f915 → 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 (598) 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/utils.d.ts +1 -1
  15. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  16. package/lib/api/impl/validator/index.d.ts +6 -0
  17. package/lib/api/impl/validator/index.d.ts.map +1 -1
  18. package/lib/api/impl/validator/index.js +49 -31
  19. package/lib/api/impl/validator/index.js.map +1 -1
  20. package/lib/api/options.d.ts +2 -0
  21. package/lib/api/options.d.ts.map +1 -1
  22. package/lib/api/options.js +1 -0
  23. package/lib/api/options.js.map +1 -1
  24. package/lib/chain/GetBlobsTracker.d.ts +13 -2
  25. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  26. package/lib/chain/GetBlobsTracker.js +69 -35
  27. package/lib/chain/GetBlobsTracker.js.map +1 -1
  28. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  29. package/lib/chain/archiveStore/archiveStore.js +1 -0
  30. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  31. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +4 -0
  32. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  33. package/lib/chain/archiveStore/utils/archiveBlocks.js +61 -97
  34. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  35. package/lib/chain/blocks/blockInput/blockInput.d.ts +11 -56
  36. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  37. package/lib/chain/blocks/blockInput/blockInput.js +5 -241
  38. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  39. package/lib/chain/blocks/blockInput/errors.d.ts +2 -4
  40. package/lib/chain/blocks/blockInput/errors.d.ts.map +1 -1
  41. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  42. package/lib/chain/blocks/blockInput/types.d.ts +2 -18
  43. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  44. package/lib/chain/blocks/blockInput/types.js +0 -1
  45. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  46. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  47. package/lib/chain/blocks/importBlock.js +40 -56
  48. package/lib/chain/blocks/importBlock.js.map +1 -1
  49. package/lib/chain/blocks/importExecutionPayload.d.ts +10 -11
  50. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  51. package/lib/chain/blocks/importExecutionPayload.js +34 -19
  52. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  53. package/lib/chain/blocks/index.d.ts.map +1 -1
  54. package/lib/chain/blocks/index.js +4 -4
  55. package/lib/chain/blocks/index.js.map +1 -1
  56. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +12 -9
  57. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
  58. package/lib/chain/blocks/payloadEnvelopeProcessor.js +24 -19
  59. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  60. package/lib/chain/blocks/types.d.ts +4 -20
  61. package/lib/chain/blocks/types.d.ts.map +1 -1
  62. package/lib/chain/blocks/types.js +0 -24
  63. package/lib/chain/blocks/types.js.map +1 -1
  64. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  65. package/lib/chain/blocks/verifyBlock.js +18 -7
  66. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  67. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  68. package/lib/chain/blocks/verifyBlocksDataAvailability.js +14 -2
  69. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  70. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -1
  71. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  72. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +7 -3
  73. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  74. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  75. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -0
  76. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  77. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  78. package/lib/chain/blocks/verifyBlocksSignatures.js +10 -5
  79. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  80. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +3 -3
  81. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
  82. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +11 -6
  83. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  84. package/lib/chain/blocks/writeBlockInputToDb.d.ts +0 -2
  85. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  86. package/lib/chain/blocks/writeBlockInputToDb.js +6 -24
  87. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  88. package/lib/chain/bls/interface.d.ts +2 -0
  89. package/lib/chain/bls/interface.d.ts.map +1 -1
  90. package/lib/chain/bls/multithread/index.d.ts +1 -1
  91. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  92. package/lib/chain/bls/multithread/index.js +50 -22
  93. package/lib/chain/bls/multithread/index.js.map +1 -1
  94. package/lib/chain/bls/multithread/types.d.ts +1 -1
  95. package/lib/chain/bls/multithread/types.d.ts.map +1 -1
  96. package/lib/chain/bls/multithread/worker.js +1 -1
  97. package/lib/chain/bls/multithread/worker.js.map +1 -1
  98. package/lib/chain/bls/singleThread.js +1 -1
  99. package/lib/chain/bls/singleThread.js.map +1 -1
  100. package/lib/chain/bls/utils.js +1 -1
  101. package/lib/chain/bls/utils.js.map +1 -1
  102. package/lib/chain/chain.d.ts +25 -4
  103. package/lib/chain/chain.d.ts.map +1 -1
  104. package/lib/chain/chain.js +124 -43
  105. package/lib/chain/chain.js.map +1 -1
  106. package/lib/chain/emitter.d.ts +7 -7
  107. package/lib/chain/emitter.d.ts.map +1 -1
  108. package/lib/chain/emitter.js +5 -5
  109. package/lib/chain/emitter.js.map +1 -1
  110. package/lib/chain/errors/blockError.d.ts +1 -1
  111. package/lib/chain/errors/blockError.d.ts.map +1 -1
  112. package/lib/chain/errors/blockError.js +1 -1
  113. package/lib/chain/errors/blockError.js.map +1 -1
  114. package/lib/chain/errors/executionPayloadEnvelope.d.ts +7 -0
  115. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  116. package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
  117. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  118. package/lib/chain/errors/index.d.ts +0 -1
  119. package/lib/chain/errors/index.d.ts.map +1 -1
  120. package/lib/chain/errors/index.js +0 -1
  121. package/lib/chain/errors/index.js.map +1 -1
  122. package/lib/chain/forkChoice/index.d.ts +11 -1
  123. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  124. package/lib/chain/forkChoice/index.js +11 -0
  125. package/lib/chain/forkChoice/index.js.map +1 -1
  126. package/lib/chain/forkChoiceExecutionEngine.d.ts +51 -0
  127. package/lib/chain/forkChoiceExecutionEngine.d.ts.map +1 -0
  128. package/lib/chain/forkChoiceExecutionEngine.js +117 -0
  129. package/lib/chain/forkChoiceExecutionEngine.js.map +1 -0
  130. package/lib/chain/interface.d.ts +9 -7
  131. package/lib/chain/interface.d.ts.map +1 -1
  132. package/lib/chain/interface.js.map +1 -1
  133. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +17 -4
  134. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  135. package/lib/chain/opPools/aggregatedAttestationPool.js +199 -46
  136. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  137. package/lib/chain/opPools/attestationPool.d.ts +1 -1
  138. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  139. package/lib/chain/opPools/attestationPool.js +15 -4
  140. package/lib/chain/opPools/attestationPool.js.map +1 -1
  141. package/lib/chain/opPools/inclusionListStore.d.ts.map +1 -1
  142. package/lib/chain/opPools/inclusionListStore.js +2 -2
  143. package/lib/chain/opPools/inclusionListStore.js.map +1 -1
  144. package/lib/chain/opPools/index.d.ts +1 -0
  145. package/lib/chain/opPools/index.d.ts.map +1 -1
  146. package/lib/chain/opPools/index.js +1 -0
  147. package/lib/chain/opPools/index.js.map +1 -1
  148. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  149. package/lib/chain/opPools/payloadAttestationPool.js +17 -7
  150. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  151. package/lib/chain/opPools/singleAttestationPool.d.ts +77 -0
  152. package/lib/chain/opPools/singleAttestationPool.d.ts.map +1 -0
  153. package/lib/chain/opPools/singleAttestationPool.js +209 -0
  154. package/lib/chain/opPools/singleAttestationPool.js.map +1 -0
  155. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  156. package/lib/chain/opPools/syncCommitteeMessagePool.js +9 -3
  157. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  158. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  159. package/lib/chain/opPools/syncContributionAndProofPool.js +11 -3
  160. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  161. package/lib/chain/opPools/utils.d.ts +1 -1
  162. package/lib/chain/opPools/utils.d.ts.map +1 -1
  163. package/lib/chain/opPools/utils.js +1 -1
  164. package/lib/chain/opPools/utils.js.map +1 -1
  165. package/lib/chain/options.d.ts +5 -3
  166. package/lib/chain/options.d.ts.map +1 -1
  167. package/lib/chain/options.js +0 -1
  168. package/lib/chain/options.js.map +1 -1
  169. package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -2
  170. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  171. package/lib/chain/produceBlock/produceBlockBody.js +3 -3
  172. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  173. package/lib/chain/proposerTracker.d.ts +31 -0
  174. package/lib/chain/proposerTracker.d.ts.map +1 -0
  175. package/lib/chain/proposerTracker.js +75 -0
  176. package/lib/chain/proposerTracker.js.map +1 -0
  177. package/lib/chain/regen/interface.d.ts +1 -2
  178. package/lib/chain/regen/interface.d.ts.map +1 -1
  179. package/lib/chain/regen/interface.js +0 -1
  180. package/lib/chain/regen/interface.js.map +1 -1
  181. package/lib/chain/regen/queued.d.ts +1 -1
  182. package/lib/chain/regen/queued.d.ts.map +1 -1
  183. package/lib/chain/regen/queued.js +5 -3
  184. package/lib/chain/regen/queued.js.map +1 -1
  185. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -14
  186. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  187. package/lib/chain/seenCache/seenGossipBlockInput.js +6 -65
  188. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  189. package/lib/chain/validation/executionPayloadBid.d.ts +0 -15
  190. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  191. package/lib/chain/validation/executionPayloadBid.js +13 -166
  192. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  193. package/lib/chain/validation/executionPayloadEnvelope.d.ts +6 -0
  194. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  195. package/lib/chain/validation/executionPayloadEnvelope.js +53 -0
  196. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  197. package/lib/chain/validation/inclusionList.d.ts.map +1 -1
  198. package/lib/chain/validation/inclusionList.js +11 -2
  199. package/lib/chain/validation/inclusionList.js.map +1 -1
  200. package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
  201. package/lib/chain/validation/syncCommittee.js +16 -10
  202. package/lib/chain/validation/syncCommittee.js.map +1 -1
  203. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  204. package/lib/chain/validation/syncCommitteeContributionAndProof.js +11 -0
  205. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  206. package/lib/chain/validatorMonitor.d.ts +1 -2
  207. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  208. package/lib/chain/validatorMonitor.js +0 -3
  209. package/lib/chain/validatorMonitor.js.map +1 -1
  210. package/lib/db/beacon.d.ts +7 -0
  211. package/lib/db/beacon.d.ts.map +1 -1
  212. package/lib/db/beacon.js +34 -0
  213. package/lib/db/beacon.js.map +1 -1
  214. package/lib/db/dataColumnStore.d.ts +1 -1
  215. package/lib/db/dataColumnStore.d.ts.map +1 -1
  216. package/lib/db/dataColumnStore.js +1 -4
  217. package/lib/db/dataColumnStore.js.map +1 -1
  218. package/lib/db/flatFileStore/flatFileStore.js +5 -5
  219. package/lib/db/flatFileStore/flatFileStore.js.map +1 -1
  220. package/lib/db/flatFileStore/slotIndex.d.ts.map +1 -1
  221. package/lib/db/flatFileStore/slotIndex.js +2 -2
  222. package/lib/db/flatFileStore/slotIndex.js.map +1 -1
  223. package/lib/db/interface.d.ts +1 -0
  224. package/lib/db/interface.d.ts.map +1 -1
  225. package/lib/db/repositories/blobSidecars.d.ts +0 -1
  226. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  227. package/lib/db/repositories/blobSidecars.js +0 -1
  228. package/lib/db/repositories/blobSidecars.js.map +1 -1
  229. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +6 -0
  230. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  231. package/lib/db/repositories/dataColumnSidecarArchive.js +19 -0
  232. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  233. package/lib/execution/builder/apiClient.d.ts +14 -8
  234. package/lib/execution/builder/apiClient.d.ts.map +1 -1
  235. package/lib/execution/builder/apiClient.js +12 -10
  236. package/lib/execution/builder/apiClient.js.map +1 -1
  237. package/lib/execution/builder/http.d.ts +2 -0
  238. package/lib/execution/builder/http.d.ts.map +1 -1
  239. package/lib/execution/builder/http.js +2 -0
  240. package/lib/execution/builder/http.js.map +1 -1
  241. package/lib/execution/engine/blobVersionedHashes.d.ts +1 -1
  242. package/lib/execution/engine/blobVersionedHashes.d.ts.map +1 -1
  243. package/lib/execution/engine/blobVersionedHashes.js.map +1 -1
  244. package/lib/execution/engine/http.d.ts +4 -6
  245. package/lib/execution/engine/http.d.ts.map +1 -1
  246. package/lib/execution/engine/http.js +8 -11
  247. package/lib/execution/engine/http.js.map +1 -1
  248. package/lib/execution/engine/index.d.ts +1 -1
  249. package/lib/execution/engine/index.d.ts.map +1 -1
  250. package/lib/execution/engine/index.js +1 -1
  251. package/lib/execution/engine/index.js.map +1 -1
  252. package/lib/execution/engine/interface.d.ts +18 -6
  253. package/lib/execution/engine/interface.d.ts.map +1 -1
  254. package/lib/execution/engine/interface.js.map +1 -1
  255. package/lib/execution/engine/jsonRpcTransport.d.ts +2 -4
  256. package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -1
  257. package/lib/execution/engine/jsonRpcTransport.js +2 -12
  258. package/lib/execution/engine/jsonRpcTransport.js.map +1 -1
  259. package/lib/execution/engine/mock.d.ts +0 -1
  260. package/lib/execution/engine/mock.d.ts.map +1 -1
  261. package/lib/execution/engine/mock.js +6 -8
  262. package/lib/execution/engine/mock.js.map +1 -1
  263. package/lib/execution/engine/payloadIdCache.d.ts +1 -2
  264. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  265. package/lib/execution/engine/payloadIdCache.js +3 -3
  266. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  267. package/lib/execution/engine/restTransport.d.ts +2 -4
  268. package/lib/execution/engine/restTransport.d.ts.map +1 -1
  269. package/lib/execution/engine/restTransport.js +1 -15
  270. package/lib/execution/engine/restTransport.js.map +1 -1
  271. package/lib/execution/engine/sszTypes.d.ts +38 -47
  272. package/lib/execution/engine/sszTypes.d.ts.map +1 -1
  273. package/lib/execution/engine/sszTypes.js +0 -5
  274. package/lib/execution/engine/sszTypes.js.map +1 -1
  275. package/lib/execution/engine/transport.d.ts +1 -14
  276. package/lib/execution/engine/transport.d.ts.map +1 -1
  277. package/lib/execution/engine/types.d.ts +1 -9
  278. package/lib/execution/engine/types.d.ts.map +1 -1
  279. package/lib/execution/engine/types.js +9 -16
  280. package/lib/execution/engine/types.js.map +1 -1
  281. package/lib/execution/engine/utils.d.ts.map +1 -1
  282. package/lib/execution/engine/utils.js +3 -2
  283. package/lib/execution/engine/utils.js.map +1 -1
  284. package/lib/index.d.ts +1 -0
  285. package/lib/index.d.ts.map +1 -1
  286. package/lib/index.js +2 -0
  287. package/lib/index.js.map +1 -1
  288. package/lib/metrics/metrics/beacon.d.ts +0 -9
  289. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  290. package/lib/metrics/metrics/beacon.js +0 -30
  291. package/lib/metrics/metrics/beacon.js.map +1 -1
  292. package/lib/metrics/metrics/lodestar.d.ts +33 -8
  293. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  294. package/lib/metrics/metrics/lodestar.js +84 -18
  295. package/lib/metrics/metrics/lodestar.js.map +1 -1
  296. package/lib/metrics/server/http.js +5 -5
  297. package/lib/metrics/server/http.js.map +1 -1
  298. package/lib/monitoring/service.js +1 -1
  299. package/lib/monitoring/service.js.map +1 -1
  300. package/lib/network/core/networkCore.d.ts +4 -1
  301. package/lib/network/core/networkCore.d.ts.map +1 -1
  302. package/lib/network/core/networkCore.js +7 -0
  303. package/lib/network/core/networkCore.js.map +1 -1
  304. package/lib/network/core/networkCoreWorker.js +2 -0
  305. package/lib/network/core/networkCoreWorker.js.map +1 -1
  306. package/lib/network/core/networkCoreWorkerHandler.d.ts +4 -1
  307. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  308. package/lib/network/core/networkCoreWorkerHandler.js +6 -0
  309. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  310. package/lib/network/core/types.d.ts +6 -1
  311. package/lib/network/core/types.d.ts.map +1 -1
  312. package/lib/network/gossip/gossipsub.d.ts +1 -0
  313. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  314. package/lib/network/gossip/gossipsub.js +10 -0
  315. package/lib/network/gossip/gossipsub.js.map +1 -1
  316. package/lib/network/gossip/interface.d.ts +1 -8
  317. package/lib/network/gossip/interface.d.ts.map +1 -1
  318. package/lib/network/gossip/interface.js +0 -1
  319. package/lib/network/gossip/interface.js.map +1 -1
  320. package/lib/network/gossip/topic.d.ts +6 -22
  321. package/lib/network/gossip/topic.d.ts.map +1 -1
  322. package/lib/network/gossip/topic.js +0 -23
  323. package/lib/network/gossip/topic.js.map +1 -1
  324. package/lib/network/interface.d.ts +4 -5
  325. package/lib/network/interface.d.ts.map +1 -1
  326. package/lib/network/libp2p/index.d.ts.map +1 -1
  327. package/lib/network/libp2p/index.js +5 -1
  328. package/lib/network/libp2p/index.js.map +1 -1
  329. package/lib/network/network.d.ts +8 -7
  330. package/lib/network/network.d.ts.map +1 -1
  331. package/lib/network/network.js +53 -35
  332. package/lib/network/network.js.map +1 -1
  333. package/lib/network/options.d.ts +2 -0
  334. package/lib/network/options.d.ts.map +1 -1
  335. package/lib/network/options.js +2 -0
  336. package/lib/network/options.js.map +1 -1
  337. package/lib/network/peers/peerManager.d.ts +2 -1
  338. package/lib/network/peers/peerManager.d.ts.map +1 -1
  339. package/lib/network/peers/peerManager.js +28 -1
  340. package/lib/network/peers/peerManager.js.map +1 -1
  341. package/lib/network/peers/utils/assertPeerRelevance.d.ts +9 -1
  342. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -1
  343. package/lib/network/peers/utils/assertPeerRelevance.js +32 -21
  344. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  345. package/lib/network/peers/utils/prioritizePeers.d.ts +4 -1
  346. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  347. package/lib/network/peers/utils/prioritizePeers.js +8 -16
  348. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  349. package/lib/network/peers/utils/subnetMap.d.ts +5 -2
  350. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  351. package/lib/network/peers/utils/subnetMap.js +6 -3
  352. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  353. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
  354. package/lib/network/processor/extractSlotRootFns.js +1 -8
  355. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  356. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  357. package/lib/network/processor/gossipHandlers.js +79 -149
  358. package/lib/network/processor/gossipHandlers.js.map +1 -1
  359. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
  360. package/lib/network/processor/gossipQueues/index.js +0 -6
  361. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  362. package/lib/network/processor/gossipValidatorFn.d.ts.map +1 -1
  363. package/lib/network/processor/gossipValidatorFn.js +1 -5
  364. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  365. package/lib/network/processor/index.d.ts +6 -0
  366. package/lib/network/processor/index.d.ts.map +1 -1
  367. package/lib/network/processor/index.js +55 -29
  368. package/lib/network/processor/index.js.map +1 -1
  369. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  370. package/lib/network/reqresp/ReqRespBeaconNode.js +0 -3
  371. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  372. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +2 -2
  373. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  374. package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
  375. package/lib/network/reqresp/handlers/index.js +1 -12
  376. package/lib/network/reqresp/handlers/index.js.map +1 -1
  377. package/lib/network/reqresp/protocols.d.ts +0 -2
  378. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  379. package/lib/network/reqresp/protocols.js +0 -10
  380. package/lib/network/reqresp/protocols.js.map +1 -1
  381. package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
  382. package/lib/network/reqresp/rateLimit.js +1 -17
  383. package/lib/network/reqresp/rateLimit.js.map +1 -1
  384. package/lib/network/reqresp/types.d.ts +2 -8
  385. package/lib/network/reqresp/types.d.ts.map +1 -1
  386. package/lib/network/reqresp/types.js +1 -7
  387. package/lib/network/reqresp/types.js.map +1 -1
  388. package/lib/network/subnets/attnetsService.d.ts +35 -5
  389. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  390. package/lib/network/subnets/attnetsService.js +84 -6
  391. package/lib/network/subnets/attnetsService.js.map +1 -1
  392. package/lib/network/subnets/interface.d.ts +7 -0
  393. package/lib/network/subnets/interface.d.ts.map +1 -1
  394. package/lib/network/subnets/interface.js.map +1 -1
  395. package/lib/node/nodejs.d.ts +3 -1
  396. package/lib/node/nodejs.d.ts.map +1 -1
  397. package/lib/node/nodejs.js +47 -21
  398. package/lib/node/nodejs.js.map +1 -1
  399. package/lib/node/options.d.ts +3 -1
  400. package/lib/node/options.d.ts.map +1 -1
  401. package/lib/node/options.js +4 -2
  402. package/lib/node/options.js.map +1 -1
  403. package/lib/sync/interface.d.ts.map +1 -1
  404. package/lib/sync/interface.js.map +1 -1
  405. package/lib/sync/range/batch.d.ts +2 -3
  406. package/lib/sync/range/batch.d.ts.map +1 -1
  407. package/lib/sync/range/batch.js +9 -22
  408. package/lib/sync/range/batch.js.map +1 -1
  409. package/lib/sync/range/chain.d.ts.map +1 -1
  410. package/lib/sync/range/chain.js +2 -15
  411. package/lib/sync/range/chain.js.map +1 -1
  412. package/lib/sync/sync.d.ts +15 -0
  413. package/lib/sync/sync.d.ts.map +1 -1
  414. package/lib/sync/sync.js +103 -25
  415. package/lib/sync/sync.js.map +1 -1
  416. package/lib/sync/unknownBlock.d.ts.map +1 -1
  417. package/lib/sync/unknownBlock.js +43 -25
  418. package/lib/sync/unknownBlock.js.map +1 -1
  419. package/lib/sync/utils/downloadByRange.d.ts +6 -34
  420. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  421. package/lib/sync/utils/downloadByRange.js +24 -128
  422. package/lib/sync/utils/downloadByRange.js.map +1 -1
  423. package/lib/sync/utils/downloadByRoot.d.ts +2 -18
  424. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  425. package/lib/sync/utils/downloadByRoot.js +14 -99
  426. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  427. package/lib/util/blobs.d.ts +1 -7
  428. package/lib/util/blobs.d.ts.map +1 -1
  429. package/lib/util/blobs.js +0 -19
  430. package/lib/util/blobs.js.map +1 -1
  431. package/lib/util/execution.d.ts +3 -4
  432. package/lib/util/execution.d.ts.map +1 -1
  433. package/lib/util/execution.js +1 -73
  434. package/lib/util/execution.js.map +1 -1
  435. package/lib/util/file.d.ts.map +1 -1
  436. package/lib/util/file.js +8 -9
  437. package/lib/util/file.js.map +1 -1
  438. package/lib/util/queue/itemQueue.js +1 -1
  439. package/lib/util/queue/itemQueue.js.map +1 -1
  440. package/lib/util/sszBytes.d.ts +5 -1
  441. package/lib/util/sszBytes.d.ts.map +1 -1
  442. package/lib/util/sszBytes.js +36 -19
  443. package/lib/util/sszBytes.js.map +1 -1
  444. package/lib/util/types.d.ts +0 -5
  445. package/lib/util/types.d.ts.map +1 -1
  446. package/lib/util/types.js +1 -2
  447. package/lib/util/types.js.map +1 -1
  448. package/package.json +31 -32
  449. package/src/api/impl/api.ts +1 -1
  450. package/src/api/impl/beacon/blocks/index.ts +81 -126
  451. package/src/api/impl/beacon/index.ts +3 -1
  452. package/src/api/impl/beacon/pool/index.ts +31 -1
  453. package/src/api/impl/beacon/state/utils.ts +1 -1
  454. package/src/api/impl/validator/index.ts +54 -37
  455. package/src/api/options.ts +3 -0
  456. package/src/chain/GetBlobsTracker.ts +82 -52
  457. package/src/chain/archiveStore/archiveStore.ts +1 -0
  458. package/src/chain/archiveStore/utils/archiveBlocks.ts +76 -130
  459. package/src/chain/blocks/blockInput/blockInput.ts +11 -343
  460. package/src/chain/blocks/blockInput/errors.ts +1 -2
  461. package/src/chain/blocks/blockInput/types.ts +2 -20
  462. package/src/chain/blocks/importBlock.ts +61 -76
  463. package/src/chain/blocks/importExecutionPayload.ts +57 -35
  464. package/src/chain/blocks/index.ts +11 -4
  465. package/src/chain/blocks/payloadEnvelopeProcessor.ts +35 -24
  466. package/src/chain/blocks/types.ts +5 -31
  467. package/src/chain/blocks/verifyBlock.ts +31 -16
  468. package/src/chain/blocks/verifyBlocksDataAvailability.ts +16 -2
  469. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -6
  470. package/src/chain/blocks/verifyBlocksSanityChecks.ts +4 -1
  471. package/src/chain/blocks/verifyBlocksSignatures.ts +10 -5
  472. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +14 -6
  473. package/src/chain/blocks/writeBlockInputToDb.ts +6 -29
  474. package/src/chain/bls/interface.ts +2 -0
  475. package/src/chain/bls/multithread/index.ts +48 -24
  476. package/src/chain/bls/multithread/types.ts +1 -1
  477. package/src/chain/bls/multithread/worker.ts +1 -5
  478. package/src/chain/bls/singleThread.ts +1 -1
  479. package/src/chain/bls/utils.ts +1 -1
  480. package/src/chain/chain.ts +140 -42
  481. package/src/chain/emitter.ts +8 -8
  482. package/src/chain/errors/blockError.ts +1 -1
  483. package/src/chain/errors/executionPayloadEnvelope.ts +8 -0
  484. package/src/chain/errors/index.ts +0 -1
  485. package/src/chain/forkChoice/index.ts +11 -0
  486. package/src/chain/forkChoiceExecutionEngine.ts +183 -0
  487. package/src/chain/interface.ts +9 -6
  488. package/src/chain/opPools/aggregatedAttestationPool.ts +246 -43
  489. package/src/chain/opPools/attestationPool.ts +16 -4
  490. package/src/chain/opPools/inclusionListStore.ts +3 -3
  491. package/src/chain/opPools/index.ts +1 -0
  492. package/src/chain/opPools/payloadAttestationPool.ts +18 -7
  493. package/src/chain/opPools/singleAttestationPool.ts +287 -0
  494. package/src/chain/opPools/syncCommitteeMessagePool.ts +10 -3
  495. package/src/chain/opPools/syncContributionAndProofPool.ts +13 -3
  496. package/src/chain/opPools/utils.ts +1 -1
  497. package/src/chain/options.ts +5 -4
  498. package/src/chain/produceBlock/produceBlockBody.ts +7 -4
  499. package/src/chain/proposerTracker.ts +94 -0
  500. package/src/chain/regen/interface.ts +1 -2
  501. package/src/chain/regen/queued.ts +6 -4
  502. package/src/chain/seenCache/seenGossipBlockInput.ts +9 -93
  503. package/src/chain/validation/executionPayloadBid.ts +14 -193
  504. package/src/chain/validation/executionPayloadEnvelope.ts +68 -1
  505. package/src/chain/validation/inclusionList.ts +11 -2
  506. package/src/chain/validation/syncCommittee.ts +31 -15
  507. package/src/chain/validation/syncCommitteeContributionAndProof.ts +13 -0
  508. package/src/chain/validatorMonitor.ts +0 -6
  509. package/src/db/beacon.ts +44 -0
  510. package/src/db/dataColumnStore.ts +2 -4
  511. package/src/db/flatFileStore/flatFileStore.ts +7 -7
  512. package/src/db/flatFileStore/slotIndex.ts +4 -3
  513. package/src/db/interface.ts +2 -0
  514. package/src/db/repositories/blobSidecars.ts +0 -1
  515. package/src/db/repositories/dataColumnSidecarArchive.ts +20 -0
  516. package/src/execution/builder/apiClient.ts +16 -13
  517. package/src/execution/builder/http.ts +4 -0
  518. package/src/execution/engine/blobVersionedHashes.ts +1 -1
  519. package/src/execution/engine/http.ts +19 -43
  520. package/src/execution/engine/index.ts +1 -1
  521. package/src/execution/engine/interface.ts +19 -10
  522. package/src/execution/engine/jsonRpcTransport.ts +10 -22
  523. package/src/execution/engine/mock.ts +6 -11
  524. package/src/execution/engine/payloadIdCache.ts +6 -7
  525. package/src/execution/engine/restTransport.ts +3 -22
  526. package/src/execution/engine/sszTypes.ts +0 -9
  527. package/src/execution/engine/transport.ts +8 -17
  528. package/src/execution/engine/types.ts +11 -26
  529. package/src/execution/engine/utils.ts +4 -2
  530. package/src/index.ts +2 -0
  531. package/src/metrics/metrics/beacon.ts +0 -30
  532. package/src/metrics/metrics/lodestar.ts +85 -18
  533. package/src/metrics/server/http.ts +5 -5
  534. package/src/monitoring/service.ts +1 -1
  535. package/src/network/core/networkCore.ts +11 -1
  536. package/src/network/core/networkCoreWorker.ts +2 -0
  537. package/src/network/core/networkCoreWorkerHandler.ts +8 -1
  538. package/src/network/core/types.ts +6 -1
  539. package/src/network/gossip/gossipsub.ts +11 -0
  540. package/src/network/gossip/interface.ts +0 -5
  541. package/src/network/gossip/topic.ts +0 -25
  542. package/src/network/interface.ts +2 -5
  543. package/src/network/libp2p/index.ts +5 -1
  544. package/src/network/network.ts +55 -58
  545. package/src/network/options.ts +4 -0
  546. package/src/network/peers/peerManager.ts +28 -3
  547. package/src/network/peers/utils/assertPeerRelevance.ts +39 -23
  548. package/src/network/peers/utils/prioritizePeers.ts +14 -22
  549. package/src/network/peers/utils/subnetMap.ts +6 -3
  550. package/src/network/processor/extractSlotRootFns.ts +0 -9
  551. package/src/network/processor/gossipHandlers.ts +99 -183
  552. package/src/network/processor/gossipQueues/index.ts +0 -6
  553. package/src/network/processor/gossipValidatorFn.ts +0 -5
  554. package/src/network/processor/index.ts +47 -27
  555. package/src/network/processor/types.ts +1 -1
  556. package/src/network/reqresp/ReqRespBeaconNode.ts +0 -7
  557. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -2
  558. package/src/network/reqresp/handlers/index.ts +0 -17
  559. package/src/network/reqresp/protocols.ts +0 -12
  560. package/src/network/reqresp/rateLimit.ts +1 -17
  561. package/src/network/reqresp/types.ts +0 -13
  562. package/src/network/subnets/attnetsService.ts +94 -6
  563. package/src/network/subnets/interface.ts +7 -0
  564. package/src/node/nodejs.ts +58 -22
  565. package/src/node/options.ts +9 -6
  566. package/src/sync/interface.ts +1 -0
  567. package/src/sync/range/batch.ts +9 -21
  568. package/src/sync/range/chain.ts +2 -14
  569. package/src/sync/sync.ts +108 -26
  570. package/src/sync/unknownBlock.ts +48 -36
  571. package/src/sync/utils/downloadByRange.ts +31 -230
  572. package/src/sync/utils/downloadByRoot.ts +15 -142
  573. package/src/util/blobs.ts +0 -34
  574. package/src/util/execution.ts +8 -102
  575. package/src/util/file.ts +8 -9
  576. package/src/util/queue/itemQueue.ts +1 -1
  577. package/src/util/sszBytes.ts +42 -24
  578. package/src/util/types.ts +1 -8
  579. package/lib/chain/errors/blobSidecarError.d.ts +0 -108
  580. package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
  581. package/lib/chain/errors/blobSidecarError.js +0 -38
  582. package/lib/chain/errors/blobSidecarError.js.map +0 -1
  583. package/lib/chain/validation/blobSidecar.d.ts +0 -16
  584. package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
  585. package/lib/chain/validation/blobSidecar.js +0 -276
  586. package/lib/chain/validation/blobSidecar.js.map +0 -1
  587. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +0 -9
  588. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
  589. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +0 -91
  590. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +0 -1
  591. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts +0 -5
  592. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
  593. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +0 -46
  594. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +0 -1
  595. package/src/chain/errors/blobSidecarError.ts +0 -70
  596. package/src/chain/validation/blobSidecar.ts +0 -357
  597. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -133
  598. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -69
@@ -6,7 +6,7 @@ import {RequestError, RequestErrorCode} from "@lodestar/reqresp";
6
6
  import {computeTimeAtSlot} from "@lodestar/state-transition";
7
7
  import {RootHex, Slot, gloas} from "@lodestar/types";
8
8
  import {Logger, fromHex, isErrorAborted, prettyPrintIndices, pruneSetToMax, sleep, toRootHex} from "@lodestar/utils";
9
- import {isBlockInputBlobs, isBlockInputColumns} from "../chain/blocks/blockInput/blockInput.js";
9
+ import {isBlockInputColumns} from "../chain/blocks/blockInput/blockInput.js";
10
10
  import {BlockInputSource, IBlockInput} from "../chain/blocks/blockInput/types.js";
11
11
  import {PayloadError, PayloadErrorCode} from "../chain/blocks/importExecutionPayload.js";
12
12
  import {PayloadEnvelopeInput, PayloadEnvelopeInputSource} from "../chain/blocks/payloadEnvelopeInput/index.js";
@@ -300,10 +300,19 @@ export class BlockInputSync {
300
300
 
301
301
  private onIncompletePayloadEnvelope = (data: ChainEventData[ChainEvent.incompletePayloadEnvelope]): void => {
302
302
  try {
303
- this.addByPayloadInput(data.payloadInput, data.peer);
304
- this.triggerUnknownBlockSearch();
305
- this.metrics?.blockInputSync.requests.inc({type: PendingBlockType.INCOMPLETE_PAYLOAD_ENVELOPE});
306
- this.metrics?.blockInputSync.payloadSource.inc({source: data.source});
303
+ const isNewRoot = this.addByPayloadInput(data.payloadInput, data.peer);
304
+ const pendingPayload = this.pendingPayloads.get(data.payloadInput.blockRootHex);
305
+ if (
306
+ pendingPayload &&
307
+ pendingPayload.status !== PendingPayloadInputStatus.fetching &&
308
+ pendingPayload.status !== PendingPayloadInputStatus.processing
309
+ ) {
310
+ this.triggerUnknownBlockSearch();
311
+ }
312
+ if (isNewRoot) {
313
+ this.metrics?.blockInputSync.requests.inc({type: PendingBlockType.INCOMPLETE_PAYLOAD_ENVELOPE});
314
+ this.metrics?.blockInputSync.payloadSource.inc({source: data.source});
315
+ }
307
316
  } catch (e) {
308
317
  this.logger.debug("Error handling incompletePayloadEnvelope event", {}, e as Error);
309
318
  }
@@ -599,43 +608,44 @@ export class BlockInputSync {
599
608
  return this.chain.seenPayloadEnvelopeInputCache.get(rootHex)?.slot;
600
609
  }
601
610
 
602
- private addByPayloadInput = (
603
- payloadInput: PayloadEnvelopeInput,
604
- peerIdStr?: PeerIdStr,
605
- envelope?: gloas.SignedExecutionPayloadEnvelope
606
- ): void => {
611
+ private addByPayloadInput = (payloadInput: PayloadEnvelopeInput, peerIdStr?: PeerIdStr): boolean => {
607
612
  if (this.knownBadBlocks.has(payloadInput.blockRootHex)) {
608
613
  this.logger.debug("Ignoring payload input for known bad block root", {
609
614
  slot: payloadInput.slot,
610
615
  root: payloadInput.blockRootHex,
611
616
  peerIdStr,
612
617
  });
613
- return;
618
+ return false;
614
619
  }
615
620
 
616
- const pendingPayload = this.toPendingPayloadInput(
617
- payloadInput,
618
- this.pendingPayloads.get(payloadInput.blockRootHex),
619
- envelope
620
- );
621
+ let pendingPayload = this.pendingPayloads.get(payloadInput.blockRootHex);
622
+ const isNewRoot = pendingPayload === undefined;
623
+ // Envelope-only entries must go through reconciliation to validate their speculative envelope.
624
+ if (
625
+ !pendingPayload ||
626
+ pendingPayload.status === PendingPayloadInputStatus.pending ||
627
+ pendingPayload.status === PendingPayloadInputStatus.downloaded
628
+ ) {
629
+ pendingPayload = this.toPendingPayloadInput(payloadInput, pendingPayload);
630
+ this.pendingPayloads.set(payloadInput.blockRootHex, pendingPayload);
631
+
632
+ this.logger.verbose("Added payloadInput to BlockInputSync.pendingPayloads", {
633
+ slot: payloadInput.slot,
634
+ root: payloadInput.blockRootHex,
635
+ delaySec: this.chain.clock.secFromSlot(payloadInput.slot),
636
+ });
637
+ }
621
638
 
622
639
  if (peerIdStr && pendingPayload.peerIdStrings.size < MAX_PEERS_PER_ROOT) {
623
640
  pendingPayload.peerIdStrings.add(peerIdStr);
624
641
  }
625
642
 
626
- this.pendingPayloads.set(payloadInput.blockRootHex, pendingPayload);
627
-
628
- this.logger.verbose("Added payloadInput to BlockInputSync.pendingPayloads", {
629
- slot: payloadInput.slot,
630
- root: payloadInput.blockRootHex,
631
- delaySec: this.chain.clock.secFromSlot(payloadInput.slot),
632
- });
633
-
634
643
  const prunedItemCount = pruneSetToMax(this.pendingPayloads, this.maxPendingBlocks);
635
644
  if (prunedItemCount > 0) {
636
645
  this.metrics?.blockInputSync.removedPayloads.inc({reason: DroppedItemReason.capacity}, prunedItemCount);
637
646
  this.logger.verbose(`Pruned ${prunedItemCount} items from BlockInputSync.pendingPayloads`);
638
647
  }
648
+ return isNewRoot;
639
649
  };
640
650
 
641
651
  private onPeerConnected = (data: NetworkEventData[NetworkEvent.peerConnected]): void => {
@@ -1267,6 +1277,9 @@ export class BlockInputSync {
1267
1277
  }
1268
1278
 
1269
1279
  const payloadInput = await this.chain.seenPayloadEnvelopeInputCache.getOrReload(rootHex);
1280
+ if (this.pendingPayloads.get(rootHex) !== pendingPayload) {
1281
+ return;
1282
+ }
1270
1283
  if (!payloadInput) {
1271
1284
  this.logger.debug("PayloadEnvelopeInput not yet reloadable for imported block, will retry", {
1272
1285
  root: rootHex,
@@ -1278,6 +1291,9 @@ export class BlockInputSync {
1278
1291
  const validationResult = await wrapError(
1279
1292
  validateGossipExecutionPayloadEnvelope(this.chain, pendingPayload.envelope)
1280
1293
  );
1294
+ if (this.pendingPayloads.get(rootHex) !== pendingPayload) {
1295
+ return;
1296
+ }
1281
1297
  if (validationResult.err) {
1282
1298
  this.logger.debug(
1283
1299
  "Pending payload envelope failed validation after block import, refetching by root",
@@ -1345,14 +1361,13 @@ export class BlockInputSync {
1345
1361
  payload.status = PendingPayloadInputStatus.fetching;
1346
1362
 
1347
1363
  const res = await wrapError(this.fetchPayloadInput(payload));
1364
+ if (this.pendingPayloads.get(rootHex) !== payload) {
1365
+ this.logger.verbose("Dropping downloaded payload, entry changed during fetch", logCtx);
1366
+ return;
1367
+ }
1348
1368
  if (!res.err) {
1349
1369
  const pendingPayload = res.result;
1350
1370
  const resultRootHex = getPayloadSyncCacheItemRootHex(pendingPayload);
1351
- // finalization may have deleted this entry while we were awaiting the network, do not resurrect it via the set below
1352
- if (!this.pendingPayloads.has(resultRootHex)) {
1353
- this.logger.verbose("Dropping downloaded payload, entry pruned during fetch", logCtx);
1354
- return;
1355
- }
1356
1371
  this.pendingPayloads.set(resultRootHex, pendingPayload);
1357
1372
  const result = isPendingPayloadEnvelope(pendingPayload)
1358
1373
  ? DownloadResult.WaitingForBlock
@@ -1423,12 +1438,16 @@ export class BlockInputSync {
1423
1438
  this.logger.debug("Processing downloaded payload", logCtx);
1424
1439
 
1425
1440
  const res = await wrapError(this.chain.processExecutionPayload(pendingPayload.payloadInput));
1441
+ // The executionPayload event emitted during import usually removes the entry before this point
1426
1442
  if (!res.err) {
1427
1443
  this.logger.debug("Processed payload from unknown sync", logCtx);
1428
1444
  this.pendingPayloads.delete(rootHex);
1429
1445
  this.triggerUnknownBlockSearch();
1430
1446
  return;
1431
1447
  }
1448
+ if (this.pendingPayloads.get(rootHex) !== pendingPayload) {
1449
+ return;
1450
+ }
1432
1451
 
1433
1452
  if (res.err instanceof PayloadError) {
1434
1453
  switch (res.err.type.code) {
@@ -1891,13 +1910,6 @@ export class BlockInputSync {
1891
1910
  throw new Error(`${message} Block was not found.`);
1892
1911
  }
1893
1912
 
1894
- if (isBlockInputBlobs(cacheItem.blockInput)) {
1895
- const missing = cacheItem.blockInput.getMissingBlobMeta().map((b) => b.index);
1896
- if (missing.length) {
1897
- throw new Error(`${message} Missing blob indices=${prettyPrintIndices(missing)}.`);
1898
- }
1899
- }
1900
-
1901
1913
  if (isBlockInputColumns(cacheItem.blockInput)) {
1902
1914
  const missing = cacheItem.blockInput.getMissingSampledColumnMeta().missing;
1903
1915
  if (missing.length) {
@@ -1,13 +1,5 @@
1
1
  import {ChainForkConfig} from "@lodestar/config";
2
- import {
3
- ForkName,
4
- ForkPostDeneb,
5
- ForkPostFulu,
6
- ForkPostGloas,
7
- ForkPreFulu,
8
- isForkPostFulu,
9
- isForkPostGloas,
10
- } from "@lodestar/params";
2
+ import {ForkName, ForkPostFulu, ForkPostGloas, isForkPostFulu, isForkPostGloas} from "@lodestar/params";
11
3
  import {
12
4
  ColumnIndex,
13
5
  DataColumnSidecar,
@@ -15,7 +7,6 @@ import {
15
7
  SignedBeaconBlock,
16
8
  Slot,
17
9
  ValidatorIndex,
18
- deneb,
19
10
  fulu,
20
11
  gloas,
21
12
  isGloasBeaconBlock,
@@ -23,18 +14,11 @@ import {
23
14
  phase0,
24
15
  } from "@lodestar/types";
25
16
  import {LodestarError, Logger, byteArrayEquals, fromHex, prettyPrintIndices, toRootHex} from "@lodestar/utils";
26
- import {
27
- BlockInputSource,
28
- DAType,
29
- IBlockInput,
30
- isBlockInputBlobs,
31
- isBlockInputColumns,
32
- } from "../../chain/blocks/blockInput/index.js";
17
+ import {BlockInputSource, DAType, IBlockInput, isBlockInputColumns} from "../../chain/blocks/blockInput/index.js";
33
18
  import {PayloadEnvelopeInput} from "../../chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js";
34
19
  import {PayloadEnvelopeInputSource} from "../../chain/blocks/payloadEnvelopeInput/types.js";
35
20
  import {SeenBlockInput} from "../../chain/seenCache/seenGossipBlockInput.js";
36
21
  import {SeenPayloadEnvelopeInput} from "../../chain/seenCache/seenPayloadEnvelopeInput.js";
37
- import {validateBlockBlobSidecars} from "../../chain/validation/blobSidecar.js";
38
22
  import {
39
23
  validateFuluBlockDataColumnSidecars,
40
24
  validateGloasBlockDataColumnSidecars,
@@ -47,7 +31,6 @@ import {WarnResult} from "../../util/wrapError.js";
47
31
 
48
32
  export type DownloadByRangeRequests = {
49
33
  blocksRequest?: phase0.BeaconBlocksByRangeRequest;
50
- blobsRequest?: deneb.BlobSidecarsByRangeRequest;
51
34
  columnsRequest?: fulu.DataColumnSidecarsByRangeRequest;
52
35
  envelopesRequest?: gloas.ExecutionPayloadEnvelopesByRangeRequest;
53
36
  /**
@@ -77,7 +60,6 @@ export type ParentPayload = {
77
60
 
78
61
  export type DownloadByRangeResponses = {
79
62
  blocks?: SignedBeaconBlock[];
80
- blobSidecars?: deneb.BlobSidecars;
81
63
  columnSidecars?: DataColumnSidecar[];
82
64
  payloadEnvelopes?: gloas.SignedExecutionPayloadEnvelope[];
83
65
  };
@@ -115,11 +97,6 @@ export type ValidatedBlock = {
115
97
  block: SignedBeaconBlock;
116
98
  };
117
99
 
118
- export type ValidatedBlobSidecars = {
119
- blockRoot: Uint8Array;
120
- blobSidecars: deneb.BlobSidecars;
121
- };
122
-
123
100
  export type ValidatedColumnSidecars = {
124
101
  blockRoot: Uint8Array;
125
102
  columnSidecars: DataColumnSidecar[];
@@ -127,7 +104,6 @@ export type ValidatedColumnSidecars = {
127
104
 
128
105
  export type ValidatedResponses = {
129
106
  validatedBlocks?: ValidatedBlock[];
130
- validatedBlobSidecars?: ValidatedBlobSidecars[];
131
107
  validatedColumnSidecars?: ValidatedColumnSidecars[];
132
108
  };
133
109
 
@@ -183,8 +159,8 @@ export function cacheByRangeResponses({
183
159
  updatedBatchBlocks.set(blockInput.slot, blockInput);
184
160
  }
185
161
 
186
- // Seed seenPayloadEnvelopeInputCache the instant we have the block, before the blob loop (or any
187
- // later step) can throw and abort the batch — otherwise a gloas block would sit in
162
+ // Seed seenPayloadEnvelopeInputCache the instant we have the block, before any
163
+ // later step can throw and abort the batch. Otherwise a gloas block would sit in
188
164
  // seenBlockInputCache but unseeded here, and payload-by-root sync would later throw "Missing
189
165
  // PayloadEnvelopeInput for known block" (see issue #9306). add() is idempotent.
190
166
  if (isForkPostGloas(blockInput.forkName) && !payloadEnvelopes.has(blockInput.slot)) {
@@ -201,44 +177,6 @@ export function cacheByRangeResponses({
201
177
  }
202
178
  }
203
179
 
204
- for (const {blockRoot, blobSidecars} of responses.validatedBlobSidecars ?? []) {
205
- const dataSlot = blobSidecars.at(0)?.signedBlockHeader.message.slot;
206
- if (dataSlot === undefined) {
207
- throw new Error(
208
- `Coding Error: empty blobSidecars returned for blockRoot=${toRootHex(blockRoot)} from validation functions`
209
- );
210
- }
211
- const existing = updatedBatchBlocks.get(dataSlot);
212
- const blockRootHex = toRootHex(blockRoot);
213
-
214
- if (!existing) {
215
- throw new Error("Coding error: blockInput must exist when adding blobs");
216
- }
217
-
218
- if (!isBlockInputBlobs(existing)) {
219
- throw new DownloadByRangeError({
220
- code: DownloadByRangeErrorCode.MISMATCH_BLOCK_INPUT_TYPE,
221
- slot: existing.slot,
222
- blockRoot: existing.blockRootHex,
223
- expected: DAType.Blobs,
224
- actual: existing.type,
225
- });
226
- }
227
- for (const blobSidecar of blobSidecars) {
228
- // will throw if root hex does not match (meaning we are following the wrong chain)
229
- existing.addBlob(
230
- {
231
- blobSidecar,
232
- blockRootHex,
233
- seenTimestampSec,
234
- peerIdStr,
235
- source,
236
- },
237
- {throwOnDuplicateAdd: false}
238
- );
239
- }
240
- }
241
-
242
180
  if (downloadedPayloadEnvelopes !== null) {
243
181
  for (const [slot, envelope] of downloadedPayloadEnvelopes) {
244
182
  // the only PayloadEnvelopeInput miss is the dangling parent
@@ -350,7 +288,6 @@ export async function downloadByRange({
350
288
  peerIdStr,
351
289
  batchBlocks,
352
290
  blocksRequest,
353
- blobsRequest,
354
291
  columnsRequest,
355
292
  envelopesRequest,
356
293
  parentPayloadRequest,
@@ -368,7 +305,6 @@ export async function downloadByRange({
368
305
  network,
369
306
  peerIdStr,
370
307
  blocksRequest,
371
- blobsRequest,
372
308
  columnsRequest,
373
309
  envelopesRequest,
374
310
  parentPayloadRequest,
@@ -377,7 +313,7 @@ export async function downloadByRange({
377
313
  throw new DownloadByRangeError({
378
314
  code: DownloadByRangeErrorCode.REQ_RESP_ERROR,
379
315
  reason: (err as Error).message,
380
- ...requestsLogMeta({blocksRequest, blobsRequest, columnsRequest}),
316
+ ...requestsLogMeta({blocksRequest, columnsRequest}),
381
317
  });
382
318
  }
383
319
 
@@ -385,7 +321,6 @@ export async function downloadByRange({
385
321
  config,
386
322
  batchBlocks,
387
323
  blocksRequest,
388
- blobsRequest,
389
324
  columnsRequest,
390
325
  envelopesRequest,
391
326
  parentPayloadRequest,
@@ -402,7 +337,6 @@ export async function requestByRange({
402
337
  network,
403
338
  peerIdStr,
404
339
  blocksRequest,
405
- blobsRequest,
406
340
  columnsRequest,
407
341
  envelopesRequest,
408
342
  parentPayloadRequest,
@@ -411,7 +345,6 @@ export async function requestByRange({
411
345
  peerIdStr: PeerIdStr;
412
346
  }): Promise<DownloadByRangeResponses> {
413
347
  let blocks: undefined | SignedBeaconBlock[];
414
- let blobSidecars: undefined | deneb.BlobSidecars;
415
348
  const columnSidecars: DataColumnSidecar[] = [];
416
349
  const payloadEnvelopes: gloas.SignedExecutionPayloadEnvelope[] = [];
417
350
 
@@ -425,14 +358,6 @@ export async function requestByRange({
425
358
  );
426
359
  }
427
360
 
428
- if (blobsRequest) {
429
- requests.push(
430
- network.sendBlobSidecarsByRange(peerIdStr, blobsRequest).then((blobResponse) => {
431
- blobSidecars = blobResponse;
432
- })
433
- );
434
- }
435
-
436
361
  if (columnsRequest) {
437
362
  requests.push(
438
363
  network.sendDataColumnSidecarsByRange(peerIdStr, columnsRequest).then((columnResponse) => {
@@ -476,7 +401,6 @@ export async function requestByRange({
476
401
 
477
402
  return {
478
403
  blocks,
479
- blobSidecars,
480
404
  columnSidecars,
481
405
  payloadEnvelopes,
482
406
  };
@@ -489,13 +413,11 @@ export async function validateResponses({
489
413
  config,
490
414
  batchBlocks,
491
415
  blocksRequest,
492
- blobsRequest,
493
416
  columnsRequest,
494
417
  envelopesRequest,
495
418
  parentPayloadRequest,
496
419
  parentPayload,
497
420
  blocks,
498
- blobSidecars,
499
421
  columnSidecars,
500
422
  payloadEnvelopes,
501
423
  peerDasMetrics,
@@ -511,14 +433,14 @@ export async function validateResponses({
511
433
  DownloadByRangeError
512
434
  >
513
435
  > {
514
- // Blocks are always required for blob/column validation
436
+ // Blocks are always required for column validation
515
437
  // If a blocksRequest is provided, blocks have just been downloaded
516
438
  // If no blocksRequest is provided, batchBlocks must have been provided from cache
517
- if ((blobsRequest || columnsRequest) && !(blocks || batchBlocks)) {
439
+ if (columnsRequest && !(blocks || batchBlocks)) {
518
440
  throw new DownloadByRangeError(
519
441
  {
520
442
  code: DownloadByRangeErrorCode.MISSING_BLOCKS_RESPONSE,
521
- ...requestsLogMeta({blobsRequest, columnsRequest}),
443
+ ...requestsLogMeta({columnsRequest}),
522
444
  },
523
445
  "No blocks to validate data requests against"
524
446
  );
@@ -541,12 +463,11 @@ export async function validateResponses({
541
463
  }
542
464
 
543
465
  const needsEnvelopeValidation = !!envelopesRequest || parentPayload !== undefined;
544
- const dataRequest = blobsRequest ?? columnsRequest;
545
- if (!dataRequest && !needsEnvelopeValidation) {
466
+ if (!columnsRequest && !needsEnvelopeValidation) {
546
467
  return {result: {responses: validatedResponses, payloadEnvelopes: null}, warnings};
547
468
  }
548
469
 
549
- if (!dataRequest) {
470
+ if (!columnsRequest) {
550
471
  // Only envelope and/or parent-by-root validation needed
551
472
  if (parentPayload !== undefined) {
552
473
  const parentValidated = await validateParentPayloadColumns(parentPayload, columnSidecars ?? [], peerDasMetrics);
@@ -564,7 +485,7 @@ export async function validateResponses({
564
485
  }
565
486
 
566
487
  const blocksForDataValidation = getBlocksForDataValidation(
567
- dataRequest,
488
+ columnsRequest,
568
489
  batchBlocks,
569
490
  validatedResponses.validatedBlocks?.length ? validatedResponses.validatedBlocks : undefined
570
491
  );
@@ -573,50 +494,31 @@ export async function validateResponses({
573
494
  throw new DownloadByRangeError(
574
495
  {
575
496
  code: DownloadByRangeErrorCode.MISSING_BLOCKS_RESPONSE,
576
- ...requestsLogMeta({blobsRequest, columnsRequest}),
497
+ ...requestsLogMeta({columnsRequest}),
577
498
  },
578
499
  "No blocks in data request slot range to validate data response against"
579
500
  );
580
501
  }
581
502
 
582
- if (blobsRequest) {
583
- if (!blobSidecars) {
584
- throw new DownloadByRangeError(
585
- {
586
- code: DownloadByRangeErrorCode.MISSING_BLOBS_RESPONSE,
587
- ...requestsLogMeta({blobsRequest, columnsRequest}),
588
- },
589
- "No blobSidecars to validate against blobsRequest"
590
- );
591
- }
592
-
593
- validatedResponses.validatedBlobSidecars = await validateBlobsByRangeResponse(
594
- blocksForDataValidation,
595
- blobSidecars
503
+ if (!columnSidecars) {
504
+ throw new DownloadByRangeError(
505
+ {
506
+ code: DownloadByRangeErrorCode.MISSING_COLUMNS_RESPONSE,
507
+ ...requestsLogMeta({columnsRequest}),
508
+ },
509
+ "No columnSidecars to check columnRequest against"
596
510
  );
597
511
  }
598
512
 
599
- if (columnsRequest) {
600
- if (!columnSidecars) {
601
- throw new DownloadByRangeError(
602
- {
603
- code: DownloadByRangeErrorCode.MISSING_COLUMNS_RESPONSE,
604
- ...requestsLogMeta({blobsRequest, columnsRequest}),
605
- },
606
- "No columnSidecars to check columnRequest against"
607
- );
608
- }
609
-
610
- const validatedColumnSidecarsResult = await validateColumnsByRangeResponse(
611
- config,
612
- columnsRequest,
613
- blocksForDataValidation,
614
- columnSidecars,
615
- peerDasMetrics
616
- );
617
- validatedResponses.validatedColumnSidecars = validatedColumnSidecarsResult.result;
618
- warnings = validatedColumnSidecarsResult.warnings;
619
- }
513
+ const validatedColumnSidecarsResult = await validateColumnsByRangeResponse(
514
+ config,
515
+ columnsRequest,
516
+ blocksForDataValidation,
517
+ columnSidecars,
518
+ peerDasMetrics
519
+ );
520
+ validatedResponses.validatedColumnSidecars = validatedColumnSidecarsResult.result;
521
+ warnings = validatedColumnSidecarsResult.warnings;
620
522
 
621
523
  // Parent columns (by-root): KZG-validate against parent's bid commitments and append.
622
524
  if (parentPayload !== undefined) {
@@ -779,79 +681,6 @@ export function validateBlockByRangeResponse(
779
681
  };
780
682
  }
781
683
 
782
- /**
783
- * Should not be called directly. Only exported for unit testing purposes.
784
- * This is used only in Deneb and Electra
785
- */
786
- export async function validateBlobsByRangeResponse(
787
- dataRequestBlocks: ValidatedBlock[],
788
- blobSidecars: deneb.BlobSidecars
789
- ): Promise<ValidatedBlobSidecars[]> {
790
- const expectedBlobCount = dataRequestBlocks.reduce(
791
- (acc, {block}) =>
792
- (block as SignedBeaconBlock<ForkPostDeneb & ForkPreFulu>).message.body.blobKzgCommitments.length + acc,
793
- 0
794
- );
795
- if (blobSidecars.length > expectedBlobCount) {
796
- throw new DownloadByRangeError(
797
- {
798
- code: DownloadByRangeErrorCode.EXTRA_BLOBS,
799
- expected: expectedBlobCount,
800
- actual: blobSidecars.length,
801
- },
802
- "Extra blobs received in BlobSidecarsByRange response"
803
- );
804
- }
805
- if (blobSidecars.length < expectedBlobCount) {
806
- throw new DownloadByRangeError(
807
- {
808
- code: DownloadByRangeErrorCode.MISSING_BLOBS,
809
- expected: expectedBlobCount,
810
- actual: blobSidecars.length,
811
- },
812
- "Missing blobs in BlobSidecarsByRange response"
813
- );
814
- }
815
-
816
- const validateSidecarsPromises: Promise<ValidatedBlobSidecars>[] = [];
817
- for (let blockIndex = 0, blobSidecarIndex = 0; blockIndex < dataRequestBlocks.length; blockIndex++) {
818
- const {block, blockRoot} = dataRequestBlocks[blockIndex];
819
- const blockKzgCommitments = (block as SignedBeaconBlock<ForkPostDeneb & ForkPreFulu>).message.body
820
- .blobKzgCommitments;
821
- if (blockKzgCommitments.length === 0) {
822
- continue;
823
- }
824
-
825
- const blockBlobSidecars = blobSidecars.slice(blobSidecarIndex, blobSidecarIndex + blockKzgCommitments.length);
826
- blobSidecarIndex += blockKzgCommitments.length;
827
-
828
- for (let i = 0; i < blockBlobSidecars.length; i++) {
829
- if (blockBlobSidecars[i].index !== i) {
830
- throw new DownloadByRangeError(
831
- {
832
- code: DownloadByRangeErrorCode.OUT_OF_ORDER_BLOBS,
833
- slot: block.message.slot,
834
- },
835
- "Blob sidecars not in order or do not match expected indexes in BlobSidecarsByRange response"
836
- );
837
- }
838
- }
839
-
840
- validateSidecarsPromises.push(
841
- validateBlockBlobSidecars(
842
- null, // do not pass chain here so we do not validate header signature
843
- block.message.slot,
844
- blockRoot,
845
- blockKzgCommitments.length,
846
- blockBlobSidecars
847
- ).then(() => ({blockRoot, blobSidecars: blockBlobSidecars}))
848
- );
849
- }
850
-
851
- // Await all sidecar validations in parallel
852
- return Promise.all(validateSidecarsPromises);
853
- }
854
-
855
684
  /**
856
685
  * Should not be called directly. Only exported for unit testing purposes
857
686
  *
@@ -1128,12 +957,10 @@ export function getBlocksForDataValidation(
1128
957
  return dataRequestBlocks;
1129
958
  }
1130
959
 
1131
- function requestsLogMeta({blocksRequest, blobsRequest, columnsRequest}: DownloadByRangeRequests) {
960
+ function requestsLogMeta({blocksRequest, columnsRequest}: DownloadByRangeRequests) {
1132
961
  const logMeta: {
1133
962
  blockStartSlot?: number;
1134
963
  blockCount?: number;
1135
- blobStartSlot?: number;
1136
- blobCount?: number;
1137
964
  columnStartSlot?: number;
1138
965
  columnCount?: number;
1139
966
  } = {};
@@ -1141,10 +968,6 @@ function requestsLogMeta({blocksRequest, blobsRequest, columnsRequest}: Download
1141
968
  logMeta.blockStartSlot = blocksRequest.startSlot;
1142
969
  logMeta.blockCount = blocksRequest.count;
1143
970
  }
1144
- if (blobsRequest) {
1145
- logMeta.blobStartSlot = blobsRequest.startSlot;
1146
- logMeta.blobCount = blobsRequest.count;
1147
- }
1148
971
  if (columnsRequest) {
1149
972
  logMeta.columnStartSlot = columnsRequest.startSlot;
1150
973
  logMeta.columnCount = columnsRequest.count;
@@ -1154,7 +977,6 @@ function requestsLogMeta({blocksRequest, blobsRequest, columnsRequest}: Download
1154
977
 
1155
978
  export enum DownloadByRangeErrorCode {
1156
979
  MISSING_BLOCKS_RESPONSE = "DOWNLOAD_BY_RANGE_ERROR_MISSING_BLOCK_RESPONSE",
1157
- MISSING_BLOBS_RESPONSE = "DOWNLOAD_BY_RANGE_ERROR_MISSING_BLOBS_RESPONSE",
1158
980
  MISSING_COLUMNS_RESPONSE = "DOWNLOAD_BY_RANGE_ERROR_MISSING_COLUMNS_RESPONSE",
1159
981
 
1160
982
  /** Error at the reqresp layer */
@@ -1167,10 +989,6 @@ export enum DownloadByRangeErrorCode {
1167
989
  OUT_OF_RANGE_BLOCKS = "DOWNLOAD_BY_RANGE_OUT_OF_RANGE_BLOCKS",
1168
990
  OUT_OF_ORDER_BLOCKS = "DOWNLOAD_BY_RANGE_OUT_OF_ORDER_BLOCKS",
1169
991
 
1170
- MISSING_BLOBS = "DOWNLOAD_BY_RANGE_ERROR_MISSING_BLOBS",
1171
- OUT_OF_ORDER_BLOBS = "DOWNLOAD_BY_RANGE_ERROR_OUT_OF_ORDER_BLOBS",
1172
- EXTRA_BLOBS = "DOWNLOAD_BY_RANGE_ERROR_EXTRA_BLOBS",
1173
-
1174
992
  MISSING_COLUMNS = "DOWNLOAD_BY_RANGE_ERROR_MISSING_COLUMNS",
1175
993
  OVER_COLUMNS = "DOWNLOAD_BY_RANGE_ERROR_OVER_COLUMNS",
1176
994
  EXTRA_COLUMNS = "DOWNLOAD_BY_RANGE_ERROR_EXTRA_COLUMNS",
@@ -1195,14 +1013,9 @@ export enum DownloadByRangeErrorCode {
1195
1013
 
1196
1014
  export type DownloadByRangeErrorType =
1197
1015
  | {
1198
- code:
1199
- | DownloadByRangeErrorCode.MISSING_BLOCKS_RESPONSE
1200
- | DownloadByRangeErrorCode.MISSING_BLOBS_RESPONSE
1201
- | DownloadByRangeErrorCode.MISSING_COLUMNS_RESPONSE;
1016
+ code: DownloadByRangeErrorCode.MISSING_BLOCKS_RESPONSE | DownloadByRangeErrorCode.MISSING_COLUMNS_RESPONSE;
1202
1017
  blockStartSlot?: number;
1203
1018
  blockCount?: number;
1204
- blobStartSlot?: number;
1205
- blobCount?: number;
1206
1019
  columnStartSlot?: number;
1207
1020
  columnCount?: number;
1208
1021
  }
@@ -1223,8 +1036,6 @@ export type DownloadByRangeErrorType =
1223
1036
  code: DownloadByRangeErrorCode.REQ_RESP_ERROR;
1224
1037
  blockStartSlot?: number;
1225
1038
  blockCount?: number;
1226
- blobStartSlot?: number;
1227
- blobCount?: number;
1228
1039
  columnStartSlot?: number;
1229
1040
  columnCount?: number;
1230
1041
  reason: string;
@@ -1241,19 +1052,9 @@ export type DownloadByRangeErrorType =
1241
1052
  actual: number;
1242
1053
  }
1243
1054
  | {
1244
- code: DownloadByRangeErrorCode.MISSING_BLOBS;
1245
- expected: number;
1246
- actual: number;
1247
- }
1248
- | {
1249
- code: DownloadByRangeErrorCode.OUT_OF_ORDER_BLOBS | DownloadByRangeErrorCode.OUT_OF_ORDER_COLUMNS;
1055
+ code: DownloadByRangeErrorCode.OUT_OF_ORDER_COLUMNS;
1250
1056
  slot: number;
1251
1057
  }
1252
- | {
1253
- code: DownloadByRangeErrorCode.EXTRA_BLOBS;
1254
- expected: number;
1255
- actual: number;
1256
- }
1257
1058
  | {
1258
1059
  code: DownloadByRangeErrorCode.OVER_COLUMNS;
1259
1060
  max: number;