@lodestar/beacon-node 1.41.0-dev.253ed58dd1 → 1.41.0-dev.274a9918a8

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 (881) hide show
  1. package/lib/api/impl/api.js.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.d.ts +1 -1
  3. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  4. package/lib/api/impl/beacon/blocks/index.js +12 -2
  5. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  6. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  7. package/lib/api/impl/beacon/index.js.map +1 -1
  8. package/lib/api/impl/beacon/pool/index.d.ts +1 -1
  9. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  10. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  11. package/lib/api/impl/beacon/rewards/index.d.ts +1 -1
  12. package/lib/api/impl/beacon/rewards/index.d.ts.map +1 -1
  13. package/lib/api/impl/beacon/rewards/index.js.map +1 -1
  14. package/lib/api/impl/beacon/state/index.d.ts +1 -1
  15. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  16. package/lib/api/impl/beacon/state/index.js +8 -8
  17. package/lib/api/impl/beacon/state/index.js.map +1 -1
  18. package/lib/api/impl/beacon/state/utils.d.ts +5 -6
  19. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  20. package/lib/api/impl/beacon/state/utils.js +5 -24
  21. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  22. package/lib/api/impl/config/constants.js.map +1 -1
  23. package/lib/api/impl/config/index.js.map +1 -1
  24. package/lib/api/impl/debug/index.d.ts +1 -1
  25. package/lib/api/impl/debug/index.d.ts.map +1 -1
  26. package/lib/api/impl/debug/index.js +1 -0
  27. package/lib/api/impl/debug/index.js.map +1 -1
  28. package/lib/api/impl/errors.d.ts.map +1 -1
  29. package/lib/api/impl/errors.js.map +1 -1
  30. package/lib/api/impl/events/index.d.ts +1 -1
  31. package/lib/api/impl/events/index.d.ts.map +1 -1
  32. package/lib/api/impl/events/index.js.map +1 -1
  33. package/lib/api/impl/lightclient/index.d.ts +1 -1
  34. package/lib/api/impl/lightclient/index.d.ts.map +1 -1
  35. package/lib/api/impl/lightclient/index.js.map +1 -1
  36. package/lib/api/impl/lodestar/index.d.ts +1 -1
  37. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  38. package/lib/api/impl/lodestar/index.js.map +1 -1
  39. package/lib/api/impl/node/index.js.map +1 -1
  40. package/lib/api/impl/node/utils.d.ts +1 -1
  41. package/lib/api/impl/node/utils.d.ts.map +1 -1
  42. package/lib/api/impl/node/utils.js.map +1 -1
  43. package/lib/api/impl/proof/index.js.map +1 -1
  44. package/lib/api/impl/utils.js.map +1 -1
  45. package/lib/api/impl/validator/index.d.ts.map +1 -1
  46. package/lib/api/impl/validator/index.js +38 -18
  47. package/lib/api/impl/validator/index.js.map +1 -1
  48. package/lib/api/impl/validator/utils.d.ts +1 -1
  49. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  50. package/lib/api/impl/validator/utils.js.map +1 -1
  51. package/lib/api/rest/activeSockets.d.ts.map +1 -1
  52. package/lib/api/rest/activeSockets.js.map +1 -1
  53. package/lib/api/rest/base.d.ts.map +1 -1
  54. package/lib/api/rest/base.js.map +1 -1
  55. package/lib/api/rest/index.d.ts.map +1 -1
  56. package/lib/api/rest/index.js.map +1 -1
  57. package/lib/api/rest/swaggerUI.js.map +1 -1
  58. package/lib/bun-wrappers/prometheus-gc-stats.js.map +1 -1
  59. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
  60. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  61. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  62. package/lib/chain/GetBlobsTracker.js.map +1 -1
  63. package/lib/chain/archiveStore/archiveStore.d.ts +0 -1
  64. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  65. package/lib/chain/archiveStore/archiveStore.js +2 -10
  66. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  67. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +5 -6
  68. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  69. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +9 -10
  70. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  71. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
  72. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  73. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  74. package/lib/chain/archiveStore/historicalState/types.js +2 -1
  75. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  76. package/lib/chain/archiveStore/historicalState/worker.js +3 -3
  77. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  78. package/lib/chain/archiveStore/interface.d.ts +4 -4
  79. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  80. package/lib/chain/archiveStore/interface.js +2 -1
  81. package/lib/chain/archiveStore/interface.js.map +1 -1
  82. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +5 -5
  83. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  84. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +6 -2
  85. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  86. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +3 -8
  87. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  88. package/lib/chain/archiveStore/utils/archiveBlocks.js +39 -1
  89. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  90. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  91. package/lib/chain/archiveStore/utils/updateBackfillRange.js +1 -1
  92. package/lib/chain/archiveStore/utils/updateBackfillRange.js.map +1 -1
  93. package/lib/chain/balancesCache.d.ts.map +1 -1
  94. package/lib/chain/balancesCache.js.map +1 -1
  95. package/lib/chain/beaconProposerCache.d.ts.map +1 -1
  96. package/lib/chain/beaconProposerCache.js.map +1 -1
  97. package/lib/chain/blocks/blockInput/blockInput.d.ts +25 -2
  98. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  99. package/lib/chain/blocks/blockInput/blockInput.js +71 -0
  100. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  101. package/lib/chain/blocks/blockInput/errors.js +2 -1
  102. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  103. package/lib/chain/blocks/blockInput/types.d.ts +18 -1
  104. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  105. package/lib/chain/blocks/blockInput/types.js +5 -2
  106. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  107. package/lib/chain/blocks/blockInput/utils.js.map +1 -1
  108. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  109. package/lib/chain/blocks/importBlock.js +39 -12
  110. package/lib/chain/blocks/importBlock.js.map +1 -1
  111. package/lib/chain/blocks/index.d.ts.map +1 -1
  112. package/lib/chain/blocks/index.js.map +1 -1
  113. package/lib/chain/blocks/types.js +6 -3
  114. package/lib/chain/blocks/types.js.map +1 -1
  115. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  116. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  117. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  118. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  119. package/lib/chain/blocks/verifyBlocksDataAvailability.js +3 -0
  120. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  121. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +4 -0
  122. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  123. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -1
  124. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  125. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  126. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -1
  127. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  128. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  129. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  130. package/lib/chain/blocks/writeBlockInputToDb.d.ts +12 -3
  131. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  132. package/lib/chain/blocks/writeBlockInputToDb.js +92 -98
  133. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  134. package/lib/chain/bls/maybeBatch.js.map +1 -1
  135. package/lib/chain/bls/multithread/index.d.ts +3 -3
  136. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  137. package/lib/chain/bls/multithread/index.js +5 -5
  138. package/lib/chain/bls/multithread/index.js.map +1 -1
  139. package/lib/chain/bls/multithread/jobItem.d.ts +2 -2
  140. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
  141. package/lib/chain/bls/multithread/jobItem.js +4 -3
  142. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  143. package/lib/chain/bls/multithread/types.js +2 -1
  144. package/lib/chain/bls/multithread/types.js.map +1 -1
  145. package/lib/chain/bls/multithread/utils.js.map +1 -1
  146. package/lib/chain/bls/multithread/worker.js.map +1 -1
  147. package/lib/chain/bls/singleThread.d.ts +4 -4
  148. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  149. package/lib/chain/bls/singleThread.js +4 -4
  150. package/lib/chain/bls/singleThread.js.map +1 -1
  151. package/lib/chain/bls/utils.d.ts +2 -2
  152. package/lib/chain/bls/utils.d.ts.map +1 -1
  153. package/lib/chain/bls/utils.js +7 -4
  154. package/lib/chain/bls/utils.js.map +1 -1
  155. package/lib/chain/chain.d.ts +10 -13
  156. package/lib/chain/chain.d.ts.map +1 -1
  157. package/lib/chain/chain.js +40 -30
  158. package/lib/chain/chain.js.map +1 -1
  159. package/lib/chain/emitter.d.ts +4 -6
  160. package/lib/chain/emitter.d.ts.map +1 -1
  161. package/lib/chain/emitter.js +2 -1
  162. package/lib/chain/emitter.js.map +1 -1
  163. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  164. package/lib/chain/errors/attestationError.js +2 -1
  165. package/lib/chain/errors/attestationError.js.map +1 -1
  166. package/lib/chain/errors/attesterSlashingError.js +2 -1
  167. package/lib/chain/errors/attesterSlashingError.js.map +1 -1
  168. package/lib/chain/errors/blobSidecarError.js +2 -1
  169. package/lib/chain/errors/blobSidecarError.js.map +1 -1
  170. package/lib/chain/errors/blockError.d.ts.map +1 -1
  171. package/lib/chain/errors/blockError.js +2 -1
  172. package/lib/chain/errors/blockError.js.map +1 -1
  173. package/lib/chain/errors/blsToExecutionChangeError.js +2 -1
  174. package/lib/chain/errors/blsToExecutionChangeError.js.map +1 -1
  175. package/lib/chain/errors/dataColumnSidecarError.js +2 -1
  176. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  177. package/lib/chain/errors/executionPayloadBid.d.ts +1 -1
  178. package/lib/chain/errors/executionPayloadBid.js +2 -1
  179. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  180. package/lib/chain/errors/executionPayloadEnvelope.d.ts +2 -2
  181. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  182. package/lib/chain/errors/executionPayloadEnvelope.js +2 -1
  183. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  184. package/lib/chain/errors/gossipValidation.d.ts.map +1 -1
  185. package/lib/chain/errors/gossipValidation.js +4 -2
  186. package/lib/chain/errors/gossipValidation.js.map +1 -1
  187. package/lib/chain/errors/lightClientError.js +4 -2
  188. package/lib/chain/errors/lightClientError.js.map +1 -1
  189. package/lib/chain/errors/payloadAttestation.d.ts +1 -1
  190. package/lib/chain/errors/payloadAttestation.js +2 -1
  191. package/lib/chain/errors/payloadAttestation.js.map +1 -1
  192. package/lib/chain/errors/proposerSlashingError.js +2 -1
  193. package/lib/chain/errors/proposerSlashingError.js.map +1 -1
  194. package/lib/chain/errors/syncCommitteeError.js +2 -1
  195. package/lib/chain/errors/syncCommitteeError.js.map +1 -1
  196. package/lib/chain/errors/voluntaryExitError.js +2 -1
  197. package/lib/chain/errors/voluntaryExitError.js.map +1 -1
  198. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  199. package/lib/chain/forkChoice/index.js +32 -25
  200. package/lib/chain/forkChoice/index.js.map +1 -1
  201. package/lib/chain/initState.d.ts +1 -1
  202. package/lib/chain/initState.d.ts.map +1 -1
  203. package/lib/chain/initState.js.map +1 -1
  204. package/lib/chain/interface.d.ts +4 -6
  205. package/lib/chain/interface.d.ts.map +1 -1
  206. package/lib/chain/interface.js +2 -1
  207. package/lib/chain/interface.js.map +1 -1
  208. package/lib/chain/lightClient/index.d.ts +0 -29
  209. package/lib/chain/lightClient/index.d.ts.map +1 -1
  210. package/lib/chain/lightClient/index.js.map +1 -1
  211. package/lib/chain/lightClient/proofs.js.map +1 -1
  212. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  213. package/lib/chain/opPools/aggregatedAttestationPool.js +5 -3
  214. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  215. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  216. package/lib/chain/opPools/attestationPool.js.map +1 -1
  217. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
  218. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  219. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  220. package/lib/chain/opPools/opPool.js.map +1 -1
  221. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  222. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  223. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  224. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  225. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  226. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  227. package/lib/chain/opPools/types.js +4 -2
  228. package/lib/chain/opPools/types.js.map +1 -1
  229. package/lib/chain/opPools/utils.js.map +1 -1
  230. package/lib/chain/prepareNextSlot.d.ts +1 -2
  231. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  232. package/lib/chain/prepareNextSlot.js +6 -2
  233. package/lib/chain/prepareNextSlot.js.map +1 -1
  234. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +0 -1
  235. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  236. package/lib/chain/produceBlock/computeNewStateRoot.js +4 -3
  237. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  238. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  239. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  240. package/lib/chain/produceBlock/produceBlockBody.js +24 -7
  241. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  242. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  243. package/lib/chain/regen/errors.d.ts +11 -1
  244. package/lib/chain/regen/errors.d.ts.map +1 -1
  245. package/lib/chain/regen/errors.js +4 -1
  246. package/lib/chain/regen/errors.js.map +1 -1
  247. package/lib/chain/regen/interface.d.ts +12 -6
  248. package/lib/chain/regen/interface.d.ts.map +1 -1
  249. package/lib/chain/regen/interface.js +4 -2
  250. package/lib/chain/regen/interface.js.map +1 -1
  251. package/lib/chain/regen/queued.d.ts +11 -6
  252. package/lib/chain/regen/queued.d.ts.map +1 -1
  253. package/lib/chain/regen/queued.js +44 -9
  254. package/lib/chain/regen/queued.js.map +1 -1
  255. package/lib/chain/regen/regen.d.ts +5 -0
  256. package/lib/chain/regen/regen.d.ts.map +1 -1
  257. package/lib/chain/regen/regen.js +39 -8
  258. package/lib/chain/regen/regen.js.map +1 -1
  259. package/lib/chain/reprocess.d.ts.map +1 -1
  260. package/lib/chain/reprocess.js +2 -1
  261. package/lib/chain/reprocess.js.map +1 -1
  262. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -1
  263. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  264. package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -1
  265. package/lib/chain/seenCache/seenAttestationData.js +2 -1
  266. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  267. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  268. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  269. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -1
  270. package/lib/chain/seenCache/seenBlockAttesters.js.map +1 -1
  271. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -1
  272. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  273. package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -1
  274. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  275. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -1
  276. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  277. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -1
  278. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -1
  279. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -1
  280. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -1
  281. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -3
  282. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  283. package/lib/chain/seenCache/seenGossipBlockInput.js +38 -16
  284. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  285. package/lib/chain/serializeState.js +1 -0
  286. package/lib/chain/serializeState.js.map +1 -1
  287. package/lib/chain/shufflingCache.d.ts.map +1 -1
  288. package/lib/chain/shufflingCache.js +2 -1
  289. package/lib/chain/shufflingCache.js.map +1 -1
  290. package/lib/chain/stateCache/datastore/db.d.ts +4 -5
  291. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  292. package/lib/chain/stateCache/datastore/db.js +32 -10
  293. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  294. package/lib/chain/stateCache/datastore/file.d.ts +1 -1
  295. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  296. package/lib/chain/stateCache/datastore/file.js +5 -5
  297. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  298. package/lib/chain/stateCache/datastore/types.d.ts +1 -1
  299. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -1
  300. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +7 -4
  301. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  302. package/lib/chain/stateCache/fifoBlockStateCache.js +8 -3
  303. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  304. package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -1
  305. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  306. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +34 -55
  307. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  308. package/lib/chain/stateCache/persistentCheckpointsCache.js +217 -119
  309. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  310. package/lib/chain/stateCache/types.d.ts +15 -8
  311. package/lib/chain/stateCache/types.d.ts.map +1 -1
  312. package/lib/chain/stateCache/types.js +2 -1
  313. package/lib/chain/stateCache/types.js.map +1 -1
  314. package/lib/chain/validation/aggregateAndProof.js +1 -1
  315. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  316. package/lib/chain/validation/attestation.d.ts.map +1 -1
  317. package/lib/chain/validation/attestation.js +14 -7
  318. package/lib/chain/validation/attestation.js.map +1 -1
  319. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  320. package/lib/chain/validation/attesterSlashing.js +9 -2
  321. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  322. package/lib/chain/validation/blobSidecar.js +2 -2
  323. package/lib/chain/validation/blobSidecar.js.map +1 -1
  324. package/lib/chain/validation/block.d.ts.map +1 -1
  325. package/lib/chain/validation/block.js +6 -3
  326. package/lib/chain/validation/block.js.map +1 -1
  327. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  328. package/lib/chain/validation/dataColumnSidecar.d.ts +2 -1
  329. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  330. package/lib/chain/validation/dataColumnSidecar.js +125 -108
  331. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  332. package/lib/chain/validation/executionPayloadBid.js +1 -2
  333. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  334. package/lib/chain/validation/executionPayloadEnvelope.js +4 -4
  335. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  336. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  337. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  338. package/lib/chain/validation/payloadAttestationMessage.js +9 -3
  339. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  340. package/lib/chain/validation/proposerSlashing.js +1 -1
  341. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  342. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  343. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  344. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  345. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  346. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  347. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  348. package/lib/chain/validation/syncCommittee.js.map +1 -1
  349. package/lib/chain/validation/syncCommitteeContributionAndProof.js +1 -1
  350. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  351. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  352. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  353. package/lib/chain/validatorMonitor.js +2 -1
  354. package/lib/chain/validatorMonitor.js.map +1 -1
  355. package/lib/constants/network.js +4 -2
  356. package/lib/constants/network.js.map +1 -1
  357. package/lib/db/beacon.d.ts.map +1 -1
  358. package/lib/db/beacon.js.map +1 -1
  359. package/lib/db/buckets.d.ts +23 -23
  360. package/lib/db/buckets.d.ts.map +1 -1
  361. package/lib/db/buckets.js +2 -1
  362. package/lib/db/buckets.js.map +1 -1
  363. package/lib/db/index.d.ts +1 -0
  364. package/lib/db/index.d.ts.map +1 -1
  365. package/lib/db/index.js +1 -0
  366. package/lib/db/index.js.map +1 -1
  367. package/lib/db/repositories/attesterSlashing.d.ts.map +1 -1
  368. package/lib/db/repositories/attesterSlashing.js.map +1 -1
  369. package/lib/db/repositories/backfilledRanges.d.ts.map +1 -1
  370. package/lib/db/repositories/backfilledRanges.js.map +1 -1
  371. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  372. package/lib/db/repositories/blobSidecars.js.map +1 -1
  373. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -1
  374. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  375. package/lib/db/repositories/block.d.ts.map +1 -1
  376. package/lib/db/repositories/block.js.map +1 -1
  377. package/lib/db/repositories/blockArchive.d.ts.map +1 -1
  378. package/lib/db/repositories/blockArchive.js +1 -2
  379. package/lib/db/repositories/blockArchive.js.map +1 -1
  380. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  381. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  382. package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -1
  383. package/lib/db/repositories/blsToExecutionChange.js.map +1 -1
  384. package/lib/db/repositories/checkpointState.d.ts.map +1 -1
  385. package/lib/db/repositories/checkpointState.js.map +1 -1
  386. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
  387. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  388. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  389. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  390. package/lib/db/repositories/executionPayloadEnvelope.d.ts.map +1 -1
  391. package/lib/db/repositories/executionPayloadEnvelope.js.map +1 -1
  392. package/lib/db/repositories/executionPayloadEnvelopeArchive.d.ts.map +1 -1
  393. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -1
  394. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +1 -1
  395. package/lib/db/repositories/lightclientBestUpdate.js.map +1 -1
  396. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +1 -1
  397. package/lib/db/repositories/lightclientCheckpointHeader.js.map +1 -1
  398. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +1 -1
  399. package/lib/db/repositories/lightclientSyncCommittee.js.map +1 -1
  400. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -1
  401. package/lib/db/repositories/lightclientSyncCommitteeWitness.js.map +1 -1
  402. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -1
  403. package/lib/db/repositories/proposerSlashing.js.map +1 -1
  404. package/lib/db/repositories/stateArchive.d.ts.map +1 -1
  405. package/lib/db/repositories/stateArchive.js.map +1 -1
  406. package/lib/db/repositories/stateArchiveIndex.js.map +1 -1
  407. package/lib/db/repositories/voluntaryExit.d.ts.map +1 -1
  408. package/lib/db/repositories/voluntaryExit.js.map +1 -1
  409. package/lib/execution/builder/cache.d.ts.map +1 -1
  410. package/lib/execution/builder/cache.js.map +1 -1
  411. package/lib/execution/builder/http.d.ts.map +1 -1
  412. package/lib/execution/builder/http.js +2 -1
  413. package/lib/execution/builder/http.js.map +1 -1
  414. package/lib/execution/builder/index.js.map +1 -1
  415. package/lib/execution/builder/utils.js.map +1 -1
  416. package/lib/execution/engine/disabled.d.ts.map +1 -1
  417. package/lib/execution/engine/disabled.js.map +1 -1
  418. package/lib/execution/engine/http.d.ts +1 -0
  419. package/lib/execution/engine/http.d.ts.map +1 -1
  420. package/lib/execution/engine/http.js +3 -0
  421. package/lib/execution/engine/http.js.map +1 -1
  422. package/lib/execution/engine/index.js.map +1 -1
  423. package/lib/execution/engine/interface.js +4 -2
  424. package/lib/execution/engine/interface.js.map +1 -1
  425. package/lib/execution/engine/jsonRpcHttpClient.d.ts +10 -15
  426. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -1
  427. package/lib/execution/engine/jsonRpcHttpClient.js +2 -1
  428. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -1
  429. package/lib/execution/engine/jwt.js.map +1 -1
  430. package/lib/execution/engine/mock.d.ts.map +1 -1
  431. package/lib/execution/engine/mock.js.map +1 -1
  432. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  433. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  434. package/lib/execution/engine/types.js.map +1 -1
  435. package/lib/execution/engine/utils.d.ts +1 -1
  436. package/lib/execution/engine/utils.d.ts.map +1 -1
  437. package/lib/execution/engine/utils.js.map +1 -1
  438. package/lib/metrics/metrics/beacon.d.ts +2 -1
  439. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  440. package/lib/metrics/metrics/beacon.js +9 -3
  441. package/lib/metrics/metrics/beacon.js.map +1 -1
  442. package/lib/metrics/metrics/lodestar.d.ts +16 -11
  443. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  444. package/lib/metrics/metrics/lodestar.js +39 -24
  445. package/lib/metrics/metrics/lodestar.js.map +1 -1
  446. package/lib/metrics/metrics.js.map +1 -1
  447. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  448. package/lib/metrics/server/http.d.ts +1 -1
  449. package/lib/metrics/server/http.d.ts.map +1 -1
  450. package/lib/metrics/server/http.js.map +1 -1
  451. package/lib/metrics/utils/avgMinMax.d.ts.map +1 -1
  452. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  453. package/lib/metrics/utils/gauge.d.ts.map +1 -1
  454. package/lib/metrics/utils/gauge.js.map +1 -1
  455. package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -1
  456. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  457. package/lib/monitoring/clientStats.js.map +1 -1
  458. package/lib/monitoring/properties.d.ts.map +1 -1
  459. package/lib/monitoring/properties.js.map +1 -1
  460. package/lib/monitoring/service.d.ts +2 -2
  461. package/lib/monitoring/service.d.ts.map +1 -1
  462. package/lib/monitoring/service.js +3 -2
  463. package/lib/monitoring/service.js.map +1 -1
  464. package/lib/monitoring/system.d.ts.map +1 -1
  465. package/lib/monitoring/system.js.map +1 -1
  466. package/lib/monitoring/types.js +4 -2
  467. package/lib/monitoring/types.js.map +1 -1
  468. package/lib/network/core/events.d.ts +1 -3
  469. package/lib/network/core/events.d.ts.map +1 -1
  470. package/lib/network/core/events.js +4 -2
  471. package/lib/network/core/events.js.map +1 -1
  472. package/lib/network/core/metrics.d.ts +6 -7
  473. package/lib/network/core/metrics.d.ts.map +1 -1
  474. package/lib/network/core/metrics.js.map +1 -1
  475. package/lib/network/core/networkCore.d.ts +4 -4
  476. package/lib/network/core/networkCore.d.ts.map +1 -1
  477. package/lib/network/core/networkCore.js.map +1 -1
  478. package/lib/network/core/networkCoreWorker.js.map +1 -1
  479. package/lib/network/core/networkCoreWorkerHandler.d.ts +3 -3
  480. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  481. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  482. package/lib/network/core/types.d.ts +2 -2
  483. package/lib/network/core/types.d.ts.map +1 -1
  484. package/lib/network/discv5/index.d.ts +1 -3
  485. package/lib/network/discv5/index.d.ts.map +1 -1
  486. package/lib/network/discv5/index.js.map +1 -1
  487. package/lib/network/discv5/utils.d.ts +1 -1
  488. package/lib/network/discv5/utils.d.ts.map +1 -1
  489. package/lib/network/discv5/utils.js +7 -5
  490. package/lib/network/discv5/utils.js.map +1 -1
  491. package/lib/network/discv5/worker.js.map +1 -1
  492. package/lib/network/events.d.ts +3 -4
  493. package/lib/network/events.d.ts.map +1 -1
  494. package/lib/network/events.js +4 -2
  495. package/lib/network/events.js.map +1 -1
  496. package/lib/network/forks.js.map +1 -1
  497. package/lib/network/gossip/encoding.d.ts +3 -3
  498. package/lib/network/gossip/encoding.d.ts.map +1 -1
  499. package/lib/network/gossip/encoding.js.map +1 -1
  500. package/lib/network/gossip/errors.d.ts.map +1 -1
  501. package/lib/network/gossip/errors.js.map +1 -1
  502. package/lib/network/gossip/gossipsub.d.ts +13 -4
  503. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  504. package/lib/network/gossip/gossipsub.js +56 -26
  505. package/lib/network/gossip/gossipsub.js.map +1 -1
  506. package/lib/network/gossip/interface.d.ts +3 -3
  507. package/lib/network/gossip/interface.d.ts.map +1 -1
  508. package/lib/network/gossip/interface.js +4 -2
  509. package/lib/network/gossip/interface.js.map +1 -1
  510. package/lib/network/gossip/metrics.d.ts +12 -14
  511. package/lib/network/gossip/metrics.d.ts.map +1 -1
  512. package/lib/network/gossip/metrics.js.map +1 -1
  513. package/lib/network/gossip/scoringParameters.d.ts +2 -2
  514. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  515. package/lib/network/gossip/scoringParameters.js +1 -1
  516. package/lib/network/gossip/scoringParameters.js.map +1 -1
  517. package/lib/network/gossip/topic.d.ts +2867 -2920
  518. package/lib/network/gossip/topic.d.ts.map +1 -1
  519. package/lib/network/gossip/topic.js.map +1 -1
  520. package/lib/network/interface.d.ts +3 -3
  521. package/lib/network/interface.d.ts.map +1 -1
  522. package/lib/network/libp2p/error.js +2 -1
  523. package/lib/network/libp2p/error.js.map +1 -1
  524. package/lib/network/libp2p/index.d.ts +2 -2
  525. package/lib/network/libp2p/index.d.ts.map +1 -1
  526. package/lib/network/libp2p/index.js +42 -19
  527. package/lib/network/libp2p/index.js.map +1 -1
  528. package/lib/network/metadata.d.ts +1 -0
  529. package/lib/network/metadata.d.ts.map +1 -1
  530. package/lib/network/metadata.js +5 -2
  531. package/lib/network/metadata.js.map +1 -1
  532. package/lib/network/network.d.ts +3 -3
  533. package/lib/network/network.d.ts.map +1 -1
  534. package/lib/network/network.js +1 -1
  535. package/lib/network/network.js.map +1 -1
  536. package/lib/network/options.d.ts +2 -0
  537. package/lib/network/options.d.ts.map +1 -1
  538. package/lib/network/options.js +6 -0
  539. package/lib/network/options.js.map +1 -1
  540. package/lib/network/peers/client.js +2 -1
  541. package/lib/network/peers/client.js.map +1 -1
  542. package/lib/network/peers/datastore.d.ts +7 -8
  543. package/lib/network/peers/datastore.d.ts.map +1 -1
  544. package/lib/network/peers/datastore.js +10 -10
  545. package/lib/network/peers/datastore.js.map +1 -1
  546. package/lib/network/peers/discover.d.ts +2 -7
  547. package/lib/network/peers/discover.d.ts.map +1 -1
  548. package/lib/network/peers/discover.js +45 -12
  549. package/lib/network/peers/discover.js.map +1 -1
  550. package/lib/network/peers/peerManager.d.ts +3 -1
  551. package/lib/network/peers/peerManager.d.ts.map +1 -1
  552. package/lib/network/peers/peerManager.js +103 -53
  553. package/lib/network/peers/peerManager.js.map +1 -1
  554. package/lib/network/peers/peersData.d.ts.map +1 -1
  555. package/lib/network/peers/peersData.js +2 -1
  556. package/lib/network/peers/peersData.js.map +1 -1
  557. package/lib/network/peers/score/interface.js +4 -2
  558. package/lib/network/peers/score/interface.js.map +1 -1
  559. package/lib/network/peers/score/score.d.ts.map +1 -1
  560. package/lib/network/peers/score/score.js.map +1 -1
  561. package/lib/network/peers/score/store.d.ts.map +1 -1
  562. package/lib/network/peers/score/store.js.map +1 -1
  563. package/lib/network/peers/score/utils.js.map +1 -1
  564. package/lib/network/peers/utils/assertPeerRelevance.js +2 -1
  565. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  566. package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
  567. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  568. package/lib/network/peers/utils/prioritizePeers.d.ts +3 -3
  569. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  570. package/lib/network/peers/utils/prioritizePeers.js +2 -1
  571. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  572. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  573. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  574. package/lib/network/processor/aggregatorTracker.d.ts.map +1 -1
  575. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  576. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  577. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  578. package/lib/network/processor/gossipHandlers.js +4 -1
  579. package/lib/network/processor/gossipHandlers.js.map +1 -1
  580. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  581. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -1
  582. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  583. package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -1
  584. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  585. package/lib/network/processor/gossipQueues/types.js +4 -2
  586. package/lib/network/processor/gossipQueues/types.js.map +1 -1
  587. package/lib/network/processor/gossipValidatorFn.js +1 -1
  588. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  589. package/lib/network/processor/index.d.ts.map +1 -1
  590. package/lib/network/processor/index.js +4 -2
  591. package/lib/network/processor/index.js.map +1 -1
  592. package/lib/network/processor/types.d.ts +1 -1
  593. package/lib/network/processor/types.d.ts.map +1 -1
  594. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  595. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  596. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  597. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -2
  598. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  599. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  600. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  601. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +3 -2
  602. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  603. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +1 -1
  604. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  605. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  606. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +3 -2
  607. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  608. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -1
  609. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  610. package/lib/network/reqresp/handlers/index.js.map +1 -1
  611. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  612. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  613. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  614. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  615. package/lib/network/reqresp/interface.js +2 -1
  616. package/lib/network/reqresp/interface.js.map +1 -1
  617. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  618. package/lib/network/reqresp/protocols.js.map +1 -1
  619. package/lib/network/reqresp/rateLimit.js.map +1 -1
  620. package/lib/network/reqresp/score.d.ts.map +1 -1
  621. package/lib/network/reqresp/score.js +0 -1
  622. package/lib/network/reqresp/score.js.map +1 -1
  623. package/lib/network/reqresp/types.js +4 -2
  624. package/lib/network/reqresp/types.js.map +1 -1
  625. package/lib/network/reqresp/utils/collect.d.ts +1 -1
  626. package/lib/network/reqresp/utils/collect.js.map +1 -1
  627. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts +1 -1
  628. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js +2 -1
  629. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js.map +1 -1
  630. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts +1 -1
  631. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -1
  632. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  633. package/lib/network/statusCache.d.ts.map +1 -1
  634. package/lib/network/statusCache.js.map +1 -1
  635. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  636. package/lib/network/subnets/attnetsService.js +2 -1
  637. package/lib/network/subnets/attnetsService.js.map +1 -1
  638. package/lib/network/subnets/interface.js.map +1 -1
  639. package/lib/network/subnets/syncnetsService.d.ts.map +1 -1
  640. package/lib/network/subnets/syncnetsService.js.map +1 -1
  641. package/lib/network/subnets/util.js.map +1 -1
  642. package/lib/network/util.js +2 -2
  643. package/lib/network/util.js.map +1 -1
  644. package/lib/node/nodejs.d.ts +4 -6
  645. package/lib/node/nodejs.d.ts.map +1 -1
  646. package/lib/node/nodejs.js +8 -5
  647. package/lib/node/nodejs.js.map +1 -1
  648. package/lib/node/notifier.js.map +1 -1
  649. package/lib/node/utils/interop/deposits.js.map +1 -1
  650. package/lib/node/utils/interop/state.d.ts +1 -1
  651. package/lib/node/utils/interop/state.d.ts.map +1 -1
  652. package/lib/node/utils/interop/state.js.map +1 -1
  653. package/lib/node/utils/lightclient.js.map +1 -1
  654. package/lib/node/utils/state.js.map +1 -1
  655. package/lib/sync/backfill/backfill.d.ts +1 -10
  656. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  657. package/lib/sync/backfill/backfill.js +6 -3
  658. package/lib/sync/backfill/backfill.js.map +1 -1
  659. package/lib/sync/backfill/errors.js +2 -1
  660. package/lib/sync/backfill/errors.js.map +1 -1
  661. package/lib/sync/backfill/verify.js.map +1 -1
  662. package/lib/sync/interface.js +2 -1
  663. package/lib/sync/interface.js.map +1 -1
  664. package/lib/sync/range/batch.d.ts.map +1 -1
  665. package/lib/sync/range/batch.js +4 -2
  666. package/lib/sync/range/batch.js.map +1 -1
  667. package/lib/sync/range/chain.d.ts +0 -10
  668. package/lib/sync/range/chain.d.ts.map +1 -1
  669. package/lib/sync/range/chain.js +2 -1
  670. package/lib/sync/range/chain.js.map +1 -1
  671. package/lib/sync/range/range.d.ts +1 -3
  672. package/lib/sync/range/range.d.ts.map +1 -1
  673. package/lib/sync/range/range.js +5 -2
  674. package/lib/sync/range/range.js.map +1 -1
  675. package/lib/sync/range/utils/batches.js.map +1 -1
  676. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  677. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  678. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -1
  679. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  680. package/lib/sync/range/utils/updateChains.js.map +1 -1
  681. package/lib/sync/sync.d.ts.map +1 -1
  682. package/lib/sync/sync.js.map +1 -1
  683. package/lib/sync/types.js +4 -2
  684. package/lib/sync/types.js.map +1 -1
  685. package/lib/sync/unknownBlock.d.ts +0 -14
  686. package/lib/sync/unknownBlock.d.ts.map +1 -1
  687. package/lib/sync/unknownBlock.js.map +1 -1
  688. package/lib/sync/utils/downloadByRange.d.ts +8 -5
  689. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  690. package/lib/sync/utils/downloadByRange.js +8 -6
  691. package/lib/sync/utils/downloadByRange.js.map +1 -1
  692. package/lib/sync/utils/downloadByRoot.d.ts +8 -8
  693. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  694. package/lib/sync/utils/downloadByRoot.js +3 -2
  695. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  696. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  697. package/lib/sync/utils/remoteSyncType.d.ts +1 -1
  698. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -1
  699. package/lib/sync/utils/remoteSyncType.js +4 -2
  700. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  701. package/lib/util/address.js.map +1 -1
  702. package/lib/util/array.d.ts.map +1 -1
  703. package/lib/util/array.js.map +1 -1
  704. package/lib/util/asyncIterableToEvents.d.ts.map +1 -1
  705. package/lib/util/asyncIterableToEvents.js +2 -1
  706. package/lib/util/asyncIterableToEvents.js.map +1 -1
  707. package/lib/util/binarySearch.d.ts.map +1 -1
  708. package/lib/util/binarySearch.js.map +1 -1
  709. package/lib/util/bitArray.js +2 -1
  710. package/lib/util/bitArray.js.map +1 -1
  711. package/lib/util/blobs.js.map +1 -1
  712. package/lib/util/bufferPool.d.ts.map +1 -1
  713. package/lib/util/bufferPool.js +2 -1
  714. package/lib/util/bufferPool.js.map +1 -1
  715. package/lib/util/chunkify.js.map +1 -1
  716. package/lib/util/clock.d.ts +6 -0
  717. package/lib/util/clock.d.ts.map +1 -1
  718. package/lib/util/clock.js +11 -4
  719. package/lib/util/clock.js.map +1 -1
  720. package/lib/util/dataColumns.d.ts.map +1 -1
  721. package/lib/util/dataColumns.js +9 -3
  722. package/lib/util/dataColumns.js.map +1 -1
  723. package/lib/util/dependentRoot.js.map +1 -1
  724. package/lib/util/enum.js.map +1 -1
  725. package/lib/util/error.js.map +1 -1
  726. package/lib/util/eventLoop.js.map +1 -1
  727. package/lib/util/execution.d.ts.map +1 -1
  728. package/lib/util/execution.js +19 -9
  729. package/lib/util/execution.js.map +1 -1
  730. package/lib/util/file.js.map +1 -1
  731. package/lib/util/forkChoice.js.map +1 -1
  732. package/lib/util/forkName.js.map +1 -1
  733. package/lib/util/graffiti.js.map +1 -1
  734. package/lib/util/hex.js.map +1 -1
  735. package/lib/util/ip.js.map +1 -1
  736. package/lib/util/itTrigger.d.ts.map +1 -1
  737. package/lib/util/itTrigger.js.map +1 -1
  738. package/lib/util/map.d.ts.map +1 -1
  739. package/lib/util/map.js.map +1 -1
  740. package/lib/util/metadata.js.map +1 -1
  741. package/lib/util/multifork.js.map +1 -1
  742. package/lib/util/numpy.js.map +1 -1
  743. package/lib/util/peerId.js.map +1 -1
  744. package/lib/util/profile.js +2 -1
  745. package/lib/util/profile.js.map +1 -1
  746. package/lib/util/promises.js.map +1 -1
  747. package/lib/util/queue/errors.js +2 -1
  748. package/lib/util/queue/errors.js.map +1 -1
  749. package/lib/util/queue/fnQueue.d.ts.map +1 -1
  750. package/lib/util/queue/fnQueue.js.map +1 -1
  751. package/lib/util/queue/itemQueue.d.ts.map +1 -1
  752. package/lib/util/queue/itemQueue.js.map +1 -1
  753. package/lib/util/queue/options.js +2 -1
  754. package/lib/util/queue/options.js.map +1 -1
  755. package/lib/util/serializedCache.d.ts +4 -4
  756. package/lib/util/serializedCache.d.ts.map +1 -1
  757. package/lib/util/serializedCache.js +6 -4
  758. package/lib/util/serializedCache.js.map +1 -1
  759. package/lib/util/set.d.ts.map +1 -1
  760. package/lib/util/set.js.map +1 -1
  761. package/lib/util/shuffle.js.map +1 -1
  762. package/lib/util/sortBy.js.map +1 -1
  763. package/lib/util/sszBytes.js.map +1 -1
  764. package/lib/util/time.js.map +1 -1
  765. package/lib/util/timeSeries.d.ts.map +1 -1
  766. package/lib/util/timeSeries.js.map +1 -1
  767. package/lib/util/types.d.ts.map +1 -1
  768. package/lib/util/workerEvents.d.ts +1 -1
  769. package/lib/util/workerEvents.d.ts.map +1 -1
  770. package/lib/util/workerEvents.js.map +1 -1
  771. package/lib/util/wrapError.js.map +1 -1
  772. package/package.json +42 -44
  773. package/src/api/impl/beacon/blocks/index.ts +14 -2
  774. package/src/api/impl/beacon/state/index.ts +8 -8
  775. package/src/api/impl/beacon/state/utils.ts +17 -31
  776. package/src/api/impl/debug/index.ts +1 -0
  777. package/src/api/impl/node/utils.ts +3 -3
  778. package/src/api/impl/validator/index.ts +36 -19
  779. package/src/chain/archiveStore/archiveStore.ts +5 -15
  780. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +10 -11
  781. package/src/chain/archiveStore/historicalState/worker.ts +3 -3
  782. package/src/chain/archiveStore/interface.ts +4 -4
  783. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +8 -5
  784. package/src/chain/archiveStore/utils/archiveBlocks.ts +62 -5
  785. package/src/chain/archiveStore/utils/updateBackfillRange.ts +1 -1
  786. package/src/chain/blocks/blockInput/blockInput.ts +103 -3
  787. package/src/chain/blocks/blockInput/types.ts +18 -0
  788. package/src/chain/blocks/importBlock.ts +47 -11
  789. package/src/chain/blocks/verifyBlocksDataAvailability.ts +3 -0
  790. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -2
  791. package/src/chain/blocks/verifyBlocksSanityChecks.ts +7 -2
  792. package/src/chain/blocks/writeBlockInputToDb.ts +105 -104
  793. package/src/chain/bls/multithread/index.ts +7 -7
  794. package/src/chain/bls/multithread/jobItem.ts +3 -3
  795. package/src/chain/bls/singleThread.ts +5 -5
  796. package/src/chain/bls/utils.ts +8 -5
  797. package/src/chain/chain.ts +67 -47
  798. package/src/chain/emitter.ts +3 -3
  799. package/src/chain/errors/executionPayloadBid.ts +1 -1
  800. package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
  801. package/src/chain/errors/payloadAttestation.ts +1 -1
  802. package/src/chain/forkChoice/index.ts +39 -21
  803. package/src/chain/interface.ts +4 -11
  804. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  805. package/src/chain/prepareNextSlot.ts +6 -2
  806. package/src/chain/produceBlock/computeNewStateRoot.ts +4 -3
  807. package/src/chain/produceBlock/produceBlockBody.ts +18 -5
  808. package/src/chain/regen/errors.ts +6 -1
  809. package/src/chain/regen/interface.ts +12 -6
  810. package/src/chain/regen/queued.ts +55 -14
  811. package/src/chain/regen/regen.ts +46 -10
  812. package/src/chain/seenCache/seenGossipBlockInput.ts +56 -18
  813. package/src/chain/stateCache/datastore/db.ts +33 -10
  814. package/src/chain/stateCache/datastore/file.ts +6 -5
  815. package/src/chain/stateCache/datastore/types.ts +3 -2
  816. package/src/chain/stateCache/fifoBlockStateCache.ts +10 -4
  817. package/src/chain/stateCache/persistentCheckpointsCache.ts +248 -139
  818. package/src/chain/stateCache/types.ts +18 -8
  819. package/src/chain/validation/aggregateAndProof.ts +1 -1
  820. package/src/chain/validation/attestation.ts +14 -7
  821. package/src/chain/validation/attesterSlashing.ts +10 -1
  822. package/src/chain/validation/blobSidecar.ts +2 -2
  823. package/src/chain/validation/block.ts +9 -4
  824. package/src/chain/validation/dataColumnSidecar.ts +147 -127
  825. package/src/chain/validation/executionPayloadBid.ts +1 -2
  826. package/src/chain/validation/executionPayloadEnvelope.ts +4 -4
  827. package/src/chain/validation/payloadAttestationMessage.ts +10 -3
  828. package/src/chain/validation/proposerSlashing.ts +1 -1
  829. package/src/chain/validation/syncCommitteeContributionAndProof.ts +1 -1
  830. package/src/db/index.ts +1 -0
  831. package/src/db/repositories/blockArchive.ts +1 -2
  832. package/src/execution/engine/http.ts +3 -0
  833. package/src/metrics/metrics/beacon.ts +9 -3
  834. package/src/metrics/metrics/lodestar.ts +39 -24
  835. package/src/monitoring/service.ts +3 -2
  836. package/src/network/core/networkCore.ts +3 -3
  837. package/src/network/core/networkCoreWorkerHandler.ts +3 -3
  838. package/src/network/core/types.ts +2 -2
  839. package/src/network/discv5/utils.ts +5 -4
  840. package/src/network/events.ts +2 -1
  841. package/src/network/gossip/encoding.ts +3 -3
  842. package/src/network/gossip/gossipsub.ts +98 -32
  843. package/src/network/gossip/interface.ts +3 -3
  844. package/src/network/gossip/scoringParameters.ts +4 -4
  845. package/src/network/interface.ts +3 -3
  846. package/src/network/libp2p/index.ts +48 -21
  847. package/src/network/metadata.ts +1 -0
  848. package/src/network/network.ts +5 -4
  849. package/src/network/options.ts +8 -1
  850. package/src/network/peers/datastore.ts +13 -10
  851. package/src/network/peers/discover.ts +46 -11
  852. package/src/network/peers/peerManager.ts +118 -54
  853. package/src/network/peers/utils/prioritizePeers.ts +3 -3
  854. package/src/network/processor/gossipHandlers.ts +12 -3
  855. package/src/network/processor/gossipValidatorFn.ts +2 -2
  856. package/src/network/processor/types.ts +1 -1
  857. package/src/network/reqresp/ReqRespBeaconNode.ts +1 -1
  858. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +4 -3
  859. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +3 -2
  860. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +1 -1
  861. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +4 -3
  862. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +2 -2
  863. package/src/network/reqresp/score.ts +0 -1
  864. package/src/network/reqresp/utils/collect.ts +1 -1
  865. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +1 -1
  866. package/src/network/util.ts +2 -2
  867. package/src/node/nodejs.ts +8 -9
  868. package/src/sync/range/range.ts +1 -0
  869. package/src/sync/utils/downloadByRange.ts +12 -3
  870. package/src/sync/utils/downloadByRoot.ts +2 -2
  871. package/src/sync/utils/remoteSyncType.ts +1 -1
  872. package/src/util/clock.ts +9 -4
  873. package/src/util/dataColumns.ts +6 -2
  874. package/src/util/execution.ts +23 -12
  875. package/src/util/serializedCache.ts +7 -5
  876. package/src/util/workerEvents.ts +1 -1
  877. package/lib/chain/archiveStore/utils/archivePayloads.d.ts +0 -7
  878. package/lib/chain/archiveStore/utils/archivePayloads.d.ts.map +0 -1
  879. package/lib/chain/archiveStore/utils/archivePayloads.js +0 -10
  880. package/lib/chain/archiveStore/utils/archivePayloads.js.map +0 -1
  881. package/src/chain/archiveStore/utils/archivePayloads.ts +0 -15
@@ -1,9 +1,15 @@
1
1
  import path from "node:path";
2
2
  import {PrivateKey} from "@libp2p/interface";
3
- import {PubkeyIndexMap} from "@chainsafe/pubkey-index-map";
4
3
  import {CompositeTypeAny, TreeView, Type} from "@chainsafe/ssz";
5
4
  import {BeaconConfig} from "@lodestar/config";
6
- import {CheckpointWithHex, IForkChoice, ProtoBlock, UpdateHeadOpt} from "@lodestar/fork-choice";
5
+ import {
6
+ CheckpointWithPayloadStatus,
7
+ IForkChoice,
8
+ PayloadStatus,
9
+ ProtoBlock,
10
+ UpdateHeadOpt,
11
+ getCheckpointPayloadStatus,
12
+ } from "@lodestar/fork-choice";
7
13
  import {LoggerNode} from "@lodestar/logger/node";
8
14
  import {
9
15
  BUILDER_INDEX_SELF_BUILD,
@@ -21,7 +27,7 @@ import {
21
27
  CachedBeaconStateGloas,
22
28
  EffectiveBalanceIncrements,
23
29
  EpochShuffling,
24
- Index2PubkeyCache,
30
+ PubkeyCache,
25
31
  computeAnchorCheckpoint,
26
32
  computeAttestationsRewards,
27
33
  computeBlockRewards,
@@ -59,7 +65,7 @@ import {Logger, fromHex, gweiToWei, isErrorAborted, pruneSetToMax, sleep, toRoot
59
65
  import {ProcessShutdownCallback} from "@lodestar/validator";
60
66
  import {GENESIS_EPOCH, ZERO_HASH} from "../constants/index.js";
61
67
  import {IBeaconDb} from "../db/index.js";
62
- import {BLOB_SIDECARS_IN_WRAPPER_INDEX} from "../db/repositories/blobSidecars.ts";
68
+ import {BLOB_SIDECARS_IN_WRAPPER_INDEX} from "../db/repositories/blobSidecars.js";
63
69
  import {BuilderStatus} from "../execution/builder/http.js";
64
70
  import {IExecutionBuilder, IExecutionEngine} from "../execution/index.js";
65
71
  import {Metrics} from "../metrics/index.js";
@@ -70,15 +76,15 @@ import {CustodyConfig, getValidatorsCustodyRequirement} from "../util/dataColumn
70
76
  import {callInNextEventLoop} from "../util/eventLoop.js";
71
77
  import {ensureDir, writeIfNotExist} from "../util/file.js";
72
78
  import {isOptimisticBlock} from "../util/forkChoice.js";
73
- import {JobItemQueue} from "../util/queue/itemQueue.ts";
79
+ import {JobItemQueue} from "../util/queue/itemQueue.js";
74
80
  import {SerializedCache} from "../util/serializedCache.js";
75
- import {getSlotFromSignedBeaconBlockSerialized} from "../util/sszBytes.ts";
81
+ import {getSlotFromSignedBeaconBlockSerialized} from "../util/sszBytes.js";
76
82
  import {ArchiveStore} from "./archiveStore/archiveStore.js";
77
83
  import {CheckpointBalancesCache} from "./balancesCache.js";
78
84
  import {BeaconProposerCache} from "./beaconProposerCache.js";
79
85
  import {IBlockInput, isBlockInputBlobs, isBlockInputColumns} from "./blocks/blockInput/index.js";
80
86
  import {BlockProcessor, ImportBlockOpts} from "./blocks/index.js";
81
- import {persistBlockInputs} from "./blocks/writeBlockInputToDb.ts";
87
+ import {persistBlockInput} from "./blocks/writeBlockInputToDb.js";
82
88
  import {BlsMultiThreadWorkerPool, BlsSingleThreadVerifier, IBlsVerifier} from "./bls/index.js";
83
89
  import {ColumnReconstructionTracker} from "./ColumnReconstructionTracker.js";
84
90
  import {ChainEvent, ChainEventEmitter} from "./emitter.js";
@@ -121,7 +127,7 @@ import {DbCPStateDatastore, checkpointToDatastoreKey} from "./stateCache/datasto
121
127
  import {FileCPStateDatastore} from "./stateCache/datastore/file.js";
122
128
  import {CPStateDatastore} from "./stateCache/datastore/types.js";
123
129
  import {FIFOBlockStateCache} from "./stateCache/fifoBlockStateCache.js";
124
- import {PersistentCheckpointStateCache} from "./stateCache/persistentCheckpointsCache.js";
130
+ import {PersistentCheckpointStateCache, fcCheckpointToHexPayload} from "./stateCache/persistentCheckpointsCache.js";
125
131
  import {CheckpointStateCache} from "./stateCache/types.js";
126
132
  import {ValidatorMonitor} from "./validatorMonitor.js";
127
133
 
@@ -165,7 +171,7 @@ export class BeaconChain implements IBeaconChain {
165
171
  readonly lightClientServer?: LightClientServer;
166
172
  readonly reprocessController: ReprocessController;
167
173
  readonly archiveStore: ArchiveStore;
168
- readonly unfinalizedBlockWrites: JobItemQueue<[IBlockInput[]], void>;
174
+ readonly unfinalizedBlockWrites: JobItemQueue<[IBlockInput], void>;
169
175
 
170
176
  // Ops pool
171
177
  readonly attestationPool: AttestationPool;
@@ -192,8 +198,7 @@ export class BeaconChain implements IBeaconChain {
192
198
  readonly seenBlockAttesters = new SeenBlockAttesters();
193
199
 
194
200
  // Global state caches
195
- readonly pubkey2index: PubkeyIndexMap;
196
- readonly index2pubkey: Index2PubkeyCache;
201
+ readonly pubkeyCache: PubkeyCache;
197
202
 
198
203
  readonly beaconProposerCache: BeaconProposerCache;
199
204
  readonly checkpointBalancesCache: CheckpointBalancesCache;
@@ -239,8 +244,7 @@ export class BeaconChain implements IBeaconChain {
239
244
  {
240
245
  privateKey,
241
246
  config,
242
- pubkey2index,
243
- index2pubkey,
247
+ pubkeyCache,
244
248
  db,
245
249
  dbName,
246
250
  dataDir,
@@ -256,8 +260,7 @@ export class BeaconChain implements IBeaconChain {
256
260
  }: {
257
261
  privateKey: PrivateKey;
258
262
  config: BeaconConfig;
259
- pubkey2index: PubkeyIndexMap;
260
- index2pubkey: Index2PubkeyCache;
263
+ pubkeyCache: PubkeyCache;
261
264
  db: IBeaconDb;
262
265
  dbName: string;
263
266
  dataDir: string;
@@ -289,8 +292,8 @@ export class BeaconChain implements IBeaconChain {
289
292
  const emitter = new ChainEventEmitter();
290
293
  // by default, verify signatures on both main threads and worker threads
291
294
  const bls = opts.blsVerifyAllMainThread
292
- ? new BlsSingleThreadVerifier({metrics, index2pubkey})
293
- : new BlsMultiThreadWorkerPool(opts, {logger, metrics, index2pubkey});
295
+ ? new BlsSingleThreadVerifier({metrics, pubkeyCache})
296
+ : new BlsMultiThreadWorkerPool(opts, {logger, metrics, pubkeyCache});
294
297
 
295
298
  if (!clock) clock = new Clock({config, genesisTime: this.genesisTime, signal});
296
299
 
@@ -309,7 +312,9 @@ export class BeaconChain implements IBeaconChain {
309
312
 
310
313
  const nodeId = computeNodeIdFromPrivateKey(privateKey);
311
314
  const initialCustodyGroupCount = opts.initialCustodyGroupCount ?? config.CUSTODY_REQUIREMENT;
312
- this.metrics?.peerDas.targetCustodyGroupCount.set(initialCustodyGroupCount);
315
+ this.metrics?.peerDas.custodyGroupCount.set(initialCustodyGroupCount);
316
+ // TODO: backfill not implemented yet
317
+ this.metrics?.peerDas.custodyGroupsBackfilled.set(0);
313
318
  this.custodyConfig = new CustodyConfig({
314
319
  nodeId,
315
320
  config,
@@ -318,12 +323,14 @@ export class BeaconChain implements IBeaconChain {
318
323
 
319
324
  this.beaconProposerCache = new BeaconProposerCache(opts);
320
325
  this.checkpointBalancesCache = new CheckpointBalancesCache();
326
+ this.serializedCache = new SerializedCache();
321
327
  this.seenBlockInputCache = new SeenBlockInput({
322
328
  config,
323
329
  custodyConfig: this.custodyConfig,
324
330
  clock,
325
331
  chainEvents: emitter,
326
332
  signal,
333
+ serializedCache: this.serializedCache,
327
334
  metrics,
328
335
  logger,
329
336
  });
@@ -346,8 +353,7 @@ export class BeaconChain implements IBeaconChain {
346
353
  ]);
347
354
 
348
355
  // Global cache of validators pubkey/index mapping
349
- this.pubkey2index = pubkey2index;
350
- this.index2pubkey = index2pubkey;
356
+ this.pubkeyCache = pubkeyCache;
351
357
 
352
358
  const fileDataStore = opts.nHistoricalStatesFileDataStore ?? true;
353
359
  const blockStateCache = new FIFOBlockStateCache(this.opts, {metrics});
@@ -370,7 +376,8 @@ export class BeaconChain implements IBeaconChain {
370
376
  const {checkpoint} = computeAnchorCheckpoint(config, anchorState);
371
377
  blockStateCache.add(anchorState);
372
378
  blockStateCache.setHeadState(anchorState);
373
- checkpointStateCache.add(checkpoint, anchorState);
379
+ const payloadPresent = getCheckpointPayloadStatus(anchorState, checkpoint.epoch) === PayloadStatus.FULL;
380
+ checkpointStateCache.add(checkpoint, anchorState, payloadPresent);
374
381
 
375
382
  const forkChoice = initializeForkChoice(
376
383
  config,
@@ -411,8 +418,6 @@ export class BeaconChain implements IBeaconChain {
411
418
  this.bls = bls;
412
419
  this.emitter = emitter;
413
420
 
414
- this.serializedCache = new SerializedCache();
415
-
416
421
  this.getBlobsTracker = new GetBlobsTracker({
417
422
  logger,
418
423
  executionEngine: this.executionEngine,
@@ -434,7 +439,7 @@ export class BeaconChain implements IBeaconChain {
434
439
  );
435
440
 
436
441
  this.unfinalizedBlockWrites = new JobItemQueue(
437
- persistBlockInputs.bind(this),
442
+ persistBlockInput.bind(this),
438
443
  {
439
444
  maxLength: DEFAULT_MAX_PENDING_UNFINALIZED_BLOCK_WRITES,
440
445
  signal,
@@ -605,7 +610,7 @@ export class BeaconChain implements IBeaconChain {
605
610
  ): Promise<{state: CachedBeaconStateAllForks | Uint8Array; executionOptimistic: boolean; finalized: boolean} | null> {
606
611
  if (opts?.allowRegen) {
607
612
  const state = await this.regen.getState(stateRoot, RegenCaller.restApi);
608
- const block = this.forkChoice.getBlock(state.latestBlockHeader.hashTreeRoot());
613
+ const block = this.forkChoice.getBlockDefaultStatus(state.latestBlockHeader.hashTreeRoot());
609
614
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
610
615
  return {
611
616
  state,
@@ -621,7 +626,7 @@ export class BeaconChain implements IBeaconChain {
621
626
  // TODO: This is very inneficient for debug requests of serialized content, since it deserializes to serialize again
622
627
  const cachedStateCtx = this.regen.getStateSync(stateRoot);
623
628
  if (cachedStateCtx) {
624
- const block = this.forkChoice.getBlock(cachedStateCtx.latestBlockHeader.hashTreeRoot());
629
+ const block = this.forkChoice.getBlockDefaultStatus(cachedStateCtx.latestBlockHeader.hashTreeRoot());
625
630
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
626
631
  return {
627
632
  state: cachedStateCtx,
@@ -645,17 +650,20 @@ export class BeaconChain implements IBeaconChain {
645
650
  return this.cpStateDatastore.readLatestSafe();
646
651
  }
647
652
 
648
- const persistedKey = checkpointToDatastoreKey(checkpoint);
653
+ // TODO GLOAS: Need to revisit the design of this api. Currently we just retrieve FULL state of the checkpoint for backwards compatibility.
654
+ // because pre-gloas we always store FULL checkpoint state.
655
+ const persistedKey = checkpointToDatastoreKey(checkpoint, true);
649
656
  return this.cpStateDatastore.read(persistedKey);
650
657
  }
651
658
 
652
659
  getStateByCheckpoint(
653
- checkpoint: CheckpointWithHex
660
+ checkpoint: CheckpointWithPayloadStatus
654
661
  ): {state: BeaconStateAllForks; executionOptimistic: boolean; finalized: boolean} | null {
655
662
  // finalized or justified checkpoint states maynot be available with PersistentCheckpointStateCache, use getCheckpointStateOrBytes() api to get Uint8Array
656
- const cachedStateCtx = this.regen.getCheckpointStateSync(checkpoint);
663
+ const checkpointHexPayload = fcCheckpointToHexPayload(checkpoint);
664
+ const cachedStateCtx = this.regen.getCheckpointStateSync(checkpointHexPayload);
657
665
  if (cachedStateCtx) {
658
- const block = this.forkChoice.getBlock(cachedStateCtx.latestBlockHeader.hashTreeRoot());
666
+ const block = this.forkChoice.getBlockDefaultStatus(cachedStateCtx.latestBlockHeader.hashTreeRoot());
659
667
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
660
668
  return {
661
669
  state: cachedStateCtx,
@@ -668,11 +676,12 @@ export class BeaconChain implements IBeaconChain {
668
676
  }
669
677
 
670
678
  async getStateOrBytesByCheckpoint(
671
- checkpoint: CheckpointWithHex
679
+ checkpoint: CheckpointWithPayloadStatus
672
680
  ): Promise<{state: CachedBeaconStateAllForks | Uint8Array; executionOptimistic: boolean; finalized: boolean} | null> {
673
- const cachedStateCtx = await this.regen.getCheckpointStateOrBytes(checkpoint);
681
+ const checkpointHexPayload = fcCheckpointToHexPayload(checkpoint);
682
+ const cachedStateCtx = await this.regen.getCheckpointStateOrBytes(checkpointHexPayload);
674
683
  if (cachedStateCtx) {
675
- const block = this.forkChoice.getBlock(checkpoint.root);
684
+ const block = this.forkChoice.getBlockDefaultStatus(checkpoint.root);
676
685
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
677
686
  return {
678
687
  state: cachedStateCtx,
@@ -716,7 +725,7 @@ export class BeaconChain implements IBeaconChain {
716
725
  async getBlockByRoot(
717
726
  root: string
718
727
  ): Promise<{block: SignedBeaconBlock; executionOptimistic: boolean; finalized: boolean} | null> {
719
- const block = this.forkChoice.getBlockHex(root);
728
+ const block = this.forkChoice.getBlockHexDefaultStatus(root);
720
729
  if (block) {
721
730
  // Block found in fork-choice.
722
731
  // It may be in the block input cache, awaiting full DA reconstruction, check there first
@@ -740,7 +749,7 @@ export class BeaconChain implements IBeaconChain {
740
749
  async getSerializedBlockByRoot(
741
750
  root: string
742
751
  ): Promise<{block: Uint8Array; executionOptimistic: boolean; finalized: boolean; slot: Slot} | null> {
743
- const block = this.forkChoice.getBlockHex(root);
752
+ const block = this.forkChoice.getBlockHexDefaultStatus(root);
744
753
  if (block) {
745
754
  // Block found in fork-choice.
746
755
  // It may be in the block input cache, awaiting full DA reconstruction, check there first
@@ -920,7 +929,7 @@ export class BeaconChain implements IBeaconChain {
920
929
  RegenCaller.produceBlock
921
930
  );
922
931
  const proposerIndex = state.epochCtx.getBeaconProposer(slot);
923
- const proposerPubKey = this.index2pubkey[proposerIndex].toBytes();
932
+ const proposerPubKey = this.pubkeyCache.getOrThrow(proposerIndex).toBytes();
924
933
 
925
934
  const {body, produceResult, executionPayloadValue, shouldOverrideBuilder} = await produceBlockBody.call(
926
935
  this,
@@ -1191,7 +1200,7 @@ export class BeaconChain implements IBeaconChain {
1191
1200
  * @param blockState state that declares justified checkpoint `checkpoint`
1192
1201
  */
1193
1202
  private justifiedBalancesGetter(
1194
- checkpoint: CheckpointWithHex,
1203
+ checkpoint: CheckpointWithPayloadStatus,
1195
1204
  blockState: CachedBeaconStateAllForks
1196
1205
  ): EffectiveBalanceIncrements {
1197
1206
  this.metrics?.balancesCache.requests.inc();
@@ -1230,10 +1239,11 @@ export class BeaconChain implements IBeaconChain {
1230
1239
  * @param blockState state that declares justified checkpoint `checkpoint`
1231
1240
  */
1232
1241
  private closestJustifiedBalancesStateToCheckpoint(
1233
- checkpoint: CheckpointWithHex,
1242
+ checkpoint: CheckpointWithPayloadStatus,
1234
1243
  blockState: CachedBeaconStateAllForks
1235
1244
  ): {state: CachedBeaconStateAllForks; stateId: string; shouldWarn: boolean} {
1236
- const state = this.regen.getCheckpointStateSync(checkpoint);
1245
+ const checkpointHexPayload = fcCheckpointToHexPayload(checkpoint);
1246
+ const state = this.regen.getCheckpointStateSync(checkpointHexPayload);
1237
1247
  if (state) {
1238
1248
  return {state, stateId: "checkpoint_state", shouldWarn: false};
1239
1249
  }
@@ -1244,7 +1254,10 @@ export class BeaconChain implements IBeaconChain {
1244
1254
  }
1245
1255
 
1246
1256
  // Find a state in the same branch of checkpoint at same epoch. Balances should exactly the same
1247
- for (const descendantBlock of this.forkChoice.forwardIterateDescendants(checkpoint.rootHex)) {
1257
+ for (const descendantBlock of this.forkChoice.forwardIterateDescendants(
1258
+ checkpoint.rootHex,
1259
+ checkpoint.payloadStatus
1260
+ )) {
1248
1261
  if (computeEpochAtSlot(descendantBlock.slot) === checkpoint.epoch) {
1249
1262
  const descendantBlockState = this.regen.getStateSync(descendantBlock.stateRoot);
1250
1263
  if (descendantBlockState) {
@@ -1260,7 +1273,10 @@ export class BeaconChain implements IBeaconChain {
1260
1273
 
1261
1274
  // Find a state in the same branch of checkpoint at a latter epoch. Balances are not the same, but should be close
1262
1275
  // Note: must call .forwardIterateDescendants() again since nodes are not sorted
1263
- for (const descendantBlock of this.forkChoice.forwardIterateDescendants(checkpoint.rootHex)) {
1276
+ for (const descendantBlock of this.forkChoice.forwardIterateDescendants(
1277
+ checkpoint.rootHex,
1278
+ checkpoint.payloadStatus
1279
+ )) {
1264
1280
  if (computeEpochAtSlot(descendantBlock.slot) > checkpoint.epoch) {
1265
1281
  const descendantBlockState = this.regen.getStateSync(descendantBlock.stateRoot);
1266
1282
  if (descendantBlockState) {
@@ -1354,6 +1370,10 @@ export class BeaconChain implements IBeaconChain {
1354
1370
  private onClockEpoch(epoch: Epoch): void {
1355
1371
  this.metrics?.clockEpoch.set(epoch);
1356
1372
 
1373
+ if (epoch === this.config.GLOAS_FORK_EPOCH) {
1374
+ this.regen.upgradeForGloas(epoch);
1375
+ }
1376
+
1357
1377
  this.seenAttesters.prune(epoch);
1358
1378
  this.seenAggregators.prune(epoch);
1359
1379
  this.seenPayloadAttesters.prune(epoch);
@@ -1367,7 +1387,7 @@ export class BeaconChain implements IBeaconChain {
1367
1387
  this.seenContributionAndProof.prune(head.slot);
1368
1388
  }
1369
1389
 
1370
- private onForkChoiceJustified(this: BeaconChain, cp: CheckpointWithHex): void {
1390
+ private onForkChoiceJustified(this: BeaconChain, cp: CheckpointWithPayloadStatus): void {
1371
1391
  this.logger.verbose("Fork choice justified", {epoch: cp.epoch, root: cp.rootHex});
1372
1392
  }
1373
1393
 
@@ -1378,7 +1398,7 @@ export class BeaconChain implements IBeaconChain {
1378
1398
  });
1379
1399
  }
1380
1400
 
1381
- private async onForkChoiceFinalized(this: BeaconChain, cp: CheckpointWithHex): Promise<void> {
1401
+ private async onForkChoiceFinalized(this: BeaconChain, cp: CheckpointWithPayloadStatus): Promise<void> {
1382
1402
  this.logger.verbose("Fork choice finalized", {epoch: cp.epoch, root: cp.rootHex});
1383
1403
  const finalizedSlot = computeStartSlotAtEpoch(cp.epoch);
1384
1404
  this.seenBlockProposers.prune(finalizedSlot);
@@ -1420,7 +1440,7 @@ export class BeaconChain implements IBeaconChain {
1420
1440
  }
1421
1441
  }
1422
1442
 
1423
- private async updateValidatorsCustodyRequirement(finalizedCheckpoint: CheckpointWithHex): Promise<void> {
1443
+ private async updateValidatorsCustodyRequirement(finalizedCheckpoint: CheckpointWithPayloadStatus): Promise<void> {
1424
1444
  if (this.custodyConfig.targetCustodyGroupCount === this.config.NUMBER_OF_CUSTODY_GROUPS) {
1425
1445
  // Custody requirements can only be increased, we can disable dynamic custody updates
1426
1446
  // if the node already maintains custody of all custody groups in case it is configured
@@ -1466,7 +1486,7 @@ export class BeaconChain implements IBeaconChain {
1466
1486
  // Only update if target is increased
1467
1487
  if (targetCustodyGroupCount > this.custodyConfig.targetCustodyGroupCount) {
1468
1488
  this.custodyConfig.updateTargetCustodyGroupCount(targetCustodyGroupCount);
1469
- this.metrics?.peerDas.targetCustodyGroupCount.set(targetCustodyGroupCount);
1489
+ this.metrics?.peerDas.custodyGroupCount.set(targetCustodyGroupCount);
1470
1490
  this.logger.verbose("Updated target custody group count", {
1471
1491
  finalizedEpoch: finalizedCheckpoint.epoch,
1472
1492
  validatorCount: validatorIndices.length,
@@ -1536,7 +1556,7 @@ export class BeaconChain implements IBeaconChain {
1536
1556
  throw Error(`State is not in cache for slot ${slot}`);
1537
1557
  }
1538
1558
 
1539
- const rewards = await computeAttestationsRewards(this.config, this.pubkey2index, cachedState, validatorIds);
1559
+ const rewards = await computeAttestationsRewards(this.config, this.pubkeyCache, cachedState, validatorIds);
1540
1560
 
1541
1561
  return {rewards, executionOptimistic, finalized};
1542
1562
  }
@@ -1553,6 +1573,6 @@ export class BeaconChain implements IBeaconChain {
1553
1573
 
1554
1574
  preState = processSlots(preState, block.slot); // Dial preState's slot to block.slot
1555
1575
 
1556
- return computeSyncCommitteeRewards(this.config, this.index2pubkey, block, preState, validatorIds);
1576
+ return computeSyncCommitteeRewards(this.config, this.pubkeyCache, block, preState, validatorIds);
1557
1577
  }
1558
1578
  }
@@ -1,7 +1,7 @@
1
1
  import {EventEmitter} from "node:events";
2
2
  import {StrictEventEmitter} from "strict-event-emitter-types";
3
3
  import {routes} from "@lodestar/api";
4
- import {CheckpointWithHex} from "@lodestar/fork-choice";
4
+ import {CheckpointWithPayloadStatus} from "@lodestar/fork-choice";
5
5
  import {CachedBeaconStateAllForks} from "@lodestar/state-transition";
6
6
  import {DataColumnSidecars, RootHex, deneb, phase0} from "@lodestar/types";
7
7
  import {PeerIdStr} from "../util/peerId.js";
@@ -83,8 +83,8 @@ export type ChainEventData = {
83
83
  export type IChainEvents = ApiEvents & {
84
84
  [ChainEvent.checkpoint]: (checkpoint: phase0.Checkpoint, state: CachedBeaconStateAllForks) => void;
85
85
 
86
- [ChainEvent.forkChoiceJustified]: (checkpoint: CheckpointWithHex) => void;
87
- [ChainEvent.forkChoiceFinalized]: (checkpoint: CheckpointWithHex) => void;
86
+ [ChainEvent.forkChoiceJustified]: (checkpoint: CheckpointWithPayloadStatus) => void;
87
+ [ChainEvent.forkChoiceFinalized]: (checkpoint: CheckpointWithPayloadStatus) => void;
88
88
 
89
89
  [ChainEvent.updateTargetCustodyGroupCount]: (targetGroupCount: number) => void;
90
90
 
@@ -1,5 +1,5 @@
1
1
  import {BuilderIndex, RootHex, Slot} from "@lodestar/types";
2
- import {GossipActionError} from "./gossipValidation.ts";
2
+ import {GossipActionError} from "./gossipValidation.js";
3
3
 
4
4
  export enum ExecutionPayloadBidErrorCode {
5
5
  BUILDER_NOT_ELIGIBLE = "EXECUTION_PAYLOAD_BID_ERROR_BUILDER_NOT_ELIGIBLE",
@@ -25,9 +25,13 @@ export type ExecutionPayloadEnvelopeErrorType =
25
25
  | {
26
26
  code: ExecutionPayloadEnvelopeErrorCode.BUILDER_INDEX_MISMATCH;
27
27
  envelopeBuilderIndex: BuilderIndex;
28
- bidBuilderIndex: BuilderIndex;
28
+ bidBuilderIndex: BuilderIndex | null;
29
+ }
30
+ | {
31
+ code: ExecutionPayloadEnvelopeErrorCode.BLOCK_HASH_MISMATCH;
32
+ envelopeBlockHash: RootHex;
33
+ bidBlockHash: RootHex | null;
29
34
  }
30
- | {code: ExecutionPayloadEnvelopeErrorCode.BLOCK_HASH_MISMATCH; envelopeBlockHash: RootHex; bidBlockHash: RootHex}
31
35
  | {code: ExecutionPayloadEnvelopeErrorCode.INVALID_SIGNATURE}
32
36
  | {code: ExecutionPayloadEnvelopeErrorCode.CACHE_FAIL; blockRoot: RootHex};
33
37
 
@@ -1,5 +1,5 @@
1
1
  import {RootHex, Slot, ValidatorIndex} from "@lodestar/types";
2
- import {GossipActionError} from "./gossipValidation.ts";
2
+ import {GossipActionError} from "./gossipValidation.js";
3
3
 
4
4
  export enum PayloadAttestationErrorCode {
5
5
  NOT_CURRENT_SLOT = "PAYLOAD_ATTESTATION_ERROR_NOT_CURRENT_SLOT",
@@ -4,9 +4,11 @@ import {
4
4
  ForkChoice,
5
5
  ForkChoiceStore,
6
6
  JustifiedBalancesGetter,
7
+ PayloadStatus,
7
8
  ProtoArray,
8
9
  ProtoBlock,
9
10
  ForkChoiceOpts as RawForkChoiceOpts,
11
+ getCheckpointPayloadStatus,
10
12
  } from "@lodestar/fork-choice";
11
13
  import {ZERO_HASH_HEX} from "@lodestar/params";
12
14
  import {
@@ -104,6 +106,14 @@ export function initializeForkChoiceFromFinalizedState(
104
106
  // production code use ForkChoice constructor directly
105
107
  const forkchoiceConstructor = opts.forkchoiceConstructor ?? ForkChoice;
106
108
 
109
+ const isForkPostGloas = (state as CachedBeaconStateGloas).latestBlockHash !== undefined;
110
+
111
+ // Determine justified checkpoint payload status
112
+ const justifiedPayloadStatus = getCheckpointPayloadStatus(state, justifiedCheckpoint.epoch);
113
+
114
+ // Determine finalized checkpoint payload status
115
+ const finalizedPayloadStatus = getCheckpointPayloadStatus(state, finalizedCheckpoint.epoch);
116
+
107
117
  return new forkchoiceConstructor(
108
118
  config,
109
119
 
@@ -113,6 +123,8 @@ export function initializeForkChoiceFromFinalizedState(
113
123
  finalizedCheckpoint,
114
124
  justifiedBalances,
115
125
  justifiedBalancesGetter,
126
+ justifiedPayloadStatus,
127
+ finalizedPayloadStatus,
116
128
  {
117
129
  onJustified: (cp) => emitter.emit(ChainEvent.forkChoiceJustified, cp),
118
130
  onFinalized: (cp) => emitter.emit(ChainEvent.forkChoiceFinalized, cp),
@@ -145,15 +157,12 @@ export function initializeForkChoiceFromFinalizedState(
145
157
  : {executionPayloadBlockHash: null, executionStatus: ExecutionStatus.PreMerge}),
146
158
 
147
159
  dataAvailabilityStatus: DataAvailabilityStatus.PreData,
148
- ...(computeEpochAtSlot(blockHeader.slot) < state.config.GLOAS_FORK_EPOCH
149
- ? {
150
- builderIndex: undefined,
151
- blockHashHex: undefined,
152
- }
153
- : {
154
- builderIndex: (state as CachedBeaconStateGloas).latestExecutionPayloadBid.builderIndex,
155
- blockHashHex: toRootHex((state as CachedBeaconStateGloas).latestExecutionPayloadBid.blockHash),
156
- }),
160
+ payloadStatus: isForkPostGloas ? PayloadStatus.PENDING : PayloadStatus.FULL, // TODO GLOAS: Post-gloas how do we know if the checkpoint payload is FULL or EMPTY?
161
+ builderIndex: isForkPostGloas ? (state as CachedBeaconStateGloas).latestExecutionPayloadBid.builderIndex : null,
162
+ blockHashFromBid: isForkPostGloas
163
+ ? toRootHex((state as CachedBeaconStateGloas).latestExecutionPayloadBid.blockHash)
164
+ : null,
165
+ parentBlockHash: isForkPostGloas ? toRootHex((state as CachedBeaconStateGloas).latestBlockHash) : null,
157
166
  },
158
167
  currentSlot
159
168
  ),
@@ -196,12 +205,22 @@ export function initializeForkChoiceFromUnfinalizedState(
196
205
 
197
206
  // this is not the justified state, but there is no other ways to get justified balances
198
207
  const justifiedBalances = getEffectiveBalanceIncrementsZeroInactive(unfinalizedState);
208
+
209
+ const isForkPostGloas = (unfinalizedState as CachedBeaconStateGloas).latestBlockHash !== undefined;
210
+
211
+ // For unfinalized state, use getCheckpointPayloadStatus to determine the correct status.
212
+ // It checks state.execution_payload_availability to determine EMPTY vs FULL.
213
+ const justifiedPayloadStatus = getCheckpointPayloadStatus(unfinalizedState, justifiedCheckpoint.epoch);
214
+ const finalizedPayloadStatus = getCheckpointPayloadStatus(unfinalizedState, finalizedCheckpoint.epoch);
215
+
199
216
  const store = new ForkChoiceStore(
200
217
  currentSlot,
201
218
  justifiedCheckpoint,
202
219
  finalizedCheckpoint,
203
220
  justifiedBalances,
204
221
  justifiedBalancesGetter,
222
+ justifiedPayloadStatus,
223
+ finalizedPayloadStatus,
205
224
  {
206
225
  onJustified: (cp) => emitter.emit(ChainEvent.forkChoiceJustified, cp),
207
226
  onFinalized: (cp) => emitter.emit(ChainEvent.forkChoiceFinalized, cp),
@@ -235,15 +254,14 @@ export function initializeForkChoiceFromUnfinalizedState(
235
254
  : {executionPayloadBlockHash: null, executionStatus: ExecutionStatus.PreMerge}),
236
255
 
237
256
  dataAvailabilityStatus: DataAvailabilityStatus.PreData,
238
- ...(computeEpochAtSlot(blockHeader.slot) < unfinalizedState.config.GLOAS_FORK_EPOCH
239
- ? {
240
- builderIndex: undefined,
241
- blockHashHex: undefined,
242
- }
243
- : {
244
- builderIndex: (unfinalizedState as CachedBeaconStateGloas).latestExecutionPayloadBid.builderIndex,
245
- blockHashHex: toRootHex((unfinalizedState as CachedBeaconStateGloas).latestExecutionPayloadBid.blockHash),
246
- }),
257
+ payloadStatus: isForkPostGloas ? PayloadStatus.PENDING : PayloadStatus.FULL, // TODO GLOAS: Post-gloas how do we know if the checkpoint payload is FULL or EMPTY?
258
+ builderIndex: isForkPostGloas
259
+ ? (unfinalizedState as CachedBeaconStateGloas).latestExecutionPayloadBid.builderIndex
260
+ : null,
261
+ blockHashFromBid: isForkPostGloas
262
+ ? toRootHex((unfinalizedState as CachedBeaconStateGloas).latestExecutionPayloadBid.blockHash)
263
+ : null,
264
+ parentBlockHash: isForkPostGloas ? toRootHex((unfinalizedState as CachedBeaconStateGloas).latestBlockHash) : null,
247
265
  };
248
266
 
249
267
  const parentSlot = blockHeader.slot - 1;
@@ -285,9 +303,9 @@ export function initializeForkChoiceFromUnfinalizedState(
285
303
  };
286
304
 
287
305
  const protoArray = ProtoArray.initialize(finalizedBlock, currentSlot);
288
- protoArray.onBlock(justifiedBlock, currentSlot);
289
- protoArray.onBlock(parentBlock, currentSlot);
290
- protoArray.onBlock(headBlock, currentSlot);
306
+ protoArray.onBlock(justifiedBlock, currentSlot, null);
307
+ protoArray.onBlock(parentBlock, currentSlot, null);
308
+ protoArray.onBlock(headBlock, currentSlot, null);
291
309
 
292
310
  logger?.verbose("Initialized protoArray successfully", {...logCtx, length: protoArray.length()});
293
311
 
@@ -1,13 +1,7 @@
1
- import {PubkeyIndexMap} from "@chainsafe/pubkey-index-map";
2
1
  import {CompositeTypeAny, TreeView, Type} from "@chainsafe/ssz";
3
2
  import {BeaconConfig} from "@lodestar/config";
4
- import {CheckpointWithHex, IForkChoice, ProtoBlock} from "@lodestar/fork-choice";
5
- import {
6
- BeaconStateAllForks,
7
- CachedBeaconStateAllForks,
8
- EpochShuffling,
9
- Index2PubkeyCache,
10
- } from "@lodestar/state-transition";
3
+ import {CheckpointWithHex, CheckpointWithPayloadStatus, IForkChoice, ProtoBlock} from "@lodestar/fork-choice";
4
+ import {BeaconStateAllForks, CachedBeaconStateAllForks, EpochShuffling, PubkeyCache} from "@lodestar/state-transition";
11
5
  import {
12
6
  BeaconBlock,
13
7
  BlindedBeaconBlock,
@@ -117,8 +111,7 @@ export interface IBeaconChain {
117
111
  readonly regen: IStateRegenerator;
118
112
  readonly lightClientServer?: LightClientServer;
119
113
  readonly reprocessController: ReprocessController;
120
- readonly pubkey2index: PubkeyIndexMap;
121
- readonly index2pubkey: Index2PubkeyCache;
114
+ readonly pubkeyCache: PubkeyCache;
122
115
  readonly archiveStore: IArchiveStore;
123
116
 
124
117
  // Ops pool
@@ -199,7 +192,7 @@ export interface IBeaconChain {
199
192
  ): {state: BeaconStateAllForks; executionOptimistic: boolean; finalized: boolean} | null;
200
193
  /** Return state bytes by checkpoint */
201
194
  getStateOrBytesByCheckpoint(
202
- checkpoint: CheckpointWithHex
195
+ checkpoint: CheckpointWithPayloadStatus
203
196
  ): Promise<{state: CachedBeaconStateAllForks | Uint8Array; executionOptimistic: boolean; finalized: boolean} | null>;
204
197
 
205
198
  /**
@@ -864,7 +864,7 @@ function isValidShuffling(
864
864
  // attestation's shuffling is the same as the current state's.
865
865
  // To account for skipped slots, find the first block at *or before* the pivot slot.
866
866
  const beaconBlockRootHex = blockRootHex;
867
- const beaconBlock = forkChoice.getBlockHex(beaconBlockRootHex);
867
+ const beaconBlock = forkChoice.getBlockHexDefaultStatus(beaconBlockRootHex);
868
868
  if (!beaconBlock) {
869
869
  return InvalidAttestationData.BlockNotInForkChoice;
870
870
  }
@@ -1,6 +1,6 @@
1
1
  import {routes} from "@lodestar/api";
2
2
  import {ChainForkConfig} from "@lodestar/config";
3
- import {getSafeExecutionBlockHash} from "@lodestar/fork-choice";
3
+ import {PayloadStatus, getSafeExecutionBlockHash} from "@lodestar/fork-choice";
4
4
  import {ForkPostBellatrix, ForkSeq, SLOTS_PER_EPOCH, isForkPostBellatrix} from "@lodestar/params";
5
5
  import {
6
6
  CachedBeaconStateAllForks,
@@ -211,7 +211,11 @@ export class PrepareNextSlotScheduler {
211
211
  // + if next slot is a skipped slot, it'd help getting target checkpoint state faster to validate attestations
212
212
  if (isEpochTransition) {
213
213
  this.metrics?.precomputeNextEpochTransition.count.inc({result: "success"}, 1);
214
- const previousHits = this.chain.regen.updatePreComputedCheckpoint(headRoot, nextEpoch);
214
+ // Determine payloadPresent from head block's payload status
215
+ // Pre-Gloas: payloadStatus is always FULL → payloadPresent = true
216
+ // Post-Gloas: FULL → true, EMPTY → false, PENDING → false (conservative, treat as block state)
217
+ const payloadPresent = headBlock.payloadStatus === PayloadStatus.FULL;
218
+ const previousHits = this.chain.regen.updatePreComputedCheckpoint(headRoot, nextEpoch, payloadPresent);
215
219
  if (previousHits === 0) {
216
220
  this.metrics?.precomputeNextEpochTransition.waste.inc();
217
221
  }
@@ -61,7 +61,6 @@ export function computeNewStateRoot(
61
61
  * Compute the state root after processing an execution payload envelope.
62
62
  * Similar to `computeNewStateRoot` but for payload envelope processing.
63
63
  *
64
- * The `postBlockState` is mutated in place, callers must ensure it is not needed afterward.
65
64
  */
66
65
  export function computeEnvelopeStateRoot(
67
66
  metrics: Metrics | null,
@@ -74,13 +73,15 @@ export function computeEnvelopeStateRoot(
74
73
  };
75
74
 
76
75
  const processEnvelopeTimer = metrics?.blockPayload.executionPayloadEnvelopeProcessingTime.startTimer();
77
- processExecutionPayloadEnvelope(postBlockState, signedEnvelope, false);
76
+ const postEnvelopeState = processExecutionPayloadEnvelope(postBlockState, signedEnvelope, false, {
77
+ dontTransferCache: true,
78
+ });
78
79
  processEnvelopeTimer?.();
79
80
 
80
81
  const hashTreeRootTimer = metrics?.stateHashTreeRootTime.startTimer({
81
82
  source: StateHashTreeRootSource.computeEnvelopeStateRoot,
82
83
  });
83
- const stateRoot = postBlockState.hashTreeRoot();
84
+ const stateRoot = postEnvelopeState.hashTreeRoot();
84
85
  hashTreeRootTimer?.();
85
86
 
86
87
  return stateRoot;