@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
@@ -21,6 +21,8 @@ export enum ExecutionPayloadBidErrorCode {
21
21
  NO_MATCHING_PROPOSER_PREFERENCES = "EXECUTION_PAYLOAD_BID_ERROR_NO_MATCHING_PROPOSER_PREFERENCES",
22
22
  PROPOSER_PREFERENCES_FEE_RECIPIENT_MISMATCH = "EXECUTION_PAYLOAD_BID_ERROR_PROPOSER_PREFERENCES_FEE_RECIPIENT_MISMATCH",
23
23
  PROPOSER_PREFERENCES_GAS_LIMIT_MISMATCH = "EXECUTION_PAYLOAD_BID_ERROR_PROPOSER_PREFERENCES_GAS_LIMIT_MISMATCH",
24
+ INCLUSION_LIST_BITS_NOT_INCLUSIVE = "EXECUTION_PAYLOAD_BID_ERROR_INCLUSION_LIST_BITS_NOT_INCLUSIVE",
25
+ BEFORE_INCLUSION_LIST_DEADLINE = "EXECUTION_PAYLOAD_BID_ERROR_BEFORE_INCLUSION_LIST_DEADLINE",
24
26
  }
25
27
 
26
28
  export type ExecutionPayloadBidErrorType =
@@ -86,6 +88,16 @@ export type ExecutionPayloadBidErrorType =
86
88
  bidFeeRecipient: string;
87
89
  expectedFeeRecipient: string;
88
90
  }
91
+ | {
92
+ code: ExecutionPayloadBidErrorCode.INCLUSION_LIST_BITS_NOT_INCLUSIVE;
93
+ builderIndex: BuilderIndex;
94
+ slot: Slot;
95
+ }
96
+ | {
97
+ code: ExecutionPayloadBidErrorCode.BEFORE_INCLUSION_LIST_DEADLINE;
98
+ builderIndex: BuilderIndex;
99
+ slot: Slot;
100
+ }
89
101
  | {
90
102
  code: ExecutionPayloadBidErrorCode.PROPOSER_PREFERENCES_GAS_LIMIT_MISMATCH;
91
103
  builderIndex: BuilderIndex;
@@ -12,6 +12,7 @@ export enum ExecutionPayloadEnvelopeErrorCode {
12
12
  BUILDER_INDEX_MISMATCH = "EXECUTION_PAYLOAD_ENVELOPE_ERROR_BUILDER_INDEX_MISMATCH",
13
13
  BLOCK_HASH_MISMATCH = "EXECUTION_PAYLOAD_ENVELOPE_ERROR_BLOCK_HASH_MISMATCH",
14
14
  EXECUTION_REQUESTS_ROOT_MISMATCH = "EXECUTION_PAYLOAD_ENVELOPE_ERROR_EXECUTION_REQUESTS_ROOT_MISMATCH",
15
+ TOO_MANY_TRANSACTIONS = "EXECUTION_PAYLOAD_ENVELOPE_ERROR_TOO_MANY_TRANSACTIONS",
15
16
  INVALID_SIGNATURE = "EXECUTION_PAYLOAD_ENVELOPE_ERROR_INVALID_SIGNATURE",
16
17
  PAYLOAD_ENVELOPE_INPUT_MISSING = "EXECUTION_PAYLOAD_ENVELOPE_ERROR_PAYLOAD_ENVELOPE_INPUT_MISSING",
17
18
  }
@@ -54,6 +55,13 @@ export type ExecutionPayloadEnvelopeErrorType =
54
55
  envelopeRequestsRoot: RootHex;
55
56
  bidRequestsRoot: RootHex;
56
57
  }
58
+ | {
59
+ code: ExecutionPayloadEnvelopeErrorCode.TOO_MANY_TRANSACTIONS;
60
+ slot: Slot;
61
+ root: RootHex;
62
+ transactionCount: number;
63
+ maxTransactionCount: number;
64
+ }
57
65
  | {code: ExecutionPayloadEnvelopeErrorCode.INVALID_SIGNATURE; slot: Slot; root: RootHex}
58
66
  | {code: ExecutionPayloadEnvelopeErrorCode.PAYLOAD_ENVELOPE_INPUT_MISSING; blockRoot: RootHex};
59
67
 
@@ -0,0 +1,38 @@
1
+ import {Epoch, RootHex, Slot, ValidatorIndex} from "@lodestar/types";
2
+ import {GossipActionError} from "./gossipValidation.js";
3
+
4
+ export enum InclusionListErrorCode {
5
+ EMPTY_TRANSACTIONS = "INCLUSION_LIST_ERROR_EMPTY_TRANSACTIONS",
6
+ MAXIMUM_SIZE_EXCEEDED = "INCLUSION_LIST_ERROR_MAXIMUM_SIZE_EXCEEDED",
7
+ EMPTY_TRANSACTION = "INCLUSION_LIST_ERROR_EMPTY_TRANSACTION",
8
+ INVALID_SLOT = "INCLUSION_LIST_ERROR_INVALID_SLOT",
9
+ MORE_THAN_TWO = "INCLUSION_LIST_ERROR_MORE_THAN_TWO",
10
+ VALIDATOR_NOT_IN_COMMITTEE = "INCLUSION_LIST_ERROR_VALIDATOR_NOT_IN_COMMITTEE",
11
+ UNKNOWN_DEPENDENT_ROOT = "INCLUSION_LIST_ERROR_UNKNOWN_DEPENDENT_ROOT",
12
+ INVALID_DEPENDENT_ROOT_SLOT = "INCLUSION_LIST_ERROR_INVALID_DEPENDENT_ROOT_SLOT",
13
+ INVALID_DEPENDENT_ROOT = "INCLUSION_LIST_ERROR_INVALID_DEPENDENT_ROOT",
14
+ MISSING_SHUFFLING = "INCLUSION_LIST_ERROR_MISSING_SHUFFLING",
15
+ INVALID_SIGNATURE = "INCLUSION_LIST_ERROR_INVALID_SIGNATURE",
16
+ PRE_HEZE_SLOT = "INCLUSION_LIST_ERROR_PRE_HEZE_SLOT",
17
+ }
18
+
19
+ export type InclusionListErrorType =
20
+ | {code: InclusionListErrorCode.EMPTY_TRANSACTIONS}
21
+ | {code: InclusionListErrorCode.MAXIMUM_SIZE_EXCEEDED; totalBytes: number; maxBytes: number}
22
+ | {code: InclusionListErrorCode.EMPTY_TRANSACTION; transactionIndex: number}
23
+ | {code: InclusionListErrorCode.INVALID_SLOT; inclusionListSlot: Slot; currentSlot: Slot}
24
+ | {code: InclusionListErrorCode.MORE_THAN_TWO; validatorIndex: ValidatorIndex}
25
+ | {code: InclusionListErrorCode.VALIDATOR_NOT_IN_COMMITTEE; validatorIndex: ValidatorIndex}
26
+ | {code: InclusionListErrorCode.UNKNOWN_DEPENDENT_ROOT; dependentRoot: RootHex}
27
+ | {
28
+ code: InclusionListErrorCode.INVALID_DEPENDENT_ROOT_SLOT;
29
+ dependentRoot: RootHex;
30
+ dependentSlot: Slot;
31
+ maxSlot: Slot;
32
+ }
33
+ | {code: InclusionListErrorCode.INVALID_DEPENDENT_ROOT; dependentRoot: RootHex; epoch: Epoch}
34
+ | {code: InclusionListErrorCode.MISSING_SHUFFLING; dependentRoot: RootHex; epoch: Epoch}
35
+ | {code: InclusionListErrorCode.INVALID_SIGNATURE}
36
+ | {code: InclusionListErrorCode.PRE_HEZE_SLOT; inclusionListSlot: Slot};
37
+
38
+ export class InclusionListError extends GossipActionError<InclusionListErrorType> {}
@@ -1,6 +1,5 @@
1
1
  export * from "./attestationError.js";
2
2
  export * from "./attesterSlashingError.js";
3
- export * from "./blobSidecarError.js";
4
3
  export * from "./blockError.js";
5
4
  export * from "./blsToExecutionChangeError.js";
6
5
  export * from "./dataColumnSidecarError.js";
@@ -8,6 +7,7 @@ export * from "./envelopeReconstructionError.js";
8
7
  export * from "./executionPayloadBid.js";
9
8
  export * from "./executionPayloadEnvelope.js";
10
9
  export * from "./gossipValidation.js";
10
+ export * from "./inclusionList.js";
11
11
  export * from "./payloadAttestation.js";
12
12
  export * from "./proposerPreferences.js";
13
13
  export * from "./proposerSlashingError.js";
@@ -34,6 +34,17 @@ export type ForkChoiceOpts = RawForkChoiceOpts & {
34
34
  export enum ForkchoiceCaller {
35
35
  prepareNextSlot = "prepare_next_slot",
36
36
  importBlock = "import_block",
37
+ executionInvalid = "execution_invalid",
38
+ }
39
+
40
+ /**
41
+ * Where an execution engine INVALID verdict comes from. Only `blockSegment` verdicts are about the payload the engine
42
+ * just processed and keep the consensus failure semantics in fork choice, the others are applied leniently.
43
+ */
44
+ export enum ExecutionInvalidSource {
45
+ forkchoiceUpdated = "forkchoice_updated",
46
+ newPayload = "new_payload",
47
+ blockSegment = "block_segment",
37
48
  }
38
49
 
39
50
  /**
@@ -0,0 +1,183 @@
1
+ import {ExecutionStatus, IForkChoice, LVHInvalidResponse} from "@lodestar/fork-choice";
2
+ import {ForkName, ForkPostFulu} from "@lodestar/params";
3
+ import {RootHex, bellatrix} from "@lodestar/types";
4
+ import {BlobAndProofV2} from "@lodestar/types/fulu";
5
+ import {Logger} from "@lodestar/utils";
6
+ import {ExecutionPayloadBodyV2} from "../execution/engine/types.js";
7
+ import {DATA} from "../execution/engine/utils.js";
8
+ import {
9
+ ClientVersion,
10
+ ExecutionEngineState,
11
+ ExecutionPayloadStatus,
12
+ ForkchoiceUpdatedResult,
13
+ IExecutionEngine,
14
+ PayloadAttributes,
15
+ PayloadId,
16
+ PayloadIdCache,
17
+ VersionedHashes,
18
+ } from "../execution/index.js";
19
+ import {Metrics} from "../metrics/index.js";
20
+ import {ExecutionInvalidSource} from "./forkChoice/index.js";
21
+
22
+ export type ForkChoiceExecutionEngineModules = {
23
+ forkChoice: IForkChoice;
24
+ /** Recompute and switch the chain head, fork choice is already updated when this runs */
25
+ recomputeHeadAfterELInvalidResponse: () => void;
26
+ logger: Logger;
27
+ metrics: Metrics | null;
28
+ };
29
+
30
+ /**
31
+ * The only handle on the execution engine. Payloads are imported optimistically, so every engine verdict that can
32
+ * change fork choice is applied here.
33
+ */
34
+ export class ForkChoiceExecutionEngine {
35
+ private readonly forkChoice: IForkChoice;
36
+ private readonly recomputeHeadAfterELInvalidResponse: () => void;
37
+ private readonly logger: Logger;
38
+ private readonly metrics: Metrics | null;
39
+
40
+ constructor(
41
+ private readonly engine: IExecutionEngine,
42
+ modules: ForkChoiceExecutionEngineModules
43
+ ) {
44
+ this.forkChoice = modules.forkChoice;
45
+ this.recomputeHeadAfterELInvalidResponse = modules.recomputeHeadAfterELInvalidResponse;
46
+ this.logger = modules.logger;
47
+ this.metrics = modules.metrics;
48
+ }
49
+
50
+ get state(): ExecutionEngineState {
51
+ return this.engine.state;
52
+ }
53
+
54
+ get clientVersion(): ClientVersion | null | undefined {
55
+ return this.engine.clientVersion;
56
+ }
57
+
58
+ get payloadIdCache(): PayloadIdCache {
59
+ return this.engine.payloadIdCache;
60
+ }
61
+
62
+ notifyNewPayload(
63
+ ...args: Parameters<IExecutionEngine["notifyNewPayload"]>
64
+ ): ReturnType<IExecutionEngine["notifyNewPayload"]> {
65
+ return this.engine.notifyNewPayload(...args);
66
+ }
67
+
68
+ /**
69
+ * `headBlockRoot` is the root of the node whose payload hash is sent as `headBlockHash`, captured by the caller
70
+ * before the call: root and hash identify the exact fork choice node, gloas variant included.
71
+ *
72
+ * The verdict is applied to fork choice before returning. An INVALID verdict throws when preparing a payload so
73
+ * block production fails, otherwise it resolves to null.
74
+ */
75
+ async notifyForkchoiceUpdate(
76
+ fork: ForkName,
77
+ headBlockRoot: RootHex,
78
+ headBlockHash: RootHex,
79
+ safeBlockHash: RootHex,
80
+ finalizedBlockHash: RootHex,
81
+ payloadAttributes?: PayloadAttributes
82
+ ): Promise<PayloadId | null> {
83
+ const result = await this.engine.notifyForkchoiceUpdate(
84
+ fork,
85
+ headBlockHash,
86
+ safeBlockHash,
87
+ finalizedBlockHash,
88
+ payloadAttributes
89
+ );
90
+ this.applyForkchoiceUpdatedResult(headBlockRoot, headBlockHash, result);
91
+
92
+ if (result.payloadStatus.status === ExecutionPayloadStatus.INVALID) {
93
+ if (payloadAttributes) {
94
+ throw Error(`Invalid prepare payload, validationError=${result.payloadStatus.validationError ?? ""}`);
95
+ }
96
+ return null;
97
+ }
98
+ return result.payloadId;
99
+ }
100
+
101
+ getPayload(...args: Parameters<IExecutionEngine["getPayload"]>): ReturnType<IExecutionEngine["getPayload"]> {
102
+ return this.engine.getPayload(...args);
103
+ }
104
+
105
+ getInclusionList(): Promise<bellatrix.Transactions> {
106
+ return this.engine.getInclusionList();
107
+ }
108
+
109
+ getPayloadBodiesByHashV2(blockHashes: DATA[]): Promise<(ExecutionPayloadBodyV2 | null)[]> {
110
+ return this.engine.getPayloadBodiesByHashV2(blockHashes);
111
+ }
112
+
113
+ getBlobs(
114
+ fork: ForkPostFulu,
115
+ versionedHashes: VersionedHashes,
116
+ buffers?: Uint8Array[]
117
+ ): Promise<BlobAndProofV2[] | null> {
118
+ return this.engine.getBlobs(fork, versionedHashes, buffers);
119
+ }
120
+
121
+ /**
122
+ * Apply an execution engine INVALID verdict to fork choice and move the chain head off the invalid chain
123
+ */
124
+ invalidateExecutionPayloads(lvh: LVHInvalidResponse, source: ExecutionInvalidSource): void {
125
+ const logCtx = {
126
+ source,
127
+ blockRoot: lvh.invalidateFromParentBlockRoot,
128
+ blockHash: lvh.invalidateFromParentBlockHash,
129
+ latestValidHash: lvh.latestValidExecHash ?? "null",
130
+ };
131
+ const applied = this.forkChoice.validateLatestHash(lvh, {strict: source === ExecutionInvalidSource.blockSegment});
132
+ if (!applied) {
133
+ this.logger.warn("Execution engine INVALID verdict not applied to fork choice", logCtx);
134
+ return;
135
+ }
136
+ this.metrics?.forkChoice.executionInvalidations.inc({source});
137
+ this.logger.warn("Invalidated execution payloads in fork choice", logCtx);
138
+
139
+ try {
140
+ this.recomputeHeadAfterELInvalidResponse();
141
+ } catch (e) {
142
+ this.logger.error("Error recomputing head after execution payload invalidation", logCtx, e as Error);
143
+ }
144
+ }
145
+
146
+ private applyForkchoiceUpdatedResult(
147
+ headBlockRoot: RootHex,
148
+ headBlockHash: RootHex,
149
+ result: ForkchoiceUpdatedResult
150
+ ): void {
151
+ const {status, latestValidHash, validationError} = result.payloadStatus;
152
+ const executionStatus = this.forkChoice.getBlockHexAndBlockHash(headBlockRoot, headBlockHash)?.executionStatus;
153
+ try {
154
+ if (status === ExecutionPayloadStatus.INVALID) {
155
+ if (executionStatus === ExecutionStatus.Invalid) {
156
+ return;
157
+ }
158
+ this.logger.error("Execution engine reported INVALID forkchoice head", {
159
+ headBlockRoot,
160
+ headBlockHash,
161
+ latestValidHash: latestValidHash ?? "null",
162
+ validationError: validationError ?? "",
163
+ });
164
+ this.invalidateExecutionPayloads(
165
+ {
166
+ executionStatus: ExecutionStatus.Invalid,
167
+ latestValidExecHash: latestValidHash,
168
+ invalidateFromParentBlockRoot: headBlockRoot,
169
+ invalidateFromParentBlockHash: headBlockHash,
170
+ },
171
+ ExecutionInvalidSource.forkchoiceUpdated
172
+ );
173
+ } else if (status === ExecutionPayloadStatus.VALID && executionStatus === ExecutionStatus.Syncing) {
174
+ this.forkChoice.validateLatestHash(
175
+ {executionStatus: ExecutionStatus.Valid, latestValidExecHash: headBlockHash, blockRoot: headBlockRoot},
176
+ {strict: false}
177
+ );
178
+ }
179
+ } catch (e) {
180
+ this.logger.error("Error applying forkchoice update result", {headBlockRoot, headBlockHash, status}, e as Error);
181
+ }
182
+ }
183
+ }
@@ -1,7 +1,7 @@
1
- import {type PubkeyCache} from "@chainsafe/lodestar-z/pubkeys";
2
1
  import {Type} from "@chainsafe/ssz";
3
2
  import {BeaconConfig} from "@lodestar/config";
4
3
  import {CheckpointWithHex, IForkChoice, ProtoBlock} from "@lodestar/fork-choice";
4
+ import {type PubkeyCache} from "@lodestar/native/pubkeys";
5
5
  import {EpochShuffling, IBeaconStateView} from "@lodestar/state-transition";
6
6
  import {
7
7
  BeaconBlock,
@@ -25,7 +25,7 @@ import {
25
25
  } from "@lodestar/types";
26
26
  import {Logger} from "@lodestar/utils";
27
27
  import {BuilderApiClient} from "../execution/builder/apiClient.js";
28
- import {IExecutionBuilder, IExecutionEngine} from "../execution/index.js";
28
+ import {IExecutionBuilder} from "../execution/index.js";
29
29
  import {Metrics} from "../metrics/metrics.js";
30
30
  import {BufferPool} from "../util/bufferPool.js";
31
31
  import {IClock} from "../util/clock.js";
@@ -42,6 +42,7 @@ import {BuilderCircuitBreaker} from "./builderCircuitBreaker.js";
42
42
  import {ColumnReconstructionTracker} from "./ColumnReconstructionTracker.js";
43
43
  import {ChainEventEmitter} from "./emitter.js";
44
44
  import {ForkchoiceCaller} from "./forkChoice/index.js";
45
+ import {ForkChoiceExecutionEngine} from "./forkChoiceExecutionEngine.js";
45
46
  import {GetBlobsTracker} from "./GetBlobsTracker.js";
46
47
  import {LightClientServer} from "./lightClient/index.js";
47
48
  import {AggregatedAttestationPool} from "./opPools/aggregatedAttestationPool.js";
@@ -49,14 +50,17 @@ import {
49
50
  AttestationPool,
50
51
  DeferredVoluntaryExitPool,
51
52
  ExecutionPayloadBidPool,
53
+ InclusionListStore,
52
54
  OpPool,
53
55
  PayloadAttestationPool,
54
56
  ProposerPreferencesPool,
57
+ SingleAttestationPool,
55
58
  SyncCommitteeMessagePool,
56
59
  SyncContributionAndProofPool,
57
60
  } from "./opPools/index.js";
58
61
  import {IChainOptions} from "./options.js";
59
62
  import {AssembledBlockType, BlockAttributes, BlockType, ProduceResult} from "./produceBlock/produceBlockBody.js";
63
+ import {ProposerTracker} from "./proposerTracker.js";
60
64
  import {IStateRegenerator, RegenCaller} from "./regen/index.js";
61
65
  import {ReprocessController} from "./reprocess.js";
62
66
  import {
@@ -76,8 +80,7 @@ import {PayloadEnvelopeInput, SeenPayloadEnvelopeInput} from "./seenCache/seenPa
76
80
  import {ShufflingCache} from "./shufflingCache.js";
77
81
  import {ValidatorMonitor} from "./validatorMonitor.js";
78
82
 
79
- export {BlockType, type AssembledBlockType};
80
- export {type ProposerPreparationData};
83
+ export {type AssembledBlockType, BlockType, type ProposerPreparationData};
81
84
  export type BlockHash = RootHex;
82
85
 
83
86
  export type StateGetOpts = {
@@ -98,7 +101,7 @@ export interface IBeaconChain {
98
101
  readonly genesisTime: UintNum64;
99
102
  readonly genesisValidatorsRoot: Root;
100
103
  earliestAvailableSlot: Slot;
101
- readonly executionEngine: IExecutionEngine;
104
+ readonly executionEngine: ForkChoiceExecutionEngine;
102
105
  readonly executionBuilder?: IExecutionBuilder;
103
106
  readonly builderCircuitBreaker: BuilderCircuitBreaker;
104
107
  readonly builderApiClient: BuilderApiClient;
@@ -126,11 +129,14 @@ export interface IBeaconChain {
126
129
  // Ops pool
127
130
  readonly attestationPool: AttestationPool;
128
131
  readonly aggregatedAttestationPool: AggregatedAttestationPool;
132
+ readonly singleAttestationPool: SingleAttestationPool;
133
+ readonly proposerTracker: ProposerTracker;
129
134
  readonly syncCommitteeMessagePool: SyncCommitteeMessagePool;
130
135
  readonly syncContributionAndProofPool: SyncContributionAndProofPool;
131
136
  readonly executionPayloadBidPool: ExecutionPayloadBidPool;
132
137
  readonly payloadAttestationPool: PayloadAttestationPool;
133
138
  readonly proposerPreferencesPool: ProposerPreferencesPool;
139
+ readonly inclusionListStore: InclusionListStore;
134
140
  readonly opPool: OpPool;
135
141
  readonly deferredVoluntaryExitPool: DeferredVoluntaryExitPool;
136
142
 
@@ -229,7 +235,6 @@ export interface IBeaconChain {
229
235
  root: RootHex
230
236
  ): Promise<{block: SignedBeaconBlock; executionOptimistic: boolean; finalized: boolean} | null>;
231
237
  getBlobSidecars(blockSlot: Slot, blockRootHex: string): Promise<deneb.BlobSidecars | null>;
232
- getSerializedBlobSidecars(blockSlot: Slot, blockRootHex: string): Promise<Uint8Array | null>;
233
238
  getDataColumnSidecars(blockSlot: Slot, blockRootHex: string): Promise<DataColumnSidecar[]>;
234
239
  getSerializedDataColumnSidecars(
235
240
  blockSlot: Slot,