@lodestar/beacon-node 1.42.0-dev.70938e1eec → 1.42.0-dev.78c54f483b

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 (368) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/beacon/pool/index.js +1 -1
  4. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  5. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  6. package/lib/api/impl/beacon/state/index.js +27 -32
  7. package/lib/api/impl/beacon/state/index.js.map +1 -1
  8. package/lib/api/impl/beacon/state/utils.d.ts +4 -4
  9. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  10. package/lib/api/impl/beacon/state/utils.js +7 -10
  11. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  12. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  13. package/lib/api/impl/lodestar/index.js +4 -6
  14. package/lib/api/impl/lodestar/index.js.map +1 -1
  15. package/lib/api/impl/proof/index.d.ts.map +1 -1
  16. package/lib/api/impl/proof/index.js +2 -6
  17. package/lib/api/impl/proof/index.js.map +1 -1
  18. package/lib/api/impl/validator/index.d.ts.map +1 -1
  19. package/lib/api/impl/validator/index.js +27 -27
  20. package/lib/api/impl/validator/index.js.map +1 -1
  21. package/lib/api/impl/validator/utils.d.ts +2 -2
  22. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  23. package/lib/api/impl/validator/utils.js +3 -3
  24. package/lib/api/impl/validator/utils.js.map +1 -1
  25. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  26. package/lib/chain/archiveStore/archiveStore.js +1 -0
  27. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  28. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +3 -7
  29. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  30. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +8 -26
  31. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  32. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts +2 -2
  33. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
  34. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +1 -0
  35. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  36. package/lib/chain/archiveStore/historicalState/types.d.ts +2 -0
  37. package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -1
  38. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  39. package/lib/chain/archiveStore/historicalState/worker.js +1 -3
  40. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  41. package/lib/chain/archiveStore/interface.d.ts +1 -0
  42. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  43. package/lib/chain/balancesCache.d.ts +2 -2
  44. package/lib/chain/balancesCache.d.ts.map +1 -1
  45. package/lib/chain/balancesCache.js +4 -4
  46. package/lib/chain/balancesCache.js.map +1 -1
  47. package/lib/chain/blocks/blockInput/types.d.ts +1 -0
  48. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  49. package/lib/chain/blocks/blockInput/types.js +1 -0
  50. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  51. package/lib/chain/blocks/importBlock.d.ts +3 -3
  52. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  53. package/lib/chain/blocks/importBlock.js +21 -21
  54. package/lib/chain/blocks/importBlock.js.map +1 -1
  55. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  56. package/lib/chain/blocks/importExecutionPayload.js +25 -17
  57. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  58. package/lib/chain/blocks/index.d.ts.map +1 -1
  59. package/lib/chain/blocks/index.js +3 -2
  60. package/lib/chain/blocks/index.js.map +1 -1
  61. package/lib/chain/blocks/types.d.ts +21 -15
  62. package/lib/chain/blocks/types.d.ts.map +1 -1
  63. package/lib/chain/blocks/types.js.map +1 -1
  64. package/lib/chain/blocks/utils/checkpoint.d.ts +2 -2
  65. package/lib/chain/blocks/utils/checkpoint.d.ts.map +1 -1
  66. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  67. package/lib/chain/blocks/verifyBlock.d.ts +2 -2
  68. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  69. package/lib/chain/blocks/verifyBlock.js +4 -4
  70. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  71. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +5 -5
  72. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  73. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +4 -4
  74. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  75. package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -2
  76. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  77. package/lib/chain/blocks/verifyBlocksSignatures.js +1 -1
  78. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  79. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +3 -3
  80. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  81. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +3 -3
  82. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  83. package/lib/chain/chain.d.ts +12 -12
  84. package/lib/chain/chain.d.ts.map +1 -1
  85. package/lib/chain/chain.js +47 -39
  86. package/lib/chain/chain.js.map +1 -1
  87. package/lib/chain/emitter.d.ts +2 -2
  88. package/lib/chain/emitter.d.ts.map +1 -1
  89. package/lib/chain/errors/blockError.d.ts +4 -4
  90. package/lib/chain/errors/blockError.d.ts.map +1 -1
  91. package/lib/chain/forkChoice/index.d.ts +4 -4
  92. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  93. package/lib/chain/forkChoice/index.js +27 -23
  94. package/lib/chain/forkChoice/index.js.map +1 -1
  95. package/lib/chain/initState.d.ts +2 -2
  96. package/lib/chain/initState.d.ts.map +1 -1
  97. package/lib/chain/initState.js +1 -1
  98. package/lib/chain/initState.js.map +1 -1
  99. package/lib/chain/interface.d.ts +11 -12
  100. package/lib/chain/interface.d.ts.map +1 -1
  101. package/lib/chain/lightClient/index.d.ts +2 -2
  102. package/lib/chain/lightClient/index.d.ts.map +1 -1
  103. package/lib/chain/lightClient/index.js +4 -4
  104. package/lib/chain/lightClient/index.js.map +1 -1
  105. package/lib/chain/opPools/aggregatedAttestationPool.d.ts +6 -6
  106. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  107. package/lib/chain/opPools/aggregatedAttestationPool.js +10 -13
  108. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  109. package/lib/chain/opPools/opPool.d.ts +3 -3
  110. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  111. package/lib/chain/opPools/opPool.js +7 -7
  112. package/lib/chain/opPools/opPool.js.map +1 -1
  113. package/lib/chain/opPools/utils.d.ts +2 -2
  114. package/lib/chain/opPools/utils.d.ts.map +1 -1
  115. package/lib/chain/opPools/utils.js +1 -1
  116. package/lib/chain/opPools/utils.js.map +1 -1
  117. package/lib/chain/options.d.ts +1 -0
  118. package/lib/chain/options.d.ts.map +1 -1
  119. package/lib/chain/options.js +1 -0
  120. package/lib/chain/options.js.map +1 -1
  121. package/lib/chain/prepareNextSlot.d.ts +2 -2
  122. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  123. package/lib/chain/prepareNextSlot.js +3 -3
  124. package/lib/chain/prepareNextSlot.js.map +1 -1
  125. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +4 -4
  126. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  127. package/lib/chain/produceBlock/computeNewStateRoot.js +3 -4
  128. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  129. package/lib/chain/produceBlock/produceBlockBody.d.ts +5 -5
  130. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  131. package/lib/chain/produceBlock/produceBlockBody.js +12 -16
  132. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  133. package/lib/chain/regen/interface.d.ts +13 -13
  134. package/lib/chain/regen/interface.d.ts.map +1 -1
  135. package/lib/chain/regen/queued.d.ts +14 -14
  136. package/lib/chain/regen/queued.d.ts.map +1 -1
  137. package/lib/chain/regen/queued.js.map +1 -1
  138. package/lib/chain/regen/regen.d.ts +6 -5
  139. package/lib/chain/regen/regen.d.ts.map +1 -1
  140. package/lib/chain/regen/regen.js +6 -6
  141. package/lib/chain/regen/regen.js.map +1 -1
  142. package/lib/chain/serializeState.d.ts +2 -2
  143. package/lib/chain/serializeState.d.ts.map +1 -1
  144. package/lib/chain/serializeState.js +1 -1
  145. package/lib/chain/serializeState.js.map +1 -1
  146. package/lib/chain/shufflingCache.d.ts +2 -2
  147. package/lib/chain/shufflingCache.d.ts.map +1 -1
  148. package/lib/chain/shufflingCache.js +3 -4
  149. package/lib/chain/shufflingCache.js.map +1 -1
  150. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +6 -6
  151. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  152. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  153. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +11 -11
  154. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  155. package/lib/chain/stateCache/persistentCheckpointsCache.js +12 -16
  156. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  157. package/lib/chain/stateCache/types.d.ts +14 -14
  158. package/lib/chain/stateCache/types.d.ts.map +1 -1
  159. package/lib/chain/stateCache/types.js.map +1 -1
  160. package/lib/chain/validation/attesterSlashing.js +3 -3
  161. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  162. package/lib/chain/validation/blobSidecar.js +1 -1
  163. package/lib/chain/validation/blobSidecar.js.map +1 -1
  164. package/lib/chain/validation/block.d.ts.map +1 -1
  165. package/lib/chain/validation/block.js +3 -3
  166. package/lib/chain/validation/block.js.map +1 -1
  167. package/lib/chain/validation/blsToExecutionChange.js +2 -2
  168. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  169. package/lib/chain/validation/dataColumnSidecar.js +1 -1
  170. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  171. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  172. package/lib/chain/validation/executionPayloadBid.js +4 -4
  173. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  174. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  175. package/lib/chain/validation/executionPayloadEnvelope.js +2 -3
  176. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  177. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
  178. package/lib/chain/validation/payloadAttestationMessage.js +1 -2
  179. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  180. package/lib/chain/validation/proposerSlashing.js +1 -1
  181. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  182. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -2
  183. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
  184. package/lib/chain/validation/signatureSets/contributionAndProof.js +1 -1
  185. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  186. package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -2
  187. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
  188. package/lib/chain/validation/signatureSets/syncCommittee.js +1 -1
  189. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  190. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -2
  191. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
  192. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  193. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -2
  194. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
  195. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +1 -1
  196. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  197. package/lib/chain/validation/syncCommittee.d.ts +4 -4
  198. package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
  199. package/lib/chain/validation/syncCommittee.js +13 -12
  200. package/lib/chain/validation/syncCommittee.js.map +1 -1
  201. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
  202. package/lib/chain/validation/syncCommitteeContributionAndProof.js +1 -1
  203. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  204. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
  205. package/lib/chain/validation/voluntaryExit.js +3 -3
  206. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  207. package/lib/chain/validatorMonitor.d.ts +3 -3
  208. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  209. package/lib/chain/validatorMonitor.js +9 -7
  210. package/lib/chain/validatorMonitor.js.map +1 -1
  211. package/lib/metrics/metrics/lodestar.d.ts +12 -4
  212. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  213. package/lib/metrics/metrics/lodestar.js +19 -15
  214. package/lib/metrics/metrics/lodestar.js.map +1 -1
  215. package/lib/network/gossip/encoding.d.ts.map +1 -1
  216. package/lib/network/gossip/encoding.js +15 -0
  217. package/lib/network/gossip/encoding.js.map +1 -1
  218. package/lib/network/interface.d.ts +4 -2
  219. package/lib/network/interface.d.ts.map +1 -1
  220. package/lib/network/libp2p/index.d.ts.map +1 -1
  221. package/lib/network/libp2p/index.js +5 -0
  222. package/lib/network/libp2p/index.js.map +1 -1
  223. package/lib/network/network.d.ts +4 -2
  224. package/lib/network/network.d.ts.map +1 -1
  225. package/lib/network/network.js +9 -3
  226. package/lib/network/network.js.map +1 -1
  227. package/lib/network/processor/extractSlotRootFns.d.ts +1 -1
  228. package/lib/network/processor/extractSlotRootFns.js +1 -1
  229. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  230. package/lib/network/processor/gossipHandlers.js +9 -7
  231. package/lib/network/processor/gossipHandlers.js.map +1 -1
  232. package/lib/network/processor/index.d.ts +12 -7
  233. package/lib/network/processor/index.d.ts.map +1 -1
  234. package/lib/network/processor/index.js +99 -78
  235. package/lib/network/processor/index.js.map +1 -1
  236. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  237. package/lib/network/reqresp/ReqRespBeaconNode.js +9 -0
  238. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  239. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts +8 -0
  240. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.d.ts.map +1 -0
  241. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js +69 -0
  242. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRange.js.map +1 -0
  243. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts +6 -0
  244. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.d.ts.map +1 -0
  245. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js +28 -0
  246. package/lib/network/reqresp/handlers/executionPayloadEnvelopesByRoot.js.map +1 -0
  247. package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
  248. package/lib/network/reqresp/handlers/index.js +11 -1
  249. package/lib/network/reqresp/handlers/index.js.map +1 -1
  250. package/lib/network/reqresp/protocols.d.ts +2 -0
  251. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  252. package/lib/network/reqresp/protocols.js +10 -0
  253. package/lib/network/reqresp/protocols.js.map +1 -1
  254. package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
  255. package/lib/network/reqresp/rateLimit.js +8 -0
  256. package/lib/network/reqresp/rateLimit.js.map +1 -1
  257. package/lib/network/reqresp/score.d.ts.map +1 -1
  258. package/lib/network/reqresp/score.js +2 -0
  259. package/lib/network/reqresp/score.js.map +1 -1
  260. package/lib/network/reqresp/types.d.ts +8 -2
  261. package/lib/network/reqresp/types.d.ts.map +1 -1
  262. package/lib/network/reqresp/types.js +7 -1
  263. package/lib/network/reqresp/types.js.map +1 -1
  264. package/lib/node/nodejs.d.ts +2 -2
  265. package/lib/node/nodejs.d.ts.map +1 -1
  266. package/lib/node/nodejs.js +1 -4
  267. package/lib/node/nodejs.js.map +1 -1
  268. package/lib/node/notifier.d.ts.map +1 -1
  269. package/lib/node/notifier.js +3 -3
  270. package/lib/node/notifier.js.map +1 -1
  271. package/lib/sync/backfill/backfill.d.ts +2 -2
  272. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  273. package/lib/sync/backfill/backfill.js +2 -2
  274. package/lib/sync/backfill/backfill.js.map +1 -1
  275. package/lib/sync/unknownBlock.d.ts +3 -9
  276. package/lib/sync/unknownBlock.d.ts.map +1 -1
  277. package/lib/sync/unknownBlock.js +8 -41
  278. package/lib/sync/unknownBlock.js.map +1 -1
  279. package/lib/util/types.d.ts +2 -0
  280. package/lib/util/types.d.ts.map +1 -1
  281. package/lib/util/types.js +1 -0
  282. package/lib/util/types.js.map +1 -1
  283. package/package.json +16 -16
  284. package/src/api/impl/beacon/blocks/index.ts +1 -1
  285. package/src/api/impl/beacon/pool/index.ts +1 -1
  286. package/src/api/impl/beacon/state/index.ts +29 -41
  287. package/src/api/impl/beacon/state/utils.ts +11 -25
  288. package/src/api/impl/lodestar/index.ts +4 -8
  289. package/src/api/impl/proof/index.ts +2 -9
  290. package/src/api/impl/validator/index.ts +29 -41
  291. package/src/api/impl/validator/utils.ts +4 -7
  292. package/src/chain/archiveStore/archiveStore.ts +1 -0
  293. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +10 -39
  294. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +2 -1
  295. package/src/chain/archiveStore/historicalState/types.ts +2 -0
  296. package/src/chain/archiveStore/historicalState/worker.ts +1 -4
  297. package/src/chain/archiveStore/interface.ts +1 -0
  298. package/src/chain/balancesCache.ts +5 -11
  299. package/src/chain/blocks/blockInput/types.ts +1 -0
  300. package/src/chain/blocks/importBlock.ts +23 -25
  301. package/src/chain/blocks/importExecutionPayload.ts +29 -23
  302. package/src/chain/blocks/index.ts +3 -2
  303. package/src/chain/blocks/types.ts +26 -15
  304. package/src/chain/blocks/utils/checkpoint.ts +2 -2
  305. package/src/chain/blocks/verifyBlock.ts +5 -10
  306. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -14
  307. package/src/chain/blocks/verifyBlocksSignatures.ts +3 -3
  308. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +6 -8
  309. package/src/chain/chain.ts +75 -67
  310. package/src/chain/emitter.ts +2 -2
  311. package/src/chain/errors/blockError.ts +4 -4
  312. package/src/chain/forkChoice/index.ts +33 -42
  313. package/src/chain/initState.ts +7 -2
  314. package/src/chain/interface.ts +12 -13
  315. package/src/chain/lightClient/index.ts +9 -22
  316. package/src/chain/opPools/aggregatedAttestationPool.ts +15 -21
  317. package/src/chain/opPools/opPool.ts +13 -14
  318. package/src/chain/opPools/utils.ts +3 -3
  319. package/src/chain/options.ts +2 -0
  320. package/src/chain/prepareNextSlot.ts +6 -8
  321. package/src/chain/produceBlock/computeNewStateRoot.ts +6 -10
  322. package/src/chain/produceBlock/produceBlockBody.ts +22 -49
  323. package/src/chain/regen/interface.ts +13 -17
  324. package/src/chain/regen/queued.ts +16 -20
  325. package/src/chain/regen/regen.ts +16 -17
  326. package/src/chain/serializeState.ts +3 -3
  327. package/src/chain/shufflingCache.ts +5 -7
  328. package/src/chain/stateCache/fifoBlockStateCache.ts +7 -7
  329. package/src/chain/stateCache/persistentCheckpointsCache.ts +27 -42
  330. package/src/chain/stateCache/types.ts +14 -18
  331. package/src/chain/validation/attesterSlashing.ts +3 -3
  332. package/src/chain/validation/blobSidecar.ts +1 -1
  333. package/src/chain/validation/block.ts +2 -4
  334. package/src/chain/validation/blsToExecutionChange.ts +2 -2
  335. package/src/chain/validation/dataColumnSidecar.ts +1 -1
  336. package/src/chain/validation/executionPayloadBid.ts +3 -7
  337. package/src/chain/validation/executionPayloadEnvelope.ts +2 -8
  338. package/src/chain/validation/payloadAttestationMessage.ts +2 -4
  339. package/src/chain/validation/proposerSlashing.ts +1 -1
  340. package/src/chain/validation/signatureSets/contributionAndProof.ts +2 -7
  341. package/src/chain/validation/signatureSets/syncCommittee.ts +2 -7
  342. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +2 -2
  343. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -7
  344. package/src/chain/validation/syncCommittee.ts +21 -20
  345. package/src/chain/validation/syncCommitteeContributionAndProof.ts +5 -10
  346. package/src/chain/validation/voluntaryExit.ts +3 -8
  347. package/src/chain/validatorMonitor.ts +12 -11
  348. package/src/metrics/metrics/lodestar.ts +23 -19
  349. package/src/network/gossip/encoding.ts +16 -0
  350. package/src/network/interface.ts +15 -2
  351. package/src/network/libp2p/index.ts +5 -0
  352. package/src/network/network.ts +32 -4
  353. package/src/network/processor/extractSlotRootFns.ts +1 -1
  354. package/src/network/processor/gossipHandlers.ts +9 -8
  355. package/src/network/processor/index.ts +110 -89
  356. package/src/network/reqresp/ReqRespBeaconNode.ts +13 -0
  357. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRange.ts +94 -0
  358. package/src/network/reqresp/handlers/executionPayloadEnvelopesByRoot.ts +43 -0
  359. package/src/network/reqresp/handlers/index.ts +12 -0
  360. package/src/network/reqresp/protocols.ts +12 -0
  361. package/src/network/reqresp/rateLimit.ts +18 -0
  362. package/src/network/reqresp/score.ts +2 -0
  363. package/src/network/reqresp/types.ts +13 -0
  364. package/src/node/nodejs.ts +3 -5
  365. package/src/node/notifier.ts +4 -10
  366. package/src/sync/backfill/backfill.ts +3 -3
  367. package/src/sync/unknownBlock.ts +10 -50
  368. package/src/util/types.ts +6 -0
@@ -1,11 +1,7 @@
1
1
  import {routes} from "@lodestar/api";
2
- import {ForkName} from "@lodestar/params";
3
- import {
4
- BeaconStateView,
5
- CachedBeaconStateGloas,
6
- getExecutionPayloadEnvelopeSignatureSet,
7
- } from "@lodestar/state-transition";
8
- import {processExecutionPayloadEnvelope} from "@lodestar/state-transition/block";
2
+ import {ExecutionStatus, PayloadExecutionStatus} from "@lodestar/fork-choice";
3
+ import {ForkName, SLOTS_PER_EPOCH} from "@lodestar/params";
4
+ import {getExecutionPayloadEnvelopeSignatureSet} from "@lodestar/state-transition";
9
5
  import {byteArrayEquals, fromHex, toRootHex} from "@lodestar/utils";
10
6
  import {ExecutionPayloadStatus} from "../../execution/index.js";
11
7
  import {isQueueErrorAborted} from "../../util/queue/index.js";
@@ -56,6 +52,19 @@ export class PayloadError extends Error {
56
52
  }
57
53
  }
58
54
 
55
+ function toForkChoiceExecutionStatus(status: ExecutionPayloadStatus): PayloadExecutionStatus {
56
+ switch (status) {
57
+ case ExecutionPayloadStatus.VALID:
58
+ return ExecutionStatus.Valid;
59
+ // TODO GLOAS: Handle optimistic import for payload
60
+ case ExecutionPayloadStatus.SYNCING:
61
+ case ExecutionPayloadStatus.ACCEPTED:
62
+ return ExecutionStatus.Syncing;
63
+ default:
64
+ throw new Error(`Unexpected execution payload status for fork choice: ${status}`);
65
+ }
66
+ }
67
+
59
68
  /**
60
69
  * Import an execution payload envelope after all data is available.
61
70
  *
@@ -93,12 +102,12 @@ export async function importExecutionPayload(
93
102
 
94
103
  // 3. Get pre-state for processExecutionPayloadEnvelope
95
104
  // We need the block state (post-block, pre-payload) to process the envelope
96
- const blockState = (await this.regen.getBlockSlotState(
105
+ const blockState = await this.regen.getBlockSlotState(
97
106
  protoBlock,
98
107
  protoBlock.slot,
99
108
  {dontTransferCache: true},
100
109
  RegenCaller.processBlock
101
- )) as CachedBeaconStateGloas;
110
+ );
102
111
 
103
112
  // 4. Run verification steps in parallel
104
113
  // Note: No data availability check needed here - importExecutionPayload is only
@@ -117,8 +126,8 @@ export async function importExecutionPayload(
117
126
  : (async () => {
118
127
  const signatureSet = getExecutionPayloadEnvelopeSignatureSet(
119
128
  this.config,
120
- blockState.epochCtx.pubkeyCache,
121
- new BeaconStateView(blockState),
129
+ this.pubkeyCache,
130
+ blockState,
122
131
  envelope,
123
132
  payloadInput.proposerIndex
124
133
  );
@@ -130,7 +139,7 @@ export async function importExecutionPayload(
130
139
  (async () => {
131
140
  try {
132
141
  return {
133
- postPayloadState: processExecutionPayloadEnvelope(blockState, envelope, {
142
+ postPayloadState: blockState.processExecutionPayloadEnvelope(envelope, {
134
143
  verifySignature: false,
135
144
  verifyStateRoot: false,
136
145
  }),
@@ -166,12 +175,7 @@ export async function importExecutionPayload(
166
175
 
167
176
  case ExecutionPayloadStatus.ACCEPTED:
168
177
  case ExecutionPayloadStatus.SYNCING:
169
- // TODO GLOAS: Handle optimistic import for payload - for now treat as error
170
- throw new PayloadError({
171
- code: PayloadErrorCode.EXECUTION_ENGINE_ERROR,
172
- execStatus: execResult.status,
173
- errorMessage: execResult.validationError ?? "EL syncing, payload not yet validated",
174
- });
178
+ break;
175
179
 
176
180
  case ExecutionPayloadStatus.INVALID_BLOCK_HASH:
177
181
  case ExecutionPayloadStatus.ELERROR:
@@ -209,14 +213,16 @@ export async function importExecutionPayload(
209
213
  blockRootHex,
210
214
  payloadInput.getBlockHashHex(),
211
215
  envelope.message.payload.blockNumber,
212
- toRootHex(postPayloadStateRoot)
216
+ toRootHex(postPayloadStateRoot),
217
+ toForkChoiceExecutionStatus(execResult.status)
213
218
  );
214
219
 
215
220
  // 7. Cache payload state
216
- // TODO GLOAS: Enable when PR #8868 merged (adds processPayloadState)
217
- // this.regen.processPayloadState(postPayloadState);
218
- // if epoch boundary also call
219
- // this.regen.addCheckpointState(cp, checkpointState, true);
221
+ this.regen.processPayloadState(postPayloadState);
222
+ if (postPayloadState.slot % SLOTS_PER_EPOCH === 0) {
223
+ const {checkpoint} = postPayloadState.computeAnchorCheckpoint();
224
+ this.regen.addCheckpointState(checkpoint, postPayloadState, true);
225
+ }
220
226
 
221
227
  // 8. Record metrics for payload envelope and column sources
222
228
  this.metrics?.importPayload.bySource.inc({source: payloadInput.getPayloadEnvelopeSource().source});
@@ -88,7 +88,8 @@ export async function processBlocks(
88
88
  const fullyVerifiedBlocks = relevantBlocks.map(
89
89
  (block, i): FullyVerifiedBlock => ({
90
90
  blockInput: block,
91
- postState: postStates[i],
91
+ postBlockState: postStates[i],
92
+ postEnvelopeState: null,
92
93
  parentBlockSlot: parentSlots[i],
93
94
  executionStatus: executionStatuses[i],
94
95
  // start supporting optimistic syncing/processing
@@ -126,7 +127,7 @@ export async function processBlocks(
126
127
  const {state} = err.type;
127
128
  const forkTypes = this.config.getForkTypes(blockSlot);
128
129
  this.persistInvalidSszValue(forkTypes.SignedBeaconBlock, signedBlock, `${blockSlot}_invalid_signature`);
129
- this.persistInvalidSszView(state, `${state.slot}_invalid_signature`);
130
+ this.persistInvalidSszBytes("BeaconState", state.serialize(), `${state.slot}_invalid_signature`);
130
131
  } else if (err.type.code === BlockErrorCode.INVALID_STATE_ROOT) {
131
132
  const {signedBlock} = err;
132
133
  const blockSlot = signedBlock.message.slot;
@@ -1,7 +1,7 @@
1
1
  import type {ChainForkConfig} from "@lodestar/config";
2
- import {MaybeValidExecutionStatus} from "@lodestar/fork-choice";
2
+ import {BlockExecutionStatus, PayloadExecutionStatus} from "@lodestar/fork-choice";
3
3
  import {ForkSeq} from "@lodestar/params";
4
- import {CachedBeaconStateAllForks, DataAvailabilityStatus, computeEpochAtSlot} from "@lodestar/state-transition";
4
+ import {DataAvailabilityStatus, IBeaconStateView, computeEpochAtSlot} from "@lodestar/state-transition";
5
5
  import type {IndexedAttestation, Slot, fulu} from "@lodestar/types";
6
6
  import {IBlockInput} from "./blockInput/types.js";
7
7
 
@@ -88,24 +88,35 @@ export type ImportBlockOpts = {
88
88
  seenTimestampSec?: number;
89
89
  };
90
90
 
91
- /**
92
- * A wrapper around a `SignedBeaconBlock` that indicates that this block is fully verified and ready to import
93
- */
94
- export type FullyVerifiedBlock = {
91
+ type FullyVerifiedBlockBase = {
95
92
  blockInput: IBlockInput;
96
- postState: CachedBeaconStateAllForks;
93
+ postBlockState: IBeaconStateView;
97
94
  parentBlockSlot: Slot;
98
95
  proposerBalanceDelta: number;
99
- /**
100
- * If the execution payload couldnt be verified because of EL syncing status,
101
- * used in optimistic sync or for merge block
102
- */
103
- executionStatus: MaybeValidExecutionStatus;
104
96
  dataAvailabilityStatus: DataAvailabilityStatus;
105
- /**
106
- * Pre-computed indexed attestations from signature verification to avoid duplicate work
107
- */
97
+ /** Pre-computed indexed attestations from signature verification to avoid duplicate work */
108
98
  indexedAttestations: IndexedAttestation[];
109
99
  /** Seen timestamp seconds */
110
100
  seenTimestampSec: number;
111
101
  };
102
+
103
+ /**
104
+ * A wrapper around a `SignedBeaconBlock` that indicates that this block is fully verified and ready to import.
105
+ *
106
+ * Discriminated union on `postEnvelopeState`:
107
+ * - `null` → block has no pre-verified envelope; `executionStatus` is any `BlockExecutionStatus`
108
+ * - non-null → envelope was pre-verified during state transition; `executionStatus` is narrowed to
109
+ * `Valid | Syncing` (matching what `forkChoice.onExecutionPayload` expects)
110
+ */
111
+ export type FullyVerifiedBlock = FullyVerifiedBlockBase &
112
+ (
113
+ | {
114
+ postEnvelopeState: null;
115
+ /** If the execution payload couldn't be verified because of EL syncing status, used in optimistic sync or for merge block */
116
+ executionStatus: BlockExecutionStatus;
117
+ }
118
+ | {
119
+ postEnvelopeState: IBeaconStateView;
120
+ executionStatus: PayloadExecutionStatus;
121
+ }
122
+ );
@@ -1,12 +1,12 @@
1
1
  import {SLOTS_PER_EPOCH} from "@lodestar/params";
2
- import {CachedBeaconStateAllForks, computeEpochAtSlot} from "@lodestar/state-transition";
2
+ import {IBeaconStateView, computeEpochAtSlot} from "@lodestar/state-transition";
3
3
  import {phase0, ssz} from "@lodestar/types";
4
4
  import {ZERO_HASH} from "../../../constants/index.js";
5
5
 
6
6
  /**
7
7
  * Compute a Checkpoint type from `state.latestBlockHeader`
8
8
  */
9
- export function getCheckpointFromState(checkpointState: CachedBeaconStateAllForks): phase0.Checkpoint {
9
+ export function getCheckpointFromState(checkpointState: IBeaconStateView): phase0.Checkpoint {
10
10
  const slot = checkpointState.slot;
11
11
 
12
12
  if (slot % SLOTS_PER_EPOCH !== 0) {
@@ -1,11 +1,6 @@
1
1
  import {ExecutionStatus, ProtoBlock} from "@lodestar/fork-choice";
2
2
  import {ForkName, isForkPostFulu} from "@lodestar/params";
3
- import {
4
- CachedBeaconStateAllForks,
5
- DataAvailabilityStatus,
6
- computeEpochAtSlot,
7
- isStateValidatorsNodesPopulated,
8
- } from "@lodestar/state-transition";
3
+ import {DataAvailabilityStatus, IBeaconStateView, computeEpochAtSlot} from "@lodestar/state-transition";
9
4
  import {IndexedAttestation, deneb} from "@lodestar/types";
10
5
  import type {BeaconChain} from "../chain.js";
11
6
  import {BlockError, BlockErrorCode} from "../errors/index.js";
@@ -39,7 +34,7 @@ export async function verifyBlocksInEpoch(
39
34
  blockInputs: IBlockInput[],
40
35
  opts: BlockProcessOpts & ImportBlockOpts
41
36
  ): Promise<{
42
- postStates: CachedBeaconStateAllForks[];
37
+ postStates: IBeaconStateView[];
43
38
  proposerBalanceDeltas: number[];
44
39
  segmentExecStatus: SegmentExecStatus;
45
40
  dataAvailabilityStatuses: DataAvailabilityStatus[];
@@ -78,10 +73,10 @@ export async function verifyBlocksInEpoch(
78
73
  // otherwise it may fail to get indexed attestations from shuffling cache later
79
74
  this.shufflingCache.processState(preState0);
80
75
 
81
- if (!isStateValidatorsNodesPopulated(preState0)) {
76
+ if (!preState0.isStateValidatorsNodesPopulated()) {
82
77
  this.logger.verbose("verifyBlocksInEpoch preState0 SSZ cache stats", {
83
78
  slot: preState0.slot,
84
- cache: isStateValidatorsNodesPopulated(preState0),
79
+ cache: preState0.isStateValidatorsNodesPopulated(),
85
80
  clonedCount: preState0.clonedCount,
86
81
  clonedCountWithTransferCache: preState0.clonedCountWithTransferCache,
87
82
  createdWithTransferCache: preState0.createdWithTransferCache,
@@ -110,7 +105,7 @@ export async function verifyBlocksInEpoch(
110
105
  for (const [i, block] of blocks.entries()) {
111
106
  indexedAttestationsByBlock[i] = block.message.body.attestations.map((attestation) => {
112
107
  const attEpoch = computeEpochAtSlot(attestation.data.slot);
113
- const decisionRoot = preState0.epochCtx.getShufflingDecisionRoot(attEpoch);
108
+ const decisionRoot = preState0.getShufflingDecisionRoot(attEpoch);
114
109
  return this.shufflingCache.getIndexedAttestation(attEpoch, decisionRoot, fork, attestation);
115
110
  });
116
111
  }
@@ -1,19 +1,14 @@
1
1
  import {ChainForkConfig} from "@lodestar/config";
2
2
  import {
3
+ BlockExecutionStatus,
3
4
  ExecutionStatus,
4
5
  IForkChoice,
5
6
  LVHInvalidResponse,
6
7
  LVHValidResponse,
7
- MaybeValidExecutionStatus,
8
8
  ProtoBlock,
9
9
  } from "@lodestar/fork-choice";
10
10
  import {ForkSeq} from "@lodestar/params";
11
- import {
12
- CachedBeaconStateAllForks,
13
- isExecutionBlockBodyType,
14
- isExecutionEnabled,
15
- isExecutionStateType,
16
- } from "@lodestar/state-transition";
11
+ import {IBeaconStateView, isExecutionBlockBodyType} from "@lodestar/state-transition";
17
12
  import {bellatrix, electra} from "@lodestar/types";
18
13
  import {ErrorAborted, Logger, toRootHex} from "@lodestar/utils";
19
14
  import {ExecutionPayloadStatus, IExecutionEngine} from "../../execution/engine/interface.js";
@@ -38,7 +33,7 @@ type ExecAbortType = {blockIndex: number; execError: BlockError};
38
33
  export type SegmentExecStatus =
39
34
  | {
40
35
  execAborted: null;
41
- executionStatuses: MaybeValidExecutionStatus[];
36
+ executionStatuses: BlockExecutionStatus[];
42
37
  executionTime: number;
43
38
  }
44
39
  | {execAborted: ExecAbortType; invalidSegmentLVH?: LVHInvalidResponse};
@@ -63,11 +58,11 @@ export async function verifyBlocksExecutionPayload(
63
58
  chain: VerifyBlockExecutionPayloadModules,
64
59
  parentBlock: ProtoBlock,
65
60
  blockInputs: IBlockInput[],
66
- preState0: CachedBeaconStateAllForks,
61
+ preState0: IBeaconStateView,
67
62
  signal: AbortSignal,
68
63
  opts: BlockProcessOpts & ImportBlockOpts
69
64
  ): Promise<SegmentExecStatus> {
70
- const executionStatuses: MaybeValidExecutionStatus[] = [];
65
+ const executionStatuses: BlockExecutionStatus[] = [];
71
66
  const recvToValLatency = Date.now() / 1000 - (opts.seenTimestampSec ?? Date.now() / 1000);
72
67
  const lastBlock = blockInputs.at(-1);
73
68
 
@@ -108,7 +103,7 @@ export async function verifyBlocksExecutionPayload(
108
103
  return getSegmentErrorResponse({verifyResponse, blockIndex}, parentBlock, blockInputs);
109
104
  }
110
105
 
111
- // If we are here then its because executionStatus is one of MaybeValidExecutionStatus
106
+ // If we are here then its because executionStatus is one of BlockExecutionStatus
112
107
  const {executionStatus} = verifyResponse;
113
108
  executionStatuses.push(executionStatus);
114
109
  }
@@ -146,7 +141,7 @@ export async function verifyBlocksExecutionPayload(
146
141
  export async function verifyBlockExecutionPayload(
147
142
  chain: VerifyBlockExecutionPayloadModules,
148
143
  blockInput: IBlockInput,
149
- preState0: CachedBeaconStateAllForks
144
+ preState0: IBeaconStateView
150
145
  ): Promise<VerifyBlockExecutionResponse> {
151
146
  const block = blockInput.getBlock();
152
147
 
@@ -157,9 +152,9 @@ export async function verifyBlockExecutionPayload(
157
152
 
158
153
  /** Not null if execution is enabled */
159
154
  const executionPayloadEnabled =
160
- isExecutionStateType(preState0) &&
155
+ preState0.isExecutionStateType &&
161
156
  isExecutionBlockBodyType(block.message.body) &&
162
- isExecutionEnabled(preState0, block.message)
157
+ preState0.isExecutionEnabled(block.message)
163
158
  ? block.message.body.executionPayload
164
159
  : null;
165
160
 
@@ -1,5 +1,5 @@
1
1
  import {BeaconConfig} from "@lodestar/config";
2
- import {CachedBeaconStateAllForks, getBlockSignatureSets} from "@lodestar/state-transition";
2
+ import {IBeaconStateView, getBlockSignatureSets} from "@lodestar/state-transition";
3
3
  import {IndexedAttestation, SignedBeaconBlock} from "@lodestar/types";
4
4
  import {Logger} from "@lodestar/utils";
5
5
  import {Metrics} from "../../metrics/metrics.js";
@@ -20,14 +20,14 @@ export async function verifyBlocksSignatures(
20
20
  bls: IBlsVerifier,
21
21
  logger: Logger,
22
22
  metrics: Metrics | null,
23
- preState0: CachedBeaconStateAllForks,
23
+ preState0: IBeaconStateView,
24
24
  blocks: SignedBeaconBlock[],
25
25
  indexedAttestationsByBlock: IndexedAttestation[][],
26
26
  opts: ImportBlockOpts
27
27
  ): Promise<{verifySignaturesTime: number}> {
28
28
  const isValidPromises: Promise<boolean>[] = [];
29
29
  const recvToValLatency = Date.now() / 1000 - (opts.seenTimestampSec ?? Date.now() / 1000);
30
- const currentSyncCommitteeIndexed = preState0.epochCtx.currentSyncCommitteeIndexed;
30
+ const currentSyncCommitteeIndexed = preState0.currentSyncCommitteeIndexed;
31
31
 
32
32
  // Verifies signatures after running state transition, so all SyncCommittee signed roots are known at this point.
33
33
  // We must ensure block.slot <= state.slot before running getAllBlockSignatureSets().
@@ -1,9 +1,8 @@
1
1
  import {
2
- CachedBeaconStateAllForks,
3
2
  DataAvailabilityStatus,
4
3
  ExecutionPayloadStatus,
4
+ IBeaconStateView,
5
5
  StateHashTreeRootSource,
6
- stateTransition,
7
6
  } from "@lodestar/state-transition";
8
7
  import {ErrorAborted, Logger, byteArrayEquals} from "@lodestar/utils";
9
8
  import {Metrics} from "../../metrics/index.js";
@@ -23,7 +22,7 @@ import {ImportBlockOpts} from "./types.js";
23
22
  * - Check state root matches
24
23
  */
25
24
  export async function verifyBlocksStateTransitionOnly(
26
- preState0: CachedBeaconStateAllForks,
25
+ preState0: IBeaconStateView,
27
26
  blocks: IBlockInput[],
28
27
  dataAvailabilityStatuses: DataAvailabilityStatus[],
29
28
  logger: Logger,
@@ -31,8 +30,8 @@ export async function verifyBlocksStateTransitionOnly(
31
30
  validatorMonitor: ValidatorMonitor | null,
32
31
  signal: AbortSignal,
33
32
  opts: BlockProcessOpts & ImportBlockOpts
34
- ): Promise<{postStates: CachedBeaconStateAllForks[]; proposerBalanceDeltas: number[]; verifyStateTime: number}> {
35
- const postStates: CachedBeaconStateAllForks[] = [];
33
+ ): Promise<{postStates: IBeaconStateView[]; proposerBalanceDeltas: number[]; verifyStateTime: number}> {
34
+ const postStates: IBeaconStateView[] = [];
36
35
  const proposerBalanceDeltas: number[] = [];
37
36
  const recvToValLatency = Date.now() / 1000 - (opts.seenTimestampSec ?? Date.now() / 1000);
38
37
 
@@ -45,8 +44,7 @@ export async function verifyBlocksStateTransitionOnly(
45
44
  // STFN - per_slot_processing() + per_block_processing()
46
45
  // NOTE: `regen.getPreState()` should have dialed forward the state already caching checkpoint states
47
46
  const useBlsBatchVerify = !opts?.disableBlsBatchVerify;
48
- const postState = stateTransition(
49
- preState,
47
+ const postState = preState.stateTransition(
50
48
  block,
51
49
  {
52
50
  // NOTE: Assume valid for now while sending payload to execution engine in parallel
@@ -84,7 +82,7 @@ export async function verifyBlocksStateTransitionOnly(
84
82
 
85
83
  // For metric block profitability
86
84
  const proposerIndex = block.message.proposerIndex;
87
- proposerBalanceDeltas[i] = postState.balances.get(proposerIndex) - preState.balances.get(proposerIndex);
85
+ proposerBalanceDeltas[i] = postState.getBalance(proposerIndex) - preState.getBalance(proposerIndex);
88
86
 
89
87
  // If blocks are invalid in execution the main promise could resolve before this loop ends.
90
88
  // In that case stop processing blocks and return early.