@lodestar/beacon-node 1.41.0-dev.192806a314 → 1.41.0-dev.1ff95eaa7b

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 (753) 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.map +1 -1
  17. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  18. package/lib/api/impl/config/constants.js.map +1 -1
  19. package/lib/api/impl/config/index.js.map +1 -1
  20. package/lib/api/impl/debug/index.d.ts +1 -1
  21. package/lib/api/impl/debug/index.d.ts.map +1 -1
  22. package/lib/api/impl/debug/index.js.map +1 -1
  23. package/lib/api/impl/errors.d.ts.map +1 -1
  24. package/lib/api/impl/errors.js.map +1 -1
  25. package/lib/api/impl/events/index.d.ts +1 -1
  26. package/lib/api/impl/events/index.d.ts.map +1 -1
  27. package/lib/api/impl/events/index.js.map +1 -1
  28. package/lib/api/impl/lightclient/index.d.ts +1 -1
  29. package/lib/api/impl/lightclient/index.d.ts.map +1 -1
  30. package/lib/api/impl/lightclient/index.js.map +1 -1
  31. package/lib/api/impl/lodestar/index.d.ts +1 -1
  32. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  33. package/lib/api/impl/lodestar/index.js.map +1 -1
  34. package/lib/api/impl/node/index.js.map +1 -1
  35. package/lib/api/impl/node/utils.js.map +1 -1
  36. package/lib/api/impl/proof/index.js.map +1 -1
  37. package/lib/api/impl/utils.js.map +1 -1
  38. package/lib/api/impl/validator/index.d.ts.map +1 -1
  39. package/lib/api/impl/validator/index.js +30 -12
  40. package/lib/api/impl/validator/index.js.map +1 -1
  41. package/lib/api/impl/validator/utils.d.ts +1 -1
  42. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  43. package/lib/api/impl/validator/utils.js.map +1 -1
  44. package/lib/api/rest/activeSockets.d.ts.map +1 -1
  45. package/lib/api/rest/activeSockets.js.map +1 -1
  46. package/lib/api/rest/base.d.ts.map +1 -1
  47. package/lib/api/rest/base.js.map +1 -1
  48. package/lib/api/rest/index.d.ts.map +1 -1
  49. package/lib/api/rest/index.js.map +1 -1
  50. package/lib/api/rest/swaggerUI.js.map +1 -1
  51. package/lib/bun-wrappers/prometheus-gc-stats.js.map +1 -1
  52. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
  53. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  54. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  55. package/lib/chain/GetBlobsTracker.js.map +1 -1
  56. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  57. package/lib/chain/archiveStore/archiveStore.js +2 -1
  58. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  59. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  60. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
  61. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  62. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  63. package/lib/chain/archiveStore/historicalState/types.js +2 -1
  64. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  65. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  66. package/lib/chain/archiveStore/interface.js +2 -1
  67. package/lib/chain/archiveStore/interface.js.map +1 -1
  68. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +1 -1
  69. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  70. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +2 -1
  71. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  72. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +3 -8
  73. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  74. package/lib/chain/archiveStore/utils/archiveBlocks.js +1 -1
  75. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  76. package/lib/chain/archiveStore/utils/archivePayloads.js.map +1 -1
  77. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  78. package/lib/chain/archiveStore/utils/updateBackfillRange.js +1 -1
  79. package/lib/chain/archiveStore/utils/updateBackfillRange.js.map +1 -1
  80. package/lib/chain/balancesCache.d.ts.map +1 -1
  81. package/lib/chain/balancesCache.js.map +1 -1
  82. package/lib/chain/beaconProposerCache.d.ts.map +1 -1
  83. package/lib/chain/beaconProposerCache.js.map +1 -1
  84. package/lib/chain/blocks/blockInput/blockInput.d.ts +5 -0
  85. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  86. package/lib/chain/blocks/blockInput/blockInput.js +24 -0
  87. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  88. package/lib/chain/blocks/blockInput/errors.js +2 -1
  89. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  90. package/lib/chain/blocks/blockInput/types.d.ts +16 -0
  91. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  92. package/lib/chain/blocks/blockInput/types.js +4 -2
  93. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  94. package/lib/chain/blocks/blockInput/utils.js.map +1 -1
  95. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  96. package/lib/chain/blocks/importBlock.js +28 -5
  97. package/lib/chain/blocks/importBlock.js.map +1 -1
  98. package/lib/chain/blocks/index.d.ts.map +1 -1
  99. package/lib/chain/blocks/index.js.map +1 -1
  100. package/lib/chain/blocks/types.js +6 -3
  101. package/lib/chain/blocks/types.js.map +1 -1
  102. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  103. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  104. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  105. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  106. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  107. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  108. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -1
  109. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  110. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  111. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  112. package/lib/chain/blocks/writeBlockInputToDb.d.ts +12 -3
  113. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  114. package/lib/chain/blocks/writeBlockInputToDb.js +92 -98
  115. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  116. package/lib/chain/bls/maybeBatch.js.map +1 -1
  117. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  118. package/lib/chain/bls/multithread/index.js.map +1 -1
  119. package/lib/chain/bls/multithread/jobItem.js +2 -1
  120. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  121. package/lib/chain/bls/multithread/types.js +2 -1
  122. package/lib/chain/bls/multithread/types.js.map +1 -1
  123. package/lib/chain/bls/multithread/utils.js.map +1 -1
  124. package/lib/chain/bls/multithread/worker.js.map +1 -1
  125. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  126. package/lib/chain/bls/singleThread.js.map +1 -1
  127. package/lib/chain/bls/utils.js.map +1 -1
  128. package/lib/chain/chain.d.ts +4 -4
  129. package/lib/chain/chain.d.ts.map +1 -1
  130. package/lib/chain/chain.js +17 -14
  131. package/lib/chain/chain.js.map +1 -1
  132. package/lib/chain/emitter.d.ts +4 -6
  133. package/lib/chain/emitter.d.ts.map +1 -1
  134. package/lib/chain/emitter.js +2 -1
  135. package/lib/chain/emitter.js.map +1 -1
  136. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  137. package/lib/chain/errors/attestationError.js +2 -1
  138. package/lib/chain/errors/attestationError.js.map +1 -1
  139. package/lib/chain/errors/attesterSlashingError.js +2 -1
  140. package/lib/chain/errors/attesterSlashingError.js.map +1 -1
  141. package/lib/chain/errors/blobSidecarError.js +2 -1
  142. package/lib/chain/errors/blobSidecarError.js.map +1 -1
  143. package/lib/chain/errors/blockError.d.ts.map +1 -1
  144. package/lib/chain/errors/blockError.js +2 -1
  145. package/lib/chain/errors/blockError.js.map +1 -1
  146. package/lib/chain/errors/blsToExecutionChangeError.js +2 -1
  147. package/lib/chain/errors/blsToExecutionChangeError.js.map +1 -1
  148. package/lib/chain/errors/dataColumnSidecarError.js +2 -1
  149. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  150. package/lib/chain/errors/executionPayloadBid.d.ts +1 -1
  151. package/lib/chain/errors/executionPayloadBid.js +2 -1
  152. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  153. package/lib/chain/errors/executionPayloadEnvelope.d.ts +2 -2
  154. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  155. package/lib/chain/errors/executionPayloadEnvelope.js +2 -1
  156. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  157. package/lib/chain/errors/gossipValidation.d.ts.map +1 -1
  158. package/lib/chain/errors/gossipValidation.js +4 -2
  159. package/lib/chain/errors/gossipValidation.js.map +1 -1
  160. package/lib/chain/errors/lightClientError.js +4 -2
  161. package/lib/chain/errors/lightClientError.js.map +1 -1
  162. package/lib/chain/errors/payloadAttestation.d.ts +1 -1
  163. package/lib/chain/errors/payloadAttestation.js +2 -1
  164. package/lib/chain/errors/payloadAttestation.js.map +1 -1
  165. package/lib/chain/errors/proposerSlashingError.js +2 -1
  166. package/lib/chain/errors/proposerSlashingError.js.map +1 -1
  167. package/lib/chain/errors/syncCommitteeError.js +2 -1
  168. package/lib/chain/errors/syncCommitteeError.js.map +1 -1
  169. package/lib/chain/errors/voluntaryExitError.js +2 -1
  170. package/lib/chain/errors/voluntaryExitError.js.map +1 -1
  171. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  172. package/lib/chain/forkChoice/index.js +32 -25
  173. package/lib/chain/forkChoice/index.js.map +1 -1
  174. package/lib/chain/initState.d.ts +1 -1
  175. package/lib/chain/initState.d.ts.map +1 -1
  176. package/lib/chain/initState.js.map +1 -1
  177. package/lib/chain/interface.js +2 -1
  178. package/lib/chain/interface.js.map +1 -1
  179. package/lib/chain/lightClient/index.d.ts +0 -29
  180. package/lib/chain/lightClient/index.d.ts.map +1 -1
  181. package/lib/chain/lightClient/index.js.map +1 -1
  182. package/lib/chain/lightClient/proofs.js.map +1 -1
  183. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  184. package/lib/chain/opPools/aggregatedAttestationPool.js +5 -3
  185. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  186. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  187. package/lib/chain/opPools/attestationPool.js.map +1 -1
  188. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
  189. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  190. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  191. package/lib/chain/opPools/opPool.js.map +1 -1
  192. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  193. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  194. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  195. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  196. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  197. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  198. package/lib/chain/opPools/types.js +4 -2
  199. package/lib/chain/opPools/types.js.map +1 -1
  200. package/lib/chain/opPools/utils.js.map +1 -1
  201. package/lib/chain/prepareNextSlot.d.ts +1 -2
  202. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  203. package/lib/chain/prepareNextSlot.js.map +1 -1
  204. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +0 -1
  205. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  206. package/lib/chain/produceBlock/computeNewStateRoot.js +4 -3
  207. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  208. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  209. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  210. package/lib/chain/produceBlock/produceBlockBody.js +16 -6
  211. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  212. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  213. package/lib/chain/regen/errors.d.ts.map +1 -1
  214. package/lib/chain/regen/errors.js +2 -1
  215. package/lib/chain/regen/errors.js.map +1 -1
  216. package/lib/chain/regen/interface.js +4 -2
  217. package/lib/chain/regen/interface.js.map +1 -1
  218. package/lib/chain/regen/queued.d.ts.map +1 -1
  219. package/lib/chain/regen/queued.js +4 -1
  220. package/lib/chain/regen/queued.js.map +1 -1
  221. package/lib/chain/regen/regen.d.ts.map +1 -1
  222. package/lib/chain/regen/regen.js +6 -2
  223. package/lib/chain/regen/regen.js.map +1 -1
  224. package/lib/chain/reprocess.d.ts.map +1 -1
  225. package/lib/chain/reprocess.js +2 -1
  226. package/lib/chain/reprocess.js.map +1 -1
  227. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -1
  228. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  229. package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -1
  230. package/lib/chain/seenCache/seenAttestationData.js +2 -1
  231. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  232. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  233. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  234. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -1
  235. package/lib/chain/seenCache/seenBlockAttesters.js.map +1 -1
  236. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -1
  237. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  238. package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -1
  239. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  240. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -1
  241. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  242. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -1
  243. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -1
  244. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -1
  245. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -1
  246. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -3
  247. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  248. package/lib/chain/seenCache/seenGossipBlockInput.js +23 -9
  249. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  250. package/lib/chain/serializeState.js +1 -0
  251. package/lib/chain/serializeState.js.map +1 -1
  252. package/lib/chain/shufflingCache.d.ts.map +1 -1
  253. package/lib/chain/shufflingCache.js +2 -1
  254. package/lib/chain/shufflingCache.js.map +1 -1
  255. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  256. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  257. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  258. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  259. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  260. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  261. package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -1
  262. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  263. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +1 -41
  264. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  265. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  266. package/lib/chain/stateCache/types.js +2 -1
  267. package/lib/chain/stateCache/types.js.map +1 -1
  268. package/lib/chain/validation/aggregateAndProof.js +1 -1
  269. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  270. package/lib/chain/validation/attestation.d.ts.map +1 -1
  271. package/lib/chain/validation/attestation.js +9 -5
  272. package/lib/chain/validation/attestation.js.map +1 -1
  273. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  274. package/lib/chain/validation/blobSidecar.js +2 -2
  275. package/lib/chain/validation/blobSidecar.js.map +1 -1
  276. package/lib/chain/validation/block.d.ts.map +1 -1
  277. package/lib/chain/validation/block.js +5 -2
  278. package/lib/chain/validation/block.js.map +1 -1
  279. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  280. package/lib/chain/validation/dataColumnSidecar.d.ts +2 -1
  281. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  282. package/lib/chain/validation/dataColumnSidecar.js +125 -108
  283. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  284. package/lib/chain/validation/executionPayloadBid.js +1 -2
  285. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  286. package/lib/chain/validation/executionPayloadEnvelope.js +4 -4
  287. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  288. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  289. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  290. package/lib/chain/validation/payloadAttestationMessage.js +1 -2
  291. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  292. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  293. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  294. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  295. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  296. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  297. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  298. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  299. package/lib/chain/validation/syncCommittee.js.map +1 -1
  300. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  301. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  302. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  303. package/lib/chain/validatorMonitor.js +2 -1
  304. package/lib/chain/validatorMonitor.js.map +1 -1
  305. package/lib/constants/network.js +4 -2
  306. package/lib/constants/network.js.map +1 -1
  307. package/lib/db/beacon.d.ts.map +1 -1
  308. package/lib/db/beacon.js.map +1 -1
  309. package/lib/db/buckets.d.ts +23 -23
  310. package/lib/db/buckets.d.ts.map +1 -1
  311. package/lib/db/buckets.js +2 -1
  312. package/lib/db/buckets.js.map +1 -1
  313. package/lib/db/index.d.ts +1 -0
  314. package/lib/db/index.d.ts.map +1 -1
  315. package/lib/db/index.js +1 -0
  316. package/lib/db/index.js.map +1 -1
  317. package/lib/db/repositories/attesterSlashing.d.ts.map +1 -1
  318. package/lib/db/repositories/attesterSlashing.js.map +1 -1
  319. package/lib/db/repositories/backfilledRanges.d.ts.map +1 -1
  320. package/lib/db/repositories/backfilledRanges.js.map +1 -1
  321. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  322. package/lib/db/repositories/blobSidecars.js.map +1 -1
  323. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -1
  324. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  325. package/lib/db/repositories/block.d.ts.map +1 -1
  326. package/lib/db/repositories/block.js.map +1 -1
  327. package/lib/db/repositories/blockArchive.d.ts.map +1 -1
  328. package/lib/db/repositories/blockArchive.js.map +1 -1
  329. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  330. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  331. package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -1
  332. package/lib/db/repositories/blsToExecutionChange.js.map +1 -1
  333. package/lib/db/repositories/checkpointState.d.ts.map +1 -1
  334. package/lib/db/repositories/checkpointState.js.map +1 -1
  335. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
  336. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  337. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  338. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  339. package/lib/db/repositories/executionPayloadEnvelope.d.ts.map +1 -1
  340. package/lib/db/repositories/executionPayloadEnvelope.js.map +1 -1
  341. package/lib/db/repositories/executionPayloadEnvelopeArchive.d.ts.map +1 -1
  342. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -1
  343. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +1 -1
  344. package/lib/db/repositories/lightclientBestUpdate.js.map +1 -1
  345. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +1 -1
  346. package/lib/db/repositories/lightclientCheckpointHeader.js.map +1 -1
  347. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +1 -1
  348. package/lib/db/repositories/lightclientSyncCommittee.js.map +1 -1
  349. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -1
  350. package/lib/db/repositories/lightclientSyncCommitteeWitness.js.map +1 -1
  351. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -1
  352. package/lib/db/repositories/proposerSlashing.js.map +1 -1
  353. package/lib/db/repositories/stateArchive.d.ts.map +1 -1
  354. package/lib/db/repositories/stateArchive.js.map +1 -1
  355. package/lib/db/repositories/stateArchiveIndex.js.map +1 -1
  356. package/lib/db/repositories/voluntaryExit.d.ts.map +1 -1
  357. package/lib/db/repositories/voluntaryExit.js.map +1 -1
  358. package/lib/execution/builder/cache.d.ts.map +1 -1
  359. package/lib/execution/builder/cache.js.map +1 -1
  360. package/lib/execution/builder/http.d.ts.map +1 -1
  361. package/lib/execution/builder/http.js +2 -1
  362. package/lib/execution/builder/http.js.map +1 -1
  363. package/lib/execution/builder/index.js.map +1 -1
  364. package/lib/execution/builder/utils.js.map +1 -1
  365. package/lib/execution/engine/disabled.d.ts.map +1 -1
  366. package/lib/execution/engine/disabled.js.map +1 -1
  367. package/lib/execution/engine/http.d.ts.map +1 -1
  368. package/lib/execution/engine/http.js.map +1 -1
  369. package/lib/execution/engine/index.js.map +1 -1
  370. package/lib/execution/engine/interface.js +4 -2
  371. package/lib/execution/engine/interface.js.map +1 -1
  372. package/lib/execution/engine/jsonRpcHttpClient.d.ts +10 -15
  373. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -1
  374. package/lib/execution/engine/jsonRpcHttpClient.js +2 -1
  375. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -1
  376. package/lib/execution/engine/jwt.js.map +1 -1
  377. package/lib/execution/engine/mock.d.ts.map +1 -1
  378. package/lib/execution/engine/mock.js.map +1 -1
  379. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  380. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  381. package/lib/execution/engine/types.js.map +1 -1
  382. package/lib/execution/engine/utils.d.ts +1 -1
  383. package/lib/execution/engine/utils.d.ts.map +1 -1
  384. package/lib/execution/engine/utils.js.map +1 -1
  385. package/lib/metrics/metrics/beacon.d.ts +2 -1
  386. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  387. package/lib/metrics/metrics/beacon.js +9 -3
  388. package/lib/metrics/metrics/beacon.js.map +1 -1
  389. package/lib/metrics/metrics/lodestar.d.ts +13 -11
  390. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  391. package/lib/metrics/metrics/lodestar.js +34 -24
  392. package/lib/metrics/metrics/lodestar.js.map +1 -1
  393. package/lib/metrics/metrics.js.map +1 -1
  394. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  395. package/lib/metrics/server/http.d.ts +1 -1
  396. package/lib/metrics/server/http.d.ts.map +1 -1
  397. package/lib/metrics/server/http.js.map +1 -1
  398. package/lib/metrics/utils/avgMinMax.d.ts.map +1 -1
  399. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  400. package/lib/metrics/utils/gauge.d.ts.map +1 -1
  401. package/lib/metrics/utils/gauge.js.map +1 -1
  402. package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -1
  403. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  404. package/lib/monitoring/clientStats.js.map +1 -1
  405. package/lib/monitoring/properties.d.ts.map +1 -1
  406. package/lib/monitoring/properties.js.map +1 -1
  407. package/lib/monitoring/service.d.ts.map +1 -1
  408. package/lib/monitoring/service.js.map +1 -1
  409. package/lib/monitoring/system.d.ts.map +1 -1
  410. package/lib/monitoring/system.js.map +1 -1
  411. package/lib/monitoring/types.js +4 -2
  412. package/lib/monitoring/types.js.map +1 -1
  413. package/lib/network/core/events.d.ts +1 -3
  414. package/lib/network/core/events.d.ts.map +1 -1
  415. package/lib/network/core/events.js +4 -2
  416. package/lib/network/core/events.js.map +1 -1
  417. package/lib/network/core/metrics.d.ts +6 -7
  418. package/lib/network/core/metrics.d.ts.map +1 -1
  419. package/lib/network/core/metrics.js.map +1 -1
  420. package/lib/network/core/networkCore.d.ts +1 -1
  421. package/lib/network/core/networkCore.d.ts.map +1 -1
  422. package/lib/network/core/networkCore.js.map +1 -1
  423. package/lib/network/core/networkCoreWorker.js.map +1 -1
  424. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  425. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  426. package/lib/network/discv5/index.d.ts +1 -3
  427. package/lib/network/discv5/index.d.ts.map +1 -1
  428. package/lib/network/discv5/index.js.map +1 -1
  429. package/lib/network/discv5/utils.d.ts +1 -1
  430. package/lib/network/discv5/utils.d.ts.map +1 -1
  431. package/lib/network/discv5/utils.js +7 -5
  432. package/lib/network/discv5/utils.js.map +1 -1
  433. package/lib/network/discv5/worker.js.map +1 -1
  434. package/lib/network/events.d.ts +1 -3
  435. package/lib/network/events.d.ts.map +1 -1
  436. package/lib/network/events.js +4 -2
  437. package/lib/network/events.js.map +1 -1
  438. package/lib/network/forks.js.map +1 -1
  439. package/lib/network/gossip/encoding.d.ts.map +1 -1
  440. package/lib/network/gossip/encoding.js.map +1 -1
  441. package/lib/network/gossip/errors.d.ts.map +1 -1
  442. package/lib/network/gossip/errors.js.map +1 -1
  443. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  444. package/lib/network/gossip/gossipsub.js +9 -6
  445. package/lib/network/gossip/gossipsub.js.map +1 -1
  446. package/lib/network/gossip/interface.js +4 -2
  447. package/lib/network/gossip/interface.js.map +1 -1
  448. package/lib/network/gossip/metrics.d.ts +12 -14
  449. package/lib/network/gossip/metrics.d.ts.map +1 -1
  450. package/lib/network/gossip/metrics.js.map +1 -1
  451. package/lib/network/gossip/scoringParameters.d.ts +1 -1
  452. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  453. package/lib/network/gossip/scoringParameters.js.map +1 -1
  454. package/lib/network/gossip/topic.d.ts +2867 -2920
  455. package/lib/network/gossip/topic.d.ts.map +1 -1
  456. package/lib/network/gossip/topic.js.map +1 -1
  457. package/lib/network/libp2p/error.js +2 -1
  458. package/lib/network/libp2p/error.js.map +1 -1
  459. package/lib/network/libp2p/index.d.ts +1 -1
  460. package/lib/network/libp2p/index.d.ts.map +1 -1
  461. package/lib/network/libp2p/index.js +35 -17
  462. package/lib/network/libp2p/index.js.map +1 -1
  463. package/lib/network/metadata.d.ts +1 -0
  464. package/lib/network/metadata.d.ts.map +1 -1
  465. package/lib/network/metadata.js +5 -2
  466. package/lib/network/metadata.js.map +1 -1
  467. package/lib/network/network.d.ts +1 -1
  468. package/lib/network/network.d.ts.map +1 -1
  469. package/lib/network/network.js +1 -1
  470. package/lib/network/network.js.map +1 -1
  471. package/lib/network/options.d.ts +2 -0
  472. package/lib/network/options.d.ts.map +1 -1
  473. package/lib/network/options.js +3 -0
  474. package/lib/network/options.js.map +1 -1
  475. package/lib/network/peers/client.js +2 -1
  476. package/lib/network/peers/client.js.map +1 -1
  477. package/lib/network/peers/datastore.d.ts +0 -3
  478. package/lib/network/peers/datastore.d.ts.map +1 -1
  479. package/lib/network/peers/datastore.js.map +1 -1
  480. package/lib/network/peers/discover.d.ts +2 -7
  481. package/lib/network/peers/discover.d.ts.map +1 -1
  482. package/lib/network/peers/discover.js +45 -12
  483. package/lib/network/peers/discover.js.map +1 -1
  484. package/lib/network/peers/peerManager.d.ts +0 -1
  485. package/lib/network/peers/peerManager.d.ts.map +1 -1
  486. package/lib/network/peers/peerManager.js.map +1 -1
  487. package/lib/network/peers/peersData.d.ts.map +1 -1
  488. package/lib/network/peers/peersData.js +2 -1
  489. package/lib/network/peers/peersData.js.map +1 -1
  490. package/lib/network/peers/score/interface.js +4 -2
  491. package/lib/network/peers/score/interface.js.map +1 -1
  492. package/lib/network/peers/score/score.d.ts.map +1 -1
  493. package/lib/network/peers/score/score.js.map +1 -1
  494. package/lib/network/peers/score/store.d.ts.map +1 -1
  495. package/lib/network/peers/score/store.js.map +1 -1
  496. package/lib/network/peers/score/utils.js.map +1 -1
  497. package/lib/network/peers/utils/assertPeerRelevance.js +2 -1
  498. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  499. package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
  500. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  501. package/lib/network/peers/utils/prioritizePeers.js +2 -1
  502. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  503. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  504. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  505. package/lib/network/processor/aggregatorTracker.d.ts.map +1 -1
  506. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  507. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  508. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  509. package/lib/network/processor/gossipHandlers.js +1 -0
  510. package/lib/network/processor/gossipHandlers.js.map +1 -1
  511. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  512. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -1
  513. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  514. package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -1
  515. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  516. package/lib/network/processor/gossipQueues/types.js +4 -2
  517. package/lib/network/processor/gossipQueues/types.js.map +1 -1
  518. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  519. package/lib/network/processor/index.d.ts.map +1 -1
  520. package/lib/network/processor/index.js +4 -2
  521. package/lib/network/processor/index.js.map +1 -1
  522. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  523. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  524. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  525. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -2
  526. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  527. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  528. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  529. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +3 -2
  530. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  531. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +1 -1
  532. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  533. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  534. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +3 -2
  535. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  536. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -1
  537. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  538. package/lib/network/reqresp/handlers/index.js.map +1 -1
  539. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  540. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  541. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  542. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  543. package/lib/network/reqresp/interface.js +2 -1
  544. package/lib/network/reqresp/interface.js.map +1 -1
  545. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  546. package/lib/network/reqresp/protocols.js.map +1 -1
  547. package/lib/network/reqresp/rateLimit.js.map +1 -1
  548. package/lib/network/reqresp/score.js.map +1 -1
  549. package/lib/network/reqresp/types.js +4 -2
  550. package/lib/network/reqresp/types.js.map +1 -1
  551. package/lib/network/reqresp/utils/collect.d.ts +1 -1
  552. package/lib/network/reqresp/utils/collect.js.map +1 -1
  553. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts +1 -1
  554. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js +2 -1
  555. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js.map +1 -1
  556. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts +1 -1
  557. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -1
  558. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  559. package/lib/network/statusCache.d.ts.map +1 -1
  560. package/lib/network/statusCache.js.map +1 -1
  561. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  562. package/lib/network/subnets/attnetsService.js +2 -1
  563. package/lib/network/subnets/attnetsService.js.map +1 -1
  564. package/lib/network/subnets/interface.js.map +1 -1
  565. package/lib/network/subnets/syncnetsService.d.ts.map +1 -1
  566. package/lib/network/subnets/syncnetsService.js.map +1 -1
  567. package/lib/network/subnets/util.js.map +1 -1
  568. package/lib/network/util.js.map +1 -1
  569. package/lib/node/nodejs.d.ts +2 -2
  570. package/lib/node/nodejs.d.ts.map +1 -1
  571. package/lib/node/nodejs.js +2 -1
  572. package/lib/node/nodejs.js.map +1 -1
  573. package/lib/node/notifier.js.map +1 -1
  574. package/lib/node/utils/interop/deposits.js.map +1 -1
  575. package/lib/node/utils/interop/state.d.ts +1 -1
  576. package/lib/node/utils/interop/state.d.ts.map +1 -1
  577. package/lib/node/utils/interop/state.js.map +1 -1
  578. package/lib/node/utils/lightclient.js.map +1 -1
  579. package/lib/node/utils/state.js.map +1 -1
  580. package/lib/sync/backfill/backfill.d.ts +1 -10
  581. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  582. package/lib/sync/backfill/backfill.js +6 -3
  583. package/lib/sync/backfill/backfill.js.map +1 -1
  584. package/lib/sync/backfill/errors.js +2 -1
  585. package/lib/sync/backfill/errors.js.map +1 -1
  586. package/lib/sync/backfill/verify.js.map +1 -1
  587. package/lib/sync/interface.js +2 -1
  588. package/lib/sync/interface.js.map +1 -1
  589. package/lib/sync/range/batch.d.ts.map +1 -1
  590. package/lib/sync/range/batch.js +4 -2
  591. package/lib/sync/range/batch.js.map +1 -1
  592. package/lib/sync/range/chain.d.ts +0 -10
  593. package/lib/sync/range/chain.d.ts.map +1 -1
  594. package/lib/sync/range/chain.js +2 -1
  595. package/lib/sync/range/chain.js.map +1 -1
  596. package/lib/sync/range/range.d.ts +1 -3
  597. package/lib/sync/range/range.d.ts.map +1 -1
  598. package/lib/sync/range/range.js +5 -2
  599. package/lib/sync/range/range.js.map +1 -1
  600. package/lib/sync/range/utils/batches.js.map +1 -1
  601. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  602. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  603. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -1
  604. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  605. package/lib/sync/range/utils/updateChains.js.map +1 -1
  606. package/lib/sync/sync.d.ts.map +1 -1
  607. package/lib/sync/sync.js.map +1 -1
  608. package/lib/sync/types.js +4 -2
  609. package/lib/sync/types.js.map +1 -1
  610. package/lib/sync/unknownBlock.d.ts +0 -14
  611. package/lib/sync/unknownBlock.d.ts.map +1 -1
  612. package/lib/sync/unknownBlock.js.map +1 -1
  613. package/lib/sync/utils/downloadByRange.d.ts +8 -5
  614. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  615. package/lib/sync/utils/downloadByRange.js +8 -6
  616. package/lib/sync/utils/downloadByRange.js.map +1 -1
  617. package/lib/sync/utils/downloadByRoot.d.ts +8 -8
  618. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  619. package/lib/sync/utils/downloadByRoot.js +3 -2
  620. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  621. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  622. package/lib/sync/utils/remoteSyncType.d.ts +1 -1
  623. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -1
  624. package/lib/sync/utils/remoteSyncType.js +4 -2
  625. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  626. package/lib/util/address.js.map +1 -1
  627. package/lib/util/array.d.ts.map +1 -1
  628. package/lib/util/array.js.map +1 -1
  629. package/lib/util/asyncIterableToEvents.d.ts.map +1 -1
  630. package/lib/util/asyncIterableToEvents.js +2 -1
  631. package/lib/util/asyncIterableToEvents.js.map +1 -1
  632. package/lib/util/binarySearch.d.ts.map +1 -1
  633. package/lib/util/binarySearch.js.map +1 -1
  634. package/lib/util/bitArray.js +2 -1
  635. package/lib/util/bitArray.js.map +1 -1
  636. package/lib/util/blobs.js.map +1 -1
  637. package/lib/util/bufferPool.d.ts.map +1 -1
  638. package/lib/util/bufferPool.js +2 -1
  639. package/lib/util/bufferPool.js.map +1 -1
  640. package/lib/util/chunkify.js.map +1 -1
  641. package/lib/util/clock.d.ts.map +1 -1
  642. package/lib/util/clock.js +2 -1
  643. package/lib/util/clock.js.map +1 -1
  644. package/lib/util/dataColumns.d.ts.map +1 -1
  645. package/lib/util/dataColumns.js +9 -3
  646. package/lib/util/dataColumns.js.map +1 -1
  647. package/lib/util/dependentRoot.js.map +1 -1
  648. package/lib/util/enum.js.map +1 -1
  649. package/lib/util/error.js.map +1 -1
  650. package/lib/util/eventLoop.js.map +1 -1
  651. package/lib/util/execution.d.ts.map +1 -1
  652. package/lib/util/execution.js +19 -9
  653. package/lib/util/execution.js.map +1 -1
  654. package/lib/util/file.js.map +1 -1
  655. package/lib/util/forkChoice.js.map +1 -1
  656. package/lib/util/forkName.js.map +1 -1
  657. package/lib/util/graffiti.js.map +1 -1
  658. package/lib/util/hex.js.map +1 -1
  659. package/lib/util/ip.js.map +1 -1
  660. package/lib/util/itTrigger.d.ts.map +1 -1
  661. package/lib/util/itTrigger.js.map +1 -1
  662. package/lib/util/map.d.ts.map +1 -1
  663. package/lib/util/map.js.map +1 -1
  664. package/lib/util/metadata.js.map +1 -1
  665. package/lib/util/multifork.js.map +1 -1
  666. package/lib/util/numpy.js.map +1 -1
  667. package/lib/util/peerId.js.map +1 -1
  668. package/lib/util/profile.js +2 -1
  669. package/lib/util/profile.js.map +1 -1
  670. package/lib/util/promises.js.map +1 -1
  671. package/lib/util/queue/errors.js +2 -1
  672. package/lib/util/queue/errors.js.map +1 -1
  673. package/lib/util/queue/fnQueue.d.ts.map +1 -1
  674. package/lib/util/queue/fnQueue.js.map +1 -1
  675. package/lib/util/queue/itemQueue.d.ts.map +1 -1
  676. package/lib/util/queue/itemQueue.js.map +1 -1
  677. package/lib/util/queue/options.js +2 -1
  678. package/lib/util/queue/options.js.map +1 -1
  679. package/lib/util/serializedCache.d.ts +4 -4
  680. package/lib/util/serializedCache.d.ts.map +1 -1
  681. package/lib/util/serializedCache.js +6 -4
  682. package/lib/util/serializedCache.js.map +1 -1
  683. package/lib/util/set.d.ts.map +1 -1
  684. package/lib/util/set.js.map +1 -1
  685. package/lib/util/shuffle.js.map +1 -1
  686. package/lib/util/sortBy.js.map +1 -1
  687. package/lib/util/sszBytes.js.map +1 -1
  688. package/lib/util/time.js.map +1 -1
  689. package/lib/util/timeSeries.d.ts.map +1 -1
  690. package/lib/util/timeSeries.js.map +1 -1
  691. package/lib/util/types.d.ts.map +1 -1
  692. package/lib/util/workerEvents.d.ts +1 -1
  693. package/lib/util/workerEvents.d.ts.map +1 -1
  694. package/lib/util/workerEvents.js.map +1 -1
  695. package/lib/util/wrapError.js.map +1 -1
  696. package/package.json +31 -30
  697. package/src/api/impl/beacon/blocks/index.ts +14 -2
  698. package/src/api/impl/validator/index.ts +26 -12
  699. package/src/chain/archiveStore/archiveStore.ts +5 -5
  700. package/src/chain/archiveStore/utils/archiveBlocks.ts +4 -5
  701. package/src/chain/archiveStore/utils/updateBackfillRange.ts +1 -1
  702. package/src/chain/blocks/blockInput/blockInput.ts +35 -0
  703. package/src/chain/blocks/blockInput/types.ts +17 -0
  704. package/src/chain/blocks/importBlock.ts +36 -5
  705. package/src/chain/blocks/verifyBlocksSanityChecks.ts +7 -2
  706. package/src/chain/blocks/writeBlockInputToDb.ts +105 -104
  707. package/src/chain/chain.ts +35 -21
  708. package/src/chain/emitter.ts +3 -3
  709. package/src/chain/errors/executionPayloadBid.ts +1 -1
  710. package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
  711. package/src/chain/errors/payloadAttestation.ts +1 -1
  712. package/src/chain/forkChoice/index.ts +39 -21
  713. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  714. package/src/chain/produceBlock/computeNewStateRoot.ts +4 -3
  715. package/src/chain/produceBlock/produceBlockBody.ts +9 -3
  716. package/src/chain/regen/queued.ts +7 -2
  717. package/src/chain/regen/regen.ts +9 -3
  718. package/src/chain/seenCache/seenGossipBlockInput.ts +40 -11
  719. package/src/chain/validation/aggregateAndProof.ts +1 -1
  720. package/src/chain/validation/attestation.ts +9 -5
  721. package/src/chain/validation/blobSidecar.ts +2 -2
  722. package/src/chain/validation/block.ts +8 -3
  723. package/src/chain/validation/dataColumnSidecar.ts +147 -127
  724. package/src/chain/validation/executionPayloadBid.ts +1 -2
  725. package/src/chain/validation/executionPayloadEnvelope.ts +4 -4
  726. package/src/chain/validation/payloadAttestationMessage.ts +1 -2
  727. package/src/db/index.ts +1 -0
  728. package/src/metrics/metrics/beacon.ts +9 -3
  729. package/src/metrics/metrics/lodestar.ts +34 -24
  730. package/src/network/discv5/utils.ts +5 -4
  731. package/src/network/gossip/gossipsub.ts +12 -7
  732. package/src/network/libp2p/index.ts +40 -18
  733. package/src/network/metadata.ts +1 -0
  734. package/src/network/network.ts +2 -1
  735. package/src/network/options.ts +5 -1
  736. package/src/network/peers/discover.ts +46 -11
  737. package/src/network/processor/gossipHandlers.ts +6 -1
  738. package/src/network/processor/gossipValidatorFn.ts +1 -1
  739. package/src/network/reqresp/ReqRespBeaconNode.ts +1 -1
  740. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +4 -3
  741. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +3 -2
  742. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +1 -1
  743. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +4 -3
  744. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +2 -2
  745. package/src/network/reqresp/utils/collect.ts +1 -1
  746. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +1 -1
  747. package/src/sync/range/range.ts +1 -0
  748. package/src/sync/utils/downloadByRange.ts +12 -3
  749. package/src/sync/utils/downloadByRoot.ts +2 -2
  750. package/src/sync/utils/remoteSyncType.ts +1 -1
  751. package/src/util/dataColumns.ts +6 -2
  752. package/src/util/execution.ts +23 -12
  753. package/src/util/serializedCache.ts +7 -5
@@ -2,7 +2,13 @@ import path from "node:path";
2
2
  import {PrivateKey} from "@libp2p/interface";
3
3
  import {CompositeTypeAny, TreeView, Type} from "@chainsafe/ssz";
4
4
  import {BeaconConfig} from "@lodestar/config";
5
- import {CheckpointWithHex, IForkChoice, ProtoBlock, UpdateHeadOpt} from "@lodestar/fork-choice";
5
+ import {
6
+ CheckpointWithHex,
7
+ CheckpointWithPayloadStatus,
8
+ IForkChoice,
9
+ ProtoBlock,
10
+ UpdateHeadOpt,
11
+ } from "@lodestar/fork-choice";
6
12
  import {LoggerNode} from "@lodestar/logger/node";
7
13
  import {
8
14
  BUILDER_INDEX_SELF_BUILD,
@@ -58,7 +64,7 @@ import {Logger, fromHex, gweiToWei, isErrorAborted, pruneSetToMax, sleep, toRoot
58
64
  import {ProcessShutdownCallback} from "@lodestar/validator";
59
65
  import {GENESIS_EPOCH, ZERO_HASH} from "../constants/index.js";
60
66
  import {IBeaconDb} from "../db/index.js";
61
- import {BLOB_SIDECARS_IN_WRAPPER_INDEX} from "../db/repositories/blobSidecars.ts";
67
+ import {BLOB_SIDECARS_IN_WRAPPER_INDEX} from "../db/repositories/blobSidecars.js";
62
68
  import {BuilderStatus} from "../execution/builder/http.js";
63
69
  import {IExecutionBuilder, IExecutionEngine} from "../execution/index.js";
64
70
  import {Metrics} from "../metrics/index.js";
@@ -69,15 +75,15 @@ import {CustodyConfig, getValidatorsCustodyRequirement} from "../util/dataColumn
69
75
  import {callInNextEventLoop} from "../util/eventLoop.js";
70
76
  import {ensureDir, writeIfNotExist} from "../util/file.js";
71
77
  import {isOptimisticBlock} from "../util/forkChoice.js";
72
- import {JobItemQueue} from "../util/queue/itemQueue.ts";
78
+ import {JobItemQueue} from "../util/queue/itemQueue.js";
73
79
  import {SerializedCache} from "../util/serializedCache.js";
74
- import {getSlotFromSignedBeaconBlockSerialized} from "../util/sszBytes.ts";
80
+ import {getSlotFromSignedBeaconBlockSerialized} from "../util/sszBytes.js";
75
81
  import {ArchiveStore} from "./archiveStore/archiveStore.js";
76
82
  import {CheckpointBalancesCache} from "./balancesCache.js";
77
83
  import {BeaconProposerCache} from "./beaconProposerCache.js";
78
84
  import {IBlockInput, isBlockInputBlobs, isBlockInputColumns} from "./blocks/blockInput/index.js";
79
85
  import {BlockProcessor, ImportBlockOpts} from "./blocks/index.js";
80
- import {persistBlockInputs} from "./blocks/writeBlockInputToDb.ts";
86
+ import {persistBlockInput} from "./blocks/writeBlockInputToDb.js";
81
87
  import {BlsMultiThreadWorkerPool, BlsSingleThreadVerifier, IBlsVerifier} from "./bls/index.js";
82
88
  import {ColumnReconstructionTracker} from "./ColumnReconstructionTracker.js";
83
89
  import {ChainEvent, ChainEventEmitter} from "./emitter.js";
@@ -164,7 +170,7 @@ export class BeaconChain implements IBeaconChain {
164
170
  readonly lightClientServer?: LightClientServer;
165
171
  readonly reprocessController: ReprocessController;
166
172
  readonly archiveStore: ArchiveStore;
167
- readonly unfinalizedBlockWrites: JobItemQueue<[IBlockInput[]], void>;
173
+ readonly unfinalizedBlockWrites: JobItemQueue<[IBlockInput], void>;
168
174
 
169
175
  // Ops pool
170
176
  readonly attestationPool: AttestationPool;
@@ -305,7 +311,9 @@ export class BeaconChain implements IBeaconChain {
305
311
 
306
312
  const nodeId = computeNodeIdFromPrivateKey(privateKey);
307
313
  const initialCustodyGroupCount = opts.initialCustodyGroupCount ?? config.CUSTODY_REQUIREMENT;
308
- this.metrics?.peerDas.targetCustodyGroupCount.set(initialCustodyGroupCount);
314
+ this.metrics?.peerDas.custodyGroupCount.set(initialCustodyGroupCount);
315
+ // TODO: backfill not implemented yet
316
+ this.metrics?.peerDas.custodyGroupsBackfilled.set(0);
309
317
  this.custodyConfig = new CustodyConfig({
310
318
  nodeId,
311
319
  config,
@@ -314,12 +322,14 @@ export class BeaconChain implements IBeaconChain {
314
322
 
315
323
  this.beaconProposerCache = new BeaconProposerCache(opts);
316
324
  this.checkpointBalancesCache = new CheckpointBalancesCache();
325
+ this.serializedCache = new SerializedCache();
317
326
  this.seenBlockInputCache = new SeenBlockInput({
318
327
  config,
319
328
  custodyConfig: this.custodyConfig,
320
329
  clock,
321
330
  chainEvents: emitter,
322
331
  signal,
332
+ serializedCache: this.serializedCache,
323
333
  metrics,
324
334
  logger,
325
335
  });
@@ -406,8 +416,6 @@ export class BeaconChain implements IBeaconChain {
406
416
  this.bls = bls;
407
417
  this.emitter = emitter;
408
418
 
409
- this.serializedCache = new SerializedCache();
410
-
411
419
  this.getBlobsTracker = new GetBlobsTracker({
412
420
  logger,
413
421
  executionEngine: this.executionEngine,
@@ -429,7 +437,7 @@ export class BeaconChain implements IBeaconChain {
429
437
  );
430
438
 
431
439
  this.unfinalizedBlockWrites = new JobItemQueue(
432
- persistBlockInputs.bind(this),
440
+ persistBlockInput.bind(this),
433
441
  {
434
442
  maxLength: DEFAULT_MAX_PENDING_UNFINALIZED_BLOCK_WRITES,
435
443
  signal,
@@ -600,7 +608,7 @@ export class BeaconChain implements IBeaconChain {
600
608
  ): Promise<{state: CachedBeaconStateAllForks | Uint8Array; executionOptimistic: boolean; finalized: boolean} | null> {
601
609
  if (opts?.allowRegen) {
602
610
  const state = await this.regen.getState(stateRoot, RegenCaller.restApi);
603
- const block = this.forkChoice.getBlock(state.latestBlockHeader.hashTreeRoot());
611
+ const block = this.forkChoice.getBlockDefaultStatus(state.latestBlockHeader.hashTreeRoot());
604
612
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
605
613
  return {
606
614
  state,
@@ -616,7 +624,7 @@ export class BeaconChain implements IBeaconChain {
616
624
  // TODO: This is very inneficient for debug requests of serialized content, since it deserializes to serialize again
617
625
  const cachedStateCtx = this.regen.getStateSync(stateRoot);
618
626
  if (cachedStateCtx) {
619
- const block = this.forkChoice.getBlock(cachedStateCtx.latestBlockHeader.hashTreeRoot());
627
+ const block = this.forkChoice.getBlockDefaultStatus(cachedStateCtx.latestBlockHeader.hashTreeRoot());
620
628
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
621
629
  return {
622
630
  state: cachedStateCtx,
@@ -650,7 +658,7 @@ export class BeaconChain implements IBeaconChain {
650
658
  // finalized or justified checkpoint states maynot be available with PersistentCheckpointStateCache, use getCheckpointStateOrBytes() api to get Uint8Array
651
659
  const cachedStateCtx = this.regen.getCheckpointStateSync(checkpoint);
652
660
  if (cachedStateCtx) {
653
- const block = this.forkChoice.getBlock(cachedStateCtx.latestBlockHeader.hashTreeRoot());
661
+ const block = this.forkChoice.getBlockDefaultStatus(cachedStateCtx.latestBlockHeader.hashTreeRoot());
654
662
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
655
663
  return {
656
664
  state: cachedStateCtx,
@@ -667,7 +675,7 @@ export class BeaconChain implements IBeaconChain {
667
675
  ): Promise<{state: CachedBeaconStateAllForks | Uint8Array; executionOptimistic: boolean; finalized: boolean} | null> {
668
676
  const cachedStateCtx = await this.regen.getCheckpointStateOrBytes(checkpoint);
669
677
  if (cachedStateCtx) {
670
- const block = this.forkChoice.getBlock(checkpoint.root);
678
+ const block = this.forkChoice.getBlockDefaultStatus(checkpoint.root);
671
679
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
672
680
  return {
673
681
  state: cachedStateCtx,
@@ -711,7 +719,7 @@ export class BeaconChain implements IBeaconChain {
711
719
  async getBlockByRoot(
712
720
  root: string
713
721
  ): Promise<{block: SignedBeaconBlock; executionOptimistic: boolean; finalized: boolean} | null> {
714
- const block = this.forkChoice.getBlockHex(root);
722
+ const block = this.forkChoice.getBlockHexDefaultStatus(root);
715
723
  if (block) {
716
724
  // Block found in fork-choice.
717
725
  // It may be in the block input cache, awaiting full DA reconstruction, check there first
@@ -735,7 +743,7 @@ export class BeaconChain implements IBeaconChain {
735
743
  async getSerializedBlockByRoot(
736
744
  root: string
737
745
  ): Promise<{block: Uint8Array; executionOptimistic: boolean; finalized: boolean; slot: Slot} | null> {
738
- const block = this.forkChoice.getBlockHex(root);
746
+ const block = this.forkChoice.getBlockHexDefaultStatus(root);
739
747
  if (block) {
740
748
  // Block found in fork-choice.
741
749
  // It may be in the block input cache, awaiting full DA reconstruction, check there first
@@ -1186,7 +1194,7 @@ export class BeaconChain implements IBeaconChain {
1186
1194
  * @param blockState state that declares justified checkpoint `checkpoint`
1187
1195
  */
1188
1196
  private justifiedBalancesGetter(
1189
- checkpoint: CheckpointWithHex,
1197
+ checkpoint: CheckpointWithPayloadStatus,
1190
1198
  blockState: CachedBeaconStateAllForks
1191
1199
  ): EffectiveBalanceIncrements {
1192
1200
  this.metrics?.balancesCache.requests.inc();
@@ -1225,7 +1233,7 @@ export class BeaconChain implements IBeaconChain {
1225
1233
  * @param blockState state that declares justified checkpoint `checkpoint`
1226
1234
  */
1227
1235
  private closestJustifiedBalancesStateToCheckpoint(
1228
- checkpoint: CheckpointWithHex,
1236
+ checkpoint: CheckpointWithPayloadStatus,
1229
1237
  blockState: CachedBeaconStateAllForks
1230
1238
  ): {state: CachedBeaconStateAllForks; stateId: string; shouldWarn: boolean} {
1231
1239
  const state = this.regen.getCheckpointStateSync(checkpoint);
@@ -1239,7 +1247,10 @@ export class BeaconChain implements IBeaconChain {
1239
1247
  }
1240
1248
 
1241
1249
  // Find a state in the same branch of checkpoint at same epoch. Balances should exactly the same
1242
- for (const descendantBlock of this.forkChoice.forwardIterateDescendants(checkpoint.rootHex)) {
1250
+ for (const descendantBlock of this.forkChoice.forwardIterateDescendants(
1251
+ checkpoint.rootHex,
1252
+ checkpoint.payloadStatus
1253
+ )) {
1243
1254
  if (computeEpochAtSlot(descendantBlock.slot) === checkpoint.epoch) {
1244
1255
  const descendantBlockState = this.regen.getStateSync(descendantBlock.stateRoot);
1245
1256
  if (descendantBlockState) {
@@ -1255,7 +1266,10 @@ export class BeaconChain implements IBeaconChain {
1255
1266
 
1256
1267
  // Find a state in the same branch of checkpoint at a latter epoch. Balances are not the same, but should be close
1257
1268
  // Note: must call .forwardIterateDescendants() again since nodes are not sorted
1258
- for (const descendantBlock of this.forkChoice.forwardIterateDescendants(checkpoint.rootHex)) {
1269
+ for (const descendantBlock of this.forkChoice.forwardIterateDescendants(
1270
+ checkpoint.rootHex,
1271
+ checkpoint.payloadStatus
1272
+ )) {
1259
1273
  if (computeEpochAtSlot(descendantBlock.slot) > checkpoint.epoch) {
1260
1274
  const descendantBlockState = this.regen.getStateSync(descendantBlock.stateRoot);
1261
1275
  if (descendantBlockState) {
@@ -1461,7 +1475,7 @@ export class BeaconChain implements IBeaconChain {
1461
1475
  // Only update if target is increased
1462
1476
  if (targetCustodyGroupCount > this.custodyConfig.targetCustodyGroupCount) {
1463
1477
  this.custodyConfig.updateTargetCustodyGroupCount(targetCustodyGroupCount);
1464
- this.metrics?.peerDas.targetCustodyGroupCount.set(targetCustodyGroupCount);
1478
+ this.metrics?.peerDas.custodyGroupCount.set(targetCustodyGroupCount);
1465
1479
  this.logger.verbose("Updated target custody group count", {
1466
1480
  finalizedEpoch: finalizedCheckpoint.epoch,
1467
1481
  validatorCount: validatorIndices.length,
@@ -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
 
@@ -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
  }
@@ -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;
@@ -511,9 +511,16 @@ export async function produceBlockBody<T extends BlockType>(
511
511
  // NOTE: Even though the fulu.BlobsBundle type is superficially the same as deneb.BlobsBundle, it is NOT.
512
512
  // In fulu, proofs are _cell_ proofs, vs in deneb they are _blob_ proofs.
513
513
 
514
+ const timer = this?.metrics?.peerDas.dataColumnSidecarComputationTime.startTimer();
514
515
  const cells = blobsBundle.blobs.map((blob) => kzg.computeCells(blob));
516
+ timer?.();
515
517
  if (this.opts.sanityCheckExecutionEngineBlobs) {
516
- await validateCellsAndKzgCommitments(blobsBundle.commitments, blobsBundle.proofs, cells);
518
+ const validationTimer = this.metrics?.peerDas.kzgVerificationDataColumnBatchTime.startTimer();
519
+ try {
520
+ await validateCellsAndKzgCommitments(blobsBundle.commitments, blobsBundle.proofs, cells);
521
+ } finally {
522
+ validationTimer?.();
523
+ }
517
524
  }
518
525
 
519
526
  (blockBody as deneb.BeaconBlockBody).blobKzgCommitments = blobsBundle.commitments;
@@ -723,8 +730,7 @@ export function getPayloadAttributesForSSE(
723
730
 
724
731
  let parentBlockNumber: number;
725
732
  if (isForkPostGloas(fork)) {
726
- // TODO GLOAS: revisit this after fork choice changes are merged
727
- const parentBlock = chain.forkChoice.getBlock(parentBlockRoot);
733
+ const parentBlock = chain.forkChoice.getBlockHexAndBlockHash(toRootHex(parentBlockRoot), toRootHex(parentHash));
728
734
  if (parentBlock?.executionPayloadBlockHash == null) {
729
735
  throw Error(`Parent block not found in fork choice root=${toRootHex(parentBlockRoot)}`);
730
736
  }
@@ -1,7 +1,7 @@
1
1
  import {routes} from "@lodestar/api";
2
2
  import {IForkChoice, ProtoBlock} from "@lodestar/fork-choice";
3
3
  import {CachedBeaconStateAllForks, computeEpochAtSlot} from "@lodestar/state-transition";
4
- import {BeaconBlock, Epoch, RootHex, Slot, phase0} from "@lodestar/types";
4
+ import {BeaconBlock, Epoch, RootHex, Slot, isGloasBeaconBlock, phase0} from "@lodestar/types";
5
5
  import {Logger, toRootHex} from "@lodestar/utils";
6
6
  import {Metrics} from "../../metrics/index.js";
7
7
  import {JobItemQueue} from "../../util/queue/index.js";
@@ -88,7 +88,12 @@ export class QueuedStateRegenerator implements IStateRegenerator {
88
88
  */
89
89
  getPreStateSync(block: BeaconBlock): CachedBeaconStateAllForks | null {
90
90
  const parentRoot = toRootHex(block.parentRoot);
91
- const parentBlock = this.forkChoice.getBlockHex(parentRoot);
91
+ const parentBlock = isGloasBeaconBlock(block)
92
+ ? this.forkChoice.getBlockHexAndBlockHash(
93
+ parentRoot,
94
+ toRootHex(block.body.signedExecutionPayloadBid.message.parentBlockHash)
95
+ )
96
+ : this.forkChoice.getBlockHexDefaultStatus(parentRoot);
92
97
  if (!parentBlock) {
93
98
  throw new RegenError({
94
99
  code: RegenErrorCode.BLOCK_NOT_IN_FORKCHOICE,
@@ -11,7 +11,7 @@ import {
11
11
  processSlots,
12
12
  stateTransition,
13
13
  } from "@lodestar/state-transition";
14
- import {BeaconBlock, RootHex, SignedBeaconBlock, Slot} from "@lodestar/types";
14
+ import {BeaconBlock, RootHex, SignedBeaconBlock, Slot, isGloasBeaconBlock} from "@lodestar/types";
15
15
  import {Logger, fromHex, toRootHex} from "@lodestar/utils";
16
16
  import {IBeaconDb} from "../../db/index.js";
17
17
  import {Metrics} from "../../metrics/index.js";
@@ -58,7 +58,13 @@ export class StateRegenerator implements IStateRegeneratorInternal {
58
58
  opts: StateRegenerationOpts,
59
59
  regenCaller: RegenCaller
60
60
  ): Promise<CachedBeaconStateAllForks> {
61
- const parentBlock = this.modules.forkChoice.getBlock(block.parentRoot);
61
+ const parentRoot = toRootHex(block.parentRoot);
62
+ const parentBlock = isGloasBeaconBlock(block)
63
+ ? this.modules.forkChoice.getBlockHexAndBlockHash(
64
+ parentRoot,
65
+ toRootHex(block.body.signedExecutionPayloadBid.message.parentBlockHash)
66
+ )
67
+ : this.modules.forkChoice.getBlockHexDefaultStatus(parentRoot);
62
68
  if (!parentBlock) {
63
69
  throw new RegenError({
64
70
  code: RegenErrorCode.BLOCK_NOT_IN_FORKCHOICE,
@@ -152,7 +158,7 @@ export class StateRegenerator implements IStateRegeneratorInternal {
152
158
 
153
159
  const getSeedStateTimer = this.modules.metrics?.regenGetState.getSeedState.startTimer({caller});
154
160
  // iterateAncestorBlocks only returns ancestor blocks, not the block itself
155
- for (const b of this.modules.forkChoice.iterateAncestorBlocks(block.blockRoot)) {
161
+ for (const b of this.modules.forkChoice.iterateAncestorBlocks(block.blockRoot, block.payloadStatus)) {
156
162
  state = this.modules.blockStateCache.get(b.stateRoot);
157
163
  if (state) {
158
164
  break;
@@ -17,6 +17,7 @@ import {Metrics} from "../../metrics/metrics.js";
17
17
  import {MAX_LOOK_AHEAD_EPOCHS} from "../../sync/constants.js";
18
18
  import {IClock} from "../../util/clock.js";
19
19
  import {CustodyConfig} from "../../util/dataColumns.js";
20
+ import {SerializedCache} from "../../util/serializedCache.js";
20
21
  import {
21
22
  BlockInput,
22
23
  BlockInputBlobs,
@@ -55,6 +56,7 @@ export type SeenBlockInputCacheModules = {
55
56
  chainEvents: ChainEventEmitter;
56
57
  signal: AbortSignal;
57
58
  custodyConfig: CustodyConfig;
59
+ serializedCache: SerializedCache;
58
60
  metrics: Metrics | null;
59
61
  logger?: Logger;
60
62
  };
@@ -101,6 +103,7 @@ export class SeenBlockInput {
101
103
  private readonly clock: IClock;
102
104
  private readonly chainEvents: ChainEventEmitter;
103
105
  private readonly signal: AbortSignal;
106
+ private readonly serializedCache: SerializedCache;
104
107
  private readonly metrics: Metrics | null;
105
108
  private readonly logger?: Logger;
106
109
  private blockInputs = new Map<RootHex, IBlockInput>();
@@ -109,19 +112,35 @@ export class SeenBlockInput {
109
112
  // and the signature to ensure we only skip verification if both match
110
113
  private verifiedProposerSignatures = new Map<Slot, Map<RootHex, BLSSignature>>();
111
114
 
112
- constructor({config, custodyConfig, clock, chainEvents, signal, metrics, logger}: SeenBlockInputCacheModules) {
115
+ constructor({
116
+ config,
117
+ custodyConfig,
118
+ clock,
119
+ chainEvents,
120
+ signal,
121
+ serializedCache,
122
+ metrics,
123
+ logger,
124
+ }: SeenBlockInputCacheModules) {
113
125
  this.config = config;
114
126
  this.custodyConfig = custodyConfig;
115
127
  this.clock = clock;
116
128
  this.chainEvents = chainEvents;
117
129
  this.signal = signal;
130
+ this.serializedCache = serializedCache;
118
131
  this.metrics = metrics;
119
132
  this.logger = logger;
120
133
 
121
134
  if (metrics) {
122
- metrics.seenCache.blockInput.blockInputCount.addCollect(() =>
123
- metrics.seenCache.blockInput.blockInputCount.set(this.blockInputs.size)
124
- );
135
+ metrics.seenCache.blockInput.blockInputCount.addCollect(() => {
136
+ metrics.seenCache.blockInput.blockInputCount.set(this.blockInputs.size);
137
+ metrics.seenCache.blockInput.serializedObjectRefs.set(
138
+ Array.from(this.blockInputs.values()).reduce(
139
+ (count, blockInput) => count + blockInput.getSerializedCacheKeys().length,
140
+ 0
141
+ )
142
+ );
143
+ });
125
144
  }
126
145
 
127
146
  this.chainEvents.on(ChainEvent.forkChoiceFinalized, this.onFinalized);
@@ -142,7 +161,10 @@ export class SeenBlockInput {
142
161
  * Removes the single BlockInput from the cache
143
162
  */
144
163
  remove(rootHex: RootHex): void {
145
- this.blockInputs.delete(rootHex);
164
+ const blockInput = this.blockInputs.get(rootHex);
165
+ if (blockInput) {
166
+ this.evictBlockInput(blockInput);
167
+ }
146
168
  }
147
169
 
148
170
  /**
@@ -154,7 +176,7 @@ export class SeenBlockInput {
154
176
  let deletedCount = 0;
155
177
  while (blockInput) {
156
178
  deletedCount++;
157
- this.blockInputs.delete(blockInput.blockRootHex);
179
+ this.evictBlockInput(blockInput);
158
180
  blockInput = this.blockInputs.get(parentRootHex ?? "");
159
181
  parentRootHex = blockInput?.parentRootHex;
160
182
  }
@@ -165,10 +187,10 @@ export class SeenBlockInput {
165
187
  onFinalized = (checkpoint: CheckpointWithHex) => {
166
188
  let deletedCount = 0;
167
189
  const cutoffSlot = computeStartSlotAtEpoch(checkpoint.epoch);
168
- for (const [rootHex, blockInput] of this.blockInputs) {
190
+ for (const [, blockInput] of this.blockInputs) {
169
191
  if (blockInput.slot < cutoffSlot) {
170
192
  deletedCount++;
171
- this.blockInputs.delete(rootHex);
193
+ this.evictBlockInput(blockInput);
172
194
  }
173
195
  }
174
196
  this.logger?.debug(`BlockInputCache.onFinalized deleted ${deletedCount} cached BlockInputs`);
@@ -228,6 +250,7 @@ export class SeenBlockInput {
228
250
  peerIdStr,
229
251
  });
230
252
  }
253
+ this.metrics?.seenCache.blockInput.createdByBlock.inc();
231
254
  this.blockInputs.set(blockInput.blockRootHex, blockInput);
232
255
  }
233
256
 
@@ -327,7 +350,7 @@ export class SeenBlockInput {
327
350
  custodyColumns: this.custodyConfig.custodyColumns,
328
351
  sampledColumns: this.custodyConfig.sampledColumns,
329
352
  });
330
- this.metrics?.seenCache.blockInput.createdByBlob.inc();
353
+ this.metrics?.seenCache.blockInput.createdByColumn.inc();
331
354
  this.blockInputs.set(blockRootHex, blockInput);
332
355
  }
333
356
 
@@ -408,14 +431,20 @@ export class SeenBlockInput {
408
431
 
409
432
  if (itemsToDelete > 0) {
410
433
  const sorted = [...this.blockInputs.entries()].sort((a, b) => a[1].slot - b[1].slot);
411
- for (const [rootHex] of sorted) {
412
- this.blockInputs.delete(rootHex);
434
+ for (const [, blockInput] of sorted) {
435
+ this.evictBlockInput(blockInput);
413
436
  itemsToDelete--;
414
437
  if (itemsToDelete <= 0) return;
415
438
  }
416
439
  }
417
440
  pruneSetToMax(this.verifiedProposerSignatures, MAX_BLOCK_INPUT_CACHE_SIZE);
418
441
  }
442
+
443
+ private evictBlockInput(blockInput: IBlockInput): void {
444
+ // Without forcefully clearing this cache, we would rely on WeakMap to evict memory which is not reliable
445
+ this.serializedCache.delete(blockInput.getSerializedCacheKeys());
446
+ this.blockInputs.delete(blockInput.blockRootHex);
447
+ }
419
448
  }
420
449
 
421
450
  enum SeenBlockInputCacheErrorCode {
@@ -81,7 +81,7 @@ async function validateAggregateAndProof(
81
81
  });
82
82
  }
83
83
  // [REJECT] `aggregate.data.index == 0` if `block.slot == aggregate.data.slot`.
84
- const block = chain.forkChoice.getBlock(attData.beaconBlockRoot);
84
+ const block = chain.forkChoice.getBlockDefaultStatus(attData.beaconBlockRoot);
85
85
 
86
86
  // If block is unknown, we don't handle it here. It will throw error later on at `verifyHeadBlockAndTargetRoot()`
87
87
  if (block !== null && block.slot === attData.slot && attData.index !== 0) {