@lodestar/beacon-node 1.42.0-dev.4411584fd8 → 1.42.0-dev.5007abf468

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 (405) 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/historicalState/getHistoricalState.d.ts +2 -6
  27. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  28. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +3 -23
  29. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  30. package/lib/chain/archiveStore/historicalState/worker.js +1 -0
  31. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  32. package/lib/chain/balancesCache.d.ts +2 -2
  33. package/lib/chain/balancesCache.d.ts.map +1 -1
  34. package/lib/chain/balancesCache.js +4 -4
  35. package/lib/chain/balancesCache.js.map +1 -1
  36. package/lib/chain/blocks/blockInput/types.d.ts +4 -3
  37. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  38. package/lib/chain/blocks/blockInput/types.js +1 -0
  39. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  40. package/lib/chain/blocks/importBlock.d.ts +3 -3
  41. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  42. package/lib/chain/blocks/importBlock.js +27 -11
  43. package/lib/chain/blocks/importBlock.js.map +1 -1
  44. package/lib/chain/blocks/importExecutionPayload.d.ts +48 -0
  45. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -0
  46. package/lib/chain/blocks/importExecutionPayload.js +158 -0
  47. package/lib/chain/blocks/importExecutionPayload.js.map +1 -0
  48. package/lib/chain/blocks/index.js +1 -1
  49. package/lib/chain/blocks/index.js.map +1 -1
  50. package/lib/chain/blocks/payloadEnvelopeInput/index.d.ts +3 -0
  51. package/lib/chain/blocks/payloadEnvelopeInput/index.d.ts.map +1 -0
  52. package/lib/chain/blocks/payloadEnvelopeInput/index.js +3 -0
  53. package/lib/chain/blocks/payloadEnvelopeInput/index.js.map +1 -0
  54. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +80 -0
  55. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -0
  56. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +248 -0
  57. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -0
  58. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +29 -0
  59. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -0
  60. package/lib/chain/blocks/payloadEnvelopeInput/types.js +11 -0
  61. package/lib/chain/blocks/payloadEnvelopeInput/types.js.map +1 -0
  62. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +15 -0
  63. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -0
  64. package/lib/chain/blocks/payloadEnvelopeProcessor.js +46 -0
  65. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -0
  66. package/lib/chain/blocks/types.d.ts +9 -2
  67. package/lib/chain/blocks/types.d.ts.map +1 -1
  68. package/lib/chain/blocks/types.js.map +1 -1
  69. package/lib/chain/blocks/utils/checkpoint.d.ts +2 -2
  70. package/lib/chain/blocks/utils/checkpoint.d.ts.map +1 -1
  71. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  72. package/lib/chain/blocks/verifyBlock.d.ts +2 -2
  73. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  74. package/lib/chain/blocks/verifyBlock.js +4 -4
  75. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  76. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +3 -3
  77. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  78. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +3 -3
  79. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  80. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -2
  81. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  82. package/lib/chain/blocks/verifyBlocksSignatures.js +1 -1
  83. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  84. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +3 -3
  85. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  86. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +3 -3
  87. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  88. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts +12 -0
  89. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.d.ts.map +1 -0
  90. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js +40 -0
  91. package/lib/chain/blocks/writePayloadEnvelopeInputToDb.js.map +1 -0
  92. package/lib/chain/chain.d.ts +19 -14
  93. package/lib/chain/chain.d.ts.map +1 -1
  94. package/lib/chain/chain.js +75 -42
  95. package/lib/chain/chain.js.map +1 -1
  96. package/lib/chain/emitter.d.ts +2 -2
  97. package/lib/chain/emitter.d.ts.map +1 -1
  98. package/lib/chain/errors/blockError.d.ts +4 -4
  99. package/lib/chain/errors/blockError.d.ts.map +1 -1
  100. package/lib/chain/errors/executionPayloadEnvelope.d.ts +12 -2
  101. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  102. package/lib/chain/errors/executionPayloadEnvelope.js +3 -1
  103. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  104. package/lib/chain/forkChoice/index.d.ts +4 -4
  105. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  106. package/lib/chain/forkChoice/index.js +27 -33
  107. package/lib/chain/forkChoice/index.js.map +1 -1
  108. package/lib/chain/initState.d.ts +2 -2
  109. package/lib/chain/initState.d.ts.map +1 -1
  110. package/lib/chain/initState.js +1 -1
  111. package/lib/chain/initState.js.map +1 -1
  112. package/lib/chain/interface.d.ts +17 -15
  113. package/lib/chain/interface.d.ts.map +1 -1
  114. package/lib/chain/lightClient/index.d.ts +2 -2
  115. package/lib/chain/lightClient/index.d.ts.map +1 -1
  116. package/lib/chain/lightClient/index.js +4 -4
  117. package/lib/chain/lightClient/index.js.map +1 -1
  118. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +6 -6
  119. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  120. package/lib/chain/opPools/aggregatedAttestationPool.js +10 -13
  121. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  122. package/lib/chain/opPools/opPool.d.ts +3 -3
  123. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  124. package/lib/chain/opPools/opPool.js +7 -7
  125. package/lib/chain/opPools/opPool.js.map +1 -1
  126. package/lib/chain/opPools/utils.d.ts +2 -2
  127. package/lib/chain/opPools/utils.d.ts.map +1 -1
  128. package/lib/chain/opPools/utils.js +1 -1
  129. package/lib/chain/opPools/utils.js.map +1 -1
  130. package/lib/chain/prepareNextSlot.d.ts +2 -2
  131. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  132. package/lib/chain/prepareNextSlot.js +3 -3
  133. package/lib/chain/prepareNextSlot.js.map +1 -1
  134. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +4 -4
  135. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  136. package/lib/chain/produceBlock/computeNewStateRoot.js +8 -4
  137. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  138. package/lib/chain/produceBlock/produceBlockBody.d.ts +5 -5
  139. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  140. package/lib/chain/produceBlock/produceBlockBody.js +12 -16
  141. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  142. package/lib/chain/regen/interface.d.ts +15 -13
  143. package/lib/chain/regen/interface.d.ts.map +1 -1
  144. package/lib/chain/regen/interface.js +2 -0
  145. package/lib/chain/regen/interface.js.map +1 -1
  146. package/lib/chain/regen/queued.d.ts +14 -14
  147. package/lib/chain/regen/queued.d.ts.map +1 -1
  148. package/lib/chain/regen/queued.js.map +1 -1
  149. package/lib/chain/regen/regen.d.ts +6 -5
  150. package/lib/chain/regen/regen.d.ts.map +1 -1
  151. package/lib/chain/regen/regen.js +6 -6
  152. package/lib/chain/regen/regen.js.map +1 -1
  153. package/lib/chain/seenCache/index.d.ts +1 -1
  154. package/lib/chain/seenCache/index.d.ts.map +1 -1
  155. package/lib/chain/seenCache/index.js +1 -1
  156. package/lib/chain/seenCache/index.js.map +1 -1
  157. package/lib/chain/seenCache/seenGossipBlockInput.js +2 -2
  158. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  159. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +38 -0
  160. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -0
  161. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +76 -0
  162. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -0
  163. package/lib/chain/serializeState.d.ts +2 -2
  164. package/lib/chain/serializeState.d.ts.map +1 -1
  165. package/lib/chain/serializeState.js +1 -1
  166. package/lib/chain/serializeState.js.map +1 -1
  167. package/lib/chain/shufflingCache.d.ts +2 -2
  168. package/lib/chain/shufflingCache.d.ts.map +1 -1
  169. package/lib/chain/shufflingCache.js +3 -4
  170. package/lib/chain/shufflingCache.js.map +1 -1
  171. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +6 -6
  172. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  173. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  174. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +11 -11
  175. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  176. package/lib/chain/stateCache/persistentCheckpointsCache.js +12 -16
  177. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  178. package/lib/chain/stateCache/types.d.ts +14 -14
  179. package/lib/chain/stateCache/types.d.ts.map +1 -1
  180. package/lib/chain/stateCache/types.js.map +1 -1
  181. package/lib/chain/validation/attesterSlashing.js +3 -3
  182. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  183. package/lib/chain/validation/blobSidecar.js +1 -1
  184. package/lib/chain/validation/blobSidecar.js.map +1 -1
  185. package/lib/chain/validation/block.d.ts.map +1 -1
  186. package/lib/chain/validation/block.js +3 -3
  187. package/lib/chain/validation/block.js.map +1 -1
  188. package/lib/chain/validation/blsToExecutionChange.js +2 -2
  189. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  190. package/lib/chain/validation/dataColumnSidecar.js +1 -1
  191. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  192. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  193. package/lib/chain/validation/executionPayloadBid.js +4 -4
  194. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  195. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  196. package/lib/chain/validation/executionPayloadEnvelope.js +29 -19
  197. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  198. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
  199. package/lib/chain/validation/payloadAttestationMessage.js +1 -2
  200. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  201. package/lib/chain/validation/proposerSlashing.js +1 -1
  202. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  203. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -2
  204. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  205. package/lib/chain/validation/signatureSets/contributionAndProof.js +1 -1
  206. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  207. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -2
  208. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  209. package/lib/chain/validation/signatureSets/syncCommittee.js +1 -1
  210. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  211. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -2
  212. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  213. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  214. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -2
  215. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  216. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +1 -1
  217. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  218. package/lib/chain/validation/syncCommittee.d.ts +4 -4
  219. package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
  220. package/lib/chain/validation/syncCommittee.js +13 -12
  221. package/lib/chain/validation/syncCommittee.js.map +1 -1
  222. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  223. package/lib/chain/validation/syncCommitteeContributionAndProof.js +1 -1
  224. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  225. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
  226. package/lib/chain/validation/voluntaryExit.js +3 -3
  227. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  228. package/lib/chain/validatorMonitor.d.ts +5 -4
  229. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  230. package/lib/chain/validatorMonitor.js +12 -7
  231. package/lib/chain/validatorMonitor.js.map +1 -1
  232. package/lib/metrics/metrics/lodestar.d.ts +40 -4
  233. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  234. package/lib/metrics/metrics/lodestar.js +93 -15
  235. package/lib/metrics/metrics/lodestar.js.map +1 -1
  236. package/lib/network/gossip/encoding.d.ts.map +1 -1
  237. package/lib/network/gossip/encoding.js +15 -0
  238. package/lib/network/gossip/encoding.js.map +1 -1
  239. package/lib/network/interface.d.ts +4 -2
  240. package/lib/network/interface.d.ts.map +1 -1
  241. package/lib/network/libp2p/index.d.ts.map +1 -1
  242. package/lib/network/libp2p/index.js +5 -0
  243. package/lib/network/libp2p/index.js.map +1 -1
  244. package/lib/network/network.d.ts +4 -2
  245. package/lib/network/network.d.ts.map +1 -1
  246. package/lib/network/network.js +9 -3
  247. package/lib/network/network.js.map +1 -1
  248. package/lib/network/processor/extractSlotRootFns.d.ts +1 -1
  249. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
  250. package/lib/network/processor/extractSlotRootFns.js +15 -5
  251. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  252. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  253. package/lib/network/processor/gossipHandlers.js +39 -9
  254. package/lib/network/processor/gossipHandlers.js.map +1 -1
  255. package/lib/network/processor/index.d.ts +12 -7
  256. package/lib/network/processor/index.d.ts.map +1 -1
  257. package/lib/network/processor/index.js +99 -78
  258. package/lib/network/processor/index.js.map +1 -1
  259. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  260. package/lib/network/reqresp/ReqRespBeaconNode.js +9 -0
  261. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  262. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts +8 -0
  263. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -0
  264. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +69 -0
  265. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -0
  266. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts +6 -0
  267. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts.map +1 -0
  268. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +28 -0
  269. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -0
  270. package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
  271. package/lib/network/reqresp/handlers/index.js +11 -1
  272. package/lib/network/reqresp/handlers/index.js.map +1 -1
  273. package/lib/network/reqresp/protocols.d.ts +2 -0
  274. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  275. package/lib/network/reqresp/protocols.js +10 -0
  276. package/lib/network/reqresp/protocols.js.map +1 -1
  277. package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
  278. package/lib/network/reqresp/rateLimit.js +8 -0
  279. package/lib/network/reqresp/rateLimit.js.map +1 -1
  280. package/lib/network/reqresp/score.d.ts.map +1 -1
  281. package/lib/network/reqresp/score.js +2 -0
  282. package/lib/network/reqresp/score.js.map +1 -1
  283. package/lib/network/reqresp/types.d.ts +8 -2
  284. package/lib/network/reqresp/types.d.ts.map +1 -1
  285. package/lib/network/reqresp/types.js +7 -1
  286. package/lib/network/reqresp/types.js.map +1 -1
  287. package/lib/node/nodejs.d.ts +2 -2
  288. package/lib/node/nodejs.d.ts.map +1 -1
  289. package/lib/node/nodejs.js +1 -4
  290. package/lib/node/nodejs.js.map +1 -1
  291. package/lib/node/notifier.d.ts.map +1 -1
  292. package/lib/node/notifier.js +3 -3
  293. package/lib/node/notifier.js.map +1 -1
  294. package/lib/sync/backfill/backfill.d.ts +2 -2
  295. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  296. package/lib/sync/backfill/backfill.js +2 -2
  297. package/lib/sync/backfill/backfill.js.map +1 -1
  298. package/lib/sync/unknownBlock.d.ts +3 -9
  299. package/lib/sync/unknownBlock.d.ts.map +1 -1
  300. package/lib/sync/unknownBlock.js +8 -41
  301. package/lib/sync/unknownBlock.js.map +1 -1
  302. package/lib/util/sszBytes.d.ts +4 -1
  303. package/lib/util/sszBytes.d.ts.map +1 -1
  304. package/lib/util/sszBytes.js +69 -12
  305. package/lib/util/sszBytes.js.map +1 -1
  306. package/lib/util/types.d.ts +2 -0
  307. package/lib/util/types.d.ts.map +1 -1
  308. package/lib/util/types.js +1 -0
  309. package/lib/util/types.js.map +1 -1
  310. package/package.json +16 -16
  311. package/src/api/impl/beacon/blocks/index.ts +37 -18
  312. package/src/api/impl/beacon/pool/index.ts +1 -1
  313. package/src/api/impl/beacon/state/index.ts +29 -41
  314. package/src/api/impl/beacon/state/utils.ts +11 -25
  315. package/src/api/impl/lodestar/index.ts +4 -8
  316. package/src/api/impl/proof/index.ts +2 -9
  317. package/src/api/impl/validator/index.ts +29 -41
  318. package/src/api/impl/validator/utils.ts +4 -7
  319. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +6 -36
  320. package/src/chain/archiveStore/historicalState/worker.ts +1 -0
  321. package/src/chain/balancesCache.ts +5 -11
  322. package/src/chain/blocks/blockInput/types.ts +4 -3
  323. package/src/chain/blocks/importBlock.ts +47 -16
  324. package/src/chain/blocks/importExecutionPayload.ts +236 -0
  325. package/src/chain/blocks/index.ts +1 -1
  326. package/src/chain/blocks/payloadEnvelopeInput/index.ts +2 -0
  327. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +336 -0
  328. package/src/chain/blocks/payloadEnvelopeInput/types.ts +33 -0
  329. package/src/chain/blocks/payloadEnvelopeProcessor.ts +61 -0
  330. package/src/chain/blocks/types.ts +10 -2
  331. package/src/chain/blocks/utils/checkpoint.ts +2 -2
  332. package/src/chain/blocks/verifyBlock.ts +5 -10
  333. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +5 -10
  334. package/src/chain/blocks/verifyBlocksSignatures.ts +3 -3
  335. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +6 -8
  336. package/src/chain/blocks/writePayloadEnvelopeInputToDb.ts +55 -0
  337. package/src/chain/chain.ts +112 -70
  338. package/src/chain/emitter.ts +2 -2
  339. package/src/chain/errors/blockError.ts +4 -4
  340. package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
  341. package/src/chain/forkChoice/index.ts +33 -52
  342. package/src/chain/initState.ts +7 -2
  343. package/src/chain/interface.ts +18 -16
  344. package/src/chain/lightClient/index.ts +9 -22
  345. package/src/chain/opPools/aggregatedAttestationPool.ts +15 -21
  346. package/src/chain/opPools/opPool.ts +13 -14
  347. package/src/chain/opPools/utils.ts +3 -3
  348. package/src/chain/prepareNextSlot.ts +6 -8
  349. package/src/chain/produceBlock/computeNewStateRoot.ts +11 -10
  350. package/src/chain/produceBlock/produceBlockBody.ts +22 -49
  351. package/src/chain/regen/interface.ts +15 -17
  352. package/src/chain/regen/queued.ts +16 -20
  353. package/src/chain/regen/regen.ts +16 -17
  354. package/src/chain/seenCache/index.ts +1 -1
  355. package/src/chain/seenCache/seenGossipBlockInput.ts +2 -2
  356. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +106 -0
  357. package/src/chain/serializeState.ts +3 -3
  358. package/src/chain/shufflingCache.ts +5 -7
  359. package/src/chain/stateCache/fifoBlockStateCache.ts +7 -7
  360. package/src/chain/stateCache/persistentCheckpointsCache.ts +27 -42
  361. package/src/chain/stateCache/types.ts +14 -18
  362. package/src/chain/validation/attesterSlashing.ts +3 -3
  363. package/src/chain/validation/blobSidecar.ts +1 -1
  364. package/src/chain/validation/block.ts +2 -4
  365. package/src/chain/validation/blsToExecutionChange.ts +2 -2
  366. package/src/chain/validation/dataColumnSidecar.ts +1 -1
  367. package/src/chain/validation/executionPayloadBid.ts +3 -7
  368. package/src/chain/validation/executionPayloadEnvelope.ts +36 -29
  369. package/src/chain/validation/payloadAttestationMessage.ts +2 -4
  370. package/src/chain/validation/proposerSlashing.ts +1 -1
  371. package/src/chain/validation/signatureSets/contributionAndProof.ts +2 -7
  372. package/src/chain/validation/signatureSets/syncCommittee.ts +2 -7
  373. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +2 -2
  374. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -7
  375. package/src/chain/validation/syncCommittee.ts +21 -20
  376. package/src/chain/validation/syncCommitteeContributionAndProof.ts +5 -10
  377. package/src/chain/validation/voluntaryExit.ts +3 -8
  378. package/src/chain/validatorMonitor.ts +22 -11
  379. package/src/metrics/metrics/lodestar.ts +100 -19
  380. package/src/network/gossip/encoding.ts +16 -0
  381. package/src/network/interface.ts +15 -2
  382. package/src/network/libp2p/index.ts +5 -0
  383. package/src/network/network.ts +32 -4
  384. package/src/network/processor/extractSlotRootFns.ts +19 -6
  385. package/src/network/processor/gossipHandlers.ts +45 -8
  386. package/src/network/processor/index.ts +110 -89
  387. package/src/network/reqresp/ReqRespBeaconNode.ts +13 -0
  388. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +94 -0
  389. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +43 -0
  390. package/src/network/reqresp/handlers/index.ts +12 -0
  391. package/src/network/reqresp/protocols.ts +12 -0
  392. package/src/network/reqresp/rateLimit.ts +18 -0
  393. package/src/network/reqresp/score.ts +2 -0
  394. package/src/network/reqresp/types.ts +13 -0
  395. package/src/node/nodejs.ts +3 -5
  396. package/src/node/notifier.ts +4 -10
  397. package/src/sync/backfill/backfill.ts +3 -3
  398. package/src/sync/unknownBlock.ts +10 -50
  399. package/src/util/sszBytes.ts +90 -10
  400. package/src/util/types.ts +6 -0
  401. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts +0 -15
  402. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +0 -1
  403. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js +0 -28
  404. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +0 -1
  405. package/src/chain/seenCache/seenExecutionPayloadEnvelope.ts +0 -34
@@ -0,0 +1,158 @@
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 { RegenCaller } from "../regen/interface.js";
8
+ const EVENTSTREAM_EMIT_RECENT_EXECUTION_PAYLOAD_SLOTS = 64;
9
+ export { PayloadErrorCode };
10
+ var PayloadErrorCode;
11
+ (function (PayloadErrorCode) {
12
+ PayloadErrorCode["EXECUTION_ENGINE_INVALID"] = "PAYLOAD_ERROR_EXECUTION_ENGINE_INVALID";
13
+ PayloadErrorCode["EXECUTION_ENGINE_ERROR"] = "PAYLOAD_ERROR_EXECUTION_ENGINE_ERROR";
14
+ PayloadErrorCode["BLOCK_NOT_IN_FORK_CHOICE"] = "PAYLOAD_ERROR_BLOCK_NOT_IN_FORK_CHOICE";
15
+ PayloadErrorCode["STATE_TRANSITION_ERROR"] = "PAYLOAD_ERROR_STATE_TRANSITION_ERROR";
16
+ PayloadErrorCode["INVALID_SIGNATURE"] = "PAYLOAD_ERROR_INVALID_SIGNATURE";
17
+ })(PayloadErrorCode || (PayloadErrorCode = {}));
18
+ export class PayloadError extends Error {
19
+ type;
20
+ constructor(type, message) {
21
+ super(message ?? type.code);
22
+ this.type = type;
23
+ }
24
+ }
25
+ /**
26
+ * Import an execution payload envelope after all data is available.
27
+ *
28
+ * This function:
29
+ * 1. Gets the ProtoBlock from fork choice
30
+ * 2. Applies write-queue backpressure (waitForSpace) early, before verification
31
+ * 3. Regenerates the block state
32
+ * 4. Runs EL verification (notifyNewPayload) in parallel with signature verification and processExecutionPayloadEnvelope
33
+ * 5. Persists verified payload envelope to hot DB
34
+ * 6. Updates fork choice
35
+ * 7. Caches the post-execution payload state
36
+ * 8. Records metrics for column sources
37
+ *
38
+ */
39
+ export async function importExecutionPayload(payloadInput, opts = {}) {
40
+ const envelope = payloadInput.getPayloadEnvelope();
41
+ const blockRootHex = payloadInput.blockRootHex;
42
+ // 1. Get ProtoBlock for parent root lookup
43
+ const protoBlock = this.forkChoice.getBlockHexDefaultStatus(blockRootHex);
44
+ if (!protoBlock) {
45
+ throw new PayloadError({
46
+ code: PayloadErrorCode.BLOCK_NOT_IN_FORK_CHOICE,
47
+ blockRootHex,
48
+ });
49
+ }
50
+ // 2. Apply backpressure from the write queue early, before doing verification work.
51
+ // The actual DB write is deferred until after verification succeeds.
52
+ await this.unfinalizedPayloadEnvelopeWrites.waitForSpace();
53
+ // 3. Get pre-state for processExecutionPayloadEnvelope
54
+ // We need the block state (post-block, pre-payload) to process the envelope
55
+ const blockState = await this.regen.getBlockSlotState(protoBlock, protoBlock.slot, { dontTransferCache: true }, RegenCaller.processBlock);
56
+ // 4. Run verification steps in parallel
57
+ // Note: No data availability check needed here - importExecutionPayload is only
58
+ // called when payloadInput.isComplete() is true, so all data is already available.
59
+ const [execResult, signatureValid, postPayloadResult] = await Promise.all([
60
+ this.executionEngine.notifyNewPayload(ForkName.gloas, envelope.message.payload, payloadInput.getVersionedHashes(), fromHex(protoBlock.parentRoot), envelope.message.executionRequests),
61
+ opts.validSignature === true
62
+ ? Promise.resolve(true)
63
+ : (async () => {
64
+ const signatureSet = getExecutionPayloadEnvelopeSignatureSet(this.config, this.pubkeyCache, blockState, envelope, payloadInput.proposerIndex);
65
+ return this.bls.verifySignatureSets([signatureSet]);
66
+ })(),
67
+ // Signature verified separately above.
68
+ // State root check is done separately below with better error typing (matching block pipeline pattern).
69
+ (async () => {
70
+ try {
71
+ return {
72
+ postPayloadState: blockState.processExecutionPayloadEnvelope(envelope, {
73
+ verifySignature: false,
74
+ verifyStateRoot: false,
75
+ }),
76
+ };
77
+ }
78
+ catch (e) {
79
+ throw new PayloadError({
80
+ code: PayloadErrorCode.STATE_TRANSITION_ERROR,
81
+ message: e.message,
82
+ }, `State transition error: ${e.message}`);
83
+ }
84
+ })(),
85
+ ]);
86
+ // 4b. Check signature verification result
87
+ if (!signatureValid) {
88
+ throw new PayloadError({ code: PayloadErrorCode.INVALID_SIGNATURE });
89
+ }
90
+ // 5. Handle EL response
91
+ switch (execResult.status) {
92
+ case ExecutionPayloadStatus.VALID:
93
+ break;
94
+ case ExecutionPayloadStatus.INVALID:
95
+ throw new PayloadError({
96
+ code: PayloadErrorCode.EXECUTION_ENGINE_INVALID,
97
+ execStatus: execResult.status,
98
+ errorMessage: execResult.validationError ?? "",
99
+ });
100
+ case ExecutionPayloadStatus.ACCEPTED:
101
+ case ExecutionPayloadStatus.SYNCING:
102
+ // TODO GLOAS: Handle optimistic import for payload - for now treat as error
103
+ throw new PayloadError({
104
+ code: PayloadErrorCode.EXECUTION_ENGINE_ERROR,
105
+ execStatus: execResult.status,
106
+ errorMessage: execResult.validationError ?? "EL syncing, payload not yet validated",
107
+ });
108
+ case ExecutionPayloadStatus.INVALID_BLOCK_HASH:
109
+ case ExecutionPayloadStatus.ELERROR:
110
+ case ExecutionPayloadStatus.UNAVAILABLE:
111
+ throw new PayloadError({
112
+ code: PayloadErrorCode.EXECUTION_ENGINE_ERROR,
113
+ execStatus: execResult.status,
114
+ errorMessage: execResult.validationError ?? "",
115
+ });
116
+ }
117
+ // 5b. Verify envelope state root matches post-state
118
+ const postPayloadState = postPayloadResult.postPayloadState;
119
+ const postPayloadStateRoot = postPayloadState.hashTreeRoot();
120
+ if (!byteArrayEquals(envelope.message.stateRoot, postPayloadStateRoot)) {
121
+ throw new PayloadError({
122
+ code: PayloadErrorCode.STATE_TRANSITION_ERROR,
123
+ message: `Envelope state root mismatch expected=${toRootHex(envelope.message.stateRoot)} actual=${toRootHex(postPayloadStateRoot)}`,
124
+ });
125
+ }
126
+ // 5c. Persist payload envelope to hot DB (performed asynchronously to avoid blocking)
127
+ this.unfinalizedPayloadEnvelopeWrites.push(payloadInput).catch((e) => {
128
+ if (!isQueueErrorAborted(e)) {
129
+ this.logger.error("Error pushing payload envelope to unfinalized write queue", { slot: payloadInput.slot, root: blockRootHex }, e);
130
+ }
131
+ });
132
+ // 6. Update fork choice
133
+ this.forkChoice.onExecutionPayload(blockRootHex, payloadInput.getBlockHashHex(), envelope.message.payload.blockNumber, toRootHex(postPayloadStateRoot));
134
+ // 7. Cache payload state
135
+ // TODO GLOAS: Enable when PR #8868 merged (adds processPayloadState)
136
+ // this.regen.processPayloadState(postPayloadState);
137
+ // if epoch boundary also call
138
+ // this.regen.addCheckpointState(cp, checkpointState, true);
139
+ // 8. Record metrics for payload envelope and column sources
140
+ this.metrics?.importPayload.bySource.inc({ source: payloadInput.getPayloadEnvelopeSource().source });
141
+ for (const { source } of payloadInput.getSampledColumnsWithSource()) {
142
+ this.metrics?.importPayload.columnsBySource.inc({ source });
143
+ }
144
+ this.logger.verbose("Execution payload imported", {
145
+ slot: payloadInput.slot,
146
+ root: blockRootHex,
147
+ blockHash: payloadInput.getBlockHashHex(),
148
+ });
149
+ // 9. Emit event after payload is fully verified and imported to fork choice, only for recent enough payloads
150
+ const currentSlot = this.clock.currentSlot;
151
+ if (currentSlot - payloadInput.slot < EVENTSTREAM_EMIT_RECENT_EXECUTION_PAYLOAD_SLOTS) {
152
+ this.emitter.emit(routes.events.EventType.executionPayloadAvailable, {
153
+ slot: payloadInput.slot,
154
+ blockRoot: blockRootHex,
155
+ });
156
+ }
157
+ }
158
+ //# sourceMappingURL=importExecutionPayload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importExecutionPayload.js","sourceRoot":"","sources":["../../../src/chain/blocks/importExecutionPayload.ts"],"names":[],"mappings":"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"}
@@ -95,7 +95,7 @@ export async function processBlocks(blocks, opts) {
95
95
  const { state } = err.type;
96
96
  const forkTypes = this.config.getForkTypes(blockSlot);
97
97
  this.persistInvalidSszValue(forkTypes.SignedBeaconBlock, signedBlock, `${blockSlot}_invalid_signature`);
98
- this.persistInvalidSszView(state, `${state.slot}_invalid_signature`);
98
+ this.persistInvalidSszBytes("BeaconState", state.serialize(), `${state.slot}_invalid_signature`);
99
99
  }
100
100
  else if (err.type.code === BlockErrorCode.INVALID_STATE_ROOT) {
101
101
  const { signedBlock } = err;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chain/blocks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/chain/blocks/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./payloadEnvelopeInput.js";
2
+ export * from "./types.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/chain/blocks/payloadEnvelopeInput/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./payloadEnvelopeInput.js";
2
+ export * from "./types.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/chain/blocks/payloadEnvelopeInput/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,YAAY,CAAC"}
@@ -0,0 +1,80 @@
1
+ import { DataColumnSidecars, RootHex, Slot, ValidatorIndex, deneb, gloas } from "@lodestar/types";
2
+ import { VersionedHashes } from "../../../execution/index.js";
3
+ import { AddPayloadEnvelopeProps, ColumnWithSource, CreateFromBlockProps, SourceMeta } from "./types.js";
4
+ export type PayloadEnvelopeInputState = {
5
+ hasPayload: false;
6
+ hasAllData: false;
7
+ hasComputedAllData: false;
8
+ } | {
9
+ hasPayload: false;
10
+ hasAllData: true;
11
+ hasComputedAllData: boolean;
12
+ } | {
13
+ hasPayload: true;
14
+ hasAllData: false;
15
+ hasComputedAllData: false;
16
+ payloadEnvelope: gloas.SignedExecutionPayloadEnvelope;
17
+ payloadEnvelopeSource: SourceMeta;
18
+ } | {
19
+ hasPayload: true;
20
+ hasAllData: true;
21
+ hasComputedAllData: boolean;
22
+ payloadEnvelope: gloas.SignedExecutionPayloadEnvelope;
23
+ payloadEnvelopeSource: SourceMeta;
24
+ timeCompleteSec: number;
25
+ };
26
+ /**
27
+ * Tracks bid + payload envelope + data columns for a Gloas block.
28
+ *
29
+ * Created during block import from signedExecutionPayloadBid in block body.
30
+ * Always has bid (required for creation).
31
+ *
32
+ * Completion requires: payload envelope + all sampled columns
33
+ */
34
+ export declare class PayloadEnvelopeInput {
35
+ readonly blockRootHex: RootHex;
36
+ readonly slot: Slot;
37
+ readonly proposerIndex: ValidatorIndex;
38
+ readonly bid: gloas.ExecutionPayloadBid;
39
+ readonly versionedHashes: VersionedHashes;
40
+ private columnsCache;
41
+ private readonly sampledColumns;
42
+ private readonly custodyColumns;
43
+ private timeCreatedSec;
44
+ private readonly payloadEnvelopeDataPromise;
45
+ private readonly columnsDataPromise;
46
+ state: PayloadEnvelopeInputState;
47
+ private constructor();
48
+ static createFromBlock(props: CreateFromBlockProps): PayloadEnvelopeInput;
49
+ getBid(): gloas.ExecutionPayloadBid;
50
+ getBuilderIndex(): ValidatorIndex;
51
+ getBlockHashHex(): RootHex;
52
+ getBlobKzgCommitments(): deneb.BlobKzgCommitments;
53
+ addPayloadEnvelope(props: AddPayloadEnvelopeProps): void;
54
+ addColumn(columnWithSource: ColumnWithSource): void;
55
+ getVersionedHashes(): VersionedHashes;
56
+ hasPayloadEnvelope(): boolean;
57
+ getPayloadEnvelope(): gloas.SignedExecutionPayloadEnvelope;
58
+ getPayloadEnvelopeSource(): SourceMeta;
59
+ getSampledColumns(): gloas.DataColumnSidecars;
60
+ getSampledColumnsWithSource(): ColumnWithSource[];
61
+ getCustodyColumns(): gloas.DataColumnSidecars;
62
+ hasComputedAllData(): boolean;
63
+ waitForComputedAllData(timeout: number, signal?: AbortSignal): Promise<DataColumnSidecars>;
64
+ getTimeCreated(): number;
65
+ getTimeComplete(): number;
66
+ isComplete(): boolean;
67
+ waitForData(): Promise<gloas.SignedExecutionPayloadEnvelope>;
68
+ getSerializedCacheKeys(): object[];
69
+ getLogMeta(): {
70
+ slot: number;
71
+ blockRoot: string;
72
+ hasPayload: boolean;
73
+ hasAllData: boolean;
74
+ hasComputedAllData: boolean;
75
+ isComplete: boolean;
76
+ columnsCount: number;
77
+ sampledColumnsCount: number;
78
+ };
79
+ }
80
+ //# sourceMappingURL=payloadEnvelopeInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloadEnvelopeInput.d.ts","sourceRoot":"","sources":["../../../../src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,248 @@
1
+ import { NUMBER_OF_COLUMNS } from "@lodestar/params";
2
+ import { toRootHex, withTimeout } from "@lodestar/utils";
3
+ import { kzgCommitmentToVersionedHash } from "../../../util/blobs.js";
4
+ function createPromise() {
5
+ let resolve;
6
+ let reject;
7
+ const promise = new Promise((_resolve, _reject) => {
8
+ resolve = _resolve;
9
+ reject = _reject;
10
+ });
11
+ return { promise, resolve, reject };
12
+ }
13
+ /**
14
+ * Tracks bid + payload envelope + data columns for a Gloas block.
15
+ *
16
+ * Created during block import from signedExecutionPayloadBid in block body.
17
+ * Always has bid (required for creation).
18
+ *
19
+ * Completion requires: payload envelope + all sampled columns
20
+ */
21
+ export class PayloadEnvelopeInput {
22
+ blockRootHex;
23
+ slot;
24
+ proposerIndex;
25
+ bid;
26
+ versionedHashes;
27
+ columnsCache = new Map();
28
+ sampledColumns;
29
+ custodyColumns;
30
+ timeCreatedSec;
31
+ payloadEnvelopeDataPromise;
32
+ columnsDataPromise;
33
+ state;
34
+ constructor(props) {
35
+ this.blockRootHex = props.blockRootHex;
36
+ this.slot = props.slot;
37
+ this.proposerIndex = props.proposerIndex;
38
+ this.bid = props.bid;
39
+ this.versionedHashes = props.bid.blobKzgCommitments.map(kzgCommitmentToVersionedHash);
40
+ this.sampledColumns = props.sampledColumns;
41
+ this.custodyColumns = props.custodyColumns;
42
+ this.timeCreatedSec = props.timeCreatedSec;
43
+ this.payloadEnvelopeDataPromise = createPromise();
44
+ this.columnsDataPromise = createPromise();
45
+ const noBlobs = props.bid.blobKzgCommitments.length === 0;
46
+ const noSampledColumns = props.sampledColumns.length === 0;
47
+ const hasAllData = noBlobs || noSampledColumns;
48
+ if (hasAllData) {
49
+ this.state = { hasPayload: false, hasAllData: true, hasComputedAllData: true };
50
+ this.columnsDataPromise.resolve(this.getSampledColumns());
51
+ }
52
+ else {
53
+ this.state = { hasPayload: false, hasAllData: false, hasComputedAllData: false };
54
+ }
55
+ }
56
+ static createFromBlock(props) {
57
+ const bid = props.block.message.body.signedExecutionPayloadBid.message;
58
+ return new PayloadEnvelopeInput({
59
+ blockRootHex: props.blockRootHex,
60
+ slot: props.block.message.slot,
61
+ proposerIndex: props.block.message.proposerIndex,
62
+ bid,
63
+ sampledColumns: props.sampledColumns,
64
+ custodyColumns: props.custodyColumns,
65
+ timeCreatedSec: props.timeCreatedSec,
66
+ });
67
+ }
68
+ getBid() {
69
+ return this.bid;
70
+ }
71
+ getBuilderIndex() {
72
+ return this.bid.builderIndex;
73
+ }
74
+ getBlockHashHex() {
75
+ return toRootHex(this.bid.blockHash);
76
+ }
77
+ getBlobKzgCommitments() {
78
+ return this.bid.blobKzgCommitments;
79
+ }
80
+ addPayloadEnvelope(props) {
81
+ if (this.state.hasPayload) {
82
+ throw new Error(`Payload envelope already set for block ${this.blockRootHex}`);
83
+ }
84
+ if (toRootHex(props.envelope.message.beaconBlockRoot) !== this.blockRootHex) {
85
+ throw new Error("Payload envelope beacon_block_root mismatch");
86
+ }
87
+ const source = {
88
+ source: props.source,
89
+ seenTimestampSec: props.seenTimestampSec,
90
+ peerIdStr: props.peerIdStr,
91
+ };
92
+ if (this.state.hasAllData) {
93
+ // Complete state
94
+ this.state = {
95
+ hasPayload: true,
96
+ hasAllData: true,
97
+ hasComputedAllData: this.state.hasComputedAllData,
98
+ payloadEnvelope: props.envelope,
99
+ payloadEnvelopeSource: source,
100
+ timeCompleteSec: props.seenTimestampSec,
101
+ };
102
+ this.payloadEnvelopeDataPromise.resolve(props.envelope);
103
+ }
104
+ else {
105
+ // Has payload, waiting for columns
106
+ this.state = {
107
+ hasPayload: true,
108
+ hasAllData: false,
109
+ hasComputedAllData: false,
110
+ payloadEnvelope: props.envelope,
111
+ payloadEnvelopeSource: source,
112
+ };
113
+ }
114
+ }
115
+ addColumn(columnWithSource) {
116
+ const { columnSidecar, seenTimestampSec } = columnWithSource;
117
+ this.columnsCache.set(columnSidecar.index, columnWithSource);
118
+ const sampledColumns = this.getSampledColumns();
119
+ const hasAllData =
120
+ // already hasAllData
121
+ this.state.hasAllData ||
122
+ // has all sampled columns
123
+ sampledColumns.length === this.sampledColumns.length ||
124
+ // has enough columns to reconstruct the rest
125
+ this.columnsCache.size >= NUMBER_OF_COLUMNS / 2;
126
+ const hasComputedAllData =
127
+ // has all sampled columns
128
+ sampledColumns.length === this.sampledColumns.length;
129
+ if (!hasAllData) {
130
+ return;
131
+ }
132
+ if (hasComputedAllData) {
133
+ this.columnsDataPromise.resolve(sampledColumns);
134
+ }
135
+ if (this.state.hasPayload) {
136
+ // Complete state
137
+ this.state = {
138
+ hasPayload: true,
139
+ hasAllData: true,
140
+ hasComputedAllData: hasComputedAllData || this.state.hasComputedAllData,
141
+ payloadEnvelope: this.state.payloadEnvelope,
142
+ payloadEnvelopeSource: this.state.payloadEnvelopeSource,
143
+ timeCompleteSec: seenTimestampSec,
144
+ };
145
+ this.payloadEnvelopeDataPromise.resolve(this.state.payloadEnvelope);
146
+ }
147
+ else {
148
+ // No payload yet, all data ready
149
+ this.state = {
150
+ hasPayload: false,
151
+ hasAllData: true,
152
+ hasComputedAllData: hasComputedAllData || this.state.hasComputedAllData,
153
+ };
154
+ }
155
+ }
156
+ getVersionedHashes() {
157
+ return this.versionedHashes;
158
+ }
159
+ hasPayloadEnvelope() {
160
+ return this.state.hasPayload;
161
+ }
162
+ getPayloadEnvelope() {
163
+ if (!this.state.hasPayload)
164
+ throw new Error("Payload envelope not set");
165
+ return this.state.payloadEnvelope;
166
+ }
167
+ getPayloadEnvelopeSource() {
168
+ if (!this.state.hasPayload)
169
+ throw new Error("Payload envelope source not set");
170
+ return this.state.payloadEnvelopeSource;
171
+ }
172
+ getSampledColumns() {
173
+ const columns = [];
174
+ for (const index of this.sampledColumns) {
175
+ const column = this.columnsCache.get(index);
176
+ if (column) {
177
+ columns.push(column.columnSidecar);
178
+ }
179
+ }
180
+ return columns;
181
+ }
182
+ getSampledColumnsWithSource() {
183
+ const columns = [];
184
+ for (const index of this.sampledColumns) {
185
+ const column = this.columnsCache.get(index);
186
+ if (column) {
187
+ columns.push(column);
188
+ }
189
+ }
190
+ return columns;
191
+ }
192
+ getCustodyColumns() {
193
+ const columns = [];
194
+ for (const index of this.custodyColumns) {
195
+ const column = this.columnsCache.get(index);
196
+ if (column) {
197
+ columns.push(column.columnSidecar);
198
+ }
199
+ }
200
+ return columns;
201
+ }
202
+ hasComputedAllData() {
203
+ return this.state.hasComputedAllData;
204
+ }
205
+ waitForComputedAllData(timeout, signal) {
206
+ if (this.state.hasComputedAllData) {
207
+ return Promise.resolve(this.getSampledColumns());
208
+ }
209
+ return withTimeout(() => this.columnsDataPromise.promise, timeout, signal);
210
+ }
211
+ getTimeCreated() {
212
+ return this.timeCreatedSec;
213
+ }
214
+ getTimeComplete() {
215
+ if (!this.state.hasPayload || !this.state.hasAllData)
216
+ throw new Error("Not yet complete");
217
+ return this.state.timeCompleteSec;
218
+ }
219
+ isComplete() {
220
+ return this.state.hasPayload && this.state.hasAllData;
221
+ }
222
+ async waitForData() {
223
+ return this.payloadEnvelopeDataPromise.promise;
224
+ }
225
+ getSerializedCacheKeys() {
226
+ const objects = [];
227
+ if (this.state.hasPayload) {
228
+ objects.push(this.state.payloadEnvelope);
229
+ }
230
+ for (const { columnSidecar } of this.columnsCache.values()) {
231
+ objects.push(columnSidecar);
232
+ }
233
+ return objects;
234
+ }
235
+ getLogMeta() {
236
+ return {
237
+ slot: this.slot,
238
+ blockRoot: this.blockRootHex,
239
+ hasPayload: this.state.hasPayload,
240
+ hasAllData: this.state.hasAllData,
241
+ hasComputedAllData: this.state.hasComputedAllData,
242
+ isComplete: this.isComplete(),
243
+ columnsCount: this.columnsCache.size,
244
+ sampledColumnsCount: this.sampledColumns.length,
245
+ };
246
+ }
247
+ }
248
+ //# sourceMappingURL=payloadEnvelopeInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloadEnvelopeInput.js","sourceRoot":"","sources":["../../../../src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { ForkPostGloas } from "@lodestar/params";
2
+ import { ColumnIndex, RootHex, SignedBeaconBlock, gloas } from "@lodestar/types";
3
+ export declare enum PayloadEnvelopeInputSource {
4
+ gossip = "gossip",
5
+ api = "api",
6
+ engine = "engine",
7
+ byRange = "req_resp_by_range",
8
+ byRoot = "req_resp_by_root",
9
+ recovery = "recovery"
10
+ }
11
+ export type SourceMeta = {
12
+ source: PayloadEnvelopeInputSource;
13
+ seenTimestampSec: number;
14
+ peerIdStr?: string;
15
+ };
16
+ export type ColumnWithSource = SourceMeta & {
17
+ columnSidecar: gloas.DataColumnSidecar;
18
+ };
19
+ export type CreateFromBlockProps = {
20
+ blockRootHex: RootHex;
21
+ block: SignedBeaconBlock<ForkPostGloas>;
22
+ sampledColumns: ColumnIndex[];
23
+ custodyColumns: ColumnIndex[];
24
+ timeCreatedSec: number;
25
+ };
26
+ export type AddPayloadEnvelopeProps = SourceMeta & {
27
+ envelope: gloas.SignedExecutionPayloadEnvelope;
28
+ };
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/chain/blocks/payloadEnvelopeInput/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAC,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAE/E,oBAAY,0BAA0B;IACpC,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,OAAO,sBAAsB;IAC7B,MAAM,qBAAqB;IAC3B,QAAQ,aAAa;CACtB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,0BAA0B,CAAC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG;IAC1C,aAAa,EAAE,KAAK,CAAC,iBAAiB,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACxC,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG;IACjD,QAAQ,EAAE,KAAK,CAAC,8BAA8B,CAAC;CAChD,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { PayloadEnvelopeInputSource };
2
+ var PayloadEnvelopeInputSource;
3
+ (function (PayloadEnvelopeInputSource) {
4
+ PayloadEnvelopeInputSource["gossip"] = "gossip";
5
+ PayloadEnvelopeInputSource["api"] = "api";
6
+ PayloadEnvelopeInputSource["engine"] = "engine";
7
+ PayloadEnvelopeInputSource["byRange"] = "req_resp_by_range";
8
+ PayloadEnvelopeInputSource["byRoot"] = "req_resp_by_root";
9
+ PayloadEnvelopeInputSource["recovery"] = "recovery";
10
+ })(PayloadEnvelopeInputSource || (PayloadEnvelopeInputSource = {}));
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/chain/blocks/payloadEnvelopeInput/types.ts"],"names":[],"mappings":"SAGY,0BAA0B;AAAtC,IAAY,0BAOX;AAPD,WAAY,0BAA0B;IACpC,+CAAiB,CAAA;IACjB,yCAAW,CAAA;IACX,+CAAiB,CAAA;IACjB,2DAA6B,CAAA;IAC7B,yDAA2B,CAAA;IAC3B,mDAAqB,CAAA;AAAC,CACxB,EAPY,0BAA0B,KAA1B,0BAA0B,QAOrC"}
@@ -0,0 +1,15 @@
1
+ import { Metrics } from "../../metrics/metrics.js";
2
+ import { JobItemQueue } from "../../util/queue/index.js";
3
+ import type { BeaconChain } from "../chain.js";
4
+ import { PayloadEnvelopeInput } from "../seenCache/seenPayloadEnvelopeInput.js";
5
+ import { ImportPayloadOpts } from "./types.js";
6
+ /**
7
+ * PayloadEnvelopeProcessor processes payload envelope jobs in a queued fashion, one after the other.
8
+ */
9
+ export declare class PayloadEnvelopeProcessor {
10
+ readonly jobQueue: JobItemQueue<[PayloadEnvelopeInput, ImportPayloadOpts], void>;
11
+ private readonly importStatus;
12
+ constructor(chain: BeaconChain, metrics: Metrics | null, signal: AbortSignal);
13
+ processPayloadEnvelopeJob(payloadInput: PayloadEnvelopeInput, opts?: ImportPayloadOpts): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=payloadEnvelopeProcessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloadEnvelopeProcessor.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/payloadEnvelopeProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAC,oBAAoB,EAAC,MAAM,0CAA0C,CAAC;AAE9E,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAW7C;;GAEG;AACH,qBAAa,wBAAwB;IACnC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,CAAC;IACjF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoE;IAEjG,YAAY,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,EAS3E;IAEK,yBAAyB,CAAC,YAAY,EAAE,oBAAoB,EAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB/G;CACF"}