@lodestar/beacon-node 1.43.0-dev.0bc48d3b54 → 1.43.0-dev.12d35509c0

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 (320) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +17 -9
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/pool/index.js +45 -2
  6. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  7. package/lib/api/impl/beacon/state/utils.d.ts +2 -2
  8. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  9. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  10. package/lib/api/impl/debug/index.d.ts.map +1 -1
  11. package/lib/api/impl/debug/index.js +0 -1
  12. package/lib/api/impl/debug/index.js.map +1 -1
  13. package/lib/api/impl/lodestar/index.js +1 -1
  14. package/lib/api/impl/lodestar/index.js.map +1 -1
  15. package/lib/api/impl/validator/index.d.ts.map +1 -1
  16. package/lib/api/impl/validator/index.js +68 -6
  17. package/lib/api/impl/validator/index.js.map +1 -1
  18. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  19. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  20. package/lib/chain/archiveStore/interface.d.ts +4 -4
  21. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  22. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +4 -4
  23. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  24. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  25. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +2 -2
  26. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  27. package/lib/chain/archiveStore/utils/archiveBlocks.js +110 -58
  28. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  29. package/lib/chain/blocks/blockInput/blockInput.d.ts +3 -0
  30. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  31. package/lib/chain/blocks/blockInput/blockInput.js +4 -1
  32. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  33. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  34. package/lib/chain/blocks/importBlock.js +16 -28
  35. package/lib/chain/blocks/importBlock.js.map +1 -1
  36. package/lib/chain/blocks/importExecutionPayload.d.ts +28 -14
  37. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  38. package/lib/chain/blocks/importExecutionPayload.js +88 -90
  39. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  40. package/lib/chain/blocks/index.d.ts +5 -3
  41. package/lib/chain/blocks/index.d.ts.map +1 -1
  42. package/lib/chain/blocks/index.js +59 -26
  43. package/lib/chain/blocks/index.js.map +1 -1
  44. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +4 -0
  45. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
  46. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +9 -2
  47. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
  48. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +1 -0
  49. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  50. package/lib/chain/blocks/payloadEnvelopeProcessor.js +2 -2
  51. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  52. package/lib/chain/blocks/types.d.ts +15 -20
  53. package/lib/chain/blocks/types.d.ts.map +1 -1
  54. package/lib/chain/blocks/utils/chainSegment.d.ts +23 -2
  55. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
  56. package/lib/chain/blocks/utils/chainSegment.js +89 -12
  57. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  58. package/lib/chain/blocks/verifyBlock.d.ts +5 -3
  59. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  60. package/lib/chain/blocks/verifyBlock.js +50 -7
  61. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  62. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +0 -4
  63. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  64. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -2
  65. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  66. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts +2 -1
  67. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  68. package/lib/chain/blocks/verifyBlocksSanityChecks.js +25 -5
  69. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  70. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +24 -0
  71. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -0
  72. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +79 -0
  73. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -0
  74. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
  75. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +8 -3
  76. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  77. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts +1 -1
  78. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts.map +1 -1
  79. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js +2 -11
  80. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js.map +1 -1
  81. package/lib/chain/chain.d.ts +8 -6
  82. package/lib/chain/chain.d.ts.map +1 -1
  83. package/lib/chain/chain.js +29 -13
  84. package/lib/chain/chain.js.map +1 -1
  85. package/lib/chain/emitter.d.ts +3 -14
  86. package/lib/chain/emitter.d.ts.map +1 -1
  87. package/lib/chain/emitter.js +0 -4
  88. package/lib/chain/emitter.js.map +1 -1
  89. package/lib/chain/errors/blockError.d.ts +8 -1
  90. package/lib/chain/errors/blockError.d.ts.map +1 -1
  91. package/lib/chain/errors/blockError.js +2 -0
  92. package/lib/chain/errors/blockError.js.map +1 -1
  93. package/lib/chain/errors/executionPayloadBid.d.ts +5 -0
  94. package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
  95. package/lib/chain/errors/executionPayloadBid.js +1 -0
  96. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  97. package/lib/chain/errors/executionPayloadEnvelope.d.ts +5 -0
  98. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  99. package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
  100. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  101. package/lib/chain/errors/index.d.ts +1 -0
  102. package/lib/chain/errors/index.d.ts.map +1 -1
  103. package/lib/chain/errors/index.js +1 -0
  104. package/lib/chain/errors/index.js.map +1 -1
  105. package/lib/chain/errors/proposerPreferences.d.ts +40 -0
  106. package/lib/chain/errors/proposerPreferences.d.ts.map +1 -0
  107. package/lib/chain/errors/proposerPreferences.js +14 -0
  108. package/lib/chain/errors/proposerPreferences.js.map +1 -0
  109. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  110. package/lib/chain/forkChoice/index.js +5 -17
  111. package/lib/chain/forkChoice/index.js.map +1 -1
  112. package/lib/chain/interface.d.ts +7 -5
  113. package/lib/chain/interface.d.ts.map +1 -1
  114. package/lib/chain/interface.js.map +1 -1
  115. package/lib/chain/opPools/payloadAttestationPool.d.ts +3 -2
  116. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  117. package/lib/chain/opPools/payloadAttestationPool.js +26 -4
  118. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  119. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  120. package/lib/chain/prepareNextSlot.js +31 -13
  121. package/lib/chain/prepareNextSlot.js.map +1 -1
  122. package/lib/chain/produceBlock/produceBlockBody.d.ts +11 -1
  123. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  124. package/lib/chain/produceBlock/produceBlockBody.js +49 -14
  125. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  126. package/lib/chain/regen/interface.d.ts +1 -0
  127. package/lib/chain/regen/interface.d.ts.map +1 -1
  128. package/lib/chain/regen/interface.js +1 -0
  129. package/lib/chain/regen/interface.js.map +1 -1
  130. package/lib/chain/regen/queued.d.ts.map +1 -1
  131. package/lib/chain/regen/queued.js +1 -4
  132. package/lib/chain/regen/queued.js.map +1 -1
  133. package/lib/chain/regen/regen.d.ts.map +1 -1
  134. package/lib/chain/regen/regen.js +1 -4
  135. package/lib/chain/regen/regen.js.map +1 -1
  136. package/lib/chain/seenCache/index.d.ts +1 -0
  137. package/lib/chain/seenCache/index.d.ts.map +1 -1
  138. package/lib/chain/seenCache/index.js +1 -0
  139. package/lib/chain/seenCache/index.js.map +1 -1
  140. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +22 -6
  141. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  142. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +53 -17
  143. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  144. package/lib/chain/seenCache/seenProposerPreferences.d.ts +16 -0
  145. package/lib/chain/seenCache/seenProposerPreferences.d.ts.map +1 -0
  146. package/lib/chain/seenCache/seenProposerPreferences.js +26 -0
  147. package/lib/chain/seenCache/seenProposerPreferences.js.map +1 -0
  148. package/lib/chain/validation/block.d.ts.map +1 -1
  149. package/lib/chain/validation/block.js +1 -0
  150. package/lib/chain/validation/block.js.map +1 -1
  151. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  152. package/lib/chain/validation/executionPayloadBid.js +24 -9
  153. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  154. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  155. package/lib/chain/validation/executionPayloadEnvelope.js +19 -9
  156. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  157. package/lib/chain/validation/proposerPreferences.d.ts +8 -0
  158. package/lib/chain/validation/proposerPreferences.d.ts.map +1 -0
  159. package/lib/chain/validation/proposerPreferences.js +91 -0
  160. package/lib/chain/validation/proposerPreferences.js.map +1 -0
  161. package/lib/db/repositories/executionPayloadEnvelopeArchive.js +1 -1
  162. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -1
  163. package/lib/execution/engine/mock.d.ts.map +1 -1
  164. package/lib/execution/engine/mock.js +3 -0
  165. package/lib/execution/engine/mock.js.map +1 -1
  166. package/lib/metrics/metrics/lodestar.d.ts +1 -0
  167. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  168. package/lib/metrics/metrics/lodestar.js +4 -0
  169. package/lib/metrics/metrics/lodestar.js.map +1 -1
  170. package/lib/network/gossip/interface.d.ts +7 -1
  171. package/lib/network/gossip/interface.d.ts.map +1 -1
  172. package/lib/network/gossip/interface.js +1 -0
  173. package/lib/network/gossip/interface.js.map +1 -1
  174. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  175. package/lib/network/gossip/scoringParameters.js +12 -1
  176. package/lib/network/gossip/scoringParameters.js.map +1 -1
  177. package/lib/network/gossip/topic.d.ts +30 -748
  178. package/lib/network/gossip/topic.d.ts.map +1 -1
  179. package/lib/network/gossip/topic.js +6 -0
  180. package/lib/network/gossip/topic.js.map +1 -1
  181. package/lib/network/interface.d.ts +1 -0
  182. package/lib/network/interface.d.ts.map +1 -1
  183. package/lib/network/network.d.ts +1 -0
  184. package/lib/network/network.d.ts.map +1 -1
  185. package/lib/network/network.js +6 -1
  186. package/lib/network/network.js.map +1 -1
  187. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  188. package/lib/network/processor/gossipHandlers.js +41 -19
  189. package/lib/network/processor/gossipHandlers.js.map +1 -1
  190. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
  191. package/lib/network/processor/gossipQueues/index.js +5 -0
  192. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  193. package/lib/network/processor/index.d.ts.map +1 -1
  194. package/lib/network/processor/index.js +6 -5
  195. package/lib/network/processor/index.js.map +1 -1
  196. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  197. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +14 -6
  198. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  199. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  200. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +11 -5
  201. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  202. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  203. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +17 -5
  204. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  205. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -1
  206. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +7 -4
  207. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -1
  208. package/lib/node/nodejs.js +2 -2
  209. package/lib/node/nodejs.js.map +1 -1
  210. package/lib/sync/constants.d.ts +3 -1
  211. package/lib/sync/constants.d.ts.map +1 -1
  212. package/lib/sync/constants.js +3 -4
  213. package/lib/sync/constants.js.map +1 -1
  214. package/lib/sync/range/batch.d.ts +28 -2
  215. package/lib/sync/range/batch.d.ts.map +1 -1
  216. package/lib/sync/range/batch.js +146 -44
  217. package/lib/sync/range/batch.js.map +1 -1
  218. package/lib/sync/range/chain.d.ts +12 -2
  219. package/lib/sync/range/chain.d.ts.map +1 -1
  220. package/lib/sync/range/chain.js +53 -9
  221. package/lib/sync/range/chain.js.map +1 -1
  222. package/lib/sync/range/range.d.ts.map +1 -1
  223. package/lib/sync/range/range.js +17 -6
  224. package/lib/sync/range/range.js.map +1 -1
  225. package/lib/sync/types.d.ts +34 -0
  226. package/lib/sync/types.d.ts.map +1 -1
  227. package/lib/sync/types.js +34 -0
  228. package/lib/sync/types.js.map +1 -1
  229. package/lib/sync/unknownBlock.d.ts +22 -1
  230. package/lib/sync/unknownBlock.d.ts.map +1 -1
  231. package/lib/sync/unknownBlock.js +604 -53
  232. package/lib/sync/unknownBlock.js.map +1 -1
  233. package/lib/sync/utils/downloadByRange.d.ts +46 -10
  234. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  235. package/lib/sync/utils/downloadByRange.js +162 -24
  236. package/lib/sync/utils/downloadByRange.js.map +1 -1
  237. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  238. package/lib/sync/utils/downloadByRoot.js +16 -2
  239. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  240. package/lib/sync/utils/pendingBlocksTree.d.ts +0 -1
  241. package/lib/sync/utils/pendingBlocksTree.d.ts.map +1 -1
  242. package/lib/sync/utils/pendingBlocksTree.js +0 -9
  243. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  244. package/lib/util/sszBytes.d.ts.map +1 -1
  245. package/lib/util/sszBytes.js +20 -5
  246. package/lib/util/sszBytes.js.map +1 -1
  247. package/package.json +16 -15
  248. package/src/api/impl/beacon/blocks/index.ts +22 -9
  249. package/src/api/impl/beacon/pool/index.ts +83 -1
  250. package/src/api/impl/beacon/state/utils.ts +2 -2
  251. package/src/api/impl/debug/index.ts +0 -1
  252. package/src/api/impl/lodestar/index.ts +1 -1
  253. package/src/api/impl/validator/index.ts +82 -5
  254. package/src/chain/archiveStore/archiveStore.ts +5 -5
  255. package/src/chain/archiveStore/interface.ts +4 -4
  256. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +4 -4
  257. package/src/chain/archiveStore/utils/archiveBlocks.ts +153 -94
  258. package/src/chain/blocks/blockInput/blockInput.ts +4 -1
  259. package/src/chain/blocks/importBlock.ts +16 -48
  260. package/src/chain/blocks/importExecutionPayload.ts +109 -105
  261. package/src/chain/blocks/index.ts +73 -23
  262. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +10 -2
  263. package/src/chain/blocks/payloadEnvelopeInput/types.ts +1 -0
  264. package/src/chain/blocks/payloadEnvelopeProcessor.ts +2 -2
  265. package/src/chain/blocks/types.ts +15 -25
  266. package/src/chain/blocks/utils/chainSegment.ts +114 -17
  267. package/src/chain/blocks/verifyBlock.ts +70 -9
  268. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +6 -4
  269. package/src/chain/blocks/verifyBlocksSanityChecks.ts +26 -7
  270. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +134 -0
  271. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +7 -4
  272. package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +9 -18
  273. package/src/chain/chain.ts +48 -26
  274. package/src/chain/emitter.ts +3 -14
  275. package/src/chain/errors/blockError.ts +4 -1
  276. package/src/chain/errors/executionPayloadBid.ts +6 -0
  277. package/src/chain/errors/executionPayloadEnvelope.ts +6 -0
  278. package/src/chain/errors/index.ts +1 -0
  279. package/src/chain/errors/proposerPreferences.ts +47 -0
  280. package/src/chain/forkChoice/index.ts +2 -22
  281. package/src/chain/interface.ts +11 -3
  282. package/src/chain/opPools/payloadAttestationPool.ts +29 -8
  283. package/src/chain/prepareNextSlot.ts +36 -14
  284. package/src/chain/produceBlock/produceBlockBody.ts +59 -13
  285. package/src/chain/regen/interface.ts +1 -0
  286. package/src/chain/regen/queued.ts +2 -7
  287. package/src/chain/regen/regen.ts +2 -7
  288. package/src/chain/seenCache/index.ts +1 -0
  289. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +71 -20
  290. package/src/chain/seenCache/seenProposerPreferences.ts +32 -0
  291. package/src/chain/validation/block.ts +1 -0
  292. package/src/chain/validation/executionPayloadBid.ts +25 -8
  293. package/src/chain/validation/executionPayloadEnvelope.ts +20 -10
  294. package/src/chain/validation/proposerPreferences.ts +110 -0
  295. package/src/db/repositories/executionPayloadEnvelopeArchive.ts +1 -1
  296. package/src/execution/engine/mock.ts +5 -1
  297. package/src/metrics/metrics/lodestar.ts +4 -0
  298. package/src/network/gossip/interface.ts +6 -0
  299. package/src/network/gossip/scoringParameters.ts +14 -1
  300. package/src/network/gossip/topic.ts +6 -0
  301. package/src/network/interface.ts +1 -0
  302. package/src/network/network.ts +12 -1
  303. package/src/network/processor/gossipHandlers.ts +56 -20
  304. package/src/network/processor/gossipQueues/index.ts +5 -0
  305. package/src/network/processor/index.ts +6 -5
  306. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +14 -6
  307. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +11 -5
  308. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +17 -5
  309. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +7 -4
  310. package/src/node/nodejs.ts +2 -2
  311. package/src/sync/constants.ts +4 -4
  312. package/src/sync/range/batch.ts +204 -49
  313. package/src/sync/range/chain.ts +69 -11
  314. package/src/sync/range/range.ts +18 -6
  315. package/src/sync/types.ts +72 -0
  316. package/src/sync/unknownBlock.ts +762 -57
  317. package/src/sync/utils/downloadByRange.ts +272 -39
  318. package/src/sync/utils/downloadByRoot.ts +24 -2
  319. package/src/sync/utils/pendingBlocksTree.ts +0 -15
  320. package/src/util/sszBytes.ts +25 -5
@@ -1 +1 @@
1
- {"version":3,"file":"executionPayloadEnvelopesByRange.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAE/C,wBAAuB,kCAAkC,CACvD,OAAO,EAAE,KAAK,CAAC,uCAAuC,EACtD,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,SAAS,GACZ,aAAa,CAAC,gBAAgB,CAAC,CA0DjC;AAED,wBAAgB,+CAA+C,CAC7D,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,KAAK,CAAC,uCAAuC,GACrD,KAAK,CAAC,uCAAuC,CAmB/C"}
1
+ {"version":3,"file":"executionPayloadEnvelopesByRange.d.ts","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAA4B,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAE/C,wBAAuB,kCAAkC,CACvD,OAAO,EAAE,KAAK,CAAC,uCAAuC,EACtD,KAAK,EAAE,YAAY,EACnB,EAAE,EAAE,SAAS,GACZ,aAAa,CAAC,gBAAgB,CAAC,CA6DjC;AAED,wBAAgB,+CAA+C,CAC7D,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,KAAK,CAAC,uCAAuC,GACrD,KAAK,CAAC,uCAAuC,CAmB/C"}
@@ -10,11 +10,14 @@ export async function* onExecutionPayloadEnvelopesByRange(request, chain, db) {
10
10
  }
11
11
  const finalized = db.executionPayloadEnvelopeArchive;
12
12
  const finalizedSlot = chain.forkChoice.getFinalizedCheckpointSlot();
13
+ // The current finalized block's envelope is still in the hot db; archive migration happens
14
+ // in the next finalization run (see migrateExecutionPayloadEnvelopesFromHotToColdDb).
15
+ const archiveMaxSlot = finalizedSlot - 1;
13
16
  // Finalized range of envelopes
14
- if (startSlot <= finalizedSlot) {
17
+ if (startSlot <= archiveMaxSlot) {
15
18
  for await (const { key, value: envelopeBytes } of finalized.binaryEntriesStream({
16
19
  gte: startSlot,
17
- lt: endSlot,
20
+ lt: Math.min(endSlot, archiveMaxSlot + 1),
18
21
  })) {
19
22
  const slot = finalized.decodeKey(key);
20
23
  yield {
@@ -24,14 +27,14 @@ export async function* onExecutionPayloadEnvelopesByRange(request, chain, db) {
24
27
  }
25
28
  }
26
29
  // Non-finalized range of envelopes
27
- if (endSlot > finalizedSlot) {
30
+ if (endSlot > archiveMaxSlot) {
28
31
  const headBlock = chain.forkChoice.getHead();
29
32
  const headRoot = headBlock.blockRoot;
30
33
  const headChain = chain.forkChoice.getAllAncestorBlocks(headRoot, headBlock.payloadStatus);
31
34
  // Iterate head chain with ascending block numbers
32
35
  for (let i = headChain.length - 1; i >= 0; i--) {
33
36
  const block = headChain[i];
34
- if (block.slot >= startSlot && block.slot < endSlot) {
37
+ if (block.slot > archiveMaxSlot && block.slot >= startSlot && block.slot < endSlot) {
35
38
  // Skip EMPTY blocks
36
39
  if (block.payloadStatus !== PayloadStatus.FULL) {
37
40
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"executionPayloadEnvelopesByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executionPayloadEnvelopesByRange.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts"],"names":[],"mappings":"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"}
@@ -123,7 +123,7 @@ export class BeaconNode {
123
123
  : null;
124
124
  let executionEngineOpts = opts.executionEngine;
125
125
  if (opts.executionEngine.mode === "mock") {
126
- const eth1BlockHash = isStatePostBellatrix(anchorState) && anchorState.isExecutionStateType
126
+ const latestEth1BlockHash = isStatePostBellatrix(anchorState) && anchorState.isExecutionStateType
127
127
  ? isStatePostGloas(anchorState)
128
128
  ? toRootHex(anchorState.latestBlockHash)
129
129
  : toRootHex(anchorState.latestExecutionPayloadHeader.blockHash)
@@ -131,7 +131,7 @@ export class BeaconNode {
131
131
  executionEngineOpts = {
132
132
  ...opts.executionEngine,
133
133
  genesisBlockHash: ZERO_HASH_HEX,
134
- eth1BlockHash,
134
+ eth1BlockHash: opts.executionEngine.eth1BlockHash ?? latestEth1BlockHash,
135
135
  genesisTime: anchorState.genesisTime,
136
136
  config,
137
137
  };
@@ -1 +1 @@
1
- {"version":3,"file":"nodejs.js","sourceRoot":"","sources":["../../src/node/nodejs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nodejs.js","sourceRoot":"","sources":["../../src/node/nodejs.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,9 @@ export declare const PARALLEL_HEAD_CHAINS = 2;
3
3
  /** Minimum work we require a finalized chain to do before picking a chain with more peers. */
4
4
  export declare const MIN_FINALIZED_CHAIN_VALIDATED_EPOCHS = 10;
5
5
  /** The number of times to retry a batch before it is considered failed. */
6
- export declare const MAX_BATCH_DOWNLOAD_ATTEMPTS = 20;
6
+ export declare const MAX_BATCH_DOWNLOAD_ATTEMPTS = 5;
7
+ /** Backoff before assigning more range-sync batches to a peer that rate-limited us. */
8
+ export declare const RATE_LIMITED_PEER_BACKOFF_MS = 5000;
7
9
  /**
8
10
  * Consider batch faulty after downloading and processing this number of times
9
11
  * as in https://github.com/ChainSafe/lodestar/issues/8147 we cannot proceed the sync chain if there is unknown parent
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/sync/constants.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,8FAA8F;AAC9F,eAAO,MAAM,oCAAoC,KAAK,CAAC;AAEvD,2EAA2E;AAI3E,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C;;;;;IAKI;AACJ,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,4CAA4C;AAC5C,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,QAAmC,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/sync/constants.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,8FAA8F;AAC9F,eAAO,MAAM,oCAAoC,KAAK,CAAC;AAEvD,2EAA2E;AAC3E,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,uFAAuF;AACvF,eAAO,MAAM,4BAA4B,OAAQ,CAAC;AAElD;;;;;IAKI;AACJ,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,4CAA4C;AAC5C,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,QAAmC,CAAC;AAElE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC"}
@@ -3,10 +3,9 @@ export const PARALLEL_HEAD_CHAINS = 2;
3
3
  /** Minimum work we require a finalized chain to do before picking a chain with more peers. */
4
4
  export const MIN_FINALIZED_CHAIN_VALIDATED_EPOCHS = 10;
5
5
  /** The number of times to retry a batch before it is considered failed. */
6
- // export const MAX_BATCH_DOWNLOAD_ATTEMPTS = 5;
7
- // this constant is increased a lot for peerDAS because we may have many failed download due to rate limit not implemented yet
8
- // TODO: change it back to 5 when this issue is implemented https://github.com/ChainSafe/lodestar/issues/8033
9
- export const MAX_BATCH_DOWNLOAD_ATTEMPTS = 20;
6
+ export const MAX_BATCH_DOWNLOAD_ATTEMPTS = 5;
7
+ /** Backoff before assigning more range-sync batches to a peer that rate-limited us. */
8
+ export const RATE_LIMITED_PEER_BACKOFF_MS = 5_000;
10
9
  /**
11
10
  * Consider batch faulty after downloading and processing this number of times
12
11
  * as in https://github.com/ChainSafe/lodestar/issues/8147 we cannot proceed the sync chain if there is unknown parent
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/sync/constants.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,8FAA8F;AAC9F,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAE,CAAC;AAEvD,2EAA2E;AAC3E,gDAAgD;AAChD,8HAA8H;AAC9H,6GAA6G;AAC7G,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAE9C;;;;;IAKI;AACJ,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAC;AAElE;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/sync/constants.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAEtC,8FAA8F;AAC9F,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAE,CAAC;AAEvD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,uFAAuF;AACvF,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAElD;;;;;IAKI;AACJ,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,CAAC;AAElE;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC"}
@@ -3,6 +3,7 @@ import { ForkName } from "@lodestar/params";
3
3
  import { Epoch, RootHex, Slot } from "@lodestar/types";
4
4
  import { LodestarError } from "@lodestar/utils";
5
5
  import { IBlockInput } from "../../chain/blocks/blockInput/types.js";
6
+ import { PayloadEnvelopeInput } from "../../chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js";
6
7
  import { PeerSyncMeta } from "../../network/peers/peersData.js";
7
8
  import { IClock } from "../../util/clock.js";
8
9
  import { CustodyConfig } from "../../util/dataColumns.js";
@@ -38,27 +39,42 @@ export type Attempt = {
38
39
  export type AwaitingDownloadState = {
39
40
  status: BatchStatus.AwaitingDownload;
40
41
  blocks: IBlockInput[];
42
+ payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null;
41
43
  };
42
44
  export type DownloadSuccessState = {
43
45
  status: BatchStatus.AwaitingProcessing;
44
46
  blocks: IBlockInput[];
47
+ payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null;
45
48
  };
46
49
  export type BatchState = AwaitingDownloadState | {
47
50
  status: BatchStatus.Downloading;
48
51
  peer: PeerIdStr;
49
52
  blocks: IBlockInput[];
53
+ payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null;
50
54
  } | DownloadSuccessState | {
51
55
  status: BatchStatus.Processing;
52
56
  blocks: IBlockInput[];
57
+ payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null;
53
58
  attempt: Attempt;
54
59
  } | {
55
60
  status: BatchStatus.AwaitingValidation;
56
61
  blocks: IBlockInput[];
62
+ payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null;
57
63
  attempt: Attempt;
58
64
  };
59
65
  export type BatchMetadata = {
60
66
  startEpoch: Epoch;
67
+ startSlot: Slot;
68
+ count: number;
61
69
  status: BatchStatus;
70
+ blocksReq?: string;
71
+ blobsReq?: string;
72
+ columnsReq?: string;
73
+ envelopesReq?: string;
74
+ downloadAttempts: number;
75
+ processingAttempts: number;
76
+ failedDownloadPeers?: string;
77
+ failedProcessingPeers?: string;
62
78
  };
63
79
  /**
64
80
  * Batches are downloaded at the first block of the epoch.
@@ -106,6 +122,7 @@ export declare class Batch {
106
122
  getFailedPeers(): PeerIdStr[];
107
123
  getMetadata(): BatchMetadata;
108
124
  getBlocks(): IBlockInput[];
125
+ getPayloadEnvelopes(): Map<Slot, PayloadEnvelopeInput> | null;
109
126
  /**
110
127
  * AwaitingDownload -> Downloading
111
128
  */
@@ -113,15 +130,24 @@ export declare class Batch {
113
130
  /**
114
131
  * Downloading -> AwaitingProcessing
115
132
  */
116
- downloadingSuccess(peer: PeerIdStr, blocks: IBlockInput[]): DownloadSuccessState;
133
+ downloadingSuccess(peer: PeerIdStr, blocks: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null): DownloadSuccessState;
117
134
  /**
118
135
  * Downloading -> AwaitingDownload
119
136
  */
120
137
  downloadingError(peer: PeerIdStr): void;
138
+ /**
139
+ * Downloading -> AwaitingDownload (without counting as a failed attempt).
140
+ * Used when the peer rate-limited us — the request was never actually served.
141
+ */
142
+ downloadingRateLimited(): void;
121
143
  /**
122
144
  * AwaitingProcessing -> Processing
123
145
  */
124
- startProcessing(): IBlockInput[];
146
+ startProcessing(): {
147
+ blocks: IBlockInput[];
148
+ payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null;
149
+ peers: PeerIdStr[];
150
+ };
125
151
  /**
126
152
  * Processing -> AwaitingValidation
127
153
  */
@@ -1 +1 @@
1
- {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/sync/range/batch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/sync/range/batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,QAAQ,EAAmD,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAS,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAC,aAAa,EAAqB,MAAM,iBAAiB,CAAC;AAElE,OAAO,EAAC,WAAW,EAAC,MAAM,wCAAwC,CAAC;AAEnE,OAAO,EAAC,oBAAoB,EAAC,MAAM,iEAAiE,CAAC;AAErG,OAAO,EAAC,YAAY,EAAC,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AAGpE;;GAEG;AACH,oBAAY,WAAW;IACrB,yFAAyF;IACzF,gBAAgB,qBAAqB;IACrC,qCAAqC;IACrC,WAAW,gBAAgB;IAC3B,4EAA4E;IAC5E,kBAAkB,uBAAuB;IACzC,oCAAoC;IACpC,UAAU,eAAe;IACzB;;;;;;OAMG;IACH,kBAAkB,uBAAuB;CAC1C;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,qCAAqC;IACrC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,4CAA4C;IAC5C,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC;IACrC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,WAAW,CAAC,kBAAkB,CAAC;IACvC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,qBAAqB,GACrB;IACE,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC;IAChC,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,CAAC;CAC1D,GACD,oBAAoB,GACpB;IACE,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC;IAC/B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,CAAC;IACzD,OAAO,EAAE,OAAO,CAAC;CAClB,GACD;IACE,MAAM,EAAE,WAAW,CAAC,kBAAkB,CAAC;IACvC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,CAAC;IACzD,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEN,MAAM,MAAM,aAAa,GAAG;IAE1B,UAAU,EAAE,KAAK,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IAIpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAG3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAUF;;;;;;;;;;GAUG;AACH,qBAAa,KAAK;IAChB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,+GAA+G;IAC/G,QAAQ,EAAE,uBAAuB,CAAC;IAClC,0BAA0B;IAC1B,KAAK,EAAE,UAAU,CAA8E;IAC/F,oCAAoC;IACpC,SAAS,EAAE,SAAS,EAAE,CAAM;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,wBAAwB,EAAE,OAAO,EAAE,CAAM;IAClD,sFAAsF;IACtF,QAAQ,CAAC,sBAAsB,EAAE,OAAO,EAAE,CAAM;IAChD,uFAAuF;IACvF,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAmB;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAE9C,YAAY,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAWlG;IAED;;OAEG;IACH,OAAO,CAAC,WAAW;IAyInB;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,uBAAuB,CAwB9D;IAED;;OAEG;IACH,cAAc,IAAI,SAAS,EAAE,CAE5B;IAED,WAAW,IAAI,aAAa,CAqB3B;IAED,SAAS,IAAI,WAAW,EAAE,CAEzB;IAED,mBAAmB,IAAI,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,CAE5D;IAED;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAWtC;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,WAAW,EAAE,EACrB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,GACvD,oBAAoB,CAqDtB;IAED;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAetC;IAED;;;OAGG;IACH,sBAAsB,IAAI,IAAI,CAU7B;IAED;;OAEG;IACH,eAAe,IAAI;QACjB,MAAM,EAAE,WAAW,EAAE,CAAC;QACtB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,CAAC;QACzD,KAAK,EAAE,SAAS,EAAE,CAAC;KACpB,CAcA;IAED;;OAEG;IACH,iBAAiB,IAAI,IAAI,CAWxB;IAED;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAUhC;IAED;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAUhC;IAED;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAK3B;IAED,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,iBAAiB;IAWzB,kGAAkG;IAClG,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,oBAAoB;CAG7B;AAED,oBAAY,cAAc;IACxB,YAAY,6BAA6B;IACzC,aAAa,8BAA8B;IAC3C,qBAAqB,sCAAsC;IAC3D,uBAAuB,wCAAwC;IAC/D,mCAAmC,wCAAwC;CAC5E;AAED,KAAK,cAAc,GACf;IAAC,IAAI,EAAE,cAAc,CAAC,YAAY,CAAC;IAAC,cAAc,EAAE,WAAW,CAAA;CAAC,GAChE;IAAC,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,GACrE;IAAC,IAAI,EAAE,cAAc,CAAC,qBAAqB,CAAA;CAAC,GAC5C;IAAC,IAAI,EAAE,cAAc,CAAC,uBAAuB,CAAA;CAAC,GAC9C;IAAC,IAAI,EAAE,cAAc,CAAC,mCAAmC,CAAA;CAAC,CAAC;AAE/D,KAAK,kBAAkB,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,qBAAa,UAAW,SAAQ,aAAa,CAAC,cAAc,GAAG,kBAAkB,CAAC;CAAG"}
@@ -1,5 +1,5 @@
1
- import { isForkPostDeneb, isForkPostFulu } from "@lodestar/params";
2
- import { LodestarError } from "@lodestar/utils";
1
+ import { isForkPostDeneb, isForkPostFulu, isForkPostGloas } from "@lodestar/params";
2
+ import { LodestarError, prettyPrintIndices } from "@lodestar/utils";
3
3
  import { isBlockInputColumns } from "../../chain/blocks/blockInput/blockInput.js";
4
4
  import { isDaOutOfRange } from "../../chain/blocks/blockInput/utils.js";
5
5
  import { BlockError, BlockErrorCode } from "../../chain/errors/index.js";
@@ -28,6 +28,12 @@ var BatchStatus;
28
28
  */
29
29
  BatchStatus["AwaitingValidation"] = "AwaitingValidation";
30
30
  })(BatchStatus || (BatchStatus = {}));
31
+ function formatRangeReq(req) {
32
+ return `startSlot=${req.startSlot},count=${req.count}`;
33
+ }
34
+ function formatColumnsReq(req) {
35
+ return `startSlot=${req.startSlot},count=${req.count},cols=${prettyPrintIndices(req.columns)}`;
36
+ }
31
37
  /**
32
38
  * Batches are downloaded at the first block of the epoch.
33
39
  *
@@ -47,7 +53,7 @@ export class Batch {
47
53
  /** Block, blob and column requests that are used to determine the best peer and are used in downloadByRange */
48
54
  requests;
49
55
  /** State of the batch. */
50
- state = { status: BatchStatus.AwaitingDownload, blocks: [] };
56
+ state = { status: BatchStatus.AwaitingDownload, blocks: [], payloadEnvelopes: null };
51
57
  /** Peers that provided good data */
52
58
  goodPeers = [];
53
59
  /** The `Attempts` that have been made and failed to send us this batch. */
@@ -82,35 +88,32 @@ export class Batch {
82
88
  count: this.count,
83
89
  step: 1,
84
90
  };
91
+ const requests = { blocksRequest };
92
+ // Post-Gloas envelopes are required for block processing, independent of DA retention window.
93
+ if (isForkPostGloas(this.forkName)) {
94
+ requests.envelopesRequest = { startSlot: this.startSlot, count: this.count };
95
+ }
85
96
  if (isForkPostFulu(this.forkName) && withinValidRequestWindow) {
86
- return {
87
- blocksRequest,
88
- columnsRequest: {
89
- startSlot: this.startSlot,
90
- count: this.count,
91
- columns: this.custodyConfig.sampledColumns,
92
- },
97
+ requests.columnsRequest = {
98
+ startSlot: this.startSlot,
99
+ count: this.count,
100
+ columns: this.custodyConfig.sampledColumns,
93
101
  };
94
102
  }
95
- if (isForkPostDeneb(this.forkName) && withinValidRequestWindow) {
96
- return {
97
- blocksRequest,
98
- blobsRequest: {
99
- startSlot: this.startSlot,
100
- count: this.count,
101
- },
102
- };
103
+ else if (isForkPostDeneb(this.forkName) && withinValidRequestWindow) {
104
+ requests.blobsRequest = { startSlot: this.startSlot, count: this.count };
103
105
  }
104
- return {
105
- blocksRequest,
106
- };
106
+ return requests;
107
107
  }
108
108
  // subsequent request where part of the epoch has already been downloaded. Need to figure out what is the beginning
109
109
  // of the range where download needs to resume
110
110
  let blockStartSlot = this.startSlot;
111
111
  let dataStartSlot = this.startSlot;
112
+ let envelopeStartSlot = this.startSlot;
112
113
  const neededColumns = new Set();
114
+ const envelopesBySlot = this.state.payloadEnvelopes ?? new Map();
113
115
  // ensure blocks are in slot-wise order
116
+ const isPostGloas = isForkPostGloas(this.forkName);
114
117
  for (const blockInput of blocks) {
115
118
  const blockSlot = blockInput.slot;
116
119
  // check if block/data is present (hasBlock/hasAllData). If present then check if startSlot is the same as
@@ -126,15 +129,38 @@ export class Batch {
126
129
  if (blockInput.hasBlock() && blockStartSlot === blockSlot) {
127
130
  blockStartSlot = blockSlot + 1;
128
131
  }
129
- if (!blockInput.hasAllData()) {
130
- if (isBlockInputColumns(blockInput)) {
131
- for (const index of blockInput.getMissingSampledColumnMeta().missing) {
132
+ // Range sync uses hasComputedAllData (all sampled columns physically present), not hasAllData
133
+ // which flips at the reconstruction threshold. Sync never triggers reconstruction, so accepting
134
+ // a half-downloaded block here makes writeBlockInputToDb later block on waitForComputedAllData.
135
+ if (isPostGloas) {
136
+ // Post-Gloas: column data lives on PayloadEnvelopeInput, not on BlockInputNoData.
137
+ const payloadInput = envelopesBySlot.get(blockSlot);
138
+ if (blockInput.hasBlock() && envelopeStartSlot === blockSlot && payloadInput?.hasPayloadEnvelope()) {
139
+ envelopeStartSlot = blockSlot + 1;
140
+ }
141
+ if (payloadInput && !payloadInput.hasComputedAllData()) {
142
+ for (const index of payloadInput.getMissingSampledColumnMeta().missing) {
132
143
  neededColumns.add(index);
133
144
  }
134
145
  }
146
+ else if (payloadInput?.hasComputedAllData() && dataStartSlot === blockSlot) {
147
+ // Only advance dataStartSlot when we know columns for this slot are complete. If
148
+ // payloadInput is missing entirely we cannot tell, so stop here so the next round
149
+ // re-requests columns (and envelopes) starting at this slot.
150
+ dataStartSlot = blockSlot + 1;
151
+ }
135
152
  }
136
- else if (dataStartSlot === blockSlot) {
137
- dataStartSlot = blockSlot + 1;
153
+ else {
154
+ if (isBlockInputColumns(blockInput) ? !blockInput.hasComputedAllData() : !blockInput.hasAllData()) {
155
+ if (isBlockInputColumns(blockInput)) {
156
+ for (const index of blockInput.getMissingSampledColumnMeta().missing) {
157
+ neededColumns.add(index);
158
+ }
159
+ }
160
+ }
161
+ else if (dataStartSlot === blockSlot) {
162
+ dataStartSlot = blockSlot + 1;
163
+ }
138
164
  }
139
165
  }
140
166
  // if the blockStartSlot or dataStartSlot is after the desired endSlot then no request will be made for the batch
@@ -153,11 +179,15 @@ export class Batch {
153
179
  // range of 40 - 63, startSlot will be inclusive but subtraction will exclusive so need to + 1
154
180
  const count = endSlot - dataStartSlot + 1;
155
181
  if (isForkPostFulu(this.forkName) && withinValidRequestWindow) {
156
- requests.columnsRequest = {
157
- count,
158
- startSlot: dataStartSlot,
159
- columns: Array.from(neededColumns),
160
- };
182
+ // Skip the column re-request when we have no specific column indices outstanding.
183
+ // Peer rejects an empty `columns` list
184
+ if (neededColumns.size > 0) {
185
+ requests.columnsRequest = {
186
+ count,
187
+ startSlot: dataStartSlot,
188
+ columns: Array.from(neededColumns),
189
+ };
190
+ }
161
191
  }
162
192
  else if (isForkPostDeneb(this.forkName) && withinValidRequestWindow) {
163
193
  requests.blobsRequest = {
@@ -167,6 +197,12 @@ export class Batch {
167
197
  }
168
198
  // dataSlot will still have a value but do not create a request for preDeneb forks
169
199
  }
200
+ if (isForkPostGloas(this.forkName) && envelopeStartSlot <= endSlot) {
201
+ requests.envelopesRequest = {
202
+ startSlot: envelopeStartSlot,
203
+ count: endSlot - envelopeStartSlot + 1,
204
+ };
205
+ }
170
206
  return requests;
171
207
  }
172
208
  /**
@@ -201,11 +237,33 @@ export class Batch {
201
237
  return [...this.failedDownloadAttempts, ...this.failedProcessingAttempts.flatMap((a) => a.peers)];
202
238
  }
203
239
  getMetadata() {
204
- return { startEpoch: this.startEpoch, status: this.state.status };
240
+ const { blocksRequest, blobsRequest, columnsRequest, envelopesRequest } = this.requests;
241
+ const failedProcessingPeerList = this.failedProcessingAttempts.flatMap((a) => a.peers);
242
+ return {
243
+ startEpoch: this.startEpoch,
244
+ startSlot: this.startSlot,
245
+ count: this.count,
246
+ status: this.state.status,
247
+ ...(blocksRequest && { blocksReq: formatRangeReq(blocksRequest) }),
248
+ ...(blobsRequest && { blobsReq: formatRangeReq(blobsRequest) }),
249
+ ...(columnsRequest && { columnsReq: formatColumnsReq(columnsRequest) }),
250
+ ...(envelopesRequest && { envelopesReq: formatRangeReq(envelopesRequest) }),
251
+ downloadAttempts: this.failedDownloadAttempts.length,
252
+ processingAttempts: this.failedProcessingAttempts.length,
253
+ ...(this.failedDownloadAttempts.length > 0 && {
254
+ failedDownloadPeers: this.failedDownloadAttempts.join(","),
255
+ }),
256
+ ...(failedProcessingPeerList.length > 0 && {
257
+ failedProcessingPeers: failedProcessingPeerList.join(","),
258
+ }),
259
+ };
205
260
  }
206
261
  getBlocks() {
207
262
  return this.state.blocks;
208
263
  }
264
+ getPayloadEnvelopes() {
265
+ return this.state.payloadEnvelopes;
266
+ }
209
267
  /**
210
268
  * AwaitingDownload -> Downloading
211
269
  */
@@ -213,12 +271,17 @@ export class Batch {
213
271
  if (this.state.status !== BatchStatus.AwaitingDownload) {
214
272
  throw new BatchError(this.wrongStatusErrorType(BatchStatus.AwaitingDownload));
215
273
  }
216
- this.state = { status: BatchStatus.Downloading, peer, blocks: this.state.blocks };
274
+ this.state = {
275
+ status: BatchStatus.Downloading,
276
+ peer,
277
+ blocks: this.state.blocks,
278
+ payloadEnvelopes: this.state.payloadEnvelopes,
279
+ };
217
280
  }
218
281
  /**
219
282
  * Downloading -> AwaitingProcessing
220
283
  */
221
- downloadingSuccess(peer, blocks) {
284
+ downloadingSuccess(peer, blocks, payloadEnvelopes) {
222
285
  if (this.state.status !== BatchStatus.Downloading) {
223
286
  throw new BatchError(this.wrongStatusErrorType(BatchStatus.Downloading));
224
287
  }
@@ -229,7 +292,11 @@ export class Batch {
229
292
  const slots = new Set();
230
293
  for (const block of blocks) {
231
294
  slots.add(block.slot);
232
- if (!block.hasBlockAndAllData()) {
295
+ const dataComplete = isBlockInputColumns(block)
296
+ ? // by_range needs to download all columns
297
+ block.hasBlock() && block.hasComputedAllData()
298
+ : block.hasBlockAndAllData();
299
+ if (!dataComplete) {
233
300
  allComplete = false;
234
301
  }
235
302
  }
@@ -242,12 +309,23 @@ export class Batch {
242
309
  status: this.state.status,
243
310
  });
244
311
  }
312
+ const newPayloadEnvelopes = payloadEnvelopes ?? this.state.payloadEnvelopes;
313
+ if (allComplete && isForkPostGloas(this.forkName)) {
314
+ for (const block of blocks) {
315
+ const payloadInput = newPayloadEnvelopes?.get(block.slot);
316
+ // by_range needs to download all columns
317
+ if (!payloadInput?.hasPayloadEnvelope() || !payloadInput.hasComputedAllData()) {
318
+ allComplete = false;
319
+ break;
320
+ }
321
+ }
322
+ }
245
323
  if (allComplete) {
246
- this.state = { status: BatchStatus.AwaitingProcessing, blocks };
324
+ this.state = { status: BatchStatus.AwaitingProcessing, blocks, payloadEnvelopes: newPayloadEnvelopes };
247
325
  }
248
326
  else {
327
+ this.state = { status: BatchStatus.AwaitingDownload, blocks, payloadEnvelopes: newPayloadEnvelopes };
249
328
  this.requests = this.getRequests(blocks);
250
- this.state = { status: BatchStatus.AwaitingDownload, blocks };
251
329
  }
252
330
  return this.state;
253
331
  }
@@ -262,7 +340,25 @@ export class Batch {
262
340
  if (this.failedDownloadAttempts.length > MAX_BATCH_DOWNLOAD_ATTEMPTS) {
263
341
  throw new BatchError(this.errorType({ code: BatchErrorCode.MAX_DOWNLOAD_ATTEMPTS }));
264
342
  }
265
- this.state = { status: BatchStatus.AwaitingDownload, blocks: this.state.blocks };
343
+ this.state = {
344
+ status: BatchStatus.AwaitingDownload,
345
+ blocks: this.state.blocks,
346
+ payloadEnvelopes: this.state.payloadEnvelopes,
347
+ };
348
+ }
349
+ /**
350
+ * Downloading -> AwaitingDownload (without counting as a failed attempt).
351
+ * Used when the peer rate-limited us — the request was never actually served.
352
+ */
353
+ downloadingRateLimited() {
354
+ if (this.state.status !== BatchStatus.Downloading) {
355
+ throw new BatchError(this.wrongStatusErrorType(BatchStatus.Downloading));
356
+ }
357
+ this.state = {
358
+ status: BatchStatus.AwaitingDownload,
359
+ blocks: this.state.blocks,
360
+ payloadEnvelopes: this.state.payloadEnvelopes,
361
+ };
266
362
  }
267
363
  /**
268
364
  * AwaitingProcessing -> Processing
@@ -272,13 +368,14 @@ export class Batch {
272
368
  throw new BatchError(this.wrongStatusErrorType(BatchStatus.AwaitingProcessing));
273
369
  }
274
370
  const blocks = this.state.blocks;
371
+ const payloadEnvelopes = this.state.payloadEnvelopes;
275
372
  const hash = hashBlocks(blocks, this.config); // tracks blocks to report peer on processing error
276
373
  // Reset goodPeers in case another download attempt needs to be made. When Attempt is successful or not the peers
277
374
  // that the data came from will be handled by the Attempt that goes for processing
278
375
  const peers = this.goodPeers;
279
376
  this.goodPeers = [];
280
- this.state = { status: BatchStatus.Processing, blocks, attempt: { peers, hash } };
281
- return blocks;
377
+ this.state = { status: BatchStatus.Processing, blocks, payloadEnvelopes, attempt: { peers, hash } };
378
+ return { blocks, payloadEnvelopes, peers };
282
379
  }
283
380
  /**
284
381
  * Processing -> AwaitingValidation
@@ -287,7 +384,12 @@ export class Batch {
287
384
  if (this.state.status !== BatchStatus.Processing) {
288
385
  throw new BatchError(this.wrongStatusErrorType(BatchStatus.Processing));
289
386
  }
290
- this.state = { status: BatchStatus.AwaitingValidation, blocks: this.state.blocks, attempt: this.state.attempt };
387
+ this.state = {
388
+ status: BatchStatus.AwaitingValidation,
389
+ blocks: this.state.blocks,
390
+ payloadEnvelopes: this.state.payloadEnvelopes,
391
+ attempt: this.state.attempt,
392
+ };
291
393
  }
292
394
  /**
293
395
  * Processing -> AwaitingDownload
@@ -333,7 +435,7 @@ export class Batch {
333
435
  }
334
436
  // remove any downloaded blocks and re-attempt
335
437
  // TODO(fulu): need to remove the bad blocks from the SeenBlockInputCache
336
- this.state = { status: BatchStatus.AwaitingDownload, blocks: [] };
438
+ this.state = { status: BatchStatus.AwaitingDownload, blocks: [], payloadEnvelopes: null };
337
439
  }
338
440
  onProcessingError(attempt) {
339
441
  this.failedProcessingAttempts.push(attempt);
@@ -342,11 +444,11 @@ export class Batch {
342
444
  }
343
445
  // remove any downloaded blocks and re-attempt
344
446
  // TODO(fulu): need to remove the bad blocks from the SeenBlockInputCache
345
- this.state = { status: BatchStatus.AwaitingDownload, blocks: [] };
447
+ this.state = { status: BatchStatus.AwaitingDownload, blocks: [], payloadEnvelopes: null };
346
448
  }
347
449
  /** Helper to construct typed BatchError. Stack traces are correct as the error is thrown above */
348
450
  errorType(type) {
349
- return { ...type, ...this.getMetadata() };
451
+ return { ...type, startEpoch: this.startEpoch, status: this.state.status };
350
452
  }
351
453
  wrongStatusErrorType(expectedStatus) {
352
454
  return this.errorType({ code: BatchErrorCode.WRONG_STATUS, expectedStatus });