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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (642) hide show
  1. package/lib/api/impl/api.js +1 -1
  2. package/lib/api/impl/api.js.map +1 -1
  3. package/lib/api/impl/beacon/blocks/index.d.ts +2 -1
  4. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/blocks/index.js +48 -95
  6. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  7. package/lib/api/impl/beacon/index.d.ts +2 -1
  8. package/lib/api/impl/beacon/index.d.ts.map +1 -1
  9. package/lib/api/impl/beacon/index.js +2 -2
  10. package/lib/api/impl/beacon/index.js.map +1 -1
  11. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  12. package/lib/api/impl/beacon/pool/index.js +22 -2
  13. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  14. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  15. package/lib/api/impl/beacon/state/index.js +8 -2
  16. package/lib/api/impl/beacon/state/index.js.map +1 -1
  17. package/lib/api/impl/beacon/state/utils.d.ts +3 -2
  18. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  19. package/lib/api/impl/beacon/state/utils.js +17 -9
  20. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  21. package/lib/api/impl/debug/index.d.ts.map +1 -1
  22. package/lib/api/impl/debug/index.js +3 -0
  23. package/lib/api/impl/debug/index.js.map +1 -1
  24. package/lib/api/impl/validator/index.d.ts +6 -0
  25. package/lib/api/impl/validator/index.d.ts.map +1 -1
  26. package/lib/api/impl/validator/index.js +142 -34
  27. package/lib/api/impl/validator/index.js.map +1 -1
  28. package/lib/api/options.d.ts +2 -0
  29. package/lib/api/options.d.ts.map +1 -1
  30. package/lib/api/options.js +1 -0
  31. package/lib/api/options.js.map +1 -1
  32. package/lib/chain/GetBlobsTracker.d.ts +13 -2
  33. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  34. package/lib/chain/GetBlobsTracker.js +69 -35
  35. package/lib/chain/GetBlobsTracker.js.map +1 -1
  36. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  37. package/lib/chain/archiveStore/archiveStore.js +1 -0
  38. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  39. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +4 -0
  40. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  41. package/lib/chain/archiveStore/utils/archiveBlocks.js +61 -97
  42. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  43. package/lib/chain/blocks/blockInput/blockInput.d.ts +11 -56
  44. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  45. package/lib/chain/blocks/blockInput/blockInput.js +5 -241
  46. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  47. package/lib/chain/blocks/blockInput/errors.d.ts +2 -4
  48. package/lib/chain/blocks/blockInput/errors.d.ts.map +1 -1
  49. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  50. package/lib/chain/blocks/blockInput/types.d.ts +2 -18
  51. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  52. package/lib/chain/blocks/blockInput/types.js +0 -1
  53. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  54. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  55. package/lib/chain/blocks/importBlock.js +42 -57
  56. package/lib/chain/blocks/importBlock.js.map +1 -1
  57. package/lib/chain/blocks/importExecutionPayload.d.ts +10 -11
  58. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  59. package/lib/chain/blocks/importExecutionPayload.js +82 -20
  60. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  61. package/lib/chain/blocks/index.d.ts.map +1 -1
  62. package/lib/chain/blocks/index.js +4 -4
  63. package/lib/chain/blocks/index.js.map +1 -1
  64. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +12 -9
  65. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
  66. package/lib/chain/blocks/payloadEnvelopeProcessor.js +24 -19
  67. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  68. package/lib/chain/blocks/types.d.ts +7 -19
  69. package/lib/chain/blocks/types.d.ts.map +1 -1
  70. package/lib/chain/blocks/types.js +5 -24
  71. package/lib/chain/blocks/types.js.map +1 -1
  72. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  73. package/lib/chain/blocks/verifyBlock.js +18 -7
  74. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  75. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  76. package/lib/chain/blocks/verifyBlocksDataAvailability.js +14 -2
  77. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  78. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -1
  79. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  80. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +7 -3
  81. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  82. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  83. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -0
  84. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  85. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  86. package/lib/chain/blocks/verifyBlocksSignatures.js +10 -5
  87. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  88. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +3 -3
  89. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
  90. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +11 -6
  91. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  92. package/lib/chain/blocks/writeBlockInputToDb.d.ts +0 -2
  93. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  94. package/lib/chain/blocks/writeBlockInputToDb.js +6 -24
  95. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  96. package/lib/chain/bls/interface.d.ts +2 -0
  97. package/lib/chain/bls/interface.d.ts.map +1 -1
  98. package/lib/chain/bls/multithread/index.d.ts +1 -1
  99. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  100. package/lib/chain/bls/multithread/index.js +50 -22
  101. package/lib/chain/bls/multithread/index.js.map +1 -1
  102. package/lib/chain/bls/multithread/types.d.ts +1 -1
  103. package/lib/chain/bls/multithread/types.d.ts.map +1 -1
  104. package/lib/chain/bls/multithread/worker.js +1 -1
  105. package/lib/chain/bls/multithread/worker.js.map +1 -1
  106. package/lib/chain/bls/singleThread.js +1 -1
  107. package/lib/chain/bls/singleThread.js.map +1 -1
  108. package/lib/chain/bls/utils.js +1 -1
  109. package/lib/chain/bls/utils.js.map +1 -1
  110. package/lib/chain/chain.d.ts +26 -4
  111. package/lib/chain/chain.d.ts.map +1 -1
  112. package/lib/chain/chain.js +127 -43
  113. package/lib/chain/chain.js.map +1 -1
  114. package/lib/chain/emitter.d.ts +7 -7
  115. package/lib/chain/emitter.d.ts.map +1 -1
  116. package/lib/chain/emitter.js +5 -5
  117. package/lib/chain/emitter.js.map +1 -1
  118. package/lib/chain/errors/blockError.d.ts +1 -1
  119. package/lib/chain/errors/blockError.d.ts.map +1 -1
  120. package/lib/chain/errors/blockError.js +1 -1
  121. package/lib/chain/errors/blockError.js.map +1 -1
  122. package/lib/chain/errors/executionPayloadBid.d.ts +11 -1
  123. package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
  124. package/lib/chain/errors/executionPayloadBid.js +2 -0
  125. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  126. package/lib/chain/errors/executionPayloadEnvelope.d.ts +7 -0
  127. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  128. package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
  129. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  130. package/lib/chain/errors/inclusionList.d.ts +60 -0
  131. package/lib/chain/errors/inclusionList.d.ts.map +1 -0
  132. package/lib/chain/errors/inclusionList.js +19 -0
  133. package/lib/chain/errors/inclusionList.js.map +1 -0
  134. package/lib/chain/errors/index.d.ts +1 -1
  135. package/lib/chain/errors/index.d.ts.map +1 -1
  136. package/lib/chain/errors/index.js +1 -1
  137. package/lib/chain/errors/index.js.map +1 -1
  138. package/lib/chain/forkChoice/index.d.ts +11 -1
  139. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  140. package/lib/chain/forkChoice/index.js +11 -0
  141. package/lib/chain/forkChoice/index.js.map +1 -1
  142. package/lib/chain/forkChoiceExecutionEngine.d.ts +51 -0
  143. package/lib/chain/forkChoiceExecutionEngine.d.ts.map +1 -0
  144. package/lib/chain/forkChoiceExecutionEngine.js +117 -0
  145. package/lib/chain/forkChoiceExecutionEngine.js.map +1 -0
  146. package/lib/chain/interface.d.ts +10 -7
  147. package/lib/chain/interface.d.ts.map +1 -1
  148. package/lib/chain/interface.js.map +1 -1
  149. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +17 -4
  150. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  151. package/lib/chain/opPools/aggregatedAttestationPool.js +199 -46
  152. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  153. package/lib/chain/opPools/attestationPool.d.ts +1 -1
  154. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  155. package/lib/chain/opPools/attestationPool.js +15 -4
  156. package/lib/chain/opPools/attestationPool.js.map +1 -1
  157. package/lib/chain/opPools/inclusionListStore.d.ts +63 -0
  158. package/lib/chain/opPools/inclusionListStore.d.ts.map +1 -0
  159. package/lib/chain/opPools/inclusionListStore.js +171 -0
  160. package/lib/chain/opPools/inclusionListStore.js.map +1 -0
  161. package/lib/chain/opPools/index.d.ts +2 -0
  162. package/lib/chain/opPools/index.d.ts.map +1 -1
  163. package/lib/chain/opPools/index.js +2 -0
  164. package/lib/chain/opPools/index.js.map +1 -1
  165. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  166. package/lib/chain/opPools/payloadAttestationPool.js +17 -7
  167. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  168. package/lib/chain/opPools/singleAttestationPool.d.ts +77 -0
  169. package/lib/chain/opPools/singleAttestationPool.d.ts.map +1 -0
  170. package/lib/chain/opPools/singleAttestationPool.js +209 -0
  171. package/lib/chain/opPools/singleAttestationPool.js.map +1 -0
  172. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  173. package/lib/chain/opPools/syncCommitteeMessagePool.js +9 -3
  174. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  175. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  176. package/lib/chain/opPools/syncContributionAndProofPool.js +11 -3
  177. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  178. package/lib/chain/opPools/utils.d.ts +1 -1
  179. package/lib/chain/opPools/utils.d.ts.map +1 -1
  180. package/lib/chain/opPools/utils.js +1 -1
  181. package/lib/chain/opPools/utils.js.map +1 -1
  182. package/lib/chain/options.d.ts +5 -3
  183. package/lib/chain/options.d.ts.map +1 -1
  184. package/lib/chain/options.js +0 -1
  185. package/lib/chain/options.js.map +1 -1
  186. package/lib/chain/produceBlock/produceBlockBody.d.ts +6 -3
  187. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  188. package/lib/chain/produceBlock/produceBlockBody.js +32 -11
  189. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  190. package/lib/chain/proposerTracker.d.ts +31 -0
  191. package/lib/chain/proposerTracker.d.ts.map +1 -0
  192. package/lib/chain/proposerTracker.js +75 -0
  193. package/lib/chain/proposerTracker.js.map +1 -0
  194. package/lib/chain/regen/interface.d.ts +2 -2
  195. package/lib/chain/regen/interface.d.ts.map +1 -1
  196. package/lib/chain/regen/interface.js +1 -1
  197. package/lib/chain/regen/interface.js.map +1 -1
  198. package/lib/chain/regen/queued.d.ts +1 -1
  199. package/lib/chain/regen/queued.d.ts.map +1 -1
  200. package/lib/chain/regen/queued.js +5 -3
  201. package/lib/chain/regen/queued.js.map +1 -1
  202. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -14
  203. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  204. package/lib/chain/seenCache/seenGossipBlockInput.js +6 -65
  205. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  206. package/lib/chain/validation/aggregateAndProof.js +1 -1
  207. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  208. package/lib/chain/validation/attestation.js +1 -1
  209. package/lib/chain/validation/attestation.js.map +1 -1
  210. package/lib/chain/validation/executionPayloadBid.d.ts +0 -15
  211. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  212. package/lib/chain/validation/executionPayloadBid.js +37 -158
  213. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  214. package/lib/chain/validation/executionPayloadEnvelope.d.ts +6 -0
  215. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  216. package/lib/chain/validation/executionPayloadEnvelope.js +53 -0
  217. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  218. package/lib/chain/validation/inclusionList.d.ts +14 -0
  219. package/lib/chain/validation/inclusionList.d.ts.map +1 -0
  220. package/lib/chain/validation/inclusionList.js +150 -0
  221. package/lib/chain/validation/inclusionList.js.map +1 -0
  222. package/lib/chain/validation/index.d.ts +1 -0
  223. package/lib/chain/validation/index.d.ts.map +1 -1
  224. package/lib/chain/validation/index.js +1 -0
  225. package/lib/chain/validation/index.js.map +1 -1
  226. package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
  227. package/lib/chain/validation/syncCommittee.js +16 -10
  228. package/lib/chain/validation/syncCommittee.js.map +1 -1
  229. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  230. package/lib/chain/validation/syncCommitteeContributionAndProof.js +11 -0
  231. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  232. package/lib/chain/validatorMonitor.d.ts +1 -2
  233. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  234. package/lib/chain/validatorMonitor.js +0 -3
  235. package/lib/chain/validatorMonitor.js.map +1 -1
  236. package/lib/db/beacon.d.ts +7 -0
  237. package/lib/db/beacon.d.ts.map +1 -1
  238. package/lib/db/beacon.js +34 -0
  239. package/lib/db/beacon.js.map +1 -1
  240. package/lib/db/dataColumnStore.d.ts +1 -1
  241. package/lib/db/dataColumnStore.d.ts.map +1 -1
  242. package/lib/db/dataColumnStore.js +1 -4
  243. package/lib/db/dataColumnStore.js.map +1 -1
  244. package/lib/db/flatFileStore/flatFileStore.js +5 -5
  245. package/lib/db/flatFileStore/flatFileStore.js.map +1 -1
  246. package/lib/db/flatFileStore/slotIndex.d.ts.map +1 -1
  247. package/lib/db/flatFileStore/slotIndex.js +2 -2
  248. package/lib/db/flatFileStore/slotIndex.js.map +1 -1
  249. package/lib/db/interface.d.ts +1 -0
  250. package/lib/db/interface.d.ts.map +1 -1
  251. package/lib/db/repositories/blobSidecars.d.ts +0 -1
  252. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  253. package/lib/db/repositories/blobSidecars.js +0 -1
  254. package/lib/db/repositories/blobSidecars.js.map +1 -1
  255. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +6 -0
  256. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  257. package/lib/db/repositories/dataColumnSidecarArchive.js +19 -0
  258. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  259. package/lib/execution/builder/apiClient.d.ts +14 -8
  260. package/lib/execution/builder/apiClient.d.ts.map +1 -1
  261. package/lib/execution/builder/apiClient.js +12 -10
  262. package/lib/execution/builder/apiClient.js.map +1 -1
  263. package/lib/execution/builder/http.d.ts +2 -0
  264. package/lib/execution/builder/http.d.ts.map +1 -1
  265. package/lib/execution/builder/http.js +2 -0
  266. package/lib/execution/builder/http.js.map +1 -1
  267. package/lib/execution/builder/validateBid.d.ts.map +1 -1
  268. package/lib/execution/builder/validateBid.js +14 -1
  269. package/lib/execution/builder/validateBid.js.map +1 -1
  270. package/lib/execution/engine/blobVersionedHashes.d.ts +1 -1
  271. package/lib/execution/engine/blobVersionedHashes.d.ts.map +1 -1
  272. package/lib/execution/engine/blobVersionedHashes.js.map +1 -1
  273. package/lib/execution/engine/disabled.d.ts +1 -0
  274. package/lib/execution/engine/disabled.d.ts.map +1 -1
  275. package/lib/execution/engine/disabled.js +3 -0
  276. package/lib/execution/engine/disabled.js.map +1 -1
  277. package/lib/execution/engine/http.d.ts +12 -8
  278. package/lib/execution/engine/http.d.ts.map +1 -1
  279. package/lib/execution/engine/http.js +35 -14
  280. package/lib/execution/engine/http.js.map +1 -1
  281. package/lib/execution/engine/index.d.ts +1 -1
  282. package/lib/execution/engine/index.d.ts.map +1 -1
  283. package/lib/execution/engine/index.js +1 -1
  284. package/lib/execution/engine/index.js.map +1 -1
  285. package/lib/execution/engine/interface.d.ts +29 -8
  286. package/lib/execution/engine/interface.d.ts.map +1 -1
  287. package/lib/execution/engine/interface.js.map +1 -1
  288. package/lib/execution/engine/jsonRpcTransport.d.ts +5 -6
  289. package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -1
  290. package/lib/execution/engine/jsonRpcTransport.js +34 -20
  291. package/lib/execution/engine/jsonRpcTransport.js.map +1 -1
  292. package/lib/execution/engine/mock.d.ts +1 -1
  293. package/lib/execution/engine/mock.d.ts.map +1 -1
  294. package/lib/execution/engine/mock.js +31 -11
  295. package/lib/execution/engine/mock.js.map +1 -1
  296. package/lib/execution/engine/payloadIdCache.d.ts +5 -3
  297. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  298. package/lib/execution/engine/payloadIdCache.js +15 -4
  299. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  300. package/lib/execution/engine/restTransport.d.ts +4 -5
  301. package/lib/execution/engine/restTransport.d.ts.map +1 -1
  302. package/lib/execution/engine/restTransport.js +4 -15
  303. package/lib/execution/engine/restTransport.js.map +1 -1
  304. package/lib/execution/engine/sszTypes.d.ts +38 -47
  305. package/lib/execution/engine/sszTypes.d.ts.map +1 -1
  306. package/lib/execution/engine/sszTypes.js +0 -5
  307. package/lib/execution/engine/sszTypes.js.map +1 -1
  308. package/lib/execution/engine/transport.d.ts +4 -14
  309. package/lib/execution/engine/transport.d.ts.map +1 -1
  310. package/lib/execution/engine/types.d.ts +25 -9
  311. package/lib/execution/engine/types.d.ts.map +1 -1
  312. package/lib/execution/engine/types.js +19 -14
  313. package/lib/execution/engine/types.js.map +1 -1
  314. package/lib/execution/engine/utils.d.ts.map +1 -1
  315. package/lib/execution/engine/utils.js +3 -2
  316. package/lib/execution/engine/utils.js.map +1 -1
  317. package/lib/index.d.ts +1 -0
  318. package/lib/index.d.ts.map +1 -1
  319. package/lib/index.js +2 -0
  320. package/lib/index.js.map +1 -1
  321. package/lib/metrics/metrics/beacon.d.ts +16 -9
  322. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  323. package/lib/metrics/metrics/beacon.js +35 -30
  324. package/lib/metrics/metrics/beacon.js.map +1 -1
  325. package/lib/metrics/metrics/lodestar.d.ts +42 -8
  326. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  327. package/lib/metrics/metrics/lodestar.js +104 -18
  328. package/lib/metrics/metrics/lodestar.js.map +1 -1
  329. package/lib/metrics/server/http.js +5 -5
  330. package/lib/metrics/server/http.js.map +1 -1
  331. package/lib/monitoring/service.js +1 -1
  332. package/lib/monitoring/service.js.map +1 -1
  333. package/lib/network/core/networkCore.d.ts +4 -1
  334. package/lib/network/core/networkCore.d.ts.map +1 -1
  335. package/lib/network/core/networkCore.js +7 -0
  336. package/lib/network/core/networkCore.js.map +1 -1
  337. package/lib/network/core/networkCoreWorker.js +2 -0
  338. package/lib/network/core/networkCoreWorker.js.map +1 -1
  339. package/lib/network/core/networkCoreWorkerHandler.d.ts +4 -1
  340. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  341. package/lib/network/core/networkCoreWorkerHandler.js +6 -0
  342. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  343. package/lib/network/core/types.d.ts +6 -1
  344. package/lib/network/core/types.d.ts.map +1 -1
  345. package/lib/network/gossip/gossipsub.d.ts +1 -0
  346. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  347. package/lib/network/gossip/gossipsub.js +10 -0
  348. package/lib/network/gossip/gossipsub.js.map +1 -1
  349. package/lib/network/gossip/interface.d.ts +8 -9
  350. package/lib/network/gossip/interface.d.ts.map +1 -1
  351. package/lib/network/gossip/interface.js +1 -1
  352. package/lib/network/gossip/interface.js.map +1 -1
  353. package/lib/network/gossip/topic.d.ts +13 -21
  354. package/lib/network/gossip/topic.d.ts.map +1 -1
  355. package/lib/network/gossip/topic.js +13 -24
  356. package/lib/network/gossip/topic.js.map +1 -1
  357. package/lib/network/interface.d.ts +5 -5
  358. package/lib/network/interface.d.ts.map +1 -1
  359. package/lib/network/libp2p/index.d.ts.map +1 -1
  360. package/lib/network/libp2p/index.js +5 -1
  361. package/lib/network/libp2p/index.js.map +1 -1
  362. package/lib/network/network.d.ts +9 -7
  363. package/lib/network/network.d.ts.map +1 -1
  364. package/lib/network/network.js +58 -35
  365. package/lib/network/network.js.map +1 -1
  366. package/lib/network/options.d.ts +2 -0
  367. package/lib/network/options.d.ts.map +1 -1
  368. package/lib/network/options.js +2 -0
  369. package/lib/network/options.js.map +1 -1
  370. package/lib/network/peers/peerManager.d.ts +2 -1
  371. package/lib/network/peers/peerManager.d.ts.map +1 -1
  372. package/lib/network/peers/peerManager.js +28 -1
  373. package/lib/network/peers/peerManager.js.map +1 -1
  374. package/lib/network/peers/utils/assertPeerRelevance.d.ts +9 -1
  375. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -1
  376. package/lib/network/peers/utils/assertPeerRelevance.js +32 -21
  377. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  378. package/lib/network/peers/utils/prioritizePeers.d.ts +4 -1
  379. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  380. package/lib/network/peers/utils/prioritizePeers.js +8 -16
  381. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  382. package/lib/network/peers/utils/subnetMap.d.ts +5 -2
  383. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  384. package/lib/network/peers/utils/subnetMap.js +6 -3
  385. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  386. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
  387. package/lib/network/processor/extractSlotRootFns.js +1 -8
  388. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  389. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  390. package/lib/network/processor/gossipHandlers.js +118 -149
  391. package/lib/network/processor/gossipHandlers.js.map +1 -1
  392. package/lib/network/processor/gossipQueues/index.js +6 -6
  393. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  394. package/lib/network/processor/gossipValidatorFn.js +5 -5
  395. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  396. package/lib/network/processor/index.d.ts +6 -0
  397. package/lib/network/processor/index.d.ts.map +1 -1
  398. package/lib/network/processor/index.js +56 -29
  399. package/lib/network/processor/index.js.map +1 -1
  400. package/lib/network/reqresp/ReqRespBeaconNode.js +6 -3
  401. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  402. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +2 -2
  403. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  404. package/lib/network/reqresp/handlers/inclusionListsByIndices.d.ts +10 -0
  405. package/lib/network/reqresp/handlers/inclusionListsByIndices.d.ts.map +1 -0
  406. package/lib/network/reqresp/handlers/inclusionListsByIndices.js +30 -0
  407. package/lib/network/reqresp/handlers/inclusionListsByIndices.js.map +1 -0
  408. package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
  409. package/lib/network/reqresp/handlers/index.js +6 -12
  410. package/lib/network/reqresp/handlers/index.js.map +1 -1
  411. package/lib/network/reqresp/protocols.d.ts +1 -2
  412. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  413. package/lib/network/reqresp/protocols.js +5 -10
  414. package/lib/network/reqresp/protocols.js.map +1 -1
  415. package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
  416. package/lib/network/reqresp/rateLimit.js +5 -17
  417. package/lib/network/reqresp/rateLimit.js.map +1 -1
  418. package/lib/network/reqresp/types.d.ts +6 -9
  419. package/lib/network/reqresp/types.d.ts.map +1 -1
  420. package/lib/network/reqresp/types.js +4 -7
  421. package/lib/network/reqresp/types.js.map +1 -1
  422. package/lib/network/subnets/attnetsService.d.ts +35 -5
  423. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  424. package/lib/network/subnets/attnetsService.js +84 -6
  425. package/lib/network/subnets/attnetsService.js.map +1 -1
  426. package/lib/network/subnets/interface.d.ts +7 -0
  427. package/lib/network/subnets/interface.d.ts.map +1 -1
  428. package/lib/network/subnets/interface.js.map +1 -1
  429. package/lib/node/nodejs.d.ts +3 -1
  430. package/lib/node/nodejs.d.ts.map +1 -1
  431. package/lib/node/nodejs.js +47 -21
  432. package/lib/node/nodejs.js.map +1 -1
  433. package/lib/node/options.d.ts +3 -1
  434. package/lib/node/options.d.ts.map +1 -1
  435. package/lib/node/options.js +4 -2
  436. package/lib/node/options.js.map +1 -1
  437. package/lib/sync/interface.d.ts.map +1 -1
  438. package/lib/sync/interface.js.map +1 -1
  439. package/lib/sync/range/batch.d.ts +2 -3
  440. package/lib/sync/range/batch.d.ts.map +1 -1
  441. package/lib/sync/range/batch.js +9 -22
  442. package/lib/sync/range/batch.js.map +1 -1
  443. package/lib/sync/range/chain.d.ts.map +1 -1
  444. package/lib/sync/range/chain.js +2 -15
  445. package/lib/sync/range/chain.js.map +1 -1
  446. package/lib/sync/sync.d.ts +15 -0
  447. package/lib/sync/sync.d.ts.map +1 -1
  448. package/lib/sync/sync.js +103 -25
  449. package/lib/sync/sync.js.map +1 -1
  450. package/lib/sync/unknownBlock.d.ts.map +1 -1
  451. package/lib/sync/unknownBlock.js +43 -25
  452. package/lib/sync/unknownBlock.js.map +1 -1
  453. package/lib/sync/utils/downloadByRange.d.ts +6 -34
  454. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  455. package/lib/sync/utils/downloadByRange.js +24 -128
  456. package/lib/sync/utils/downloadByRange.js.map +1 -1
  457. package/lib/sync/utils/downloadByRoot.d.ts +2 -18
  458. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  459. package/lib/sync/utils/downloadByRoot.js +14 -99
  460. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  461. package/lib/util/blobs.d.ts +1 -7
  462. package/lib/util/blobs.d.ts.map +1 -1
  463. package/lib/util/blobs.js +0 -19
  464. package/lib/util/blobs.js.map +1 -1
  465. package/lib/util/execution.d.ts +3 -4
  466. package/lib/util/execution.d.ts.map +1 -1
  467. package/lib/util/execution.js +1 -73
  468. package/lib/util/execution.js.map +1 -1
  469. package/lib/util/file.d.ts.map +1 -1
  470. package/lib/util/file.js +8 -9
  471. package/lib/util/file.js.map +1 -1
  472. package/lib/util/queue/itemQueue.js +1 -1
  473. package/lib/util/queue/itemQueue.js.map +1 -1
  474. package/lib/util/sszBytes.d.ts +5 -1
  475. package/lib/util/sszBytes.d.ts.map +1 -1
  476. package/lib/util/sszBytes.js +36 -19
  477. package/lib/util/sszBytes.js.map +1 -1
  478. package/lib/util/types.d.ts +0 -5
  479. package/lib/util/types.d.ts.map +1 -1
  480. package/lib/util/types.js +1 -2
  481. package/lib/util/types.js.map +1 -1
  482. package/package.json +31 -32
  483. package/src/api/impl/api.ts +1 -1
  484. package/src/api/impl/beacon/blocks/index.ts +81 -126
  485. package/src/api/impl/beacon/index.ts +3 -1
  486. package/src/api/impl/beacon/pool/index.ts +31 -1
  487. package/src/api/impl/beacon/state/index.ts +10 -1
  488. package/src/api/impl/beacon/state/utils.ts +20 -10
  489. package/src/api/impl/debug/index.ts +4 -0
  490. package/src/api/impl/validator/index.ts +177 -38
  491. package/src/api/options.ts +3 -0
  492. package/src/chain/GetBlobsTracker.ts +82 -52
  493. package/src/chain/archiveStore/archiveStore.ts +1 -0
  494. package/src/chain/archiveStore/utils/archiveBlocks.ts +76 -130
  495. package/src/chain/blocks/blockInput/blockInput.ts +11 -343
  496. package/src/chain/blocks/blockInput/errors.ts +1 -2
  497. package/src/chain/blocks/blockInput/types.ts +2 -20
  498. package/src/chain/blocks/importBlock.ts +58 -77
  499. package/src/chain/blocks/importExecutionPayload.ts +123 -36
  500. package/src/chain/blocks/index.ts +11 -4
  501. package/src/chain/blocks/payloadEnvelopeProcessor.ts +35 -24
  502. package/src/chain/blocks/types.ts +8 -29
  503. package/src/chain/blocks/verifyBlock.ts +31 -16
  504. package/src/chain/blocks/verifyBlocksDataAvailability.ts +16 -2
  505. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -6
  506. package/src/chain/blocks/verifyBlocksSanityChecks.ts +4 -1
  507. package/src/chain/blocks/verifyBlocksSignatures.ts +10 -5
  508. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +14 -6
  509. package/src/chain/blocks/writeBlockInputToDb.ts +6 -29
  510. package/src/chain/bls/interface.ts +2 -0
  511. package/src/chain/bls/multithread/index.ts +48 -24
  512. package/src/chain/bls/multithread/types.ts +1 -1
  513. package/src/chain/bls/multithread/worker.ts +1 -5
  514. package/src/chain/bls/singleThread.ts +1 -1
  515. package/src/chain/bls/utils.ts +1 -1
  516. package/src/chain/chain.ts +144 -42
  517. package/src/chain/emitter.ts +8 -8
  518. package/src/chain/errors/blockError.ts +1 -1
  519. package/src/chain/errors/executionPayloadBid.ts +12 -0
  520. package/src/chain/errors/executionPayloadEnvelope.ts +8 -0
  521. package/src/chain/errors/inclusionList.ts +38 -0
  522. package/src/chain/errors/index.ts +1 -1
  523. package/src/chain/forkChoice/index.ts +11 -0
  524. package/src/chain/forkChoiceExecutionEngine.ts +183 -0
  525. package/src/chain/interface.ts +11 -6
  526. package/src/chain/opPools/aggregatedAttestationPool.ts +246 -43
  527. package/src/chain/opPools/attestationPool.ts +16 -4
  528. package/src/chain/opPools/inclusionListStore.ts +208 -0
  529. package/src/chain/opPools/index.ts +2 -0
  530. package/src/chain/opPools/payloadAttestationPool.ts +18 -7
  531. package/src/chain/opPools/singleAttestationPool.ts +287 -0
  532. package/src/chain/opPools/syncCommitteeMessagePool.ts +10 -3
  533. package/src/chain/opPools/syncContributionAndProofPool.ts +13 -3
  534. package/src/chain/opPools/utils.ts +1 -1
  535. package/src/chain/options.ts +5 -4
  536. package/src/chain/produceBlock/produceBlockBody.ts +67 -22
  537. package/src/chain/proposerTracker.ts +94 -0
  538. package/src/chain/regen/interface.ts +2 -2
  539. package/src/chain/regen/queued.ts +6 -4
  540. package/src/chain/seenCache/seenGossipBlockInput.ts +9 -93
  541. package/src/chain/validation/aggregateAndProof.ts +1 -1
  542. package/src/chain/validation/attestation.ts +1 -1
  543. package/src/chain/validation/executionPayloadBid.ts +54 -183
  544. package/src/chain/validation/executionPayloadEnvelope.ts +68 -1
  545. package/src/chain/validation/inclusionList.ts +192 -0
  546. package/src/chain/validation/index.ts +1 -0
  547. package/src/chain/validation/syncCommittee.ts +31 -15
  548. package/src/chain/validation/syncCommitteeContributionAndProof.ts +13 -0
  549. package/src/chain/validatorMonitor.ts +0 -6
  550. package/src/db/beacon.ts +44 -0
  551. package/src/db/dataColumnStore.ts +2 -4
  552. package/src/db/flatFileStore/flatFileStore.ts +7 -7
  553. package/src/db/flatFileStore/slotIndex.ts +4 -3
  554. package/src/db/interface.ts +2 -0
  555. package/src/db/repositories/blobSidecars.ts +0 -1
  556. package/src/db/repositories/dataColumnSidecarArchive.ts +20 -0
  557. package/src/execution/builder/apiClient.ts +16 -13
  558. package/src/execution/builder/http.ts +4 -0
  559. package/src/execution/builder/validateBid.ts +23 -2
  560. package/src/execution/engine/blobVersionedHashes.ts +1 -1
  561. package/src/execution/engine/disabled.ts +4 -0
  562. package/src/execution/engine/http.ts +59 -47
  563. package/src/execution/engine/index.ts +1 -1
  564. package/src/execution/engine/interface.ts +46 -13
  565. package/src/execution/engine/jsonRpcTransport.ts +56 -31
  566. package/src/execution/engine/mock.ts +32 -14
  567. package/src/execution/engine/payloadIdCache.ts +24 -6
  568. package/src/execution/engine/restTransport.ts +18 -23
  569. package/src/execution/engine/sszTypes.ts +0 -9
  570. package/src/execution/engine/transport.ts +13 -17
  571. package/src/execution/engine/types.ts +44 -24
  572. package/src/execution/engine/utils.ts +4 -2
  573. package/src/index.ts +2 -0
  574. package/src/metrics/metrics/beacon.ts +37 -30
  575. package/src/metrics/metrics/lodestar.ts +106 -18
  576. package/src/metrics/server/http.ts +5 -5
  577. package/src/monitoring/service.ts +1 -1
  578. package/src/network/core/networkCore.ts +11 -1
  579. package/src/network/core/networkCoreWorker.ts +2 -0
  580. package/src/network/core/networkCoreWorkerHandler.ts +8 -1
  581. package/src/network/core/types.ts +6 -1
  582. package/src/network/gossip/gossipsub.ts +11 -0
  583. package/src/network/gossip/interface.ts +5 -5
  584. package/src/network/gossip/topic.ts +14 -25
  585. package/src/network/interface.ts +4 -5
  586. package/src/network/libp2p/index.ts +5 -1
  587. package/src/network/network.ts +66 -58
  588. package/src/network/options.ts +4 -0
  589. package/src/network/peers/peerManager.ts +28 -3
  590. package/src/network/peers/utils/assertPeerRelevance.ts +39 -23
  591. package/src/network/peers/utils/prioritizePeers.ts +14 -22
  592. package/src/network/peers/utils/subnetMap.ts +6 -3
  593. package/src/network/processor/extractSlotRootFns.ts +0 -9
  594. package/src/network/processor/gossipHandlers.ts +150 -183
  595. package/src/network/processor/gossipQueues/index.ts +6 -6
  596. package/src/network/processor/gossipValidatorFn.ts +5 -5
  597. package/src/network/processor/index.ts +48 -27
  598. package/src/network/processor/types.ts +1 -1
  599. package/src/network/reqresp/ReqRespBeaconNode.ts +7 -7
  600. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -2
  601. package/src/network/reqresp/handlers/inclusionListsByIndices.ts +44 -0
  602. package/src/network/reqresp/handlers/index.ts +5 -17
  603. package/src/network/reqresp/protocols.ts +6 -12
  604. package/src/network/reqresp/rateLimit.ts +5 -17
  605. package/src/network/reqresp/types.ts +6 -13
  606. package/src/network/subnets/attnetsService.ts +94 -6
  607. package/src/network/subnets/interface.ts +7 -0
  608. package/src/node/nodejs.ts +58 -22
  609. package/src/node/options.ts +9 -6
  610. package/src/sync/interface.ts +1 -0
  611. package/src/sync/range/batch.ts +9 -21
  612. package/src/sync/range/chain.ts +2 -14
  613. package/src/sync/sync.ts +108 -26
  614. package/src/sync/unknownBlock.ts +48 -36
  615. package/src/sync/utils/downloadByRange.ts +31 -230
  616. package/src/sync/utils/downloadByRoot.ts +15 -142
  617. package/src/util/blobs.ts +0 -34
  618. package/src/util/execution.ts +8 -102
  619. package/src/util/file.ts +8 -9
  620. package/src/util/queue/itemQueue.ts +1 -1
  621. package/src/util/sszBytes.ts +42 -24
  622. package/src/util/types.ts +1 -8
  623. package/lib/chain/errors/blobSidecarError.d.ts +0 -108
  624. package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
  625. package/lib/chain/errors/blobSidecarError.js +0 -38
  626. package/lib/chain/errors/blobSidecarError.js.map +0 -1
  627. package/lib/chain/validation/blobSidecar.d.ts +0 -16
  628. package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
  629. package/lib/chain/validation/blobSidecar.js +0 -276
  630. package/lib/chain/validation/blobSidecar.js.map +0 -1
  631. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +0 -9
  632. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
  633. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +0 -91
  634. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +0 -1
  635. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts +0 -5
  636. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
  637. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +0 -46
  638. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +0 -1
  639. package/src/chain/errors/blobSidecarError.ts +0 -70
  640. package/src/chain/validation/blobSidecar.ts +0 -357
  641. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -133
  642. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -69
@@ -6,17 +6,24 @@ import {
6
6
  DEPOSIT_REQUEST_TYPE,
7
7
  ForkName,
8
8
  ForkPostFulu,
9
- ForkPreFulu,
10
9
  WITHDRAWAL_REQUEST_TYPE,
11
10
  } from "@lodestar/params";
12
- import {BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei, capella} from "@lodestar/types";
13
- import {BlobAndProof} from "@lodestar/types/deneb";
11
+ import {
12
+ BlobsBundle,
13
+ ExecutionPayload,
14
+ ExecutionRequests,
15
+ Root,
16
+ RootHex,
17
+ Wei,
18
+ bellatrix,
19
+ capella,
20
+ } from "@lodestar/types";
14
21
  import {BlobAndProofV2} from "@lodestar/types/fulu";
15
22
  import {PayloadId, PayloadIdCache, WithdrawalV1} from "./payloadIdCache.js";
16
23
  import {ExecutionPayloadBodyV2} from "./types.js";
17
24
  import {DATA} from "./utils.js";
18
25
 
19
- export {PayloadIdCache, type PayloadId, type WithdrawalV1};
26
+ export {type PayloadId, PayloadIdCache, type WithdrawalV1};
20
27
  export type ClientVersion = routes.node.ClientVersion;
21
28
  export const ClientCode = routes.node.ClientCode;
22
29
 
@@ -73,7 +80,13 @@ export type ExecutePayloadResponse =
73
80
  latestValidHash: null;
74
81
  validationError: null;
75
82
  }
76
- | {status: ExecutionPayloadStatus.VALID; latestValidHash: RootHex; validationError: null}
83
+ | {
84
+ status: ExecutionPayloadStatus.VALID;
85
+ latestValidHash: RootHex;
86
+ validationError: null;
87
+ /** PayloadStatusV2: whether the payload satisfied the inclusion list constraints */
88
+ inclusionListSatisfied?: boolean | null;
89
+ }
77
90
  | {status: ExecutionPayloadStatus.INVALID; latestValidHash: RootHex | null; validationError: string | null}
78
91
  | {
79
92
  status:
@@ -84,6 +97,19 @@ export type ExecutePayloadResponse =
84
97
  validationError: string;
85
98
  };
86
99
 
100
+ export type PayloadStatusResult = {
101
+ status: ExecutionPayloadStatus;
102
+ latestValidHash: RootHex | null;
103
+ validationError: string | null;
104
+ /** PayloadStatusV2: whether a VALID payload satisfied the inclusion list constraints, null otherwise */
105
+ inclusionListSatisfied?: boolean | null;
106
+ };
107
+
108
+ export type ForkchoiceUpdatedResult = {
109
+ payloadStatus: PayloadStatusResult;
110
+ payloadId: PayloadId | null;
111
+ };
112
+
87
113
  export type ForkChoiceUpdateStatus =
88
114
  | ExecutionPayloadStatus.VALID
89
115
  | ExecutionPayloadStatus.INVALID
@@ -99,6 +125,8 @@ export type PayloadAttributes = {
99
125
  parentBeaconBlockRoot?: Uint8Array;
100
126
  slotNumber?: number; // EIP-7843
101
127
  targetGasLimit?: bigint; // GLOAS (PayloadAttributesV4, execution-apis#796)
128
+ /** Transactions the built payload must include (PayloadAttributesV5, HEZE:EIP-7805) */
129
+ inclusionListTransactions?: bellatrix.Transactions;
102
130
  };
103
131
 
104
132
  export type VersionedHashes = Uint8Array[];
@@ -129,9 +157,16 @@ export interface IExecutionEngine {
129
157
  executionPayload: ExecutionPayload,
130
158
  versionedHashes?: VersionedHashes,
131
159
  parentBeaconBlockRoot?: Root,
132
- executionRequests?: ExecutionRequests
160
+ executionRequests?: ExecutionRequests,
161
+ inclusionListTransactions?: bellatrix.Transactions
133
162
  ): Promise<ExecutePayloadResponse>;
134
163
 
164
+ /**
165
+ * Transactions the execution layer wants included in the next payload. Parameterless since
166
+ * execution-apis#609: the execution layer builds against its own view of the head.
167
+ */
168
+ getInclusionList(): Promise<bellatrix.Transactions>;
169
+
135
170
  /**
136
171
  * Signal fork choice updates
137
172
  * This function performs two actions atomically:
@@ -142,7 +177,10 @@ export interface IExecutionEngine {
142
177
  * The call of the notify_forkchoice_updated function maps on the POS_FORKCHOICE_UPDATED event defined in the EIP-3675.
143
178
  * https://github.com/ethereum/consensus-specs/blob/v1.1.7/specs/merge/fork-choice.md#notify_forkchoice_updated
144
179
  *
145
- * Should be called in response to fork-choice head and finalized events
180
+ * Should be called in response to fork-choice head and finalized events.
181
+ *
182
+ * An INVALID verdict is returned, not thrown: the caller feeds it back into fork choice together with the
183
+ * `latestValidHash`. Only SYNCING while building a payload is an error.
146
184
  */
147
185
  notifyForkchoiceUpdate(
148
186
  fork: ForkName,
@@ -150,7 +188,7 @@ export interface IExecutionEngine {
150
188
  safeBlockHash: RootHex,
151
189
  finalizedBlockHash: RootHex,
152
190
  payloadAttributes?: PayloadAttributes
153
- ): Promise<PayloadId | null>;
191
+ ): Promise<ForkchoiceUpdatedResult>;
154
192
 
155
193
  /**
156
194
  * Given the payload_id, get_payload returns the most recent version of the execution payload that has been built
@@ -178,9 +216,4 @@ export interface IExecutionEngine {
178
216
  versionedHashes: VersionedHashes,
179
217
  buffers?: Uint8Array[]
180
218
  ): Promise<BlobAndProofV2[] | null>;
181
- getBlobs(
182
- fork: ForkPreFulu,
183
- versionedHashes: VersionedHashes,
184
- buffers?: Uint8Array[]
185
- ): Promise<(BlobAndProof | null)[]>;
186
219
  }
@@ -1,25 +1,33 @@
1
1
  import {ForkName, ForkSeq} from "@lodestar/params";
2
- import {ExecutionPayload, ExecutionRequests, Root, RootHex} from "@lodestar/types";
3
- import {BlobAndProof} from "@lodestar/types/deneb";
2
+ import {ExecutionPayload, ExecutionRequests, Root, RootHex, bellatrix} from "@lodestar/types";
4
3
  import {BlobAndProofV2} from "@lodestar/types/fulu";
5
4
  import {strip0xPrefix} from "@lodestar/utils";
6
- import {ClientCode, ClientVersion, PayloadAttributes, PayloadId, VersionedHashes} from "./interface.js";
5
+ import {
6
+ ClientCode,
7
+ ClientVersion,
8
+ ForkchoiceUpdatedResult,
9
+ PayloadAttributes,
10
+ PayloadId,
11
+ PayloadStatusResult,
12
+ VersionedHashes,
13
+ } from "./interface.js";
7
14
  import {IJsonRpcHttpClient, JsonRpcHttpClientEventEmitter, ReqOpts} from "./jsonRpcHttpClient.js";
8
- import {ForkchoiceUpdatedResult, GetPayloadResult, IEngineTransport, PayloadStatusResult} from "./transport.js";
15
+ import {GetPayloadResult, IEngineTransport} from "./transport.js";
9
16
  import {
10
17
  BLOB_AND_PROOF_V2_RPC_BYTES,
11
18
  EngineApiRpcParamTypes,
12
19
  EngineApiRpcReturnTypes,
13
20
  ExecutionPayloadBodyV2,
14
21
  assertReqSizeLimit,
15
- deserializeBlobAndProofs,
16
22
  deserializeBlobAndProofsV2,
17
23
  deserializeBlobAndProofsV2IntoBytes,
18
24
  deserializeExecutionPayloadBodyV2,
25
+ deserializeInclusionList,
19
26
  parseExecutionPayload,
20
27
  serializeBeaconBlockRoot,
21
28
  serializeExecutionPayload,
22
29
  serializeExecutionRequests,
30
+ serializeInclusionList,
23
31
  serializePayloadAttributes,
24
32
  serializeVersionedHashes,
25
33
  } from "./types.js";
@@ -37,9 +45,9 @@ const notifyNewPayloadOpts: ReqOpts = {routeId: "notifyNewPayload"};
37
45
  const forkchoiceUpdatedOpts: ReqOpts = {routeId: "forkchoiceUpdated"};
38
46
  const getPayloadOpts: ReqOpts = {routeId: "getPayload"};
39
47
  const getPayloadBodiesByHashOpts: ReqOpts = {routeId: "getPayloadBodiesByHash"};
40
- const getBlobsV1Opts: ReqOpts = {routeId: "getBlobsV1"};
41
48
  const getBlobsV2Opts: ReqOpts = {routeId: "getBlobsV2"};
42
49
  const getClientVersionOpts: ReqOpts = {routeId: "getClientVersion"};
50
+ const getInclusionListOpts: ReqOpts = {routeId: "getInclusionList"};
43
51
 
44
52
  /**
45
53
  * Legacy `engine_*` JSON-RPC methods
@@ -57,7 +65,8 @@ export class JsonRpcEngineTransport implements IEngineTransport {
57
65
  executionPayload: ExecutionPayload,
58
66
  versionedHashes?: VersionedHashes,
59
67
  parentBeaconBlockRoot?: Root,
60
- executionRequests?: ExecutionRequests
68
+ executionRequests?: ExecutionRequests,
69
+ inclusionListTransactions?: bellatrix.Transactions
61
70
  ): Promise<PayloadStatusResult> {
62
71
  const serializedExecutionPayload = serializeExecutionPayload(fork, executionPayload);
63
72
 
@@ -76,6 +85,28 @@ export class JsonRpcEngineTransport implements IEngineTransport {
76
85
  if (executionRequests === undefined) {
77
86
  throw Error(`executionRequests required in notifyNewPayload for fork=${fork}`);
78
87
  }
88
+ if (ForkSeq[fork] >= ForkSeq.heze) {
89
+ if (inclusionListTransactions === undefined) {
90
+ throw Error(`inclusionListTransactions required in notifyNewPayload for fork=${fork}`);
91
+ }
92
+ const method = "engine_newPayloadV6";
93
+ return this.rpc.fetchWithRetries<
94
+ EngineApiRpcReturnTypes[typeof method],
95
+ EngineApiRpcParamTypes[typeof method]
96
+ >(
97
+ {
98
+ method,
99
+ params: [
100
+ serializedExecutionPayload,
101
+ serializedVersionedHashes,
102
+ serializedParentBeaconBlockRoot,
103
+ serializeExecutionRequests(fork, executionRequests),
104
+ serializeInclusionList(inclusionListTransactions),
105
+ ],
106
+ },
107
+ notifyNewPayloadOpts
108
+ );
109
+ }
79
110
  const method = ForkSeq[fork] >= ForkSeq.gloas ? "engine_newPayloadV5" : "engine_newPayloadV4";
80
111
  return this.rpc.fetchWithRetries<EngineApiRpcReturnTypes[typeof method], EngineApiRpcParamTypes[typeof method]>(
81
112
  {
@@ -113,13 +144,15 @@ export class JsonRpcEngineTransport implements IEngineTransport {
113
144
  payloadAttributes?: PayloadAttributes
114
145
  ): Promise<ForkchoiceUpdatedResult> {
115
146
  const method =
116
- ForkSeq[fork] >= ForkSeq.gloas
117
- ? "engine_forkchoiceUpdatedV4"
118
- : ForkSeq[fork] >= ForkSeq.deneb
119
- ? "engine_forkchoiceUpdatedV3"
120
- : ForkSeq[fork] >= ForkSeq.capella
121
- ? "engine_forkchoiceUpdatedV2"
122
- : "engine_forkchoiceUpdatedV1";
147
+ ForkSeq[fork] >= ForkSeq.heze
148
+ ? "engine_forkchoiceUpdatedV5"
149
+ : ForkSeq[fork] >= ForkSeq.gloas
150
+ ? "engine_forkchoiceUpdatedV4"
151
+ : ForkSeq[fork] >= ForkSeq.deneb
152
+ ? "engine_forkchoiceUpdatedV3"
153
+ : ForkSeq[fork] >= ForkSeq.capella
154
+ ? "engine_forkchoiceUpdatedV2"
155
+ : "engine_forkchoiceUpdatedV1";
123
156
  const payloadAttributesRpc = payloadAttributes ? serializePayloadAttributes(payloadAttributes) : undefined;
124
157
  // If we are just fcUing and not asking execution for payload, retry is not required
125
158
  // and we can move on, as the next fcU will be issued soon on the new slot
@@ -174,23 +207,6 @@ export class JsonRpcEngineTransport implements IEngineTransport {
174
207
  return response.map(deserializeExecutionPayloadBodyV2);
175
208
  }
176
209
 
177
- async getBlobsV1(versionedHashes: VersionedHashes): Promise<(BlobAndProof | null)[]> {
178
- assertReqSizeLimit(versionedHashes.length, MAX_VERSIONED_HASHES);
179
- const versionedHashesHex = versionedHashes.map(bytesToData);
180
- const response = await this.rpc.fetchWithRetries<
181
- EngineApiRpcReturnTypes["engine_getBlobsV1"],
182
- EngineApiRpcParamTypes["engine_getBlobsV1"]
183
- >({method: "engine_getBlobsV1", params: [versionedHashesHex]}, getBlobsV1Opts);
184
-
185
- if (response.length !== versionedHashesHex.length) {
186
- throw Error(
187
- `Invalid engine_getBlobsV1 response length=${response.length} versionedHashes=${versionedHashesHex.length}`
188
- );
189
- }
190
-
191
- return response.map(deserializeBlobAndProofs);
192
- }
193
-
194
210
  async getBlobsV2(versionedHashes: VersionedHashes, buffers?: Uint8Array[]): Promise<BlobAndProofV2[] | null> {
195
211
  assertReqSizeLimit(versionedHashes.length, MAX_VERSIONED_HASHES);
196
212
  const versionedHashesHex = versionedHashes.map(bytesToData);
@@ -244,4 +260,13 @@ export class JsonRpcEngineTransport implements IEngineTransport {
244
260
  return {code, name: cv.name, version: cv.version, commit: strip0xPrefix(cv.commit)};
245
261
  });
246
262
  }
263
+
264
+ async getInclusionList(): Promise<bellatrix.Transactions> {
265
+ const method = "engine_getInclusionListV1";
266
+ const response = await this.rpc.fetchWithRetries<
267
+ EngineApiRpcReturnTypes[typeof method],
268
+ EngineApiRpcParamTypes[typeof method]
269
+ >({method, params: []}, getInclusionListOpts);
270
+ return deserializeInclusionList(response);
271
+ }
247
272
  }
@@ -1,4 +1,5 @@
1
1
  import crypto from "node:crypto";
2
+ import {SerializedList} from "@chainsafe/ssz";
2
3
  import {ChainConfig} from "@lodestar/config";
3
4
  import {
4
5
  BLOB_TX_TYPE,
@@ -137,10 +138,12 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
137
138
  engine_newPayloadV3: this.notifyNewPayload.bind(this),
138
139
  engine_newPayloadV4: this.notifyNewPayload.bind(this),
139
140
  engine_newPayloadV5: this.notifyNewPayload.bind(this),
141
+ engine_newPayloadV6: this.notifyNewPayload.bind(this),
140
142
  engine_forkchoiceUpdatedV1: this.notifyForkchoiceUpdate.bind(this),
141
143
  engine_forkchoiceUpdatedV2: this.notifyForkchoiceUpdate.bind(this),
142
144
  engine_forkchoiceUpdatedV3: this.notifyForkchoiceUpdate.bind(this),
143
145
  engine_forkchoiceUpdatedV4: this.notifyForkchoiceUpdate.bind(this),
146
+ engine_forkchoiceUpdatedV5: this.notifyForkchoiceUpdate.bind(this),
144
147
  engine_getPayloadV1: this.getPayloadV1.bind(this),
145
148
  engine_getPayloadV2: this.getPayloadV5.bind(this),
146
149
  engine_getPayloadV3: this.getPayloadV5.bind(this),
@@ -149,8 +152,8 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
149
152
  engine_getPayloadV6: this.getPayloadV5.bind(this),
150
153
  engine_getPayloadBodiesByHashV2: this.getPayloadBodiesByHashV2.bind(this),
151
154
  engine_getClientVersionV1: this.getClientVersionV1.bind(this),
152
- engine_getBlobsV1: this.getBlobs.bind(this),
153
155
  engine_getBlobsV2: this.getBlobsV2.bind(this),
156
+ engine_getInclusionListV1: this.getInclusionList.bind(this),
154
157
  };
155
158
  }
156
159
 
@@ -234,7 +237,13 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
234
237
  // IF the payload has been fully validated while processing the call
235
238
  // RETURN payload status from the Payload validation process
236
239
  // If validation succeeds, the response MUST contain {status: VALID, latestValidHash: payload.blockHash}
237
- return {status: ExecutionPayloadStatus.VALID, latestValidHash: blockHash, validationError: null};
240
+ // The mock does not check inclusion list constraints, so every payload satisfies them (PayloadStatusV2)
241
+ return {
242
+ status: ExecutionPayloadStatus.VALID,
243
+ latestValidHash: blockHash,
244
+ validationError: null,
245
+ inclusionListSatisfied: true,
246
+ };
238
247
  }
239
248
 
240
249
  /**
@@ -343,14 +352,14 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
343
352
  executionPayload.gasUsed = Math.floor(0.5 * INTEROP_GAS_LIMIT);
344
353
  executionPayload.timestamp = payloadAttributes.timestamp;
345
354
  executionPayload.blockHash = crypto.randomBytes(32);
346
- executionPayload.transactions = [];
355
+ const transactions: Uint8Array[] = [];
347
356
 
348
357
  // Between 0 and 4 transactions for all forks
349
358
  const eip1559TxCount = Math.round(4 * Math.random());
350
359
  for (let i = 0; i < eip1559TxCount; i++) {
351
360
  const tx = crypto.randomBytes(512);
352
361
  tx[0] = TX_TYPE_EIP1559;
353
- executionPayload.transactions.push(tx);
362
+ transactions.push(tx);
354
363
  }
355
364
 
356
365
  const commitments: deneb.KZGCommitment[] = [];
@@ -364,7 +373,7 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
364
373
  const blob = generateRandomBlob();
365
374
  const commitment = kzg.blobToKzgCommitment(blob);
366
375
  const {proofs: cellProofs} = kzg.computeCellsAndKzgProofs(blob);
367
- executionPayload.transactions.push(transactionForKzgCommitment(commitment));
376
+ transactions.push(transactionForKzgCommitment(commitment));
368
377
  commitments.push(commitment);
369
378
  blobs.push(blob);
370
379
  proofs.push(...cellProofs);
@@ -376,12 +385,13 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
376
385
  const blob = generateRandomBlob();
377
386
  const commitment = kzg.blobToKzgCommitment(blob);
378
387
  const proof = kzg.computeBlobKzgProof(blob, commitment);
379
- executionPayload.transactions.push(transactionForKzgCommitment(commitment));
388
+ transactions.push(transactionForKzgCommitment(commitment));
380
389
  commitments.push(commitment);
381
390
  blobs.push(blob);
382
391
  proofs.push(proof);
383
392
  }
384
393
  }
394
+ executionPayload.transactions = SerializedList.fromArray(transactions);
385
395
 
386
396
  if (ForkSeq[fork] >= ForkSeq.capella) {
387
397
  (executionPayload as ExecutionPayload<ForkPostCapella>).withdrawals = ssz.capella.Withdrawals.defaultValue();
@@ -409,7 +419,12 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
409
419
  // IF the payload is deemed VALID and the build process has begun
410
420
  // {payloadStatus: {status: VALID, latestValidHash: forkchoiceState.headBlockHash, validationError: null}, payloadId: buildProcessId}
411
421
  return {
412
- payloadStatus: {status: ExecutionPayloadStatus.VALID, latestValidHash: null, validationError: null},
422
+ payloadStatus: {
423
+ status: ExecutionPayloadStatus.VALID,
424
+ latestValidHash: null,
425
+ validationError: null,
426
+ inclusionListSatisfied: true,
427
+ },
413
428
  payloadId: String(payloadId as number),
414
429
  };
415
430
  }
@@ -418,7 +433,12 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
418
433
  // IF the payload is deemed VALID and a build process hasn't been started
419
434
  // {payloadStatus: {status: VALID, latestValidHash: forkchoiceState.headBlockHash, validationError: null}, payloadId: null}
420
435
  return {
421
- payloadStatus: {status: ExecutionPayloadStatus.VALID, latestValidHash: null, validationError: null},
436
+ payloadStatus: {
437
+ status: ExecutionPayloadStatus.VALID,
438
+ latestValidHash: null,
439
+ validationError: null,
440
+ inclusionListSatisfied: true,
441
+ },
422
442
  payloadId: null,
423
443
  };
424
444
  }
@@ -475,18 +495,16 @@ export class ExecutionEngineMockBackend implements JsonRpcBackend {
475
495
  return [{code: ClientCode.XX, name: "mock", version: "", commit: ""}];
476
496
  }
477
497
 
478
- private getBlobs(
479
- versionedHashes: EngineApiRpcParamTypes["engine_getBlobsV1"][0]
480
- ): EngineApiRpcReturnTypes["engine_getBlobsV1"] {
481
- return versionedHashes.map((_vh) => null);
482
- }
483
-
484
498
  private getBlobsV2(
485
499
  _versionedHashes: EngineApiRpcParamTypes["engine_getBlobsV2"][0]
486
500
  ): EngineApiRpcReturnTypes["engine_getBlobsV2"] {
487
501
  return null;
488
502
  }
489
503
 
504
+ private getInclusionList(): EngineApiRpcReturnTypes["engine_getInclusionListV1"] {
505
+ return [];
506
+ }
507
+
490
508
  private timestampToFork(timestamp: number): ForkPostBellatrix {
491
509
  if (timestamp >= this.gloasForkTimestamp) return ForkName.gloas;
492
510
  if (timestamp >= this.fuluForkTimestamp) return ForkName.fulu;
@@ -1,4 +1,6 @@
1
+ import {byteArrayEquals} from "@chainsafe/ssz";
1
2
  import {SLOTS_PER_EPOCH} from "@lodestar/params";
3
+ import {bellatrix} from "@lodestar/types";
2
4
  import {pruneSetToMax} from "@lodestar/utils";
3
5
  import {PayloadAttributesRpc} from "./types.js";
4
6
  import {DATA, QUANTITY} from "./utils.js";
@@ -17,13 +19,18 @@ export type WithdrawalV1 = {
17
19
  amount: QUANTITY;
18
20
  };
19
21
 
20
- type FcuAttributes = {headBlockHash: DATA; finalizedBlockHash: DATA} & Omit<PayloadAttributesRpc, "withdrawals">;
22
+ type FcuAttributes = {headBlockHash: DATA} & Omit<PayloadAttributesRpc, "withdrawals" | "inclusionListTransactions"> & {
23
+ inclusionListTransactions?: bellatrix.Transactions;
24
+ };
21
25
 
22
26
  export class PayloadIdCache {
23
- private readonly payloadIdByFcuAttributes = new Map<string, {payloadId: PayloadId; fullKey: string}>();
27
+ private readonly payloadIdByFcuAttributes = new Map<
28
+ string,
29
+ {payloadId: PayloadId; fullKey: string; inclusionListTransactions?: bellatrix.Transactions}
30
+ >();
24
31
 
25
- getFullKey({headBlockHash, finalizedBlockHash, timestamp, prevRandao, suggestedFeeRecipient}: FcuAttributes): string {
26
- return `${headBlockHash}-${finalizedBlockHash}-${timestamp}-${prevRandao}-${suggestedFeeRecipient}`;
32
+ getFullKey({headBlockHash, timestamp, prevRandao, suggestedFeeRecipient}: FcuAttributes): string {
33
+ return `${headBlockHash}-${timestamp}-${prevRandao}-${suggestedFeeRecipient}`;
27
34
  }
28
35
  getKey({timestamp}: Pick<FcuAttributes, "timestamp">): string {
29
36
  return timestamp;
@@ -37,7 +44,8 @@ export class PayloadIdCache {
37
44
  add(fcuAttributes: FcuAttributes, payloadId: PayloadId): void {
38
45
  const key = this.getKey(fcuAttributes);
39
46
  const fullKey = this.getFullKey(fcuAttributes);
40
- this.payloadIdByFcuAttributes.set(key, {payloadId, fullKey});
47
+ const {inclusionListTransactions} = fcuAttributes;
48
+ this.payloadIdByFcuAttributes.set(key, {payloadId, fullKey, inclusionListTransactions});
41
49
  }
42
50
 
43
51
  prune(): void {
@@ -49,6 +57,16 @@ export class PayloadIdCache {
49
57
  const key = this.getKey(fcuAttributes);
50
58
  const fullKey = this.getFullKey(fcuAttributes);
51
59
  const payloadInfo = this.payloadIdByFcuAttributes.get(key);
52
- return payloadInfo?.fullKey === fullKey ? payloadInfo.payloadId : undefined;
60
+ return payloadInfo?.fullKey === fullKey &&
61
+ isSameInclusionList(payloadInfo.inclusionListTransactions, fcuAttributes.inclusionListTransactions)
62
+ ? payloadInfo.payloadId
63
+ : undefined;
53
64
  }
54
65
  }
66
+
67
+ function isSameInclusionList(a?: bellatrix.Transactions, b?: bellatrix.Transactions): boolean {
68
+ if (a === undefined || b === undefined) {
69
+ return a === b;
70
+ }
71
+ return byteArrayEquals(a.bytes, b.bytes);
72
+ }
@@ -1,7 +1,16 @@
1
1
  import {Type} from "@chainsafe/ssz";
2
2
  import {CELLS_PER_EXT_BLOB, ForkName, ForkSeq, isForkPostBellatrix} from "@lodestar/params";
3
- import {ExecutionPayload, ExecutionRequests, Root, RootHex, capella, deneb, electra, gloas} from "@lodestar/types";
4
- import {BlobAndProof} from "@lodestar/types/deneb";
3
+ import {
4
+ ExecutionPayload,
5
+ ExecutionRequests,
6
+ Root,
7
+ RootHex,
8
+ bellatrix,
9
+ capella,
10
+ deneb,
11
+ electra,
12
+ gloas,
13
+ } from "@lodestar/types";
5
14
  import {BlobAndProofV2} from "@lodestar/types/fulu";
6
15
  import {EndTimer, LodestarError, fromHex, strip0xPrefix, toHex, toRootHex} from "@lodestar/utils";
7
16
  import {isValidBlobVersionedHashes} from "./blobVersionedHashes.js";
@@ -9,15 +18,16 @@ import {
9
18
  ClientCode,
10
19
  ClientVersion,
11
20
  ExecutionPayloadStatus,
21
+ ForkchoiceUpdatedResult,
12
22
  PayloadAttributes,
13
23
  PayloadId,
24
+ PayloadStatusResult,
14
25
  VersionedHashes,
15
26
  } from "./interface.js";
16
27
  import {JsonRpcHttpClientEventEmitter, ReqOpts} from "./jsonRpcHttpClient.js";
17
28
  import {EngineRestHttpClient, EngineRestResponseError} from "./restHttpClient.js";
18
29
  import {
19
30
  BlobsRequest,
20
- BlobsV1Response,
21
31
  BlobsV2Response,
22
32
  BodiesByHashRequest,
23
33
  BodiesResponseBellatrix,
@@ -47,7 +57,7 @@ import {
47
57
  PayloadStatusSsz,
48
58
  executionForkName,
49
59
  } from "./sszTypes.js";
50
- import {ForkchoiceUpdatedResult, GetPayloadResult, IEngineTransport, PayloadStatusResult} from "./transport.js";
60
+ import {GetPayloadResult, IEngineTransport} from "./transport.js";
51
61
  import {EngineTransportMetrics} from "./transportMetrics.js";
52
62
  import {
53
63
  ExecutionPayloadBodyV2,
@@ -78,7 +88,6 @@ const notifyNewPayloadOpts: ReqOpts = {routeId: "notifyNewPayload"};
78
88
  const forkchoiceUpdatedOpts: ReqOpts = {routeId: "forkchoiceUpdated"};
79
89
  const getPayloadOpts: ReqOpts = {routeId: "getPayload"};
80
90
  const getPayloadBodiesByHashOpts: ReqOpts = {routeId: "getPayloadBodiesByHash"};
81
- const getBlobsV1Opts: ReqOpts = {routeId: "getBlobsV1"};
82
91
  const getBlobsV2Opts: ReqOpts = {routeId: "getBlobsV2"};
83
92
  const getClientVersionOpts: ReqOpts = {routeId: "getClientVersion"};
84
93
  const getCapabilitiesOpts: ReqOpts = {routeId: "getCapabilities", retries: 0};
@@ -376,24 +385,6 @@ export class RestEngineTransport implements IEngineTransport {
376
385
  return bodies;
377
386
  }
378
387
 
379
- async getBlobsV1(versionedHashes: VersionedHashes): Promise<(BlobAndProof | null)[]> {
380
- assertReqSizeLimit(versionedHashes.length, this.limits.blobsMaxVersionedHashes);
381
- const res = await this.client.request(
382
- {method: "POST", path: "/blobs/v1", body: BlobsRequest.serialize({versionedHashes}), responseType: "ssz"},
383
- getBlobsV1Opts
384
- );
385
- // 204 means the EL cannot serve blobs at all, e.g. while syncing
386
- if (res.status === 204) {
387
- return versionedHashes.map(() => null);
388
- }
389
-
390
- const {entries} = deserializeResponse(BlobsV1Response, res.body, "getBlobsV1", this.metrics);
391
- if (entries.length !== versionedHashes.length) {
392
- throw Error(`Invalid blobs/v1 response length=${entries.length} versionedHashes=${versionedHashes.length}`);
393
- }
394
- return entries.map((entry) => (entry.available ? entry.contents : null));
395
- }
396
-
397
388
  /**
398
389
  * Blobs and proofs are views into the response body rather than copies, the response is all-or-nothing
399
390
  * so every byte of it is needed. The pooled buffers of the JSON-RPC transport are not used.
@@ -454,6 +445,10 @@ export class RestEngineTransport implements IEngineTransport {
454
445
  };
455
446
  });
456
447
  }
448
+
449
+ getInclusionList(): Promise<bellatrix.Transactions> {
450
+ throw Error("engine_getInclusionListV1 is not available over the REST engine API");
451
+ }
457
452
  }
458
453
 
459
454
  function toPayloadAttributesBellatrix(attributes: PayloadAttributes) {
@@ -253,14 +253,6 @@ export const BlobsRequest = new ContainerType(
253
253
  {typeName: "BlobsRequest"}
254
254
  );
255
255
 
256
- const BlobAndProofV1 = new ContainerType(
257
- {
258
- blob: ssz.deneb.Blob,
259
- proof: Bytes48,
260
- },
261
- {typeName: "BlobAndProofV1"}
262
- );
263
-
264
256
  const BlobAndProofV2 = new ContainerType(
265
257
  {
266
258
  blob: ssz.deneb.Blob,
@@ -274,7 +266,6 @@ function BlobsResponseType<T extends CompositeType<ValueOf<T>, CompositeView<T>,
274
266
  return new ContainerType({entries: new ListCompositeType(BlobEntry, MAX_BLOBS_REQUEST)}, {typeName: "BlobsResponse"});
275
267
  }
276
268
 
277
- export const BlobsV1Response = BlobsResponseType(BlobAndProofV1);
278
269
  export const BlobsV2Response = BlobsResponseType(BlobAndProofV2);
279
270
 
280
271
  const bellatrix = {
@@ -1,22 +1,17 @@
1
1
  import {ForkName} from "@lodestar/params";
2
- import {BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei} from "@lodestar/types";
3
- import {BlobAndProof} from "@lodestar/types/deneb";
2
+ import {BlobsBundle, ExecutionPayload, ExecutionRequests, Root, RootHex, Wei, bellatrix} from "@lodestar/types";
4
3
  import {BlobAndProofV2} from "@lodestar/types/fulu";
5
- import {ClientVersion, ExecutionPayloadStatus, PayloadAttributes, PayloadId, VersionedHashes} from "./interface.js";
4
+ import {
5
+ ClientVersion,
6
+ ForkchoiceUpdatedResult,
7
+ PayloadAttributes,
8
+ PayloadId,
9
+ PayloadStatusResult,
10
+ VersionedHashes,
11
+ } from "./interface.js";
6
12
  import {JsonRpcHttpClientEventEmitter} from "./jsonRpcHttpClient.js";
7
13
  import {ExecutionPayloadBodyV2} from "./types.js";
8
14
 
9
- export type PayloadStatusResult = {
10
- status: ExecutionPayloadStatus;
11
- latestValidHash: RootHex | null;
12
- validationError: string | null;
13
- };
14
-
15
- export type ForkchoiceUpdatedResult = {
16
- payloadStatus: PayloadStatusResult;
17
- payloadId: PayloadId | null;
18
- };
19
-
20
15
  export type GetPayloadResult = {
21
16
  executionPayload: ExecutionPayload;
22
17
  executionPayloadValue: Wei;
@@ -38,7 +33,8 @@ export interface IEngineTransport {
38
33
  executionPayload: ExecutionPayload,
39
34
  versionedHashes?: VersionedHashes,
40
35
  parentBeaconBlockRoot?: Root,
41
- executionRequests?: ExecutionRequests
36
+ executionRequests?: ExecutionRequests,
37
+ inclusionListTransactions?: bellatrix.Transactions
42
38
  ): Promise<PayloadStatusResult>;
43
39
 
44
40
  forkchoiceUpdated(
@@ -53,9 +49,9 @@ export interface IEngineTransport {
53
49
 
54
50
  getPayloadBodiesByHashV2(blockHashes: RootHex[]): Promise<(ExecutionPayloadBodyV2 | null)[]>;
55
51
 
56
- getBlobsV1(versionedHashes: VersionedHashes): Promise<(BlobAndProof | null)[]>;
57
-
58
52
  getBlobsV2(versionedHashes: VersionedHashes, buffers?: Uint8Array[]): Promise<BlobAndProofV2[] | null>;
59
53
 
60
54
  getClientVersion(clientVersion: ClientVersion): Promise<ClientVersion[]>;
55
+
56
+ getInclusionList(): Promise<bellatrix.Transactions>;
61
57
  }