@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
@@ -1,8 +1,8 @@
1
1
  import { PrivateKey } from "@libp2p/interface";
2
- import { CompositeTypeAny, TreeView, Type } from "@chainsafe/ssz";
2
+ import { Type } from "@chainsafe/ssz";
3
3
  import { BeaconConfig } from "@lodestar/config";
4
4
  import { CheckpointWithPayloadStatus, IForkChoice, ProtoBlock } from "@lodestar/fork-choice";
5
- import { BeaconStateAllForks, CachedBeaconStateAllForks, EpochShuffling, PubkeyCache } from "@lodestar/state-transition";
5
+ import { EpochShuffling, IBeaconStateView, PubkeyCache } from "@lodestar/state-transition";
6
6
  import { BeaconBlock, BlindedBeaconBlock, DataColumnSidecars, Epoch, Root, RootHex, SignedBeaconBlock, Slot, Status, UintNum64, ValidatorIndex, Wei, deneb, phase0, rewards } from "@lodestar/types";
7
7
  import { Logger } from "@lodestar/utils";
8
8
  import { ProcessShutdownCallback } from "@lodestar/validator";
@@ -19,6 +19,8 @@ import { CheckpointBalancesCache } from "./balancesCache.js";
19
19
  import { BeaconProposerCache } from "./beaconProposerCache.js";
20
20
  import { IBlockInput } from "./blocks/blockInput/index.js";
21
21
  import { BlockProcessor, ImportBlockOpts } from "./blocks/index.js";
22
+ import { PayloadEnvelopeProcessor } from "./blocks/payloadEnvelopeProcessor.js";
23
+ import { ImportPayloadOpts } from "./blocks/types.js";
22
24
  import { IBlsVerifier } from "./bls/index.js";
23
25
  import { ColumnReconstructionTracker } from "./ColumnReconstructionTracker.js";
24
26
  import { ChainEventEmitter } from "./emitter.js";
@@ -32,7 +34,7 @@ import { AssembledBlockType, BlockType, ProduceResult } from "./produceBlock/ind
32
34
  import { BlockAttributes } from "./produceBlock/produceBlockBody.js";
33
35
  import { QueuedStateRegenerator, RegenCaller } from "./regen/index.js";
34
36
  import { ReprocessController } from "./reprocess.js";
35
- import { SeenAggregators, SeenAttesters, SeenBlockProposers, SeenContributionAndProof, SeenExecutionPayloadBids, SeenExecutionPayloadEnvelopes, SeenPayloadAttesters, SeenSyncCommitteeMessages } from "./seenCache/index.js";
37
+ import { PayloadEnvelopeInput, SeenAggregators, SeenAttesters, SeenBlockProposers, SeenContributionAndProof, SeenExecutionPayloadBids, SeenPayloadAttesters, SeenPayloadEnvelopeInput, SeenSyncCommitteeMessages } from "./seenCache/index.js";
36
38
  import { SeenAggregatedAttestations } from "./seenCache/seenAggregateAndProof.js";
37
39
  import { SeenAttestationDatas } from "./seenCache/seenAttestationData.js";
38
40
  import { SeenBlockAttesters } from "./seenCache/seenBlockAttesters.js";
@@ -60,6 +62,7 @@ export declare class BeaconChain implements IBeaconChain {
60
62
  readonly reprocessController: ReprocessController;
61
63
  readonly archiveStore: ArchiveStore;
62
64
  readonly unfinalizedBlockWrites: JobItemQueue<[IBlockInput], void>;
65
+ readonly unfinalizedPayloadEnvelopeWrites: JobItemQueue<[PayloadEnvelopeInput], void>;
63
66
  readonly attestationPool: AttestationPool;
64
67
  readonly aggregatedAttestationPool: AggregatedAttestationPool;
65
68
  readonly syncCommitteeMessagePool: SyncCommitteeMessagePool;
@@ -71,13 +74,13 @@ export declare class BeaconChain implements IBeaconChain {
71
74
  readonly seenAggregators: SeenAggregators;
72
75
  readonly seenPayloadAttesters: SeenPayloadAttesters;
73
76
  readonly seenAggregatedAttestations: SeenAggregatedAttestations;
74
- readonly seenExecutionPayloadEnvelopes: SeenExecutionPayloadEnvelopes;
75
77
  readonly seenExecutionPayloadBids: SeenExecutionPayloadBids;
76
78
  readonly seenBlockProposers: SeenBlockProposers;
77
79
  readonly seenSyncCommitteeMessages: SeenSyncCommitteeMessages;
78
80
  readonly seenContributionAndProof: SeenContributionAndProof;
79
81
  readonly seenAttestationDatas: SeenAttestationDatas;
80
82
  readonly seenBlockInputCache: SeenBlockInput;
83
+ readonly seenPayloadEnvelopeInputCache: SeenPayloadEnvelopeInput;
81
84
  readonly seenBlockAttesters: SeenBlockAttesters;
82
85
  readonly pubkeyCache: PubkeyCache;
83
86
  readonly beaconProposerCache: BeaconProposerCache;
@@ -95,6 +98,7 @@ export declare class BeaconChain implements IBeaconChain {
95
98
  readonly columnReconstructionTracker: ColumnReconstructionTracker;
96
99
  readonly opts: IChainOptions;
97
100
  protected readonly blockProcessor: BlockProcessor;
101
+ protected readonly payloadEnvelopeProcessor: PayloadEnvelopeProcessor;
98
102
  protected readonly db: IBeaconDb;
99
103
  private readonly cpStateDatastore?;
100
104
  private abortController;
@@ -115,7 +119,7 @@ export declare class BeaconChain implements IBeaconChain {
115
119
  clock?: IClock;
116
120
  metrics: Metrics | null;
117
121
  validatorMonitor: ValidatorMonitor | null;
118
- anchorState: CachedBeaconStateAllForks;
122
+ anchorState: IBeaconStateView;
119
123
  isAnchorStateFinalized: boolean;
120
124
  executionEngine: IExecutionEngine;
121
125
  executionBuilder?: IExecutionBuilder;
@@ -130,11 +134,11 @@ export declare class BeaconChain implements IBeaconChain {
130
134
  loadFromDisk(): Promise<void>;
131
135
  /** Persist in-memory data to the DB. Call at least once before stopping the process */
132
136
  persistToDisk(): Promise<void>;
133
- getHeadState(): CachedBeaconStateAllForks;
134
- getHeadStateAtCurrentEpoch(regenCaller: RegenCaller): Promise<CachedBeaconStateAllForks>;
135
- getHeadStateAtEpoch(epoch: Epoch, regenCaller: RegenCaller): Promise<CachedBeaconStateAllForks>;
137
+ getHeadState(): IBeaconStateView;
138
+ getHeadStateAtCurrentEpoch(regenCaller: RegenCaller): Promise<IBeaconStateView>;
139
+ getHeadStateAtEpoch(epoch: Epoch, regenCaller: RegenCaller): Promise<IBeaconStateView>;
136
140
  getStateBySlot(slot: Slot, opts?: StateGetOpts): Promise<{
137
- state: CachedBeaconStateAllForks;
141
+ state: IBeaconStateView;
138
142
  executionOptimistic: boolean;
139
143
  finalized: boolean;
140
144
  } | null>;
@@ -144,18 +148,18 @@ export declare class BeaconChain implements IBeaconChain {
144
148
  finalized: boolean;
145
149
  } | null>;
146
150
  getStateByStateRoot(stateRoot: RootHex, opts?: StateGetOpts): Promise<{
147
- state: CachedBeaconStateAllForks | Uint8Array;
151
+ state: IBeaconStateView | Uint8Array;
148
152
  executionOptimistic: boolean;
149
153
  finalized: boolean;
150
154
  } | null>;
151
155
  getPersistedCheckpointState(checkpoint?: phase0.Checkpoint): Promise<Uint8Array | null>;
152
156
  getStateByCheckpoint(checkpoint: CheckpointWithPayloadStatus): {
153
- state: BeaconStateAllForks;
157
+ state: IBeaconStateView;
154
158
  executionOptimistic: boolean;
155
159
  finalized: boolean;
156
160
  } | null;
157
161
  getStateOrBytesByCheckpoint(checkpoint: CheckpointWithPayloadStatus): Promise<{
158
- state: CachedBeaconStateAllForks | Uint8Array;
162
+ state: IBeaconStateView | Uint8Array;
159
163
  executionOptimistic: boolean;
160
164
  finalized: boolean;
161
165
  } | null>;
@@ -177,6 +181,7 @@ export declare class BeaconChain implements IBeaconChain {
177
181
  } | null>;
178
182
  getBlobSidecars(blockSlot: Slot, blockRootHex: string): Promise<deneb.BlobSidecars | null>;
179
183
  getSerializedBlobSidecars(blockSlot: Slot, blockRootHex: string): Promise<Uint8Array | null>;
184
+ getSerializedExecutionPayloadEnvelope(blockSlot: Slot, blockRootHex: string): Promise<Uint8Array | null>;
180
185
  getDataColumnSidecars(blockSlot: Slot, blockRootHex: string): Promise<DataColumnSidecars>;
181
186
  getSerializedDataColumnSidecars(blockSlot: Slot, blockRootHex: string, indices: number[]): Promise<(Uint8Array | undefined)[]>;
182
187
  produceCommonBlockBody(blockAttributes: BlockAttributes): Promise<CommonBlockBody>;
@@ -205,6 +210,7 @@ export declare class BeaconChain implements IBeaconChain {
205
210
  }>;
206
211
  processBlock(block: IBlockInput, opts?: ImportBlockOpts): Promise<void>;
207
212
  processChainSegment(blocks: IBlockInput[], opts?: ImportBlockOpts): Promise<void>;
213
+ processExecutionPayload(payloadInput: PayloadEnvelopeInput, opts?: ImportPayloadOpts): Promise<void>;
208
214
  getStatus(): Status;
209
215
  recomputeForkChoiceHead(caller: ForkchoiceCaller): ProtoBlock;
210
216
  predictProposerHead(slot: Slot): ProtoBlock;
@@ -220,10 +226,9 @@ export declare class BeaconChain implements IBeaconChain {
220
226
  * Invalid state root error is critical and it causes the node to stale most of the time so we want to always
221
227
  * persist preState, postState and block for further investigation.
222
228
  */
223
- persistInvalidStateRoot(preState: CachedBeaconStateAllForks, postState: CachedBeaconStateAllForks, block: SignedBeaconBlock): Promise<void>;
229
+ persistInvalidStateRoot(preState: IBeaconStateView, postState: IBeaconStateView, block: SignedBeaconBlock): Promise<void>;
224
230
  persistInvalidSszValue<T>(type: Type<T>, sszObject: T, suffix?: string): void;
225
231
  persistInvalidSszBytes(typeName: string, sszBytes: Uint8Array, suffix?: string): void;
226
- persistInvalidSszView(view: TreeView<CompositeTypeAny>, suffix?: string): void;
227
232
  /**
228
233
  * Regenerate state for attestation verification, this does not happen with default chain option of maxSkipSlots = 32 .
229
234
  * However, need to handle just in case. Lodestar doesn't support multiple regen state requests for attestation verification
@@ -1 +1 @@
1
- {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain/chain.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAC,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,2BAA2B,EAC3B,WAAW,EAEX,UAAU,EAGX,MAAM,uBAAuB,CAAC;AAW/B,OAAO,EACL,mBAAmB,EAEnB,yBAAyB,EAGzB,cAAc,EACd,WAAW,EAWZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,WAAW,EACX,kBAAkB,EAElB,kBAAkB,EAClB,KAAK,EACL,IAAI,EACJ,OAAO,EACP,iBAAiB,EACjB,IAAI,EACJ,MAAM,EACN,SAAS,EACT,cAAc,EACd,GAAG,EACH,KAAK,EAGL,MAAM,EACN,OAAO,EAGR,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,MAAM,EAAsE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAGzC,OAAO,EAAC,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAC,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAoB,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAC,aAAa,EAAkC,MAAM,wBAAwB,CAAC;AAItF,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAC,YAAY,EAAC,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAC,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAC,WAAW,EAAyC,MAAM,8BAA8B,CAAC;AACjG,OAAO,EAAC,cAAc,EAAE,eAAe,EAAC,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAoD,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAAC,2BAA2B,EAAC,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAa,iBAAiB,EAAC,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAuB,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,eAAe,EAAkB,YAAY,EAAE,uBAAuB,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACpH,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACvB,MAAM,EACN,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,EAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAC,aAAa,EAAC,MAAM,cAAc,CAAC;AAG3C,OAAO,EAAC,kBAAkB,EAAE,SAAS,EAAoB,aAAa,EAAC,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAC,eAAe,EAA2C,MAAM,oCAAoC,CAAC;AAC7G,OAAO,EAAC,sBAAsB,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAC,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC7B,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,0BAA0B,EAAC,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAC,kBAAkB,EAAC,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAC,cAAc,EAAC,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAOnD,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAmBvD,qBAAa,WAAY,YAAW,YAAY;IAC9C,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;IAChC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IAE9C,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,QAAQ,CAAC,0BAA0B,EAAE,IAAI,CAAC;IAE1C,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC;IACvC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAC/C,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;IAGnE,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,yBAAyB,EAAE,yBAAyB,CAAC;IAC9D,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;IAC5D,QAAQ,CAAC,4BAA4B,+BAAC;IACtC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAC1D,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAGxB,QAAQ,CAAC,aAAa,gBAAuB;IAC7C,QAAQ,CAAC,eAAe,kBAAyB;IACjD,QAAQ,CAAC,oBAAoB,uBAA8B;IAC3D,QAAQ,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;IAChE,QAAQ,CAAC,6BAA6B,gCAAuC;IAC7E,QAAQ,CAAC,wBAAwB,2BAAkC;IACnE,QAAQ,CAAC,kBAAkB,qBAA4B;IACvD,QAAQ,CAAC,yBAAyB,4BAAmC;IACrE,QAAQ,CAAC,wBAAwB,EAAE,wBAAwB,CAAC;IAC5D,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IACpD,QAAQ,CAAC,mBAAmB,EAAE,cAAc,CAAC;IAE7C,QAAQ,CAAC,kBAAkB,qBAA4B;IAGvD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAClD,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAC1D,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAExC;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,6BAAqC;IAElE,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;IAEtD,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAE1C,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,2BAA2B,EAAE,2BAA2B,CAAC;IAElE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAE7B,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAClD,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAmB;IACrD,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,uBAAuB,CAA0B;IACzD,OAAO,CAAC,sBAAsB,CAAO;IAErC,IAAI,qBAAqB,IAAI,IAAI,CAEhC;IAED,IAAI,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAKnC;IAED,YACE,IAAI,EAAE,aAAa,EACnB,EACE,UAAU,EACV,MAAM,EACN,WAAW,EACX,EAAE,EACF,MAAM,EACN,OAAO,EACP,MAAM,EACN,uBAAuB,EACvB,KAAK,EACL,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EACjB,EAAE;QACD,UAAU,EAAE,UAAU,CAAC;QACvB,MAAM,EAAE,YAAY,CAAC;QACrB,WAAW,EAAE,WAAW,CAAC;QACzB,EAAE,EAAE,SAAS,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,uBAAuB,EAAE,uBAAuB,CAAC;QACjD,4CAA4C;QAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;QACxB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;QAC1C,WAAW,EAAE,yBAAyB,CAAC;QACvC,sBAAsB,EAAE,OAAO,CAAC;QAChC,eAAe,EAAE,gBAAgB,CAAC;QAClC,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;KACtC,EA4LF;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAG1B;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAU3B;IAED,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAErC;IAED,kBAAkB,IAAI,OAAO,CAE5B;IAED,0BAA0B,IAAI,OAAO,CAEpC;IAED,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAmBjE;IAED,mFAAmF;IAC7E,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlC;IAED,uFAAuF;IACjF,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAGnC;IAED,YAAY,IAAI,yBAAyB,CAQxC;IAEK,0BAA0B,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAE7F;IAEK,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAYpG;IAEK,cAAc,CAClB,IAAI,EAAE,IAAI,EACV,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC;QAAC,KAAK,EAAE,yBAAyB,CAAC;QAAC,mBAAmB,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI,CAAC,CAmCtG;IAEK,wBAAwB,CAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC;QAAC,mBAAmB,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI,CAAC,CAMvF;IAEK,mBAAmB,CACvB,SAAS,EAAE,OAAO,EAClB,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC;QAAC,KAAK,EAAE,yBAAyB,GAAG,UAAU,CAAC;QAAC,mBAAmB,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI,CAAC,CA+BnH;IAEK,2BAA2B,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAc5F;IAED,oBAAoB,CAClB,UAAU,EAAE,2BAA2B,GACtC;QAAC,KAAK,EAAE,mBAAmB,CAAC;QAAC,mBAAmB,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI,CAevF;IAEK,2BAA2B,CAC/B,UAAU,EAAE,2BAA2B,GACtC,OAAO,CAAC;QAAC,KAAK,EAAE,yBAAyB,GAAG,UAAU,CAAC;QAAC,mBAAmB,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI,CAAC,CAcnH;IAEK,uBAAuB,CAC3B,IAAI,EAAE,IAAI,GACT,OAAO,CAAC;QAAC,KAAK,EAAE,iBAAiB,CAAC;QAAC,mBAAmB,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI,CAAC,CAyB9F;IAEK,cAAc,CAClB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAC,KAAK,EAAE,iBAAiB,CAAC;QAAC,mBAAmB,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAC,GAAG,IAAI,CAAC,CAoB9F;IAEK,wBAAwB,CAC5B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC;QAAC,mBAAmB,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAC,GAAG,IAAI,CAAC,CAqCnG;IAEK,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAgB/F;IAEK,yBAAyB,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAoBjG;IAEK,qBAAqB,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAc9F;IAEK,+BAA+B,CACnC,SAAS,EAAE,IAAI,EACf,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC,CAwBrC;IAEK,sBAAsB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAavF;IAED,YAAY,CAAC,eAAe,EAAE,eAAe,GAAG;QAAC,sBAAsB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;KAAC,GAAG,OAAO,CAAC;QAC3G,KAAK,EAAE,WAAW,CAAC;QACnB,qBAAqB,EAAE,GAAG,CAAC;QAC3B,mBAAmB,EAAE,GAAG,CAAC;QACzB,qBAAqB,CAAC,EAAE,OAAO,CAAC;KACjC,CAAC,CAED;IAED,mBAAmB,CAAC,eAAe,EAAE,eAAe,GAAG;QAAC,sBAAsB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;KAAC,GAAG,OAAO,CAAC;QAClH,KAAK,EAAE,kBAAkB,CAAC;QAC1B,qBAAqB,EAAE,GAAG,CAAC;QAC3B,mBAAmB,EAAE,GAAG,CAAC;KAC1B,CAAC,CAED;IAEK,mBAAmB,CAAC,CAAC,SAAS,SAAS,EAC3C,SAAS,EAAE,CAAC,EACZ,EACE,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACZ,EAAE,eAAe,GAAG;QAAC,sBAAsB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;KAAC,GACtE,OAAO,CAAC;QACT,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC7B,qBAAqB,EAAE,GAAG,CAAC;QAC3B,mBAAmB,EAAE,GAAG,CAAC;QACzB,qBAAqB,CAAC,EAAE,OAAO,CAAC;KACjC,CAAC,CAgFD;IAEK,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5E;IAEK,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtF;IAED,SAAS,IAAI,MAAM,CAkBlB;IAED,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAY5D;IAED,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CAa1C;IAED,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CAsBtC;IAED;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAExD;IAED,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,kBAAkB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAS1E;IAED;;;OAGG;IACG,uBAAuB,CAC3B,QAAQ,EAAE,yBAAyB,EACnC,SAAS,EAAE,yBAAyB,EACpC,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,IAAI,CAAC,CAyBf;IAED,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAI5E;IAED,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAIpF;IAED,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAI7E;IAED;;;;;OAKG;IACG,oCAAoC,CACxC,QAAQ,EAAE,KAAK,EACf,sBAAsB,EAAE,OAAO,EAC/B,YAAY,EAAE,UAAU,EACxB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,cAAc,CAAC,CAyBzB;IAED;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAgC/B;;;;;;OAMG;IACH,OAAO,CAAC,yCAAyC;YAmDnC,gBAAgB;IAkB9B,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,WAAW;IAoCnB,OAAO,CAAC,YAAY;IAepB,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAG1C;IAED,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,YAAY;YAON,qBAAqB;IA0B7B,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAchG;YAEa,kCAAkC;IAwDhD,mBAAmB,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAuBzC;IAEK,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAY5F;IAEK,sBAAsB,CAC1B,KAAK,EAAE,KAAK,EACZ,YAAY,CAAC,EAAE,CAAC,cAAc,GAAG,MAAM,CAAC,EAAE,GACzC,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC;QAAC,mBAAmB,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAC,CAAC,CAqBnG;IAEK,uBAAuB,CAC3B,KAAK,EAAE,WAAW,GAAG,kBAAkB,EACvC,YAAY,CAAC,EAAE,CAAC,cAAc,GAAG,MAAM,CAAC,EAAE,GACzC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAUvC;CACF"}
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain/chain.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import path from "node:path";
2
2
  import { PayloadStatus, UpdateHeadOpt, getCheckpointPayloadStatus, } from "@lodestar/fork-choice";
3
3
  import { BUILDER_INDEX_SELF_BUILD, EFFECTIVE_BALANCE_INCREMENT, GENESIS_SLOT, SLOTS_PER_EPOCH, isForkPostElectra, isForkPostGloas, } from "@lodestar/params";
4
- import { computeAnchorCheckpoint, computeAttestationsRewards, computeBlockRewards, computeEndSlotAtEpoch, computeEpochAtSlot, computeStartSlotAtEpoch, computeSyncCommitteeRewards, getEffectiveBalanceIncrementsZeroInactive, getEffectiveBalancesFromStateBytes, processSlots, } from "@lodestar/state-transition";
4
+ import { computeEndSlotAtEpoch, computeEpochAtSlot, computeStartSlotAtEpoch, getEffectiveBalancesFromStateBytes, } from "@lodestar/state-transition";
5
5
  import { isBlindedBeaconBlock, ssz, sszTypesFor, } from "@lodestar/types";
6
6
  import { fromHex, gweiToWei, isErrorAborted, pruneSetToMax, sleep, toRootHex } from "@lodestar/utils";
7
7
  import { GENESIS_EPOCH, ZERO_HASH } from "../constants/index.js";
@@ -22,7 +22,9 @@ import { CheckpointBalancesCache } from "./balancesCache.js";
22
22
  import { BeaconProposerCache } from "./beaconProposerCache.js";
23
23
  import { isBlockInputBlobs, isBlockInputColumns } from "./blocks/blockInput/index.js";
24
24
  import { BlockProcessor } from "./blocks/index.js";
25
+ import { PayloadEnvelopeProcessor } from "./blocks/payloadEnvelopeProcessor.js";
25
26
  import { persistBlockInput } from "./blocks/writeBlockInputToDb.js";
27
+ import { persistPayloadEnvelopeInput } from "./blocks/writePayloadEnvelopeInputToDb.js";
26
28
  import { BlsMultiThreadWorkerPool, BlsSingleThreadVerifier } from "./bls/index.js";
27
29
  import { ColumnReconstructionTracker } from "./ColumnReconstructionTracker.js";
28
30
  import { ChainEvent, ChainEventEmitter } from "./emitter.js";
@@ -37,7 +39,7 @@ import { BlockType } from "./produceBlock/index.js";
37
39
  import { produceBlockBody, produceCommonBlockBody } from "./produceBlock/produceBlockBody.js";
38
40
  import { QueuedStateRegenerator, RegenCaller } from "./regen/index.js";
39
41
  import { ReprocessController } from "./reprocess.js";
40
- import { SeenAggregators, SeenAttesters, SeenBlockProposers, SeenContributionAndProof, SeenExecutionPayloadBids, SeenExecutionPayloadEnvelopes, SeenPayloadAttesters, SeenSyncCommitteeMessages, } from "./seenCache/index.js";
42
+ import { SeenAggregators, SeenAttesters, SeenBlockProposers, SeenContributionAndProof, SeenExecutionPayloadBids, SeenPayloadAttesters, SeenPayloadEnvelopeInput, SeenSyncCommitteeMessages, } from "./seenCache/index.js";
41
43
  import { SeenAggregatedAttestations } from "./seenCache/seenAggregateAndProof.js";
42
44
  import { SeenAttestationDatas } from "./seenCache/seenAttestationData.js";
43
45
  import { SeenBlockAttesters } from "./seenCache/seenBlockAttesters.js";
@@ -62,6 +64,12 @@ const DEFAULT_MAX_CACHED_PRODUCED_RESULTS = 4;
62
64
  * write can hold significant memory. Keep moderate to avoid OOM during sync.
63
65
  */
64
66
  const DEFAULT_MAX_PENDING_UNFINALIZED_BLOCK_WRITES = 16;
67
+ /**
68
+ * The maximum number of pending unfinalized payload envelope writes to the database before backpressure is applied.
69
+ * Payload envelope write queue entries hold references to payload inputs (including columns),
70
+ * keeping them in memory. Keep moderate to avoid OOM during sync.
71
+ */
72
+ const DEFAULT_MAX_PENDING_UNFINALIZED_PAYLOAD_ENVELOPE_WRITES = 16;
65
73
  export class BeaconChain {
66
74
  genesisTime;
67
75
  genesisValidatorsRoot;
@@ -84,6 +92,7 @@ export class BeaconChain {
84
92
  reprocessController;
85
93
  archiveStore;
86
94
  unfinalizedBlockWrites;
95
+ unfinalizedPayloadEnvelopeWrites;
87
96
  // Ops pool
88
97
  attestationPool;
89
98
  aggregatedAttestationPool;
@@ -97,13 +106,13 @@ export class BeaconChain {
97
106
  seenAggregators = new SeenAggregators();
98
107
  seenPayloadAttesters = new SeenPayloadAttesters();
99
108
  seenAggregatedAttestations;
100
- seenExecutionPayloadEnvelopes = new SeenExecutionPayloadEnvelopes();
101
109
  seenExecutionPayloadBids = new SeenExecutionPayloadBids();
102
110
  seenBlockProposers = new SeenBlockProposers();
103
111
  seenSyncCommitteeMessages = new SeenSyncCommitteeMessages();
104
112
  seenContributionAndProof;
105
113
  seenAttestationDatas;
106
114
  seenBlockInputCache;
115
+ seenPayloadEnvelopeInputCache;
107
116
  // Seen cache for liveness checks
108
117
  seenBlockAttesters = new SeenBlockAttesters();
109
118
  // Global state caches
@@ -123,6 +132,7 @@ export class BeaconChain {
123
132
  columnReconstructionTracker;
124
133
  opts;
125
134
  blockProcessor;
135
+ payloadEnvelopeProcessor;
126
136
  db;
127
137
  // this is only available if nHistoricalStates is enabled
128
138
  cpStateDatastore;
@@ -193,26 +203,33 @@ export class BeaconChain {
193
203
  metrics,
194
204
  logger,
195
205
  });
206
+ this.seenPayloadEnvelopeInputCache = new SeenPayloadEnvelopeInput({
207
+ chainEvents: emitter,
208
+ signal,
209
+ serializedCache: this.serializedCache,
210
+ metrics,
211
+ logger,
212
+ });
196
213
  this._earliestAvailableSlot = anchorState.slot;
197
214
  this.shufflingCache = new ShufflingCache(metrics, logger, this.opts, [
198
215
  {
199
- shuffling: anchorState.epochCtx.previousShuffling,
200
- decisionRoot: anchorState.epochCtx.previousDecisionRoot,
216
+ shuffling: anchorState.getPreviousShuffling(),
217
+ decisionRoot: anchorState.previousDecisionRoot,
201
218
  },
202
219
  {
203
- shuffling: anchorState.epochCtx.currentShuffling,
204
- decisionRoot: anchorState.epochCtx.currentDecisionRoot,
220
+ shuffling: anchorState.getCurrentShuffling(),
221
+ decisionRoot: anchorState.currentDecisionRoot,
205
222
  },
206
223
  {
207
- shuffling: anchorState.epochCtx.nextShuffling,
208
- decisionRoot: anchorState.epochCtx.nextDecisionRoot,
224
+ shuffling: anchorState.getNextShuffling(),
225
+ decisionRoot: anchorState.nextDecisionRoot,
209
226
  },
210
227
  ]);
211
228
  // Global cache of validators pubkey/index mapping
212
229
  this.pubkeyCache = pubkeyCache;
213
230
  const fileDataStore = opts.nHistoricalStatesFileDataStore ?? true;
214
231
  const blockStateCache = new FIFOBlockStateCache(this.opts, { metrics });
215
- this.bufferPool = new BufferPool(anchorState.type.tree_serializedSize(anchorState.node), metrics);
232
+ this.bufferPool = new BufferPool(anchorState.serializedSize(), metrics);
216
233
  this.cpStateDatastore = fileDataStore ? new FileCPStateDatastore(dataDir) : new DbCPStateDatastore(this.db);
217
234
  const checkpointStateCache = new PersistentCheckpointStateCache({
218
235
  config,
@@ -223,10 +240,10 @@ export class BeaconChain {
223
240
  bufferPool: this.bufferPool,
224
241
  datastore: this.cpStateDatastore,
225
242
  }, this.opts);
226
- const { checkpoint } = computeAnchorCheckpoint(config, anchorState);
243
+ const { checkpoint } = anchorState.computeAnchorCheckpoint();
227
244
  blockStateCache.add(anchorState);
228
245
  blockStateCache.setHeadState(anchorState);
229
- const payloadPresent = getCheckpointPayloadStatus(anchorState, checkpoint.epoch) === PayloadStatus.FULL;
246
+ const payloadPresent = getCheckpointPayloadStatus(config, anchorState, checkpoint.epoch) === PayloadStatus.FULL;
230
247
  checkpointStateCache.add(checkpoint, anchorState, payloadPresent);
231
248
  const forkChoice = initializeForkChoice(config, emitter, clock.currentSlot, anchorState, isAnchorStateFinalized, opts, this.justifiedBalancesGetter.bind(this), metrics, logger);
232
249
  const regen = new QueuedStateRegenerator({
@@ -247,6 +264,7 @@ export class BeaconChain {
247
264
  }
248
265
  this.reprocessController = new ReprocessController(this.metrics);
249
266
  this.blockProcessor = new BlockProcessor(this, metrics, opts, signal);
267
+ this.payloadEnvelopeProcessor = new PayloadEnvelopeProcessor(this, metrics, signal);
250
268
  this.forkChoice = forkChoice;
251
269
  this.clock = clock;
252
270
  this.regen = regen;
@@ -270,6 +288,10 @@ export class BeaconChain {
270
288
  maxLength: DEFAULT_MAX_PENDING_UNFINALIZED_BLOCK_WRITES,
271
289
  signal,
272
290
  }, metrics?.unfinalizedBlockWritesQueue);
291
+ this.unfinalizedPayloadEnvelopeWrites = new JobItemQueue(persistPayloadEnvelopeInput.bind(this), {
292
+ maxLength: DEFAULT_MAX_PENDING_UNFINALIZED_PAYLOAD_ENVELOPE_WRITES,
293
+ signal,
294
+ }, metrics?.unfinalizedPayloadEnvelopeWritesQueue);
273
295
  // always run PrepareNextSlotScheduler except for fork_choice spec tests
274
296
  if (!opts?.disablePrepareNextSlot) {
275
297
  new PrepareNextSlotScheduler(this, this.config, metrics, this.logger, signal);
@@ -295,6 +317,7 @@ export class BeaconChain {
295
317
  // we can abort any ongoing unfinalized block writes.
296
318
  // TODO: persist fork choice to disk and allow unfinalized block writes to complete.
297
319
  this.unfinalizedBlockWrites.dropAllJobs();
320
+ this.unfinalizedPayloadEnvelopeWrites.dropAllJobs();
298
321
  this.abortController.abort();
299
322
  }
300
323
  seenBlock(blockRoot) {
@@ -398,12 +421,12 @@ export class BeaconChain {
398
421
  async getStateByStateRoot(stateRoot, opts) {
399
422
  if (opts?.allowRegen) {
400
423
  const state = await this.regen.getState(stateRoot, RegenCaller.restApi);
401
- const block = this.forkChoice.getBlockDefaultStatus(state.latestBlockHeader.hashTreeRoot());
424
+ const block = this.forkChoice.getBlockDefaultStatus(ssz.phase0.BeaconBlockHeader.hashTreeRoot(state.latestBlockHeader));
402
425
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
403
426
  return {
404
427
  state,
405
428
  executionOptimistic: block != null && isOptimisticBlock(block),
406
- finalized: state.epochCtx.epoch <= finalizedEpoch && finalizedEpoch !== GENESIS_EPOCH,
429
+ finalized: state.epoch <= finalizedEpoch && finalizedEpoch !== GENESIS_EPOCH,
407
430
  };
408
431
  }
409
432
  // TODO: This can only fulfill requests for a very narrow set of roots.
@@ -412,12 +435,12 @@ export class BeaconChain {
412
435
  // TODO: This is very inneficient for debug requests of serialized content, since it deserializes to serialize again
413
436
  const cachedStateCtx = this.regen.getStateSync(stateRoot);
414
437
  if (cachedStateCtx) {
415
- const block = this.forkChoice.getBlockDefaultStatus(cachedStateCtx.latestBlockHeader.hashTreeRoot());
438
+ const block = this.forkChoice.getBlockDefaultStatus(ssz.phase0.BeaconBlockHeader.hashTreeRoot(cachedStateCtx.latestBlockHeader));
416
439
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
417
440
  return {
418
441
  state: cachedStateCtx,
419
442
  executionOptimistic: block != null && isOptimisticBlock(block),
420
- finalized: cachedStateCtx.epochCtx.epoch <= finalizedEpoch && finalizedEpoch !== GENESIS_EPOCH,
443
+ finalized: cachedStateCtx.epoch <= finalizedEpoch && finalizedEpoch !== GENESIS_EPOCH,
421
444
  };
422
445
  }
423
446
  // this is mostly useful for a node with `--chain.archiveStateEpochFrequency 1`
@@ -442,12 +465,12 @@ export class BeaconChain {
442
465
  const checkpointHexPayload = fcCheckpointToHexPayload(checkpoint);
443
466
  const cachedStateCtx = this.regen.getCheckpointStateSync(checkpointHexPayload);
444
467
  if (cachedStateCtx) {
445
- const block = this.forkChoice.getBlockDefaultStatus(cachedStateCtx.latestBlockHeader.hashTreeRoot());
468
+ const block = this.forkChoice.getBlockDefaultStatus(ssz.phase0.BeaconBlockHeader.hashTreeRoot(cachedStateCtx.latestBlockHeader));
446
469
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
447
470
  return {
448
471
  state: cachedStateCtx,
449
472
  executionOptimistic: block != null && isOptimisticBlock(block),
450
- finalized: cachedStateCtx.epochCtx.epoch <= finalizedEpoch && finalizedEpoch !== GENESIS_EPOCH,
473
+ finalized: cachedStateCtx.epoch <= finalizedEpoch && finalizedEpoch !== GENESIS_EPOCH,
451
474
  };
452
475
  }
453
476
  return null;
@@ -587,6 +610,20 @@ export class BeaconChain {
587
610
  }
588
611
  return null;
589
612
  }
613
+ async getSerializedExecutionPayloadEnvelope(blockSlot, blockRootHex) {
614
+ const payloadInput = this.seenPayloadEnvelopeInputCache.get(blockRootHex);
615
+ if (payloadInput?.hasPayloadEnvelope()) {
616
+ const envelope = payloadInput.getPayloadEnvelope();
617
+ const serialized = this.serializedCache.get(envelope);
618
+ if (serialized) {
619
+ return serialized;
620
+ }
621
+ return ssz.gloas.SignedExecutionPayloadEnvelope.serialize(envelope);
622
+ }
623
+ return ((await this.db.executionPayloadEnvelope.getBinary(fromHex(blockRootHex))) ??
624
+ (await this.db.executionPayloadEnvelopeArchive.getBinary(blockSlot)) ??
625
+ null);
626
+ }
590
627
  async getDataColumnSidecars(blockSlot, blockRootHex) {
591
628
  const blockInput = this.seenBlockInputCache.get(blockRootHex);
592
629
  if (blockInput) {
@@ -641,9 +678,8 @@ export class BeaconChain {
641
678
  return this.produceBlockWrapper(BlockType.Blinded, blockAttributes);
642
679
  }
643
680
  async produceBlockWrapper(blockType, { randaoReveal, graffiti, slot, feeRecipient, commonBlockBodyPromise, parentBlock, }) {
644
- const fork = this.config.getForkName(slot);
645
681
  const state = await this.regen.getBlockSlotState(parentBlock, slot, { dontTransferCache: true }, RegenCaller.produceBlock);
646
- const proposerIndex = state.epochCtx.getBeaconProposer(slot);
682
+ const proposerIndex = state.getBeaconProposer(slot);
647
683
  const proposerPubKey = this.pubkeyCache.getOrThrow(proposerIndex).toBytes();
648
684
  const { body, produceResult, executionPayloadValue, shouldOverrideBuilder } = await produceBlockBody.call(this, blockType, state, {
649
685
  randaoReveal,
@@ -657,7 +693,7 @@ export class BeaconChain {
657
693
  });
658
694
  // The hashtree root computed here for debug log will get cached and hence won't introduce additional delays
659
695
  const bodyRoot = produceResult.type === BlockType.Full
660
- ? sszTypesFor(fork).BeaconBlockBody.hashTreeRoot(body)
696
+ ? this.config.getForkTypes(slot).BeaconBlockBody.hashTreeRoot(body)
661
697
  : this.config
662
698
  .getPostBellatrixForkTypes(slot)
663
699
  .BlindedBeaconBlockBody.hashTreeRoot(body);
@@ -676,9 +712,10 @@ export class BeaconChain {
676
712
  const { newStateRoot, proposerReward, postState } = computeNewStateRoot(this.metrics, state, block);
677
713
  block.stateRoot = newStateRoot;
678
714
  const blockRoot = produceResult.type === BlockType.Full
679
- ? sszTypesFor(fork).BeaconBlock.hashTreeRoot(block)
715
+ ? this.config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block)
680
716
  : this.config.getPostBellatrixForkTypes(slot).BlindedBeaconBlock.hashTreeRoot(block);
681
717
  const blockRootHex = toRootHex(blockRoot);
718
+ const fork = this.config.getForkName(slot);
682
719
  if (isForkPostGloas(fork)) {
683
720
  // TODO GLOAS: we should retire BlockType post-gloas, may need a new enum for self vs non-self built
684
721
  if (produceResult.type !== BlockType.Full) {
@@ -707,6 +744,9 @@ export class BeaconChain {
707
744
  async processChainSegment(blocks, opts) {
708
745
  return this.blockProcessor.processBlocksJob(blocks, opts);
709
746
  }
747
+ async processExecutionPayload(payloadInput, opts) {
748
+ return this.payloadEnvelopeProcessor.processPayloadEnvelopeJob(payloadInput, opts);
749
+ }
710
750
  getStatus() {
711
751
  const head = this.forkChoice.getHead();
712
752
  const finalizedCheckpoint = this.forkChoice.getFinalizedCheckpoint();
@@ -808,8 +848,8 @@ export class BeaconChain {
808
848
  const logStr = `slot_${blockSlot}_invalid_state_root_${toRootHex(postStateRoot)}`;
809
849
  await Promise.all([
810
850
  this.persistSszObject(`SignedBeaconBlock_slot_${blockSlot}`, blockType.serialize(block), blockType.hashTreeRoot(block), `${logStr}_block`),
811
- this.persistSszObject(`preState_slot_${preState.slot}_${preState.type.typeName}`, preState.serialize(), preState.hashTreeRoot(), `${logStr}_pre_state`),
812
- this.persistSszObject(`postState_slot_${postState.slot}_${postState.type.typeName}`, postState.serialize(), postState.hashTreeRoot(), `${logStr}_post_state`),
851
+ this.persistSszObject(`preState_slot_${preState.slot}_BeaconState`, preState.serialize(), preState.hashTreeRoot(), `${logStr}_pre_state`),
852
+ this.persistSszObject(`postState_slot_${postState.slot}_BeaconState`, postState.serialize(), postState.hashTreeRoot(), `${logStr}_post_state`),
813
853
  ]);
814
854
  }
815
855
  persistInvalidSszValue(type, sszObject, suffix) {
@@ -822,11 +862,6 @@ export class BeaconChain {
822
862
  void this.persistSszObject(typeName, sszBytes, sszBytes, suffix);
823
863
  }
824
864
  }
825
- persistInvalidSszView(view, suffix) {
826
- if (this.opts.persistInvalidSszObjects) {
827
- void this.persistSszObject(view.type.typeName, view.serialize(), view.hashTreeRoot(), suffix);
828
- }
829
- }
830
865
  /**
831
866
  * Regenerate state for attestation verification, this does not happen with default chain option of maxSkipSlots = 32 .
832
867
  * However, need to handle just in case. Lodestar doesn't support multiple regen state requests for attestation verification
@@ -858,7 +893,7 @@ export class BeaconChain {
858
893
  }
859
894
  // resolve the promise to unblock other calls of the same epoch and dependent root
860
895
  this.shufflingCache.processState(state);
861
- return state.epochCtx.getShufflingAtEpoch(attEpoch);
896
+ return state.getShufflingAtEpoch(attEpoch);
862
897
  }
863
898
  /**
864
899
  * `ForkChoice.onBlock` must never throw for a block that is valid with respect to the network
@@ -888,7 +923,7 @@ export class BeaconChain {
888
923
  stateRoot: toRootHex(state.hashTreeRoot()),
889
924
  });
890
925
  }
891
- return getEffectiveBalanceIncrementsZeroInactive(state);
926
+ return state.getEffectiveBalanceIncrementsZeroInactive();
892
927
  }
893
928
  /**
894
929
  * - Assumptions + invariant this function is based on:
@@ -961,10 +996,9 @@ export class BeaconChain {
961
996
  const headState = this.getHeadState();
962
997
  const fork = this.config.getForkName(headState.slot);
963
998
  if (isForkPostElectra(fork)) {
964
- const headStateElectra = headState;
965
- metrics.pendingDeposits.set(headStateElectra.pendingDeposits.length);
966
- metrics.pendingPartialWithdrawals.set(headStateElectra.pendingPartialWithdrawals.length);
967
- metrics.pendingConsolidations.set(headStateElectra.pendingConsolidations.length);
999
+ metrics.pendingDeposits.set(headState.pendingDepositsCount);
1000
+ metrics.pendingPartialWithdrawals.set(headState.pendingPartialWithdrawalsCount);
1001
+ metrics.pendingConsolidations.set(headState.pendingConsolidationsCount);
968
1002
  }
969
1003
  }
970
1004
  onClockSlot(slot) {
@@ -1027,7 +1061,6 @@ export class BeaconChain {
1027
1061
  this.logger.verbose("Fork choice finalized", { epoch: cp.epoch, root: cp.rootHex });
1028
1062
  const finalizedSlot = computeStartSlotAtEpoch(cp.epoch);
1029
1063
  this.seenBlockProposers.prune(finalizedSlot);
1030
- this.seenExecutionPayloadEnvelopes.prune(finalizedSlot);
1031
1064
  // Update validator custody to account for effective balance changes
1032
1065
  await this.updateValidatorsCustodyRequirement(cp);
1033
1066
  // TODO: Improve using regen here
@@ -1090,7 +1123,7 @@ export class BeaconChain {
1090
1123
  effectiveBalances = getEffectiveBalancesFromStateBytes(this.config, stateOrBytes, validatorIndices);
1091
1124
  }
1092
1125
  else {
1093
- effectiveBalances = validatorIndices.map((index) => stateOrBytes.validators.get(index).effectiveBalance ?? 0);
1126
+ effectiveBalances = validatorIndices.map((index) => stateOrBytes.getValidator(index).effectiveBalance ?? 0);
1094
1127
  }
1095
1128
  }
1096
1129
  const targetCustodyGroupCount = getValidatorsCustodyRequirement(this.config, effectiveBalances);
@@ -1135,9 +1168,9 @@ export class BeaconChain {
1135
1168
  if (preState === null) {
1136
1169
  throw Error(`Pre-state is unavailable given block's parent root ${toRootHex(block.parentRoot)}`);
1137
1170
  }
1138
- preState = processSlots(preState, block.slot); // Dial preState's slot to block.slot
1171
+ preState = preState.processSlots(block.slot); // Dial preState's slot to block.slot
1139
1172
  const proposerRewards = this.regen.getStateSync(toRootHex(block.stateRoot))?.proposerRewards ?? undefined;
1140
- return computeBlockRewards(this.config, block, preState, proposerRewards);
1173
+ return preState.computeBlockRewards(block, proposerRewards);
1141
1174
  }
1142
1175
  async getAttestationsRewards(epoch, validatorIds) {
1143
1176
  // We use end slot of (epoch + 1) to ensure we have seen all attestations. On-time or late. Any late attestation beyond this slot is not considered
@@ -1152,7 +1185,7 @@ export class BeaconChain {
1152
1185
  if (cachedState === null) {
1153
1186
  throw Error(`State is not in cache for slot ${slot}`);
1154
1187
  }
1155
- const rewards = await computeAttestationsRewards(this.config, this.pubkeyCache, cachedState, validatorIds);
1188
+ const rewards = await cachedState.computeAttestationsRewards(validatorIds);
1156
1189
  return { rewards, executionOptimistic, finalized };
1157
1190
  }
1158
1191
  async getSyncCommitteeRewards(block, validatorIds) {
@@ -1160,8 +1193,8 @@ export class BeaconChain {
1160
1193
  if (preState === null) {
1161
1194
  throw Error(`Pre-state is unavailable given block's parent root ${toRootHex(block.parentRoot)}`);
1162
1195
  }
1163
- preState = processSlots(preState, block.slot); // Dial preState's slot to block.slot
1164
- return computeSyncCommitteeRewards(this.config, this.pubkeyCache, block, preState, validatorIds);
1196
+ preState = preState.processSlots(block.slot); // Dial preState's slot to block.slot
1197
+ return preState.computeSyncCommitteeRewards(block, validatorIds ?? []);
1165
1198
  }
1166
1199
  }
1167
1200
  //# sourceMappingURL=chain.js.map