@lodestar/beacon-node 1.42.0-rc.0 → 1.43.0-dev.05a33e512f

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 (462) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +37 -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 +49 -2
  6. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  7. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  8. package/lib/api/impl/beacon/state/index.js +13 -10
  9. package/lib/api/impl/beacon/state/index.js.map +1 -1
  10. package/lib/api/impl/beacon/state/utils.d.ts +2 -2
  11. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  12. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  13. package/lib/api/impl/debug/index.d.ts.map +1 -1
  14. package/lib/api/impl/debug/index.js +0 -1
  15. package/lib/api/impl/debug/index.js.map +1 -1
  16. package/lib/api/impl/lodestar/attesterSlashing.d.ts +8 -0
  17. package/lib/api/impl/lodestar/attesterSlashing.d.ts.map +1 -0
  18. package/lib/api/impl/lodestar/attesterSlashing.js +29 -0
  19. package/lib/api/impl/lodestar/attesterSlashing.js.map +1 -0
  20. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  21. package/lib/api/impl/lodestar/index.js +40 -1
  22. package/lib/api/impl/lodestar/index.js.map +1 -1
  23. package/lib/api/impl/validator/index.d.ts.map +1 -1
  24. package/lib/api/impl/validator/index.js +74 -5
  25. package/lib/api/impl/validator/index.js.map +1 -1
  26. package/lib/chain/GetBlobsTracker.d.ts +1 -1
  27. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  28. package/lib/chain/GetBlobsTracker.js +1 -2
  29. package/lib/chain/GetBlobsTracker.js.map +1 -1
  30. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  31. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  32. package/lib/chain/archiveStore/interface.d.ts +4 -4
  33. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  34. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +4 -4
  35. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  36. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +2 -4
  37. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  38. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +2 -2
  39. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  40. package/lib/chain/archiveStore/utils/archiveBlocks.js +110 -58
  41. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  42. package/lib/chain/blocks/blockInput/blockInput.d.ts +3 -0
  43. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  44. package/lib/chain/blocks/blockInput/blockInput.js +4 -1
  45. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  46. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  47. package/lib/chain/blocks/importBlock.js +40 -58
  48. package/lib/chain/blocks/importBlock.js.map +1 -1
  49. package/lib/chain/blocks/importExecutionPayload.d.ts +32 -14
  50. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  51. package/lib/chain/blocks/importExecutionPayload.js +107 -87
  52. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  53. package/lib/chain/blocks/index.d.ts +5 -3
  54. package/lib/chain/blocks/index.d.ts.map +1 -1
  55. package/lib/chain/blocks/index.js +58 -26
  56. package/lib/chain/blocks/index.js.map +1 -1
  57. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +15 -1
  58. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
  59. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +48 -2
  60. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
  61. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +17 -0
  62. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  63. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +5 -0
  64. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
  65. package/lib/chain/blocks/payloadEnvelopeProcessor.js +7 -5
  66. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  67. package/lib/chain/blocks/types.d.ts +16 -21
  68. package/lib/chain/blocks/types.d.ts.map +1 -1
  69. package/lib/chain/blocks/utils/chainSegment.d.ts +23 -2
  70. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -1
  71. package/lib/chain/blocks/utils/chainSegment.js +89 -12
  72. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  73. package/lib/chain/blocks/verifyBlock.d.ts +5 -3
  74. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  75. package/lib/chain/blocks/verifyBlock.js +50 -7
  76. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  77. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +0 -4
  78. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  79. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +8 -4
  80. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  81. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts +2 -1
  82. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  83. package/lib/chain/blocks/verifyBlocksSanityChecks.js +25 -5
  84. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  85. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  86. package/lib/chain/blocks/verifyBlocksSignatures.js +4 -2
  87. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  88. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +24 -0
  89. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -0
  90. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +80 -0
  91. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -0
  92. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +14 -0
  93. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -0
  94. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +30 -0
  95. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -0
  96. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts +1 -1
  97. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts.map +1 -1
  98. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js +2 -11
  99. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js.map +1 -1
  100. package/lib/chain/chain.d.ts +9 -6
  101. package/lib/chain/chain.d.ts.map +1 -1
  102. package/lib/chain/chain.js +73 -49
  103. package/lib/chain/chain.js.map +1 -1
  104. package/lib/chain/emitter.d.ts +16 -15
  105. package/lib/chain/emitter.d.ts.map +1 -1
  106. package/lib/chain/emitter.js +5 -4
  107. package/lib/chain/emitter.js.map +1 -1
  108. package/lib/chain/errors/attestationError.d.ts +8 -1
  109. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  110. package/lib/chain/errors/attestationError.js +4 -0
  111. package/lib/chain/errors/attestationError.js.map +1 -1
  112. package/lib/chain/errors/blockError.d.ts +18 -1
  113. package/lib/chain/errors/blockError.d.ts.map +1 -1
  114. package/lib/chain/errors/blockError.js +6 -0
  115. package/lib/chain/errors/blockError.js.map +1 -1
  116. package/lib/chain/errors/executionPayloadBid.d.ts +5 -0
  117. package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
  118. package/lib/chain/errors/executionPayloadBid.js +1 -0
  119. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  120. package/lib/chain/errors/executionPayloadEnvelope.d.ts +5 -0
  121. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  122. package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
  123. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  124. package/lib/chain/errors/index.d.ts +1 -0
  125. package/lib/chain/errors/index.d.ts.map +1 -1
  126. package/lib/chain/errors/index.js +1 -0
  127. package/lib/chain/errors/index.js.map +1 -1
  128. package/lib/chain/errors/proposerPreferences.d.ts +40 -0
  129. package/lib/chain/errors/proposerPreferences.d.ts.map +1 -0
  130. package/lib/chain/errors/proposerPreferences.js +14 -0
  131. package/lib/chain/errors/proposerPreferences.js.map +1 -0
  132. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  133. package/lib/chain/forkChoice/index.js +21 -23
  134. package/lib/chain/forkChoice/index.js.map +1 -1
  135. package/lib/chain/initState.d.ts.map +1 -1
  136. package/lib/chain/initState.js +6 -1
  137. package/lib/chain/initState.js.map +1 -1
  138. package/lib/chain/interface.d.ts +8 -5
  139. package/lib/chain/interface.d.ts.map +1 -1
  140. package/lib/chain/interface.js.map +1 -1
  141. package/lib/chain/lightClient/index.d.ts +2 -2
  142. package/lib/chain/lightClient/index.d.ts.map +1 -1
  143. package/lib/chain/lightClient/index.js +7 -0
  144. package/lib/chain/lightClient/index.js.map +1 -1
  145. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  146. package/lib/chain/opPools/aggregatedAttestationPool.js +5 -2
  147. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  148. package/lib/chain/opPools/executionPayloadBidPool.d.ts +2 -2
  149. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
  150. package/lib/chain/opPools/executionPayloadBidPool.js +2 -2
  151. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  152. package/lib/chain/opPools/payloadAttestationPool.d.ts +3 -2
  153. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  154. package/lib/chain/opPools/payloadAttestationPool.js +26 -4
  155. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  156. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  157. package/lib/chain/prepareNextSlot.js +48 -18
  158. package/lib/chain/prepareNextSlot.js.map +1 -1
  159. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +1 -7
  160. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  161. package/lib/chain/produceBlock/computeNewStateRoot.js +1 -28
  162. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  163. package/lib/chain/produceBlock/produceBlockBody.d.ts +15 -10
  164. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  165. package/lib/chain/produceBlock/produceBlockBody.js +83 -21
  166. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  167. package/lib/chain/regen/errors.d.ts +1 -11
  168. package/lib/chain/regen/errors.d.ts.map +1 -1
  169. package/lib/chain/regen/errors.js +0 -2
  170. package/lib/chain/regen/errors.js.map +1 -1
  171. package/lib/chain/regen/interface.d.ts +7 -12
  172. package/lib/chain/regen/interface.d.ts.map +1 -1
  173. package/lib/chain/regen/interface.js +1 -0
  174. package/lib/chain/regen/interface.js.map +1 -1
  175. package/lib/chain/regen/queued.d.ts +6 -11
  176. package/lib/chain/regen/queued.d.ts.map +1 -1
  177. package/lib/chain/regen/queued.js +9 -44
  178. package/lib/chain/regen/queued.js.map +1 -1
  179. package/lib/chain/regen/regen.d.ts +0 -5
  180. package/lib/chain/regen/regen.d.ts.map +1 -1
  181. package/lib/chain/regen/regen.js +8 -38
  182. package/lib/chain/regen/regen.js.map +1 -1
  183. package/lib/chain/seenCache/index.d.ts +1 -0
  184. package/lib/chain/seenCache/index.d.ts.map +1 -1
  185. package/lib/chain/seenCache/index.js +1 -0
  186. package/lib/chain/seenCache/index.js.map +1 -1
  187. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +24 -7
  188. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  189. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +69 -17
  190. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  191. package/lib/chain/seenCache/seenProposerPreferences.d.ts +16 -0
  192. package/lib/chain/seenCache/seenProposerPreferences.d.ts.map +1 -0
  193. package/lib/chain/seenCache/seenProposerPreferences.js +26 -0
  194. package/lib/chain/seenCache/seenProposerPreferences.js.map +1 -0
  195. package/lib/chain/stateCache/datastore/db.d.ts +5 -4
  196. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  197. package/lib/chain/stateCache/datastore/db.js +10 -32
  198. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  199. package/lib/chain/stateCache/datastore/file.d.ts +1 -1
  200. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  201. package/lib/chain/stateCache/datastore/file.js +5 -5
  202. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  203. package/lib/chain/stateCache/datastore/types.d.ts +1 -1
  204. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -1
  205. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +1 -7
  206. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  207. package/lib/chain/stateCache/fifoBlockStateCache.js +0 -8
  208. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  209. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +13 -30
  210. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  211. package/lib/chain/stateCache/persistentCheckpointsCache.js +120 -216
  212. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  213. package/lib/chain/stateCache/types.d.ts +8 -15
  214. package/lib/chain/stateCache/types.d.ts.map +1 -1
  215. package/lib/chain/stateCache/types.js.map +1 -1
  216. package/lib/chain/validation/aggregateAndProof.js +12 -0
  217. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  218. package/lib/chain/validation/attestation.d.ts.map +1 -1
  219. package/lib/chain/validation/attestation.js +12 -0
  220. package/lib/chain/validation/attestation.js.map +1 -1
  221. package/lib/chain/validation/block.d.ts.map +1 -1
  222. package/lib/chain/validation/block.js +28 -5
  223. package/lib/chain/validation/block.js.map +1 -1
  224. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  225. package/lib/chain/validation/executionPayloadBid.js +30 -12
  226. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  227. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  228. package/lib/chain/validation/executionPayloadEnvelope.js +27 -12
  229. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  230. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
  231. package/lib/chain/validation/payloadAttestationMessage.js +8 -4
  232. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  233. package/lib/chain/validation/proposerPreferences.d.ts +8 -0
  234. package/lib/chain/validation/proposerPreferences.d.ts.map +1 -0
  235. package/lib/chain/validation/proposerPreferences.js +91 -0
  236. package/lib/chain/validation/proposerPreferences.js.map +1 -0
  237. package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
  238. package/lib/chain/validation/syncCommittee.js +4 -0
  239. package/lib/chain/validation/syncCommittee.js.map +1 -1
  240. package/lib/chain/validation/syncCommitteeContributionAndProof.js +4 -1
  241. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  242. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  243. package/lib/chain/validatorMonitor.js +3 -3
  244. package/lib/chain/validatorMonitor.js.map +1 -1
  245. package/lib/db/repositories/executionPayloadEnvelopeArchive.js +1 -1
  246. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -1
  247. package/lib/execution/engine/http.d.ts.map +1 -1
  248. package/lib/execution/engine/http.js +21 -14
  249. package/lib/execution/engine/http.js.map +1 -1
  250. package/lib/execution/engine/interface.d.ts +1 -0
  251. package/lib/execution/engine/interface.d.ts.map +1 -1
  252. package/lib/execution/engine/mock.d.ts.map +1 -1
  253. package/lib/execution/engine/mock.js +6 -0
  254. package/lib/execution/engine/mock.js.map +1 -1
  255. package/lib/execution/engine/types.d.ts +20 -0
  256. package/lib/execution/engine/types.d.ts.map +1 -1
  257. package/lib/execution/engine/types.js +18 -0
  258. package/lib/execution/engine/types.js.map +1 -1
  259. package/lib/metrics/metrics/lodestar.d.ts +1 -0
  260. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  261. package/lib/metrics/metrics/lodestar.js +4 -0
  262. package/lib/metrics/metrics/lodestar.js.map +1 -1
  263. package/lib/network/gossip/interface.d.ts +7 -1
  264. package/lib/network/gossip/interface.d.ts.map +1 -1
  265. package/lib/network/gossip/interface.js +1 -0
  266. package/lib/network/gossip/interface.js.map +1 -1
  267. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  268. package/lib/network/gossip/scoringParameters.js +12 -1
  269. package/lib/network/gossip/scoringParameters.js.map +1 -1
  270. package/lib/network/gossip/topic.d.ts +13 -2
  271. package/lib/network/gossip/topic.d.ts.map +1 -1
  272. package/lib/network/gossip/topic.js +6 -0
  273. package/lib/network/gossip/topic.js.map +1 -1
  274. package/lib/network/interface.d.ts +1 -0
  275. package/lib/network/interface.d.ts.map +1 -1
  276. package/lib/network/network.d.ts +1 -0
  277. package/lib/network/network.d.ts.map +1 -1
  278. package/lib/network/network.js +6 -1
  279. package/lib/network/network.js.map +1 -1
  280. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  281. package/lib/network/processor/gossipHandlers.js +64 -22
  282. package/lib/network/processor/gossipHandlers.js.map +1 -1
  283. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
  284. package/lib/network/processor/gossipQueues/index.js +5 -0
  285. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  286. package/lib/network/processor/index.d.ts.map +1 -1
  287. package/lib/network/processor/index.js +6 -5
  288. package/lib/network/processor/index.js.map +1 -1
  289. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  290. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +16 -7
  291. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  292. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +1 -1
  293. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js +2 -0
  294. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  295. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +2 -2
  296. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  297. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +18 -8
  298. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  299. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +1 -1
  300. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +6 -0
  301. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  302. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +2 -2
  303. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  304. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +24 -8
  305. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  306. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -1
  307. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +9 -5
  308. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -1
  309. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts.map +1 -1
  310. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +3 -8
  311. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -1
  312. package/lib/node/nodejs.d.ts.map +1 -1
  313. package/lib/node/nodejs.js +7 -2
  314. package/lib/node/nodejs.js.map +1 -1
  315. package/lib/node/notifier.d.ts.map +1 -1
  316. package/lib/node/notifier.js +2 -2
  317. package/lib/node/notifier.js.map +1 -1
  318. package/lib/sync/constants.d.ts +3 -1
  319. package/lib/sync/constants.d.ts.map +1 -1
  320. package/lib/sync/constants.js +3 -4
  321. package/lib/sync/constants.js.map +1 -1
  322. package/lib/sync/range/batch.d.ts +35 -5
  323. package/lib/sync/range/batch.d.ts.map +1 -1
  324. package/lib/sync/range/batch.js +240 -59
  325. package/lib/sync/range/batch.js.map +1 -1
  326. package/lib/sync/range/chain.d.ts +19 -4
  327. package/lib/sync/range/chain.d.ts.map +1 -1
  328. package/lib/sync/range/chain.js +64 -11
  329. package/lib/sync/range/chain.js.map +1 -1
  330. package/lib/sync/range/range.d.ts.map +1 -1
  331. package/lib/sync/range/range.js +31 -9
  332. package/lib/sync/range/range.js.map +1 -1
  333. package/lib/sync/sync.d.ts.map +1 -1
  334. package/lib/sync/sync.js +13 -0
  335. package/lib/sync/sync.js.map +1 -1
  336. package/lib/sync/types.d.ts +34 -0
  337. package/lib/sync/types.d.ts.map +1 -1
  338. package/lib/sync/types.js +34 -0
  339. package/lib/sync/types.js.map +1 -1
  340. package/lib/sync/unknownBlock.d.ts +29 -1
  341. package/lib/sync/unknownBlock.d.ts.map +1 -1
  342. package/lib/sync/unknownBlock.js +738 -61
  343. package/lib/sync/unknownBlock.js.map +1 -1
  344. package/lib/sync/utils/downloadByRange.d.ts +67 -10
  345. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  346. package/lib/sync/utils/downloadByRange.js +211 -26
  347. package/lib/sync/utils/downloadByRange.js.map +1 -1
  348. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  349. package/lib/sync/utils/downloadByRoot.js +16 -2
  350. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  351. package/lib/sync/utils/pendingBlocksTree.d.ts +0 -1
  352. package/lib/sync/utils/pendingBlocksTree.d.ts.map +1 -1
  353. package/lib/sync/utils/pendingBlocksTree.js +0 -9
  354. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  355. package/lib/util/sszBytes.d.ts.map +1 -1
  356. package/lib/util/sszBytes.js +20 -5
  357. package/lib/util/sszBytes.js.map +1 -1
  358. package/package.json +17 -16
  359. package/src/api/impl/beacon/blocks/index.ts +51 -9
  360. package/src/api/impl/beacon/pool/index.ts +87 -1
  361. package/src/api/impl/beacon/state/index.ts +15 -15
  362. package/src/api/impl/beacon/state/utils.ts +2 -2
  363. package/src/api/impl/debug/index.ts +0 -1
  364. package/src/api/impl/lodestar/attesterSlashing.ts +43 -0
  365. package/src/api/impl/lodestar/index.ts +52 -2
  366. package/src/api/impl/validator/index.ts +91 -6
  367. package/src/chain/GetBlobsTracker.ts +1 -2
  368. package/src/chain/archiveStore/archiveStore.ts +5 -5
  369. package/src/chain/archiveStore/interface.ts +4 -4
  370. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +6 -8
  371. package/src/chain/archiveStore/utils/archiveBlocks.ts +153 -94
  372. package/src/chain/blocks/blockInput/blockInput.ts +4 -1
  373. package/src/chain/blocks/importBlock.ts +45 -86
  374. package/src/chain/blocks/importExecutionPayload.ts +133 -103
  375. package/src/chain/blocks/index.ts +72 -24
  376. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +64 -3
  377. package/src/chain/blocks/payloadEnvelopeInput/types.ts +18 -0
  378. package/src/chain/blocks/payloadEnvelopeProcessor.ts +7 -6
  379. package/src/chain/blocks/types.ts +16 -26
  380. package/src/chain/blocks/utils/chainSegment.ts +114 -17
  381. package/src/chain/blocks/verifyBlock.ts +70 -9
  382. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +8 -5
  383. package/src/chain/blocks/verifyBlocksSanityChecks.ts +26 -7
  384. package/src/chain/blocks/verifyBlocksSignatures.ts +9 -2
  385. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +137 -0
  386. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +41 -0
  387. package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +9 -18
  388. package/src/chain/chain.ts +102 -72
  389. package/src/chain/emitter.ts +15 -14
  390. package/src/chain/errors/attestationError.ts +6 -1
  391. package/src/chain/errors/blockError.ts +10 -1
  392. package/src/chain/errors/executionPayloadBid.ts +6 -0
  393. package/src/chain/errors/executionPayloadEnvelope.ts +6 -0
  394. package/src/chain/errors/index.ts +1 -0
  395. package/src/chain/errors/proposerPreferences.ts +47 -0
  396. package/src/chain/forkChoice/index.ts +19 -28
  397. package/src/chain/initState.ts +9 -1
  398. package/src/chain/interface.ts +16 -3
  399. package/src/chain/lightClient/index.ts +15 -3
  400. package/src/chain/opPools/aggregatedAttestationPool.ts +6 -1
  401. package/src/chain/opPools/executionPayloadBidPool.ts +3 -3
  402. package/src/chain/opPools/payloadAttestationPool.ts +29 -8
  403. package/src/chain/prepareNextSlot.ts +58 -19
  404. package/src/chain/produceBlock/computeNewStateRoot.ts +1 -37
  405. package/src/chain/produceBlock/produceBlockBody.ts +120 -26
  406. package/src/chain/regen/errors.ts +1 -6
  407. package/src/chain/regen/interface.ts +7 -12
  408. package/src/chain/regen/queued.ts +14 -55
  409. package/src/chain/regen/regen.ts +10 -43
  410. package/src/chain/seenCache/index.ts +1 -0
  411. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +89 -21
  412. package/src/chain/seenCache/seenProposerPreferences.ts +32 -0
  413. package/src/chain/stateCache/datastore/db.ts +10 -33
  414. package/src/chain/stateCache/datastore/file.ts +5 -6
  415. package/src/chain/stateCache/datastore/types.ts +2 -3
  416. package/src/chain/stateCache/fifoBlockStateCache.ts +1 -10
  417. package/src/chain/stateCache/persistentCheckpointsCache.ts +139 -247
  418. package/src/chain/stateCache/types.ts +8 -14
  419. package/src/chain/validation/aggregateAndProof.ts +13 -0
  420. package/src/chain/validation/attestation.ts +13 -0
  421. package/src/chain/validation/block.ts +31 -7
  422. package/src/chain/validation/executionPayloadBid.ts +32 -11
  423. package/src/chain/validation/executionPayloadEnvelope.ts +32 -13
  424. package/src/chain/validation/payloadAttestationMessage.ts +9 -3
  425. package/src/chain/validation/proposerPreferences.ts +110 -0
  426. package/src/chain/validation/syncCommittee.ts +5 -1
  427. package/src/chain/validation/syncCommitteeContributionAndProof.ts +5 -1
  428. package/src/chain/validatorMonitor.ts +3 -2
  429. package/src/db/repositories/executionPayloadEnvelopeArchive.ts +1 -1
  430. package/src/execution/engine/http.ts +21 -14
  431. package/src/execution/engine/interface.ts +1 -0
  432. package/src/execution/engine/mock.ts +8 -1
  433. package/src/execution/engine/types.ts +41 -0
  434. package/src/metrics/metrics/lodestar.ts +4 -0
  435. package/src/network/gossip/interface.ts +6 -0
  436. package/src/network/gossip/scoringParameters.ts +14 -1
  437. package/src/network/gossip/topic.ts +6 -0
  438. package/src/network/interface.ts +1 -0
  439. package/src/network/network.ts +12 -1
  440. package/src/network/processor/gossipHandlers.ts +84 -27
  441. package/src/network/processor/gossipQueues/index.ts +5 -0
  442. package/src/network/processor/index.ts +6 -5
  443. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +17 -7
  444. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +3 -0
  445. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +26 -8
  446. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +11 -0
  447. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +36 -8
  448. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +10 -5
  449. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +3 -12
  450. package/src/node/nodejs.ts +8 -3
  451. package/src/node/notifier.ts +7 -2
  452. package/src/sync/constants.ts +4 -4
  453. package/src/sync/range/batch.ts +320 -67
  454. package/src/sync/range/chain.ts +89 -14
  455. package/src/sync/range/range.ts +34 -9
  456. package/src/sync/sync.ts +13 -1
  457. package/src/sync/types.ts +72 -0
  458. package/src/sync/unknownBlock.ts +928 -65
  459. package/src/sync/utils/downloadByRange.ts +378 -39
  460. package/src/sync/utils/downloadByRoot.ts +24 -2
  461. package/src/sync/utils/pendingBlocksTree.ts +0 -15
  462. package/src/util/sszBytes.ts +25 -5
@@ -1,8 +1,9 @@
1
- import { isForkPostDeneb, isForkPostFulu } from "@lodestar/params";
2
- import { LodestarError } from "@lodestar/utils";
1
+ import { isForkPostDeneb, isForkPostFulu, isForkPostGloas } from "@lodestar/params";
2
+ import { LodestarError, byteArrayEquals, prettyPrintIndices, toRootHex } 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";
6
+ import { ZERO_HASH } from "../../constants/constants.js";
6
7
  import { MAX_BATCH_DOWNLOAD_ATTEMPTS, MAX_BATCH_PROCESSING_ATTEMPTS } from "../constants.js";
7
8
  import { getBatchSlotRange, hashBlocks } from "./utils/index.js";
8
9
  export { BatchStatus };
@@ -28,6 +29,12 @@ var BatchStatus;
28
29
  */
29
30
  BatchStatus["AwaitingValidation"] = "AwaitingValidation";
30
31
  })(BatchStatus || (BatchStatus = {}));
32
+ function formatRangeReq(req) {
33
+ return `startSlot=${req.startSlot},count=${req.count}`;
34
+ }
35
+ function formatColumnsReq(req) {
36
+ return `startSlot=${req.startSlot},count=${req.count},cols=${prettyPrintIndices(req.columns)}`;
37
+ }
31
38
  /**
32
39
  * Batches are downloaded at the first block of the epoch.
33
40
  *
@@ -47,7 +54,7 @@ export class Batch {
47
54
  /** Block, blob and column requests that are used to determine the best peer and are used in downloadByRange */
48
55
  requests;
49
56
  /** State of the batch. */
50
- state = { status: BatchStatus.AwaitingDownload, blocks: [] };
57
+ state = { status: BatchStatus.AwaitingDownload, blocks: [], payloadEnvelopes: null };
51
58
  /** Peers that provided good data */
52
59
  goodPeers = [];
53
60
  /** The `Attempts` that have been made and failed to send us this batch. */
@@ -59,7 +66,9 @@ export class Batch {
59
66
  config;
60
67
  clock;
61
68
  custodyConfig;
62
- constructor(startEpoch, config, clock, custodyConfig) {
69
+ isFirstBatchInChain;
70
+ latestBid;
71
+ constructor(startEpoch, config, clock, custodyConfig, isFirstBatchInChain, latestBid, targetSlot) {
63
72
  this.config = config;
64
73
  this.clock = clock;
65
74
  this.custodyConfig = custodyConfig;
@@ -67,9 +76,36 @@ export class Batch {
67
76
  this.forkName = this.config.getForkName(startSlot);
68
77
  this.startEpoch = startEpoch;
69
78
  this.startSlot = startSlot;
70
- this.count = count;
79
+ this.count = Math.min(count, targetSlot - startSlot + 1);
80
+ this.isFirstBatchInChain = isFirstBatchInChain;
81
+ this.latestBid = latestBid;
71
82
  this.requests = this.getRequests([]);
72
83
  }
84
+ shouldDownloadParentEnvelope(firstBlock) {
85
+ if (!this.isFirstBatchInChain)
86
+ return false;
87
+ if (this.startSlot === 0 || !isForkPostGloas(this.config.getForkName(this.startSlot - 1))) {
88
+ return false;
89
+ }
90
+ // we only know if we should download parent envelope if firstBlock is downloaded
91
+ if (firstBlock === undefined)
92
+ return false;
93
+ if (this.latestBid === undefined)
94
+ return false;
95
+ const firstBlockBidParentHash = firstBlock.message.body.signedExecutionPayloadBid.message
96
+ .parentBlockHash;
97
+ return byteArrayEquals(firstBlockBidParentHash, this.latestBid.blockHash);
98
+ }
99
+ getParentPayloadCommitments(parentBlockRoot) {
100
+ if (this.latestBid === undefined) {
101
+ throw new Error(`Coding error: getParentPayloadCommitments called without latestBid for parentBlockRoot=${toRootHex(parentBlockRoot)}`);
102
+ }
103
+ return {
104
+ blockRoot: parentBlockRoot,
105
+ blockRootHex: toRootHex(parentBlockRoot),
106
+ kzgCommitments: this.latestBid.blobKzgCommitments,
107
+ };
108
+ }
73
109
  /**
74
110
  * Builds ByRange requests for block, blobs and columns
75
111
  */
@@ -82,35 +118,32 @@ export class Batch {
82
118
  count: this.count,
83
119
  step: 1,
84
120
  };
121
+ const requests = { blocksRequest };
122
+ // Post-Gloas envelopes are required for block processing, independent of DA retention window.
123
+ if (isForkPostGloas(this.forkName)) {
124
+ requests.envelopesRequest = { startSlot: this.startSlot, count: this.count };
125
+ }
85
126
  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
- },
127
+ requests.columnsRequest = {
128
+ startSlot: this.startSlot,
129
+ count: this.count,
130
+ columns: this.custodyConfig.sampledColumns,
93
131
  };
94
132
  }
95
- if (isForkPostDeneb(this.forkName) && withinValidRequestWindow) {
96
- return {
97
- blocksRequest,
98
- blobsRequest: {
99
- startSlot: this.startSlot,
100
- count: this.count,
101
- },
102
- };
133
+ else if (isForkPostDeneb(this.forkName) && withinValidRequestWindow) {
134
+ requests.blobsRequest = { startSlot: this.startSlot, count: this.count };
103
135
  }
104
- return {
105
- blocksRequest,
106
- };
136
+ return requests;
107
137
  }
108
138
  // subsequent request where part of the epoch has already been downloaded. Need to figure out what is the beginning
109
139
  // of the range where download needs to resume
110
140
  let blockStartSlot = this.startSlot;
111
141
  let dataStartSlot = this.startSlot;
142
+ let envelopeStartSlot = this.startSlot;
112
143
  const neededColumns = new Set();
144
+ const envelopesBySlot = this.state.payloadEnvelopes ?? new Map();
113
145
  // ensure blocks are in slot-wise order
146
+ const isPostGloas = isForkPostGloas(this.forkName);
114
147
  for (const blockInput of blocks) {
115
148
  const blockSlot = blockInput.slot;
116
149
  // check if block/data is present (hasBlock/hasAllData). If present then check if startSlot is the same as
@@ -126,15 +159,38 @@ export class Batch {
126
159
  if (blockInput.hasBlock() && blockStartSlot === blockSlot) {
127
160
  blockStartSlot = blockSlot + 1;
128
161
  }
129
- if (!blockInput.hasAllData()) {
130
- if (isBlockInputColumns(blockInput)) {
131
- for (const index of blockInput.getMissingSampledColumnMeta().missing) {
162
+ // Range sync uses hasComputedAllData (all sampled columns physically present), not hasAllData
163
+ // which flips at the reconstruction threshold. Sync never triggers reconstruction, so accepting
164
+ // a half-downloaded block here makes writeBlockInputToDb later block on waitForComputedAllData.
165
+ if (isPostGloas) {
166
+ // Post-Gloas: column data lives on PayloadEnvelopeInput, not on BlockInputNoData.
167
+ const payloadInput = envelopesBySlot.get(blockSlot);
168
+ if (blockInput.hasBlock() && envelopeStartSlot === blockSlot && payloadInput?.hasPayloadEnvelope()) {
169
+ envelopeStartSlot = blockSlot + 1;
170
+ }
171
+ if (payloadInput && !payloadInput.hasComputedAllData()) {
172
+ for (const index of payloadInput.getMissingSampledColumnMeta().missing) {
132
173
  neededColumns.add(index);
133
174
  }
134
175
  }
176
+ else if (payloadInput?.hasComputedAllData() && dataStartSlot === blockSlot) {
177
+ // Only advance dataStartSlot when we know columns for this slot are complete. If
178
+ // payloadInput is missing entirely we cannot tell, so stop here so the next round
179
+ // re-requests columns (and envelopes) starting at this slot.
180
+ dataStartSlot = blockSlot + 1;
181
+ }
135
182
  }
136
- else if (dataStartSlot === blockSlot) {
137
- dataStartSlot = blockSlot + 1;
183
+ else {
184
+ if (isBlockInputColumns(blockInput) ? !blockInput.hasComputedAllData() : !blockInput.hasAllData()) {
185
+ if (isBlockInputColumns(blockInput)) {
186
+ for (const index of blockInput.getMissingSampledColumnMeta().missing) {
187
+ neededColumns.add(index);
188
+ }
189
+ }
190
+ }
191
+ else if (dataStartSlot === blockSlot) {
192
+ dataStartSlot = blockSlot + 1;
193
+ }
138
194
  }
139
195
  }
140
196
  // if the blockStartSlot or dataStartSlot is after the desired endSlot then no request will be made for the batch
@@ -153,11 +209,15 @@ export class Batch {
153
209
  // range of 40 - 63, startSlot will be inclusive but subtraction will exclusive so need to + 1
154
210
  const count = endSlot - dataStartSlot + 1;
155
211
  if (isForkPostFulu(this.forkName) && withinValidRequestWindow) {
156
- requests.columnsRequest = {
157
- count,
158
- startSlot: dataStartSlot,
159
- columns: Array.from(neededColumns),
160
- };
212
+ // Skip the column re-request when we have no specific column indices outstanding.
213
+ // Peer rejects an empty `columns` list
214
+ if (neededColumns.size > 0) {
215
+ requests.columnsRequest = {
216
+ count,
217
+ startSlot: dataStartSlot,
218
+ columns: Array.from(neededColumns),
219
+ };
220
+ }
161
221
  }
162
222
  else if (isForkPostDeneb(this.forkName) && withinValidRequestWindow) {
163
223
  requests.blobsRequest = {
@@ -167,6 +227,39 @@ export class Batch {
167
227
  }
168
228
  // dataSlot will still have a value but do not create a request for preDeneb forks
169
229
  }
230
+ if (isForkPostGloas(this.forkName) && envelopeStartSlot <= endSlot) {
231
+ requests.envelopesRequest = {
232
+ startSlot: envelopeStartSlot,
233
+ count: endSlot - envelopeStartSlot + 1,
234
+ };
235
+ }
236
+ // Only the first batch of a SyncChain may need the dangling-parent payload by-root.
237
+ if (blocks.length > 0 && this.shouldDownloadParentEnvelope(blocks[0].getBlock())) {
238
+ // shouldDownloadParentEnvelope() = true means there are at least 1 block
239
+ const parentRoot = blocks[0].getBlock().message.parentRoot;
240
+ if (!byteArrayEquals(parentRoot, ZERO_HASH)) {
241
+ const parentRootHex = toRootHex(parentRoot);
242
+ let parentPayloadInput;
243
+ if (this.state.payloadEnvelopes) {
244
+ for (const pi of this.state.payloadEnvelopes.values()) {
245
+ if (pi.blockRootHex === parentRootHex) {
246
+ parentPayloadInput = pi;
247
+ break;
248
+ }
249
+ }
250
+ }
251
+ const needsEnvelope = !parentPayloadInput?.hasPayloadEnvelope();
252
+ const missingColumns = parentPayloadInput
253
+ ? parentPayloadInput.getMissingSampledColumnMeta().missing
254
+ : this.custodyConfig.sampledColumns;
255
+ if (needsEnvelope || missingColumns.length > 0) {
256
+ requests.parentPayloadRequest = {
257
+ ...(needsEnvelope ? { envelopeBlockRoot: parentRoot } : {}),
258
+ ...(missingColumns.length > 0 ? { blockRoot: parentRoot, columns: missingColumns } : {}),
259
+ };
260
+ }
261
+ }
262
+ }
170
263
  return requests;
171
264
  }
172
265
  /**
@@ -176,22 +269,22 @@ export class Batch {
176
269
  if (!isForkPostFulu(this.forkName)) {
177
270
  return this.requests;
178
271
  }
179
- // post-fulu we need to ensure that we only request columns that the peer has advertised
180
- const { columnsRequest } = this.requests;
181
- if (columnsRequest == null) {
182
- return this.requests;
183
- }
272
+ // post-fulu we need to ensure that we only request columns that the peer has advertised.
273
+ const { columnsRequest, parentPayloadRequest } = this.requests;
184
274
  const peerColumns = new Set(peer.custodyColumns ?? []);
185
- const requestedColumns = columnsRequest.columns.filter((c) => peerColumns.has(c));
186
- if (requestedColumns.length === columnsRequest.columns.length) {
187
- return this.requests;
188
- }
275
+ const filteredColumnsRequest = columnsRequest != null ? columnsRequest.columns.filter((c) => peerColumns.has(c)) : null;
276
+ const parentColumns = parentPayloadRequest?.columns;
277
+ const filteredParentColumns = parentColumns != null ? parentColumns.filter((c) => peerColumns.has(c)) : null;
278
+ const updatedColumnRequest = columnsRequest != null && filteredColumnsRequest != null
279
+ ? { columnsRequest: { ...columnsRequest, columns: filteredColumnsRequest } }
280
+ : {};
281
+ const updatedParentPayloadRequest = parentPayloadRequest != null && filteredParentColumns != null
282
+ ? { parentPayloadRequest: { ...parentPayloadRequest, columns: filteredParentColumns } }
283
+ : {};
189
284
  return {
190
285
  ...this.requests,
191
- columnsRequest: {
192
- ...columnsRequest,
193
- columns: requestedColumns,
194
- },
286
+ ...updatedColumnRequest,
287
+ ...updatedParentPayloadRequest,
195
288
  };
196
289
  }
197
290
  /**
@@ -201,11 +294,33 @@ export class Batch {
201
294
  return [...this.failedDownloadAttempts, ...this.failedProcessingAttempts.flatMap((a) => a.peers)];
202
295
  }
203
296
  getMetadata() {
204
- return { startEpoch: this.startEpoch, status: this.state.status };
297
+ const { blocksRequest, blobsRequest, columnsRequest, envelopesRequest } = this.requests;
298
+ const failedProcessingPeerList = this.failedProcessingAttempts.flatMap((a) => a.peers);
299
+ return {
300
+ startEpoch: this.startEpoch,
301
+ startSlot: this.startSlot,
302
+ count: this.count,
303
+ status: this.state.status,
304
+ ...(blocksRequest && { blocksReq: formatRangeReq(blocksRequest) }),
305
+ ...(blobsRequest && { blobsReq: formatRangeReq(blobsRequest) }),
306
+ ...(columnsRequest && { columnsReq: formatColumnsReq(columnsRequest) }),
307
+ ...(envelopesRequest && { envelopesReq: formatRangeReq(envelopesRequest) }),
308
+ downloadAttempts: this.failedDownloadAttempts.length,
309
+ processingAttempts: this.failedProcessingAttempts.length,
310
+ ...(this.failedDownloadAttempts.length > 0 && {
311
+ failedDownloadPeers: this.failedDownloadAttempts.join(","),
312
+ }),
313
+ ...(failedProcessingPeerList.length > 0 && {
314
+ failedProcessingPeers: failedProcessingPeerList.join(","),
315
+ }),
316
+ };
205
317
  }
206
318
  getBlocks() {
207
319
  return this.state.blocks;
208
320
  }
321
+ getPayloadEnvelopes() {
322
+ return this.state.payloadEnvelopes;
323
+ }
209
324
  /**
210
325
  * AwaitingDownload -> Downloading
211
326
  */
@@ -213,12 +328,17 @@ export class Batch {
213
328
  if (this.state.status !== BatchStatus.AwaitingDownload) {
214
329
  throw new BatchError(this.wrongStatusErrorType(BatchStatus.AwaitingDownload));
215
330
  }
216
- this.state = { status: BatchStatus.Downloading, peer, blocks: this.state.blocks };
331
+ this.state = {
332
+ status: BatchStatus.Downloading,
333
+ peer,
334
+ blocks: this.state.blocks,
335
+ payloadEnvelopes: this.state.payloadEnvelopes,
336
+ };
217
337
  }
218
338
  /**
219
339
  * Downloading -> AwaitingProcessing
220
340
  */
221
- downloadingSuccess(peer, blocks) {
341
+ downloadingSuccess(peer, blocks, payloadEnvelopes) {
222
342
  if (this.state.status !== BatchStatus.Downloading) {
223
343
  throw new BatchError(this.wrongStatusErrorType(BatchStatus.Downloading));
224
344
  }
@@ -229,7 +349,11 @@ export class Batch {
229
349
  const slots = new Set();
230
350
  for (const block of blocks) {
231
351
  slots.add(block.slot);
232
- if (!block.hasBlockAndAllData()) {
352
+ const dataComplete = isBlockInputColumns(block)
353
+ ? // by_range needs to download all columns
354
+ block.hasBlock() && block.hasComputedAllData()
355
+ : block.hasBlockAndAllData();
356
+ if (!dataComplete) {
233
357
  allComplete = false;
234
358
  }
235
359
  }
@@ -242,12 +366,45 @@ export class Batch {
242
366
  status: this.state.status,
243
367
  });
244
368
  }
369
+ const newPayloadEnvelopes = payloadEnvelopes ?? this.state.payloadEnvelopes;
370
+ if (allComplete && isForkPostGloas(this.forkName)) {
371
+ for (const block of blocks) {
372
+ const payloadInput = newPayloadEnvelopes?.get(block.slot);
373
+ // by_range needs every block's envelope and all sampled columns.
374
+ if (!payloadInput?.hasPayloadEnvelope() || !payloadInput.hasComputedAllData()) {
375
+ allComplete = false;
376
+ break;
377
+ }
378
+ }
379
+ }
380
+ // First batch of a sync chain must additionally have the dangling-parent payload fully
381
+ // present, otherwise `processBlocks` will throw PARENT_PAYLOAD_UNKNOWN. The parent's
382
+ // `PayloadEnvelopeInput` is identified by `blockRootHex` matching `blocks[0].parentRoot`.
383
+ if (allComplete && blocks.length > 0 && this.shouldDownloadParentEnvelope(blocks[0].getBlock())) {
384
+ const parentRoot = blocks[0].getBlock().message.parentRoot;
385
+ // Genesis has no parent payload — nothing to wait for.
386
+ if (!byteArrayEquals(parentRoot, ZERO_HASH)) {
387
+ const parentRootHex = toRootHex(parentRoot);
388
+ let parentPayloadComplete = false;
389
+ if (newPayloadEnvelopes) {
390
+ for (const payloadInput of newPayloadEnvelopes.values()) {
391
+ if (payloadInput.blockRootHex === parentRootHex) {
392
+ parentPayloadComplete = payloadInput.hasPayloadEnvelope() && payloadInput.hasComputedAllData();
393
+ break;
394
+ }
395
+ }
396
+ }
397
+ if (!parentPayloadComplete) {
398
+ allComplete = false;
399
+ }
400
+ }
401
+ }
245
402
  if (allComplete) {
246
- this.state = { status: BatchStatus.AwaitingProcessing, blocks };
403
+ this.state = { status: BatchStatus.AwaitingProcessing, blocks, payloadEnvelopes: newPayloadEnvelopes };
247
404
  }
248
405
  else {
406
+ this.state = { status: BatchStatus.AwaitingDownload, blocks, payloadEnvelopes: newPayloadEnvelopes };
249
407
  this.requests = this.getRequests(blocks);
250
- this.state = { status: BatchStatus.AwaitingDownload, blocks };
251
408
  }
252
409
  return this.state;
253
410
  }
@@ -262,7 +419,25 @@ export class Batch {
262
419
  if (this.failedDownloadAttempts.length > MAX_BATCH_DOWNLOAD_ATTEMPTS) {
263
420
  throw new BatchError(this.errorType({ code: BatchErrorCode.MAX_DOWNLOAD_ATTEMPTS }));
264
421
  }
265
- this.state = { status: BatchStatus.AwaitingDownload, blocks: this.state.blocks };
422
+ this.state = {
423
+ status: BatchStatus.AwaitingDownload,
424
+ blocks: this.state.blocks,
425
+ payloadEnvelopes: this.state.payloadEnvelopes,
426
+ };
427
+ }
428
+ /**
429
+ * Downloading -> AwaitingDownload (without counting as a failed attempt).
430
+ * Used when the peer rate-limited us — the request was never actually served.
431
+ */
432
+ downloadingRateLimited() {
433
+ if (this.state.status !== BatchStatus.Downloading) {
434
+ throw new BatchError(this.wrongStatusErrorType(BatchStatus.Downloading));
435
+ }
436
+ this.state = {
437
+ status: BatchStatus.AwaitingDownload,
438
+ blocks: this.state.blocks,
439
+ payloadEnvelopes: this.state.payloadEnvelopes,
440
+ };
266
441
  }
267
442
  /**
268
443
  * AwaitingProcessing -> Processing
@@ -272,13 +447,14 @@ export class Batch {
272
447
  throw new BatchError(this.wrongStatusErrorType(BatchStatus.AwaitingProcessing));
273
448
  }
274
449
  const blocks = this.state.blocks;
450
+ const payloadEnvelopes = this.state.payloadEnvelopes;
275
451
  const hash = hashBlocks(blocks, this.config); // tracks blocks to report peer on processing error
276
452
  // Reset goodPeers in case another download attempt needs to be made. When Attempt is successful or not the peers
277
453
  // that the data came from will be handled by the Attempt that goes for processing
278
454
  const peers = this.goodPeers;
279
455
  this.goodPeers = [];
280
- this.state = { status: BatchStatus.Processing, blocks, attempt: { peers, hash } };
281
- return blocks;
456
+ this.state = { status: BatchStatus.Processing, blocks, payloadEnvelopes, attempt: { peers, hash } };
457
+ return { blocks, payloadEnvelopes, peers };
282
458
  }
283
459
  /**
284
460
  * Processing -> AwaitingValidation
@@ -287,7 +463,12 @@ export class Batch {
287
463
  if (this.state.status !== BatchStatus.Processing) {
288
464
  throw new BatchError(this.wrongStatusErrorType(BatchStatus.Processing));
289
465
  }
290
- this.state = { status: BatchStatus.AwaitingValidation, blocks: this.state.blocks, attempt: this.state.attempt };
466
+ this.state = {
467
+ status: BatchStatus.AwaitingValidation,
468
+ blocks: this.state.blocks,
469
+ payloadEnvelopes: this.state.payloadEnvelopes,
470
+ attempt: this.state.attempt,
471
+ };
291
472
  }
292
473
  /**
293
474
  * Processing -> AwaitingDownload
@@ -333,7 +514,7 @@ export class Batch {
333
514
  }
334
515
  // remove any downloaded blocks and re-attempt
335
516
  // TODO(fulu): need to remove the bad blocks from the SeenBlockInputCache
336
- this.state = { status: BatchStatus.AwaitingDownload, blocks: [] };
517
+ this.state = { status: BatchStatus.AwaitingDownload, blocks: [], payloadEnvelopes: null };
337
518
  }
338
519
  onProcessingError(attempt) {
339
520
  this.failedProcessingAttempts.push(attempt);
@@ -342,11 +523,11 @@ export class Batch {
342
523
  }
343
524
  // remove any downloaded blocks and re-attempt
344
525
  // TODO(fulu): need to remove the bad blocks from the SeenBlockInputCache
345
- this.state = { status: BatchStatus.AwaitingDownload, blocks: [] };
526
+ this.state = { status: BatchStatus.AwaitingDownload, blocks: [], payloadEnvelopes: null };
346
527
  }
347
528
  /** Helper to construct typed BatchError. Stack traces are correct as the error is thrown above */
348
529
  errorType(type) {
349
- return { ...type, ...this.getMetadata() };
530
+ return { ...type, startEpoch: this.startEpoch, status: this.state.status };
350
531
  }
351
532
  wrongStatusErrorType(expectedStatus) {
352
533
  return this.errorType({ code: BatchErrorCode.WRONG_STATUS, expectedStatus });
@@ -1 +1 @@
1
- {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/sync/range/batch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/sync/range/batch.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { ChainForkConfig } from "@lodestar/config";
2
- import { Epoch, Root, Slot } from "@lodestar/types";
2
+ import { Epoch, Root, Slot, gloas } from "@lodestar/types";
3
3
  import { Logger } from "@lodestar/utils";
4
4
  import { IBlockInput } from "../../chain/blocks/blockInput/types.js";
5
+ import { PayloadEnvelopeInput } from "../../chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js";
5
6
  import { Metrics } from "../../metrics/metrics.js";
6
7
  import { PeerAction } from "../../network/index.js";
7
8
  import { PeerSyncMeta } from "../../network/peers/peersData.js";
@@ -24,9 +25,12 @@ export type SyncChainFns = {
24
25
  * Must return if ALL blocks are processed successfully
25
26
  * If SOME blocks are processed must throw BlockProcessorError()
26
27
  */
27
- processChainSegment: (blocks: IBlockInput[], syncType: RangeSyncType) => Promise<void>;
28
+ processChainSegment: (blocks: IBlockInput[], payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null, syncType: RangeSyncType) => Promise<void>;
28
29
  /** Must download blocks, and validate their range */
29
- downloadByRange: (peer: PeerSyncMeta, batch: Batch, syncType: RangeSyncType) => Promise<WarnResult<IBlockInput[], DownloadByRangeError>>;
30
+ downloadByRange: (peer: PeerSyncMeta, batch: Batch, syncType: RangeSyncType) => Promise<WarnResult<{
31
+ blocks: IBlockInput[];
32
+ payloadEnvelopes: Map<Slot, PayloadEnvelopeInput> | null;
33
+ }, DownloadByRangeError>>;
30
34
  /** Report peer for negative actions. Decouples from the full network instance */
31
35
  reportPeer: (peer: PeerIdStr, action: PeerAction, actionName: string) => void;
32
36
  /** Gets current peer custodyColumns and earliestAvailableSlot */
@@ -96,13 +100,24 @@ export declare class SyncChain {
96
100
  private readonly batchProcessor;
97
101
  /** Sorted map of batches undergoing some kind of processing. */
98
102
  private readonly batches;
103
+ /**
104
+ * `true` until the first `Batch` is constructed via `includeNextBatch`
105
+ */
106
+ private isFirstBatch;
99
107
  private readonly peerset;
108
+ /**
109
+ * Tracks peers that have rate-limited us, mapped to the timestamp (ms) until which we should avoid them.
110
+ * This is a sync-layer optimization to avoid assigning batches to backed-off peers.
111
+ * The reqresp SelfRateLimiter independently enforces backoff at the protocol level as a safety net.
112
+ */
113
+ private readonly rateLimitedPeers;
100
114
  private readonly logger;
101
115
  private readonly config;
102
116
  private readonly clock;
103
117
  private readonly metrics;
104
118
  private readonly custodyConfig;
105
- constructor(initialBatchEpoch: Epoch, initialTarget: ChainTarget, syncType: RangeSyncType, fns: SyncChainFns, modules: SyncChainModules);
119
+ private readonly latestBid;
120
+ constructor(initialBatchEpoch: Epoch, initialTarget: ChainTarget, syncType: RangeSyncType, fns: SyncChainFns, modules: SyncChainModules, latestBid: gloas.ExecutionPayloadBid | undefined);
106
121
  /**
107
122
  * Start syncing a new chain or an old one with an existing peer list
108
123
  * In the same call, advance the chain if localFinalizedEpoch >
@@ -1 +1 @@
1
- {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../src/sync/range/chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../src/sync/range/chain.ts"],"names":[],"mappings":"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"}