@lodestar/beacon-node 1.42.0-dev.5f2fffc2ce → 1.42.0-dev.6fa48cb5f2

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 (440) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +36 -17
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/pool/index.js +1 -1
  5. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  6. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  7. package/lib/api/impl/beacon/state/index.js +27 -32
  8. package/lib/api/impl/beacon/state/index.js.map +1 -1
  9. package/lib/api/impl/beacon/state/utils.d.ts +4 -4
  10. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  11. package/lib/api/impl/beacon/state/utils.js +7 -10
  12. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  13. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  14. package/lib/api/impl/lodestar/index.js +4 -6
  15. package/lib/api/impl/lodestar/index.js.map +1 -1
  16. package/lib/api/impl/proof/index.d.ts.map +1 -1
  17. package/lib/api/impl/proof/index.js +2 -6
  18. package/lib/api/impl/proof/index.js.map +1 -1
  19. package/lib/api/impl/validator/index.d.ts.map +1 -1
  20. package/lib/api/impl/validator/index.js +27 -27
  21. package/lib/api/impl/validator/index.js.map +1 -1
  22. package/lib/api/impl/validator/utils.d.ts +2 -2
  23. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  24. package/lib/api/impl/validator/utils.js +3 -3
  25. package/lib/api/impl/validator/utils.js.map +1 -1
  26. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  27. package/lib/chain/archiveStore/archiveStore.js +1 -0
  28. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  29. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +3 -7
  30. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  31. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +8 -26
  32. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  33. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts +2 -2
  34. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
  35. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +1 -0
  36. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  37. package/lib/chain/archiveStore/historicalState/types.d.ts +2 -0
  38. package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -1
  39. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  40. package/lib/chain/archiveStore/historicalState/worker.js +1 -3
  41. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  42. package/lib/chain/archiveStore/interface.d.ts +1 -0
  43. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  44. package/lib/chain/balancesCache.d.ts +2 -2
  45. package/lib/chain/balancesCache.d.ts.map +1 -1
  46. package/lib/chain/balancesCache.js +4 -4
  47. package/lib/chain/balancesCache.js.map +1 -1
  48. package/lib/chain/blocks/blockInput/types.d.ts +4 -3
  49. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  50. package/lib/chain/blocks/blockInput/types.js +1 -0
  51. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  52. package/lib/chain/blocks/importBlock.d.ts +3 -3
  53. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  54. package/lib/chain/blocks/importBlock.js +27 -11
  55. package/lib/chain/blocks/importBlock.js.map +1 -1
  56. package/lib/chain/blocks/importExecutionPayload.d.ts +48 -0
  57. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -0
  58. package/lib/chain/blocks/importExecutionPayload.js +158 -0
  59. package/lib/chain/blocks/importExecutionPayload.js.map +1 -0
  60. package/lib/chain/blocks/index.js +1 -1
  61. package/lib/chain/blocks/index.js.map +1 -1
  62. package/lib/chain/blocks/payloadEnvelopeInput/index.d.ts +3 -0
  63. package/lib/chain/blocks/payloadEnvelopeInput/index.d.ts.map +1 -0
  64. package/lib/chain/blocks/payloadEnvelopeInput/index.js +3 -0
  65. package/lib/chain/blocks/payloadEnvelopeInput/index.js.map +1 -0
  66. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +80 -0
  67. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -0
  68. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +248 -0
  69. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -0
  70. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +29 -0
  71. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -0
  72. package/lib/chain/blocks/payloadEnvelopeInput/types.js +11 -0
  73. package/lib/chain/blocks/payloadEnvelopeInput/types.js.map +1 -0
  74. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +15 -0
  75. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -0
  76. package/lib/chain/blocks/payloadEnvelopeProcessor.js +46 -0
  77. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -0
  78. package/lib/chain/blocks/types.d.ts +9 -2
  79. package/lib/chain/blocks/types.d.ts.map +1 -1
  80. package/lib/chain/blocks/types.js.map +1 -1
  81. package/lib/chain/blocks/utils/checkpoint.d.ts +2 -2
  82. package/lib/chain/blocks/utils/checkpoint.d.ts.map +1 -1
  83. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  84. package/lib/chain/blocks/verifyBlock.d.ts +2 -2
  85. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  86. package/lib/chain/blocks/verifyBlock.js +4 -4
  87. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  88. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +3 -3
  89. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  90. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +3 -3
  91. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  92. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -2
  93. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  94. package/lib/chain/blocks/verifyBlocksSignatures.js +1 -1
  95. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  96. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +3 -3
  97. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  98. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +3 -3
  99. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  100. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts +12 -0
  101. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts.map +1 -0
  102. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js +40 -0
  103. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js.map +1 -0
  104. package/lib/chain/chain.d.ts +19 -14
  105. package/lib/chain/chain.d.ts.map +1 -1
  106. package/lib/chain/chain.js +75 -42
  107. package/lib/chain/chain.js.map +1 -1
  108. package/lib/chain/emitter.d.ts +2 -2
  109. package/lib/chain/emitter.d.ts.map +1 -1
  110. package/lib/chain/errors/blockError.d.ts +4 -4
  111. package/lib/chain/errors/blockError.d.ts.map +1 -1
  112. package/lib/chain/errors/executionPayloadEnvelope.d.ts +12 -2
  113. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  114. package/lib/chain/errors/executionPayloadEnvelope.js +3 -1
  115. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  116. package/lib/chain/forkChoice/index.d.ts +4 -4
  117. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  118. package/lib/chain/forkChoice/index.js +27 -33
  119. package/lib/chain/forkChoice/index.js.map +1 -1
  120. package/lib/chain/initState.d.ts +2 -2
  121. package/lib/chain/initState.d.ts.map +1 -1
  122. package/lib/chain/initState.js +1 -1
  123. package/lib/chain/initState.js.map +1 -1
  124. package/lib/chain/interface.d.ts +17 -15
  125. package/lib/chain/interface.d.ts.map +1 -1
  126. package/lib/chain/lightClient/index.d.ts +2 -2
  127. package/lib/chain/lightClient/index.d.ts.map +1 -1
  128. package/lib/chain/lightClient/index.js +4 -4
  129. package/lib/chain/lightClient/index.js.map +1 -1
  130. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +6 -6
  131. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  132. package/lib/chain/opPools/aggregatedAttestationPool.js +10 -13
  133. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  134. package/lib/chain/opPools/opPool.d.ts +3 -3
  135. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  136. package/lib/chain/opPools/opPool.js +7 -7
  137. package/lib/chain/opPools/opPool.js.map +1 -1
  138. package/lib/chain/opPools/utils.d.ts +2 -2
  139. package/lib/chain/opPools/utils.d.ts.map +1 -1
  140. package/lib/chain/opPools/utils.js +2 -2
  141. package/lib/chain/opPools/utils.js.map +1 -1
  142. package/lib/chain/options.d.ts +1 -0
  143. package/lib/chain/options.d.ts.map +1 -1
  144. package/lib/chain/options.js +1 -0
  145. package/lib/chain/options.js.map +1 -1
  146. package/lib/chain/prepareNextSlot.d.ts +2 -2
  147. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  148. package/lib/chain/prepareNextSlot.js +3 -3
  149. package/lib/chain/prepareNextSlot.js.map +1 -1
  150. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +4 -4
  151. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  152. package/lib/chain/produceBlock/computeNewStateRoot.js +8 -4
  153. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  154. package/lib/chain/produceBlock/produceBlockBody.d.ts +5 -5
  155. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  156. package/lib/chain/produceBlock/produceBlockBody.js +13 -17
  157. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  158. package/lib/chain/regen/interface.d.ts +15 -13
  159. package/lib/chain/regen/interface.d.ts.map +1 -1
  160. package/lib/chain/regen/interface.js +2 -0
  161. package/lib/chain/regen/interface.js.map +1 -1
  162. package/lib/chain/regen/queued.d.ts +14 -14
  163. package/lib/chain/regen/queued.d.ts.map +1 -1
  164. package/lib/chain/regen/queued.js.map +1 -1
  165. package/lib/chain/regen/regen.d.ts +6 -5
  166. package/lib/chain/regen/regen.d.ts.map +1 -1
  167. package/lib/chain/regen/regen.js +6 -6
  168. package/lib/chain/regen/regen.js.map +1 -1
  169. package/lib/chain/seenCache/index.d.ts +1 -1
  170. package/lib/chain/seenCache/index.d.ts.map +1 -1
  171. package/lib/chain/seenCache/index.js +1 -1
  172. package/lib/chain/seenCache/index.js.map +1 -1
  173. package/lib/chain/seenCache/seenGossipBlockInput.js +2 -2
  174. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  175. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +38 -0
  176. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -0
  177. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +76 -0
  178. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -0
  179. package/lib/chain/serializeState.d.ts +2 -2
  180. package/lib/chain/serializeState.d.ts.map +1 -1
  181. package/lib/chain/serializeState.js +1 -1
  182. package/lib/chain/serializeState.js.map +1 -1
  183. package/lib/chain/shufflingCache.d.ts +2 -2
  184. package/lib/chain/shufflingCache.d.ts.map +1 -1
  185. package/lib/chain/shufflingCache.js +3 -4
  186. package/lib/chain/shufflingCache.js.map +1 -1
  187. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +6 -6
  188. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  189. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  190. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +11 -11
  191. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  192. package/lib/chain/stateCache/persistentCheckpointsCache.js +12 -16
  193. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  194. package/lib/chain/stateCache/types.d.ts +14 -14
  195. package/lib/chain/stateCache/types.d.ts.map +1 -1
  196. package/lib/chain/stateCache/types.js.map +1 -1
  197. package/lib/chain/validation/attesterSlashing.js +3 -3
  198. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  199. package/lib/chain/validation/blobSidecar.js +1 -1
  200. package/lib/chain/validation/blobSidecar.js.map +1 -1
  201. package/lib/chain/validation/block.d.ts.map +1 -1
  202. package/lib/chain/validation/block.js +3 -3
  203. package/lib/chain/validation/block.js.map +1 -1
  204. package/lib/chain/validation/blsToExecutionChange.js +2 -2
  205. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  206. package/lib/chain/validation/dataColumnSidecar.js +1 -1
  207. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  208. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  209. package/lib/chain/validation/executionPayloadBid.js +4 -4
  210. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  211. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  212. package/lib/chain/validation/executionPayloadEnvelope.js +29 -19
  213. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  214. package/lib/chain/validation/lightClientFinalityUpdate.js +1 -1
  215. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  216. package/lib/chain/validation/lightClientOptimisticUpdate.js +1 -1
  217. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  218. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
  219. package/lib/chain/validation/payloadAttestationMessage.js +1 -2
  220. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  221. package/lib/chain/validation/proposerSlashing.js +1 -1
  222. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  223. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -2
  224. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  225. package/lib/chain/validation/signatureSets/contributionAndProof.js +1 -1
  226. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  227. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -2
  228. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  229. package/lib/chain/validation/signatureSets/syncCommittee.js +1 -1
  230. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  231. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -2
  232. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  233. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  234. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -2
  235. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  236. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +1 -1
  237. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  238. package/lib/chain/validation/syncCommittee.d.ts +4 -4
  239. package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
  240. package/lib/chain/validation/syncCommittee.js +13 -12
  241. package/lib/chain/validation/syncCommittee.js.map +1 -1
  242. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  243. package/lib/chain/validation/syncCommitteeContributionAndProof.js +1 -1
  244. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  245. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
  246. package/lib/chain/validation/voluntaryExit.js +3 -3
  247. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  248. package/lib/chain/validatorMonitor.d.ts +5 -4
  249. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  250. package/lib/chain/validatorMonitor.js +13 -8
  251. package/lib/chain/validatorMonitor.js.map +1 -1
  252. package/lib/execution/engine/interface.d.ts +2 -2
  253. package/lib/metrics/metrics/lodestar.d.ts +40 -4
  254. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  255. package/lib/metrics/metrics/lodestar.js +93 -15
  256. package/lib/metrics/metrics/lodestar.js.map +1 -1
  257. package/lib/network/gossip/encoding.d.ts.map +1 -1
  258. package/lib/network/gossip/encoding.js +15 -0
  259. package/lib/network/gossip/encoding.js.map +1 -1
  260. package/lib/network/gossip/topic.d.ts +727 -0
  261. package/lib/network/gossip/topic.d.ts.map +1 -1
  262. package/lib/network/interface.d.ts +4 -2
  263. package/lib/network/interface.d.ts.map +1 -1
  264. package/lib/network/libp2p/index.d.ts.map +1 -1
  265. package/lib/network/libp2p/index.js +5 -0
  266. package/lib/network/libp2p/index.js.map +1 -1
  267. package/lib/network/network.d.ts +4 -2
  268. package/lib/network/network.d.ts.map +1 -1
  269. package/lib/network/network.js +11 -5
  270. package/lib/network/network.js.map +1 -1
  271. package/lib/network/processor/extractSlotRootFns.d.ts +1 -1
  272. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
  273. package/lib/network/processor/extractSlotRootFns.js +15 -5
  274. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  275. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  276. package/lib/network/processor/gossipHandlers.js +39 -9
  277. package/lib/network/processor/gossipHandlers.js.map +1 -1
  278. package/lib/network/processor/index.d.ts +12 -7
  279. package/lib/network/processor/index.d.ts.map +1 -1
  280. package/lib/network/processor/index.js +99 -78
  281. package/lib/network/processor/index.js.map +1 -1
  282. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +1 -1
  283. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  284. package/lib/network/reqresp/ReqRespBeaconNode.js +10 -1
  285. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  286. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts +8 -0
  287. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -0
  288. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +69 -0
  289. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -0
  290. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts +6 -0
  291. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts.map +1 -0
  292. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +28 -0
  293. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -0
  294. package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
  295. package/lib/network/reqresp/handlers/index.js +11 -1
  296. package/lib/network/reqresp/handlers/index.js.map +1 -1
  297. package/lib/network/reqresp/protocols.d.ts +2 -0
  298. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  299. package/lib/network/reqresp/protocols.js +10 -0
  300. package/lib/network/reqresp/protocols.js.map +1 -1
  301. package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
  302. package/lib/network/reqresp/rateLimit.js +8 -0
  303. package/lib/network/reqresp/rateLimit.js.map +1 -1
  304. package/lib/network/reqresp/score.d.ts.map +1 -1
  305. package/lib/network/reqresp/score.js +2 -0
  306. package/lib/network/reqresp/score.js.map +1 -1
  307. package/lib/network/reqresp/types.d.ts +8 -2
  308. package/lib/network/reqresp/types.d.ts.map +1 -1
  309. package/lib/network/reqresp/types.js +7 -1
  310. package/lib/network/reqresp/types.js.map +1 -1
  311. package/lib/node/nodejs.d.ts +2 -2
  312. package/lib/node/nodejs.d.ts.map +1 -1
  313. package/lib/node/nodejs.js +1 -4
  314. package/lib/node/nodejs.js.map +1 -1
  315. package/lib/node/notifier.d.ts.map +1 -1
  316. package/lib/node/notifier.js +3 -3
  317. package/lib/node/notifier.js.map +1 -1
  318. package/lib/sync/backfill/backfill.d.ts +3 -3
  319. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  320. package/lib/sync/backfill/backfill.js +3 -3
  321. package/lib/sync/backfill/backfill.js.map +1 -1
  322. package/lib/sync/constants.d.ts +1 -1
  323. package/lib/sync/constants.js +1 -1
  324. package/lib/sync/unknownBlock.d.ts +3 -9
  325. package/lib/sync/unknownBlock.d.ts.map +1 -1
  326. package/lib/sync/unknownBlock.js +8 -41
  327. package/lib/sync/unknownBlock.js.map +1 -1
  328. package/lib/util/sszBytes.d.ts +4 -1
  329. package/lib/util/sszBytes.d.ts.map +1 -1
  330. package/lib/util/sszBytes.js +69 -12
  331. package/lib/util/sszBytes.js.map +1 -1
  332. package/lib/util/types.d.ts +2 -0
  333. package/lib/util/types.d.ts.map +1 -1
  334. package/lib/util/types.js +1 -0
  335. package/lib/util/types.js.map +1 -1
  336. package/package.json +16 -16
  337. package/src/api/impl/beacon/blocks/index.ts +37 -18
  338. package/src/api/impl/beacon/pool/index.ts +1 -1
  339. package/src/api/impl/beacon/state/index.ts +29 -41
  340. package/src/api/impl/beacon/state/utils.ts +11 -25
  341. package/src/api/impl/lodestar/index.ts +4 -8
  342. package/src/api/impl/proof/index.ts +2 -9
  343. package/src/api/impl/validator/index.ts +29 -41
  344. package/src/api/impl/validator/utils.ts +4 -7
  345. package/src/chain/archiveStore/archiveStore.ts +1 -0
  346. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +10 -39
  347. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +2 -1
  348. package/src/chain/archiveStore/historicalState/types.ts +2 -0
  349. package/src/chain/archiveStore/historicalState/worker.ts +1 -4
  350. package/src/chain/archiveStore/interface.ts +1 -0
  351. package/src/chain/balancesCache.ts +5 -11
  352. package/src/chain/blocks/blockInput/types.ts +4 -3
  353. package/src/chain/blocks/importBlock.ts +47 -16
  354. package/src/chain/blocks/importExecutionPayload.ts +236 -0
  355. package/src/chain/blocks/index.ts +1 -1
  356. package/src/chain/blocks/payloadEnvelopeInput/index.ts +2 -0
  357. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +336 -0
  358. package/src/chain/blocks/payloadEnvelopeInput/types.ts +33 -0
  359. package/src/chain/blocks/payloadEnvelopeProcessor.ts +61 -0
  360. package/src/chain/blocks/types.ts +10 -2
  361. package/src/chain/blocks/utils/checkpoint.ts +2 -2
  362. package/src/chain/blocks/verifyBlock.ts +5 -10
  363. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +5 -10
  364. package/src/chain/blocks/verifyBlocksSignatures.ts +3 -3
  365. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +6 -8
  366. package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +55 -0
  367. package/src/chain/chain.ts +112 -70
  368. package/src/chain/emitter.ts +2 -2
  369. package/src/chain/errors/blockError.ts +4 -4
  370. package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
  371. package/src/chain/forkChoice/index.ts +33 -52
  372. package/src/chain/initState.ts +7 -2
  373. package/src/chain/interface.ts +18 -16
  374. package/src/chain/lightClient/index.ts +9 -22
  375. package/src/chain/opPools/aggregatedAttestationPool.ts +15 -21
  376. package/src/chain/opPools/opPool.ts +13 -14
  377. package/src/chain/opPools/utils.ts +4 -4
  378. package/src/chain/options.ts +2 -0
  379. package/src/chain/prepareNextSlot.ts +6 -8
  380. package/src/chain/produceBlock/computeNewStateRoot.ts +11 -10
  381. package/src/chain/produceBlock/produceBlockBody.ts +23 -50
  382. package/src/chain/regen/interface.ts +15 -17
  383. package/src/chain/regen/queued.ts +16 -20
  384. package/src/chain/regen/regen.ts +16 -17
  385. package/src/chain/seenCache/index.ts +1 -1
  386. package/src/chain/seenCache/seenGossipBlockInput.ts +2 -2
  387. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +106 -0
  388. package/src/chain/serializeState.ts +3 -3
  389. package/src/chain/shufflingCache.ts +5 -7
  390. package/src/chain/stateCache/fifoBlockStateCache.ts +7 -7
  391. package/src/chain/stateCache/persistentCheckpointsCache.ts +27 -42
  392. package/src/chain/stateCache/types.ts +14 -18
  393. package/src/chain/validation/attesterSlashing.ts +3 -3
  394. package/src/chain/validation/blobSidecar.ts +1 -1
  395. package/src/chain/validation/block.ts +2 -4
  396. package/src/chain/validation/blsToExecutionChange.ts +2 -2
  397. package/src/chain/validation/dataColumnSidecar.ts +1 -1
  398. package/src/chain/validation/executionPayloadBid.ts +3 -7
  399. package/src/chain/validation/executionPayloadEnvelope.ts +36 -29
  400. package/src/chain/validation/lightClientFinalityUpdate.ts +1 -1
  401. package/src/chain/validation/lightClientOptimisticUpdate.ts +1 -1
  402. package/src/chain/validation/payloadAttestationMessage.ts +2 -4
  403. package/src/chain/validation/proposerSlashing.ts +1 -1
  404. package/src/chain/validation/signatureSets/contributionAndProof.ts +2 -7
  405. package/src/chain/validation/signatureSets/syncCommittee.ts +2 -7
  406. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +2 -2
  407. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -7
  408. package/src/chain/validation/syncCommittee.ts +21 -20
  409. package/src/chain/validation/syncCommitteeContributionAndProof.ts +5 -10
  410. package/src/chain/validation/voluntaryExit.ts +3 -8
  411. package/src/chain/validatorMonitor.ts +23 -12
  412. package/src/execution/engine/interface.ts +2 -2
  413. package/src/metrics/metrics/lodestar.ts +100 -19
  414. package/src/network/gossip/encoding.ts +16 -0
  415. package/src/network/interface.ts +15 -2
  416. package/src/network/libp2p/index.ts +5 -0
  417. package/src/network/network.ts +34 -6
  418. package/src/network/processor/extractSlotRootFns.ts +19 -6
  419. package/src/network/processor/gossipHandlers.ts +45 -8
  420. package/src/network/processor/index.ts +110 -89
  421. package/src/network/reqresp/ReqRespBeaconNode.ts +14 -1
  422. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +94 -0
  423. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +43 -0
  424. package/src/network/reqresp/handlers/index.ts +12 -0
  425. package/src/network/reqresp/protocols.ts +12 -0
  426. package/src/network/reqresp/rateLimit.ts +18 -0
  427. package/src/network/reqresp/score.ts +2 -0
  428. package/src/network/reqresp/types.ts +13 -0
  429. package/src/node/nodejs.ts +3 -5
  430. package/src/node/notifier.ts +4 -10
  431. package/src/sync/backfill/backfill.ts +4 -4
  432. package/src/sync/constants.ts +1 -1
  433. package/src/sync/unknownBlock.ts +10 -50
  434. package/src/util/sszBytes.ts +90 -10
  435. package/src/util/types.ts +6 -0
  436. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts +0 -15
  437. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +0 -1
  438. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js +0 -28
  439. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +0 -1
  440. package/src/chain/seenCache/seenExecutionPayloadEnvelope.ts +0 -34
@@ -9,19 +9,33 @@ import {
9
9
  getSafeExecutionBlockHash,
10
10
  isGloasBlock,
11
11
  } from "@lodestar/fork-choice";
12
- import {ForkPostAltair, ForkPostElectra, ForkSeq, MAX_SEED_LOOKAHEAD, SLOTS_PER_EPOCH} from "@lodestar/params";
13
12
  import {
14
- CachedBeaconStateAltair,
15
- EpochCache,
13
+ ForkPostAltair,
14
+ ForkPostElectra,
15
+ ForkPostGloas,
16
+ ForkSeq,
17
+ MAX_SEED_LOOKAHEAD,
18
+ SLOTS_PER_EPOCH,
19
+ } from "@lodestar/params";
20
+ import {
21
+ IBeaconStateView,
16
22
  RootCache,
17
23
  computeEpochAtSlot,
18
24
  computeStartSlotAtEpoch,
19
25
  computeTimeAtSlot,
20
- isExecutionStateType,
21
26
  isStartSlotOfEpoch,
22
- isStateValidatorsNodesPopulated,
23
27
  } from "@lodestar/state-transition";
24
- import {Attestation, BeaconBlock, altair, capella, electra, isGloasBeaconBlock, phase0, ssz} from "@lodestar/types";
28
+ import {
29
+ Attestation,
30
+ BeaconBlock,
31
+ SignedBeaconBlock,
32
+ altair,
33
+ capella,
34
+ electra,
35
+ isGloasBeaconBlock,
36
+ phase0,
37
+ ssz,
38
+ } from "@lodestar/types";
25
39
  import {isErrorAborted, toRootHex} from "@lodestar/utils";
26
40
  import {ZERO_HASH_HEX} from "../../constants/index.js";
27
41
  import {callInNextEventLoop} from "../../util/eventLoop.js";
@@ -123,6 +137,23 @@ export async function importBlock(
123
137
  // processState manages both block state and payload state variants together for memory/disk management
124
138
  this.regen.processBlockState(blockRootHex, postState);
125
139
 
140
+ // For Gloas blocks, create PayloadEnvelopeInput so it's available for later payload import
141
+ if (fork >= ForkSeq.gloas) {
142
+ this.seenPayloadEnvelopeInputCache.add({
143
+ blockRootHex,
144
+ block: block as SignedBeaconBlock<ForkPostGloas>,
145
+ sampledColumns: this.custodyConfig.sampledColumns,
146
+ custodyColumns: this.custodyConfig.custodyColumns,
147
+ timeCreatedSec: fullyVerifiedBlock.seenTimestampSec,
148
+ });
149
+ this.logger.debug("Created PayloadEnvelopeInput for block", {
150
+ slot: blockSlot,
151
+ root: blockRootHex,
152
+ source: source.source,
153
+ ...(opts.seenTimestampSec !== undefined ? {recvToImport: Date.now() / 1000 - opts.seenTimestampSec} : {}),
154
+ });
155
+ }
156
+
126
157
  this.metrics?.importBlock.bySource.inc({source: source.source});
127
158
  this.logger.verbose("Added block to forkchoice and state cache", {slot: blockSlot, root: blockRootHex});
128
159
 
@@ -154,7 +185,7 @@ export async function importBlock(
154
185
  const attDataRoot = toRootHex(ssz.phase0.AttestationData.hashTreeRoot(indexedAttestation.data));
155
186
  addAttestation.call(
156
187
  this,
157
- postState.epochCtx,
188
+ postState,
158
189
  target,
159
190
  attDataRoot,
160
191
  attestation as Attestation<ForkPostElectra>,
@@ -341,7 +372,7 @@ export async function importBlock(
341
372
  try {
342
373
  this.lightClientServer?.onImportBlockHead(
343
374
  block.message as BeaconBlock<ForkPostAltair>,
344
- postState as CachedBeaconStateAltair,
375
+ postState,
345
376
  parentBlockSlot
346
377
  );
347
378
  } catch (e) {
@@ -362,11 +393,11 @@ export async function importBlock(
362
393
  // and the block is weak and can potentially be reorged out.
363
394
  let shouldOverrideFcu = false;
364
395
 
365
- if (blockSlot >= currentSlot && isExecutionStateType(postState)) {
396
+ if (blockSlot >= currentSlot && postState.isExecutionStateType) {
366
397
  let notOverrideFcuReason = NotReorgedReason.Unknown;
367
398
  const proposalSlot = blockSlot + 1;
368
399
  try {
369
- const proposerIndex = postState.epochCtx.getBeaconProposer(proposalSlot);
400
+ const proposerIndex = postState.getBeaconProposer(proposalSlot);
370
401
  const feeRecipient = this.beaconProposerCache.get(proposerIndex);
371
402
 
372
403
  if (feeRecipient) {
@@ -446,7 +477,7 @@ export async function importBlock(
446
477
  }
447
478
  }
448
479
 
449
- if (!isStateValidatorsNodesPopulated(postState)) {
480
+ if (!postState.isStateValidatorsNodesPopulated()) {
450
481
  this.logger.verbose("After importBlock caching postState without SSZ cache", {slot: postState.slot});
451
482
  }
452
483
 
@@ -468,7 +499,7 @@ export async function importBlock(
468
499
  // Note: in-lined code from previos handler of ChainEvent.checkpoint
469
500
  this.logger.verbose("Checkpoint processed", toCheckpointHexPayload(cp, payloadPresent));
470
501
 
471
- const activeValidatorsCount = checkpointState.epochCtx.currentShuffling.activeIndices.length;
502
+ const activeValidatorsCount = checkpointState.activeValidatorCount;
472
503
  this.metrics?.currentActiveValidators.set(activeValidatorsCount);
473
504
  this.metrics?.currentValidators.set({status: "active"}, activeValidatorsCount);
474
505
 
@@ -553,7 +584,7 @@ export async function importBlock(
553
584
  this.validatorMonitor?.registerSyncAggregateInBlock(
554
585
  blockEpoch,
555
586
  (block as altair.SignedBeaconBlock).message.body.syncAggregate,
556
- fullyVerifiedBlock.postState.epochCtx.currentSyncCommitteeIndexed.validatorIndices
587
+ fullyVerifiedBlock.postState.currentSyncCommitteeIndexed.validatorIndices
557
588
  );
558
589
  }
559
590
 
@@ -595,7 +626,7 @@ export async function importBlock(
595
626
  export function addAttestationPreElectra(
596
627
  this: BeaconChain,
597
628
  // added to have the same signature as addAttestationPostElectra
598
- _: EpochCache,
629
+ _: IBeaconStateView,
599
630
  target: phase0.Checkpoint,
600
631
  attDataRoot: string,
601
632
  attestation: Attestation,
@@ -612,7 +643,7 @@ export function addAttestationPreElectra(
612
643
 
613
644
  export function addAttestationPostElectra(
614
645
  this: BeaconChain,
615
- epochCtx: EpochCache,
646
+ state: IBeaconStateView,
616
647
  target: phase0.Checkpoint,
617
648
  attDataRoot: string,
618
649
  attestation: Attestation<ForkPostElectra>,
@@ -630,7 +661,7 @@ export function addAttestationPostElectra(
630
661
  } else {
631
662
  const attSlot = attestation.data.slot;
632
663
  const attEpoch = computeEpochAtSlot(attSlot);
633
- const decisionRoot = epochCtx.getShufflingDecisionRoot(attEpoch);
664
+ const decisionRoot = state.getShufflingDecisionRoot(attEpoch);
634
665
  const committees = this.shufflingCache.getBeaconCommittees(attEpoch, decisionRoot, attSlot, committeeIndices);
635
666
  const aggregationBools = attestation.aggregationBits.toBoolArray();
636
667
  let offset = 0;
@@ -0,0 +1,236 @@
1
+ import {routes} from "@lodestar/api";
2
+ import {ForkName} from "@lodestar/params";
3
+ import {getExecutionPayloadEnvelopeSignatureSet} from "@lodestar/state-transition";
4
+ import {byteArrayEquals, fromHex, toRootHex} from "@lodestar/utils";
5
+ import {ExecutionPayloadStatus} from "../../execution/index.js";
6
+ import {isQueueErrorAborted} from "../../util/queue/index.js";
7
+ import {BeaconChain} from "../chain.js";
8
+ import {RegenCaller} from "../regen/interface.js";
9
+ import {PayloadEnvelopeInput} from "../seenCache/seenPayloadEnvelopeInput.js";
10
+ import {ImportPayloadOpts} from "./types.js";
11
+
12
+ const EVENTSTREAM_EMIT_RECENT_EXECUTION_PAYLOAD_SLOTS = 64;
13
+
14
+ export enum PayloadErrorCode {
15
+ EXECUTION_ENGINE_INVALID = "PAYLOAD_ERROR_EXECUTION_ENGINE_INVALID",
16
+ EXECUTION_ENGINE_ERROR = "PAYLOAD_ERROR_EXECUTION_ENGINE_ERROR",
17
+ BLOCK_NOT_IN_FORK_CHOICE = "PAYLOAD_ERROR_BLOCK_NOT_IN_FORK_CHOICE",
18
+ STATE_TRANSITION_ERROR = "PAYLOAD_ERROR_STATE_TRANSITION_ERROR",
19
+ INVALID_SIGNATURE = "PAYLOAD_ERROR_INVALID_SIGNATURE",
20
+ }
21
+
22
+ export type PayloadErrorType =
23
+ | {
24
+ code: PayloadErrorCode.EXECUTION_ENGINE_INVALID;
25
+ execStatus: ExecutionPayloadStatus;
26
+ errorMessage: string;
27
+ }
28
+ | {
29
+ code: PayloadErrorCode.EXECUTION_ENGINE_ERROR;
30
+ execStatus: ExecutionPayloadStatus;
31
+ errorMessage: string;
32
+ }
33
+ | {
34
+ code: PayloadErrorCode.BLOCK_NOT_IN_FORK_CHOICE;
35
+ blockRootHex: string;
36
+ }
37
+ | {
38
+ code: PayloadErrorCode.STATE_TRANSITION_ERROR;
39
+ message: string;
40
+ }
41
+ | {
42
+ code: PayloadErrorCode.INVALID_SIGNATURE;
43
+ };
44
+
45
+ export class PayloadError extends Error {
46
+ type: PayloadErrorType;
47
+
48
+ constructor(type: PayloadErrorType, message?: string) {
49
+ super(message ?? type.code);
50
+ this.type = type;
51
+ }
52
+ }
53
+
54
+ /**
55
+ * Import an execution payload envelope after all data is available.
56
+ *
57
+ * This function:
58
+ * 1. Gets the ProtoBlock from fork choice
59
+ * 2. Applies write-queue backpressure (waitForSpace) early, before verification
60
+ * 3. Regenerates the block state
61
+ * 4. Runs EL verification (notifyNewPayload) in parallel with signature verification and processExecutionPayloadEnvelope
62
+ * 5. Persists verified payload envelope to hot DB
63
+ * 6. Updates fork choice
64
+ * 7. Caches the post-execution payload state
65
+ * 8. Records metrics for column sources
66
+ *
67
+ */
68
+ export async function importExecutionPayload(
69
+ this: BeaconChain,
70
+ payloadInput: PayloadEnvelopeInput,
71
+ opts: ImportPayloadOpts = {}
72
+ ): Promise<void> {
73
+ const envelope = payloadInput.getPayloadEnvelope();
74
+ const blockRootHex = payloadInput.blockRootHex;
75
+
76
+ // 1. Get ProtoBlock for parent root lookup
77
+ const protoBlock = this.forkChoice.getBlockHexDefaultStatus(blockRootHex);
78
+ if (!protoBlock) {
79
+ throw new PayloadError({
80
+ code: PayloadErrorCode.BLOCK_NOT_IN_FORK_CHOICE,
81
+ blockRootHex,
82
+ });
83
+ }
84
+
85
+ // 2. Apply backpressure from the write queue early, before doing verification work.
86
+ // The actual DB write is deferred until after verification succeeds.
87
+ await this.unfinalizedPayloadEnvelopeWrites.waitForSpace();
88
+
89
+ // 3. Get pre-state for processExecutionPayloadEnvelope
90
+ // We need the block state (post-block, pre-payload) to process the envelope
91
+ const blockState = await this.regen.getBlockSlotState(
92
+ protoBlock,
93
+ protoBlock.slot,
94
+ {dontTransferCache: true},
95
+ RegenCaller.processBlock
96
+ );
97
+
98
+ // 4. Run verification steps in parallel
99
+ // Note: No data availability check needed here - importExecutionPayload is only
100
+ // called when payloadInput.isComplete() is true, so all data is already available.
101
+ const [execResult, signatureValid, postPayloadResult] = await Promise.all([
102
+ this.executionEngine.notifyNewPayload(
103
+ ForkName.gloas,
104
+ envelope.message.payload,
105
+ payloadInput.getVersionedHashes(),
106
+ fromHex(protoBlock.parentRoot),
107
+ envelope.message.executionRequests
108
+ ),
109
+
110
+ opts.validSignature === true
111
+ ? Promise.resolve(true)
112
+ : (async () => {
113
+ const signatureSet = getExecutionPayloadEnvelopeSignatureSet(
114
+ this.config,
115
+ this.pubkeyCache,
116
+ blockState,
117
+ envelope,
118
+ payloadInput.proposerIndex
119
+ );
120
+ return this.bls.verifySignatureSets([signatureSet]);
121
+ })(),
122
+
123
+ // Signature verified separately above.
124
+ // State root check is done separately below with better error typing (matching block pipeline pattern).
125
+ (async () => {
126
+ try {
127
+ return {
128
+ postPayloadState: blockState.processExecutionPayloadEnvelope(envelope, {
129
+ verifySignature: false,
130
+ verifyStateRoot: false,
131
+ }),
132
+ };
133
+ } catch (e) {
134
+ throw new PayloadError(
135
+ {
136
+ code: PayloadErrorCode.STATE_TRANSITION_ERROR,
137
+ message: (e as Error).message,
138
+ },
139
+ `State transition error: ${(e as Error).message}`
140
+ );
141
+ }
142
+ })(),
143
+ ]);
144
+
145
+ // 4b. Check signature verification result
146
+ if (!signatureValid) {
147
+ throw new PayloadError({code: PayloadErrorCode.INVALID_SIGNATURE});
148
+ }
149
+
150
+ // 5. Handle EL response
151
+ switch (execResult.status) {
152
+ case ExecutionPayloadStatus.VALID:
153
+ break;
154
+
155
+ case ExecutionPayloadStatus.INVALID:
156
+ throw new PayloadError({
157
+ code: PayloadErrorCode.EXECUTION_ENGINE_INVALID,
158
+ execStatus: execResult.status,
159
+ errorMessage: execResult.validationError ?? "",
160
+ });
161
+
162
+ case ExecutionPayloadStatus.ACCEPTED:
163
+ case ExecutionPayloadStatus.SYNCING:
164
+ // TODO GLOAS: Handle optimistic import for payload - for now treat as error
165
+ throw new PayloadError({
166
+ code: PayloadErrorCode.EXECUTION_ENGINE_ERROR,
167
+ execStatus: execResult.status,
168
+ errorMessage: execResult.validationError ?? "EL syncing, payload not yet validated",
169
+ });
170
+
171
+ case ExecutionPayloadStatus.INVALID_BLOCK_HASH:
172
+ case ExecutionPayloadStatus.ELERROR:
173
+ case ExecutionPayloadStatus.UNAVAILABLE:
174
+ throw new PayloadError({
175
+ code: PayloadErrorCode.EXECUTION_ENGINE_ERROR,
176
+ execStatus: execResult.status,
177
+ errorMessage: execResult.validationError ?? "",
178
+ });
179
+ }
180
+
181
+ // 5b. Verify envelope state root matches post-state
182
+ const postPayloadState = postPayloadResult.postPayloadState;
183
+ const postPayloadStateRoot = postPayloadState.hashTreeRoot();
184
+ if (!byteArrayEquals(envelope.message.stateRoot, postPayloadStateRoot)) {
185
+ throw new PayloadError({
186
+ code: PayloadErrorCode.STATE_TRANSITION_ERROR,
187
+ message: `Envelope state root mismatch expected=${toRootHex(envelope.message.stateRoot)} actual=${toRootHex(postPayloadStateRoot)}`,
188
+ });
189
+ }
190
+
191
+ // 5c. Persist payload envelope to hot DB (performed asynchronously to avoid blocking)
192
+ this.unfinalizedPayloadEnvelopeWrites.push(payloadInput).catch((e) => {
193
+ if (!isQueueErrorAborted(e)) {
194
+ this.logger.error(
195
+ "Error pushing payload envelope to unfinalized write queue",
196
+ {slot: payloadInput.slot, root: blockRootHex},
197
+ e as Error
198
+ );
199
+ }
200
+ });
201
+
202
+ // 6. Update fork choice
203
+ this.forkChoice.onExecutionPayload(
204
+ blockRootHex,
205
+ payloadInput.getBlockHashHex(),
206
+ envelope.message.payload.blockNumber,
207
+ toRootHex(postPayloadStateRoot)
208
+ );
209
+
210
+ // 7. Cache payload state
211
+ // TODO GLOAS: Enable when PR #8868 merged (adds processPayloadState)
212
+ // this.regen.processPayloadState(postPayloadState);
213
+ // if epoch boundary also call
214
+ // this.regen.addCheckpointState(cp, checkpointState, true);
215
+
216
+ // 8. Record metrics for payload envelope and column sources
217
+ this.metrics?.importPayload.bySource.inc({source: payloadInput.getPayloadEnvelopeSource().source});
218
+ for (const {source} of payloadInput.getSampledColumnsWithSource()) {
219
+ this.metrics?.importPayload.columnsBySource.inc({source});
220
+ }
221
+
222
+ this.logger.verbose("Execution payload imported", {
223
+ slot: payloadInput.slot,
224
+ root: blockRootHex,
225
+ blockHash: payloadInput.getBlockHashHex(),
226
+ });
227
+
228
+ // 9. Emit event after payload is fully verified and imported to fork choice, only for recent enough payloads
229
+ const currentSlot = this.clock.currentSlot;
230
+ if (currentSlot - payloadInput.slot < EVENTSTREAM_EMIT_RECENT_EXECUTION_PAYLOAD_SLOTS) {
231
+ this.emitter.emit(routes.events.EventType.executionPayloadAvailable, {
232
+ slot: payloadInput.slot,
233
+ blockRoot: blockRootHex,
234
+ });
235
+ }
236
+ }
@@ -126,7 +126,7 @@ export async function processBlocks(
126
126
  const {state} = err.type;
127
127
  const forkTypes = this.config.getForkTypes(blockSlot);
128
128
  this.persistInvalidSszValue(forkTypes.SignedBeaconBlock, signedBlock, `${blockSlot}_invalid_signature`);
129
- this.persistInvalidSszView(state, `${state.slot}_invalid_signature`);
129
+ this.persistInvalidSszBytes("BeaconState", state.serialize(), `${state.slot}_invalid_signature`);
130
130
  } else if (err.type.code === BlockErrorCode.INVALID_STATE_ROOT) {
131
131
  const {signedBlock} = err;
132
132
  const blockSlot = signedBlock.message.slot;
@@ -0,0 +1,2 @@
1
+ export * from "./payloadEnvelopeInput.js";
2
+ export * from "./types.js";