@lodestar/beacon-node 1.41.0-dev.afd446235e → 1.41.0-dev.b90dff673d

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 (745) 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 +3 -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 +1 -0
  23. package/lib/api/impl/debug/index.js.map +1 -1
  24. package/lib/api/impl/errors.d.ts.map +1 -1
  25. package/lib/api/impl/errors.js.map +1 -1
  26. package/lib/api/impl/events/index.d.ts +1 -1
  27. package/lib/api/impl/events/index.d.ts.map +1 -1
  28. package/lib/api/impl/events/index.js.map +1 -1
  29. package/lib/api/impl/lightclient/index.d.ts +1 -1
  30. package/lib/api/impl/lightclient/index.d.ts.map +1 -1
  31. package/lib/api/impl/lightclient/index.js.map +1 -1
  32. package/lib/api/impl/lodestar/index.d.ts +1 -1
  33. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  34. package/lib/api/impl/lodestar/index.js.map +1 -1
  35. package/lib/api/impl/node/index.js.map +1 -1
  36. package/lib/api/impl/node/utils.js.map +1 -1
  37. package/lib/api/impl/proof/index.js.map +1 -1
  38. package/lib/api/impl/utils.js.map +1 -1
  39. package/lib/api/impl/validator/index.d.ts.map +1 -1
  40. package/lib/api/impl/validator/index.js +30 -12
  41. package/lib/api/impl/validator/index.js.map +1 -1
  42. package/lib/api/impl/validator/utils.d.ts +1 -1
  43. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  44. package/lib/api/impl/validator/utils.js.map +1 -1
  45. package/lib/api/rest/activeSockets.d.ts.map +1 -1
  46. package/lib/api/rest/activeSockets.js.map +1 -1
  47. package/lib/api/rest/base.d.ts.map +1 -1
  48. package/lib/api/rest/base.js.map +1 -1
  49. package/lib/api/rest/index.d.ts.map +1 -1
  50. package/lib/api/rest/index.js.map +1 -1
  51. package/lib/api/rest/swaggerUI.js.map +1 -1
  52. package/lib/bun-wrappers/prometheus-gc-stats.js.map +1 -1
  53. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
  54. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  55. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  56. package/lib/chain/GetBlobsTracker.js.map +1 -1
  57. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  58. package/lib/chain/archiveStore/archiveStore.js +2 -1
  59. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  60. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  61. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
  62. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  63. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  64. package/lib/chain/archiveStore/historicalState/types.js +2 -1
  65. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  66. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  67. package/lib/chain/archiveStore/interface.js +2 -1
  68. package/lib/chain/archiveStore/interface.js.map +1 -1
  69. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +1 -1
  70. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  71. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +2 -1
  72. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  73. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +3 -8
  74. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  75. package/lib/chain/archiveStore/utils/archiveBlocks.js +1 -1
  76. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  77. package/lib/chain/archiveStore/utils/archivePayloads.js.map +1 -1
  78. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  79. package/lib/chain/archiveStore/utils/updateBackfillRange.js +1 -1
  80. package/lib/chain/archiveStore/utils/updateBackfillRange.js.map +1 -1
  81. package/lib/chain/balancesCache.d.ts.map +1 -1
  82. package/lib/chain/balancesCache.js.map +1 -1
  83. package/lib/chain/beaconProposerCache.d.ts.map +1 -1
  84. package/lib/chain/beaconProposerCache.js.map +1 -1
  85. package/lib/chain/blocks/blockInput/blockInput.d.ts +25 -2
  86. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  87. package/lib/chain/blocks/blockInput/blockInput.js +71 -0
  88. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  89. package/lib/chain/blocks/blockInput/errors.js +2 -1
  90. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  91. package/lib/chain/blocks/blockInput/types.d.ts +18 -1
  92. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  93. package/lib/chain/blocks/blockInput/types.js +5 -2
  94. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  95. package/lib/chain/blocks/blockInput/utils.js.map +1 -1
  96. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  97. package/lib/chain/blocks/importBlock.js +27 -4
  98. package/lib/chain/blocks/importBlock.js.map +1 -1
  99. package/lib/chain/blocks/index.d.ts.map +1 -1
  100. package/lib/chain/blocks/index.js.map +1 -1
  101. package/lib/chain/blocks/types.js +6 -3
  102. package/lib/chain/blocks/types.js.map +1 -1
  103. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  104. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  105. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  106. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  107. package/lib/chain/blocks/verifyBlocksDataAvailability.js +3 -0
  108. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  109. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +4 -0
  110. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  111. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -1
  112. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  113. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  114. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -1
  115. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  116. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  117. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  118. package/lib/chain/blocks/writeBlockInputToDb.d.ts +12 -3
  119. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  120. package/lib/chain/blocks/writeBlockInputToDb.js +92 -98
  121. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  122. package/lib/chain/bls/maybeBatch.js.map +1 -1
  123. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  124. package/lib/chain/bls/multithread/index.js.map +1 -1
  125. package/lib/chain/bls/multithread/jobItem.js +2 -1
  126. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  127. package/lib/chain/bls/multithread/types.js +2 -1
  128. package/lib/chain/bls/multithread/types.js.map +1 -1
  129. package/lib/chain/bls/multithread/utils.js.map +1 -1
  130. package/lib/chain/bls/multithread/worker.js.map +1 -1
  131. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  132. package/lib/chain/bls/singleThread.js.map +1 -1
  133. package/lib/chain/bls/utils.js.map +1 -1
  134. package/lib/chain/chain.d.ts +4 -4
  135. package/lib/chain/chain.d.ts.map +1 -1
  136. package/lib/chain/chain.js +13 -12
  137. package/lib/chain/chain.js.map +1 -1
  138. package/lib/chain/emitter.d.ts +4 -6
  139. package/lib/chain/emitter.d.ts.map +1 -1
  140. package/lib/chain/emitter.js +2 -1
  141. package/lib/chain/emitter.js.map +1 -1
  142. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  143. package/lib/chain/errors/attestationError.js +2 -1
  144. package/lib/chain/errors/attestationError.js.map +1 -1
  145. package/lib/chain/errors/attesterSlashingError.js +2 -1
  146. package/lib/chain/errors/attesterSlashingError.js.map +1 -1
  147. package/lib/chain/errors/blobSidecarError.js +2 -1
  148. package/lib/chain/errors/blobSidecarError.js.map +1 -1
  149. package/lib/chain/errors/blockError.d.ts.map +1 -1
  150. package/lib/chain/errors/blockError.js +2 -1
  151. package/lib/chain/errors/blockError.js.map +1 -1
  152. package/lib/chain/errors/blsToExecutionChangeError.js +2 -1
  153. package/lib/chain/errors/blsToExecutionChangeError.js.map +1 -1
  154. package/lib/chain/errors/dataColumnSidecarError.js +2 -1
  155. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  156. package/lib/chain/errors/executionPayloadBid.d.ts +1 -1
  157. package/lib/chain/errors/executionPayloadBid.js +2 -1
  158. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  159. package/lib/chain/errors/executionPayloadEnvelope.d.ts +2 -2
  160. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  161. package/lib/chain/errors/executionPayloadEnvelope.js +2 -1
  162. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  163. package/lib/chain/errors/gossipValidation.d.ts.map +1 -1
  164. package/lib/chain/errors/gossipValidation.js +4 -2
  165. package/lib/chain/errors/gossipValidation.js.map +1 -1
  166. package/lib/chain/errors/lightClientError.js +4 -2
  167. package/lib/chain/errors/lightClientError.js.map +1 -1
  168. package/lib/chain/errors/payloadAttestation.d.ts +1 -1
  169. package/lib/chain/errors/payloadAttestation.js +2 -1
  170. package/lib/chain/errors/payloadAttestation.js.map +1 -1
  171. package/lib/chain/errors/proposerSlashingError.js +2 -1
  172. package/lib/chain/errors/proposerSlashingError.js.map +1 -1
  173. package/lib/chain/errors/syncCommitteeError.js +2 -1
  174. package/lib/chain/errors/syncCommitteeError.js.map +1 -1
  175. package/lib/chain/errors/voluntaryExitError.js +2 -1
  176. package/lib/chain/errors/voluntaryExitError.js.map +1 -1
  177. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  178. package/lib/chain/forkChoice/index.js +32 -25
  179. package/lib/chain/forkChoice/index.js.map +1 -1
  180. package/lib/chain/initState.d.ts +1 -1
  181. package/lib/chain/initState.d.ts.map +1 -1
  182. package/lib/chain/initState.js.map +1 -1
  183. package/lib/chain/interface.js +2 -1
  184. package/lib/chain/interface.js.map +1 -1
  185. package/lib/chain/lightClient/index.d.ts +0 -29
  186. package/lib/chain/lightClient/index.d.ts.map +1 -1
  187. package/lib/chain/lightClient/index.js.map +1 -1
  188. package/lib/chain/lightClient/proofs.js.map +1 -1
  189. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  190. package/lib/chain/opPools/aggregatedAttestationPool.js +5 -3
  191. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  192. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  193. package/lib/chain/opPools/attestationPool.js.map +1 -1
  194. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
  195. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  196. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  197. package/lib/chain/opPools/opPool.js.map +1 -1
  198. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  199. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  200. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  201. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  202. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  203. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  204. package/lib/chain/opPools/types.js +4 -2
  205. package/lib/chain/opPools/types.js.map +1 -1
  206. package/lib/chain/opPools/utils.js.map +1 -1
  207. package/lib/chain/prepareNextSlot.d.ts +1 -2
  208. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  209. package/lib/chain/prepareNextSlot.js.map +1 -1
  210. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +0 -1
  211. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  212. package/lib/chain/produceBlock/computeNewStateRoot.js +4 -3
  213. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  214. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  215. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  216. package/lib/chain/produceBlock/produceBlockBody.js +7 -5
  217. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  218. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  219. package/lib/chain/regen/errors.d.ts.map +1 -1
  220. package/lib/chain/regen/errors.js +2 -1
  221. package/lib/chain/regen/errors.js.map +1 -1
  222. package/lib/chain/regen/interface.js +4 -2
  223. package/lib/chain/regen/interface.js.map +1 -1
  224. package/lib/chain/regen/queued.d.ts.map +1 -1
  225. package/lib/chain/regen/queued.js +4 -1
  226. package/lib/chain/regen/queued.js.map +1 -1
  227. package/lib/chain/regen/regen.d.ts.map +1 -1
  228. package/lib/chain/regen/regen.js +6 -2
  229. package/lib/chain/regen/regen.js.map +1 -1
  230. package/lib/chain/reprocess.d.ts.map +1 -1
  231. package/lib/chain/reprocess.js +2 -1
  232. package/lib/chain/reprocess.js.map +1 -1
  233. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -1
  234. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  235. package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -1
  236. package/lib/chain/seenCache/seenAttestationData.js +2 -1
  237. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  238. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  239. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  240. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -1
  241. package/lib/chain/seenCache/seenBlockAttesters.js.map +1 -1
  242. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -1
  243. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  244. package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -1
  245. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  246. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -1
  247. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  248. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -1
  249. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -1
  250. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -1
  251. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -1
  252. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -3
  253. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  254. package/lib/chain/seenCache/seenGossipBlockInput.js +38 -16
  255. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  256. package/lib/chain/serializeState.js +1 -0
  257. package/lib/chain/serializeState.js.map +1 -1
  258. package/lib/chain/shufflingCache.d.ts.map +1 -1
  259. package/lib/chain/shufflingCache.js +2 -1
  260. package/lib/chain/shufflingCache.js.map +1 -1
  261. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  262. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  263. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  264. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  265. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  266. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  267. package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -1
  268. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  269. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +1 -41
  270. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  271. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  272. package/lib/chain/stateCache/types.js +2 -1
  273. package/lib/chain/stateCache/types.js.map +1 -1
  274. package/lib/chain/validation/aggregateAndProof.js +1 -1
  275. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  276. package/lib/chain/validation/attestation.d.ts.map +1 -1
  277. package/lib/chain/validation/attestation.js +10 -6
  278. package/lib/chain/validation/attestation.js.map +1 -1
  279. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  280. package/lib/chain/validation/attesterSlashing.js +8 -1
  281. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  282. package/lib/chain/validation/blobSidecar.js +2 -2
  283. package/lib/chain/validation/blobSidecar.js.map +1 -1
  284. package/lib/chain/validation/block.d.ts.map +1 -1
  285. package/lib/chain/validation/block.js +6 -3
  286. package/lib/chain/validation/block.js.map +1 -1
  287. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  288. package/lib/chain/validation/dataColumnSidecar.js +1 -1
  289. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  290. package/lib/chain/validation/executionPayloadBid.js +1 -2
  291. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  292. package/lib/chain/validation/executionPayloadEnvelope.js +4 -4
  293. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  294. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  295. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  296. package/lib/chain/validation/payloadAttestationMessage.js +1 -2
  297. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  298. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  299. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  300. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  301. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  302. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  303. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  304. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  305. package/lib/chain/validation/syncCommittee.js.map +1 -1
  306. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  307. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  308. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  309. package/lib/chain/validatorMonitor.js +2 -1
  310. package/lib/chain/validatorMonitor.js.map +1 -1
  311. package/lib/constants/network.d.ts +1 -2
  312. package/lib/constants/network.d.ts.map +1 -1
  313. package/lib/constants/network.js +4 -3
  314. package/lib/constants/network.js.map +1 -1
  315. package/lib/db/beacon.d.ts.map +1 -1
  316. package/lib/db/beacon.js.map +1 -1
  317. package/lib/db/buckets.d.ts +23 -23
  318. package/lib/db/buckets.d.ts.map +1 -1
  319. package/lib/db/buckets.js +2 -1
  320. package/lib/db/buckets.js.map +1 -1
  321. package/lib/db/index.d.ts +1 -0
  322. package/lib/db/index.d.ts.map +1 -1
  323. package/lib/db/index.js +1 -0
  324. package/lib/db/index.js.map +1 -1
  325. package/lib/db/repositories/attesterSlashing.d.ts.map +1 -1
  326. package/lib/db/repositories/attesterSlashing.js.map +1 -1
  327. package/lib/db/repositories/backfilledRanges.d.ts.map +1 -1
  328. package/lib/db/repositories/backfilledRanges.js.map +1 -1
  329. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  330. package/lib/db/repositories/blobSidecars.js.map +1 -1
  331. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -1
  332. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  333. package/lib/db/repositories/block.d.ts.map +1 -1
  334. package/lib/db/repositories/block.js.map +1 -1
  335. package/lib/db/repositories/blockArchive.d.ts.map +1 -1
  336. package/lib/db/repositories/blockArchive.js.map +1 -1
  337. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  338. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  339. package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -1
  340. package/lib/db/repositories/blsToExecutionChange.js.map +1 -1
  341. package/lib/db/repositories/checkpointState.d.ts.map +1 -1
  342. package/lib/db/repositories/checkpointState.js.map +1 -1
  343. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
  344. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  345. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  346. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  347. package/lib/db/repositories/executionPayloadEnvelope.d.ts.map +1 -1
  348. package/lib/db/repositories/executionPayloadEnvelope.js.map +1 -1
  349. package/lib/db/repositories/executionPayloadEnvelopeArchive.d.ts.map +1 -1
  350. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -1
  351. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +1 -1
  352. package/lib/db/repositories/lightclientBestUpdate.js.map +1 -1
  353. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +1 -1
  354. package/lib/db/repositories/lightclientCheckpointHeader.js.map +1 -1
  355. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +1 -1
  356. package/lib/db/repositories/lightclientSyncCommittee.js.map +1 -1
  357. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -1
  358. package/lib/db/repositories/lightclientSyncCommitteeWitness.js.map +1 -1
  359. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -1
  360. package/lib/db/repositories/proposerSlashing.js.map +1 -1
  361. package/lib/db/repositories/stateArchive.d.ts.map +1 -1
  362. package/lib/db/repositories/stateArchive.js.map +1 -1
  363. package/lib/db/repositories/stateArchiveIndex.js.map +1 -1
  364. package/lib/db/repositories/voluntaryExit.d.ts.map +1 -1
  365. package/lib/db/repositories/voluntaryExit.js.map +1 -1
  366. package/lib/execution/builder/cache.d.ts.map +1 -1
  367. package/lib/execution/builder/cache.js.map +1 -1
  368. package/lib/execution/builder/http.d.ts.map +1 -1
  369. package/lib/execution/builder/http.js +2 -1
  370. package/lib/execution/builder/http.js.map +1 -1
  371. package/lib/execution/builder/index.js.map +1 -1
  372. package/lib/execution/builder/utils.js.map +1 -1
  373. package/lib/execution/engine/disabled.d.ts.map +1 -1
  374. package/lib/execution/engine/disabled.js.map +1 -1
  375. package/lib/execution/engine/http.d.ts.map +1 -1
  376. package/lib/execution/engine/http.js.map +1 -1
  377. package/lib/execution/engine/index.js.map +1 -1
  378. package/lib/execution/engine/interface.js +4 -2
  379. package/lib/execution/engine/interface.js.map +1 -1
  380. package/lib/execution/engine/jsonRpcHttpClient.d.ts +10 -15
  381. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -1
  382. package/lib/execution/engine/jsonRpcHttpClient.js +2 -1
  383. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -1
  384. package/lib/execution/engine/jwt.js.map +1 -1
  385. package/lib/execution/engine/mock.d.ts.map +1 -1
  386. package/lib/execution/engine/mock.js.map +1 -1
  387. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  388. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  389. package/lib/execution/engine/types.js.map +1 -1
  390. package/lib/execution/engine/utils.d.ts +1 -1
  391. package/lib/execution/engine/utils.d.ts.map +1 -1
  392. package/lib/execution/engine/utils.js.map +1 -1
  393. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  394. package/lib/metrics/metrics/beacon.js.map +1 -1
  395. package/lib/metrics/metrics/lodestar.d.ts +8 -6
  396. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  397. package/lib/metrics/metrics/lodestar.js +18 -10
  398. package/lib/metrics/metrics/lodestar.js.map +1 -1
  399. package/lib/metrics/metrics.js.map +1 -1
  400. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  401. package/lib/metrics/server/http.d.ts +1 -1
  402. package/lib/metrics/server/http.d.ts.map +1 -1
  403. package/lib/metrics/server/http.js.map +1 -1
  404. package/lib/metrics/utils/avgMinMax.d.ts.map +1 -1
  405. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  406. package/lib/metrics/utils/gauge.d.ts.map +1 -1
  407. package/lib/metrics/utils/gauge.js.map +1 -1
  408. package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -1
  409. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  410. package/lib/monitoring/clientStats.js.map +1 -1
  411. package/lib/monitoring/properties.d.ts.map +1 -1
  412. package/lib/monitoring/properties.js.map +1 -1
  413. package/lib/monitoring/service.d.ts.map +1 -1
  414. package/lib/monitoring/service.js.map +1 -1
  415. package/lib/monitoring/system.d.ts.map +1 -1
  416. package/lib/monitoring/system.js.map +1 -1
  417. package/lib/monitoring/types.js +4 -2
  418. package/lib/monitoring/types.js.map +1 -1
  419. package/lib/network/core/events.d.ts +1 -3
  420. package/lib/network/core/events.d.ts.map +1 -1
  421. package/lib/network/core/events.js +4 -2
  422. package/lib/network/core/events.js.map +1 -1
  423. package/lib/network/core/metrics.d.ts +6 -7
  424. package/lib/network/core/metrics.d.ts.map +1 -1
  425. package/lib/network/core/metrics.js.map +1 -1
  426. package/lib/network/core/networkCore.d.ts +1 -1
  427. package/lib/network/core/networkCore.d.ts.map +1 -1
  428. package/lib/network/core/networkCore.js.map +1 -1
  429. package/lib/network/core/networkCoreWorker.js.map +1 -1
  430. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  431. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  432. package/lib/network/discv5/index.d.ts +1 -3
  433. package/lib/network/discv5/index.d.ts.map +1 -1
  434. package/lib/network/discv5/index.js.map +1 -1
  435. package/lib/network/discv5/utils.js +2 -1
  436. package/lib/network/discv5/utils.js.map +1 -1
  437. package/lib/network/discv5/worker.js.map +1 -1
  438. package/lib/network/events.d.ts +1 -3
  439. package/lib/network/events.d.ts.map +1 -1
  440. package/lib/network/events.js +4 -2
  441. package/lib/network/events.js.map +1 -1
  442. package/lib/network/forks.js.map +1 -1
  443. package/lib/network/gossip/encoding.d.ts.map +1 -1
  444. package/lib/network/gossip/encoding.js.map +1 -1
  445. package/lib/network/gossip/errors.d.ts.map +1 -1
  446. package/lib/network/gossip/errors.js.map +1 -1
  447. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  448. package/lib/network/gossip/gossipsub.js.map +1 -1
  449. package/lib/network/gossip/interface.js +4 -2
  450. package/lib/network/gossip/interface.js.map +1 -1
  451. package/lib/network/gossip/metrics.d.ts +12 -14
  452. package/lib/network/gossip/metrics.d.ts.map +1 -1
  453. package/lib/network/gossip/metrics.js.map +1 -1
  454. package/lib/network/gossip/scoringParameters.d.ts +1 -1
  455. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  456. package/lib/network/gossip/scoringParameters.js.map +1 -1
  457. package/lib/network/gossip/topic.d.ts +2867 -2920
  458. package/lib/network/gossip/topic.d.ts.map +1 -1
  459. package/lib/network/gossip/topic.js.map +1 -1
  460. package/lib/network/libp2p/error.js +2 -1
  461. package/lib/network/libp2p/error.js.map +1 -1
  462. package/lib/network/libp2p/index.js.map +1 -1
  463. package/lib/network/metadata.d.ts.map +1 -1
  464. package/lib/network/metadata.js +4 -2
  465. package/lib/network/metadata.js.map +1 -1
  466. package/lib/network/network.d.ts +1 -1
  467. package/lib/network/network.d.ts.map +1 -1
  468. package/lib/network/network.js +1 -1
  469. package/lib/network/network.js.map +1 -1
  470. package/lib/network/peers/client.js +2 -1
  471. package/lib/network/peers/client.js.map +1 -1
  472. package/lib/network/peers/datastore.d.ts +0 -3
  473. package/lib/network/peers/datastore.d.ts.map +1 -1
  474. package/lib/network/peers/datastore.js.map +1 -1
  475. package/lib/network/peers/discover.d.ts +0 -7
  476. package/lib/network/peers/discover.d.ts.map +1 -1
  477. package/lib/network/peers/discover.js +4 -2
  478. package/lib/network/peers/discover.js.map +1 -1
  479. package/lib/network/peers/peerManager.d.ts +0 -9
  480. package/lib/network/peers/peerManager.d.ts.map +1 -1
  481. package/lib/network/peers/peerManager.js +3 -48
  482. package/lib/network/peers/peerManager.js.map +1 -1
  483. package/lib/network/peers/peersData.d.ts.map +1 -1
  484. package/lib/network/peers/peersData.js +2 -1
  485. package/lib/network/peers/peersData.js.map +1 -1
  486. package/lib/network/peers/score/interface.js +4 -2
  487. package/lib/network/peers/score/interface.js.map +1 -1
  488. package/lib/network/peers/score/score.d.ts.map +1 -1
  489. package/lib/network/peers/score/score.js.map +1 -1
  490. package/lib/network/peers/score/store.d.ts.map +1 -1
  491. package/lib/network/peers/score/store.js.map +1 -1
  492. package/lib/network/peers/score/utils.js.map +1 -1
  493. package/lib/network/peers/utils/assertPeerRelevance.js +2 -1
  494. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  495. package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
  496. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  497. package/lib/network/peers/utils/prioritizePeers.js +2 -1
  498. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  499. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  500. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  501. package/lib/network/processor/aggregatorTracker.d.ts.map +1 -1
  502. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  503. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  504. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  505. package/lib/network/processor/gossipHandlers.js +4 -1
  506. package/lib/network/processor/gossipHandlers.js.map +1 -1
  507. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  508. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -1
  509. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  510. package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -1
  511. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  512. package/lib/network/processor/gossipQueues/types.js +4 -2
  513. package/lib/network/processor/gossipQueues/types.js.map +1 -1
  514. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  515. package/lib/network/processor/index.d.ts.map +1 -1
  516. package/lib/network/processor/index.js +4 -2
  517. package/lib/network/processor/index.js.map +1 -1
  518. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  519. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  520. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  521. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -2
  522. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  523. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  524. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  525. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +3 -2
  526. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  527. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +1 -1
  528. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  529. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  530. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +3 -2
  531. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  532. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -1
  533. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  534. package/lib/network/reqresp/handlers/index.js.map +1 -1
  535. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  536. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  537. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  538. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  539. package/lib/network/reqresp/interface.js +2 -1
  540. package/lib/network/reqresp/interface.js.map +1 -1
  541. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  542. package/lib/network/reqresp/protocols.js.map +1 -1
  543. package/lib/network/reqresp/rateLimit.js.map +1 -1
  544. package/lib/network/reqresp/score.js.map +1 -1
  545. package/lib/network/reqresp/types.js +4 -2
  546. package/lib/network/reqresp/types.js.map +1 -1
  547. package/lib/network/reqresp/utils/collect.d.ts +1 -1
  548. package/lib/network/reqresp/utils/collect.js.map +1 -1
  549. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts +1 -1
  550. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js +2 -1
  551. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js.map +1 -1
  552. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts +1 -1
  553. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -1
  554. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  555. package/lib/network/statusCache.d.ts.map +1 -1
  556. package/lib/network/statusCache.js.map +1 -1
  557. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  558. package/lib/network/subnets/attnetsService.js +2 -1
  559. package/lib/network/subnets/attnetsService.js.map +1 -1
  560. package/lib/network/subnets/interface.js.map +1 -1
  561. package/lib/network/subnets/syncnetsService.d.ts.map +1 -1
  562. package/lib/network/subnets/syncnetsService.js.map +1 -1
  563. package/lib/network/subnets/util.js.map +1 -1
  564. package/lib/network/util.js.map +1 -1
  565. package/lib/node/nodejs.d.ts +2 -2
  566. package/lib/node/nodejs.d.ts.map +1 -1
  567. package/lib/node/nodejs.js +2 -1
  568. package/lib/node/nodejs.js.map +1 -1
  569. package/lib/node/notifier.js.map +1 -1
  570. package/lib/node/utils/interop/deposits.js.map +1 -1
  571. package/lib/node/utils/interop/state.d.ts +1 -1
  572. package/lib/node/utils/interop/state.d.ts.map +1 -1
  573. package/lib/node/utils/interop/state.js.map +1 -1
  574. package/lib/node/utils/lightclient.js.map +1 -1
  575. package/lib/node/utils/state.js.map +1 -1
  576. package/lib/sync/backfill/backfill.d.ts +1 -10
  577. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  578. package/lib/sync/backfill/backfill.js +6 -3
  579. package/lib/sync/backfill/backfill.js.map +1 -1
  580. package/lib/sync/backfill/errors.js +2 -1
  581. package/lib/sync/backfill/errors.js.map +1 -1
  582. package/lib/sync/backfill/verify.js.map +1 -1
  583. package/lib/sync/interface.js +2 -1
  584. package/lib/sync/interface.js.map +1 -1
  585. package/lib/sync/range/batch.d.ts.map +1 -1
  586. package/lib/sync/range/batch.js +4 -2
  587. package/lib/sync/range/batch.js.map +1 -1
  588. package/lib/sync/range/chain.d.ts +0 -10
  589. package/lib/sync/range/chain.d.ts.map +1 -1
  590. package/lib/sync/range/chain.js +2 -1
  591. package/lib/sync/range/chain.js.map +1 -1
  592. package/lib/sync/range/range.d.ts +1 -3
  593. package/lib/sync/range/range.d.ts.map +1 -1
  594. package/lib/sync/range/range.js +4 -2
  595. package/lib/sync/range/range.js.map +1 -1
  596. package/lib/sync/range/utils/batches.js.map +1 -1
  597. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  598. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  599. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -1
  600. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  601. package/lib/sync/range/utils/updateChains.js.map +1 -1
  602. package/lib/sync/sync.d.ts.map +1 -1
  603. package/lib/sync/sync.js.map +1 -1
  604. package/lib/sync/types.js +4 -2
  605. package/lib/sync/types.js.map +1 -1
  606. package/lib/sync/unknownBlock.d.ts +0 -14
  607. package/lib/sync/unknownBlock.d.ts.map +1 -1
  608. package/lib/sync/unknownBlock.js.map +1 -1
  609. package/lib/sync/utils/downloadByRange.d.ts +4 -4
  610. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  611. package/lib/sync/utils/downloadByRange.js +2 -1
  612. package/lib/sync/utils/downloadByRange.js.map +1 -1
  613. package/lib/sync/utils/downloadByRoot.d.ts +8 -8
  614. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  615. package/lib/sync/utils/downloadByRoot.js +2 -1
  616. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  617. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  618. package/lib/sync/utils/remoteSyncType.d.ts +1 -1
  619. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -1
  620. package/lib/sync/utils/remoteSyncType.js +4 -2
  621. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  622. package/lib/util/address.js.map +1 -1
  623. package/lib/util/array.d.ts.map +1 -1
  624. package/lib/util/array.js.map +1 -1
  625. package/lib/util/asyncIterableToEvents.d.ts.map +1 -1
  626. package/lib/util/asyncIterableToEvents.js +2 -1
  627. package/lib/util/asyncIterableToEvents.js.map +1 -1
  628. package/lib/util/binarySearch.d.ts.map +1 -1
  629. package/lib/util/binarySearch.js.map +1 -1
  630. package/lib/util/bitArray.js +2 -1
  631. package/lib/util/bitArray.js.map +1 -1
  632. package/lib/util/blobs.js.map +1 -1
  633. package/lib/util/bufferPool.d.ts.map +1 -1
  634. package/lib/util/bufferPool.js +2 -1
  635. package/lib/util/bufferPool.js.map +1 -1
  636. package/lib/util/chunkify.js.map +1 -1
  637. package/lib/util/clock.d.ts +6 -0
  638. package/lib/util/clock.d.ts.map +1 -1
  639. package/lib/util/clock.js +11 -4
  640. package/lib/util/clock.js.map +1 -1
  641. package/lib/util/dataColumns.d.ts.map +1 -1
  642. package/lib/util/dataColumns.js +4 -2
  643. package/lib/util/dataColumns.js.map +1 -1
  644. package/lib/util/dependentRoot.js.map +1 -1
  645. package/lib/util/enum.js.map +1 -1
  646. package/lib/util/error.js.map +1 -1
  647. package/lib/util/eventLoop.js.map +1 -1
  648. package/lib/util/execution.js +2 -1
  649. package/lib/util/execution.js.map +1 -1
  650. package/lib/util/file.js.map +1 -1
  651. package/lib/util/forkChoice.js.map +1 -1
  652. package/lib/util/forkName.js.map +1 -1
  653. package/lib/util/graffiti.js.map +1 -1
  654. package/lib/util/hex.js.map +1 -1
  655. package/lib/util/ip.js.map +1 -1
  656. package/lib/util/itTrigger.d.ts.map +1 -1
  657. package/lib/util/itTrigger.js.map +1 -1
  658. package/lib/util/map.d.ts.map +1 -1
  659. package/lib/util/map.js.map +1 -1
  660. package/lib/util/metadata.js.map +1 -1
  661. package/lib/util/multifork.js.map +1 -1
  662. package/lib/util/numpy.js.map +1 -1
  663. package/lib/util/peerId.js.map +1 -1
  664. package/lib/util/profile.js +2 -1
  665. package/lib/util/profile.js.map +1 -1
  666. package/lib/util/promises.js.map +1 -1
  667. package/lib/util/queue/errors.js +2 -1
  668. package/lib/util/queue/errors.js.map +1 -1
  669. package/lib/util/queue/fnQueue.d.ts.map +1 -1
  670. package/lib/util/queue/fnQueue.js.map +1 -1
  671. package/lib/util/queue/itemQueue.d.ts.map +1 -1
  672. package/lib/util/queue/itemQueue.js.map +1 -1
  673. package/lib/util/queue/options.js +2 -1
  674. package/lib/util/queue/options.js.map +1 -1
  675. package/lib/util/serializedCache.d.ts +4 -4
  676. package/lib/util/serializedCache.d.ts.map +1 -1
  677. package/lib/util/serializedCache.js +6 -4
  678. package/lib/util/serializedCache.js.map +1 -1
  679. package/lib/util/set.d.ts.map +1 -1
  680. package/lib/util/set.js.map +1 -1
  681. package/lib/util/shuffle.js.map +1 -1
  682. package/lib/util/sortBy.js.map +1 -1
  683. package/lib/util/sszBytes.js.map +1 -1
  684. package/lib/util/time.js.map +1 -1
  685. package/lib/util/timeSeries.d.ts.map +1 -1
  686. package/lib/util/timeSeries.js.map +1 -1
  687. package/lib/util/types.d.ts.map +1 -1
  688. package/lib/util/workerEvents.d.ts +1 -1
  689. package/lib/util/workerEvents.d.ts.map +1 -1
  690. package/lib/util/workerEvents.js.map +1 -1
  691. package/lib/util/wrapError.js.map +1 -1
  692. package/package.json +28 -28
  693. package/src/api/impl/beacon/blocks/index.ts +3 -2
  694. package/src/api/impl/debug/index.ts +1 -0
  695. package/src/api/impl/validator/index.ts +26 -12
  696. package/src/chain/archiveStore/archiveStore.ts +5 -5
  697. package/src/chain/archiveStore/utils/archiveBlocks.ts +4 -5
  698. package/src/chain/archiveStore/utils/updateBackfillRange.ts +1 -1
  699. package/src/chain/blocks/blockInput/blockInput.ts +103 -3
  700. package/src/chain/blocks/blockInput/types.ts +18 -0
  701. package/src/chain/blocks/importBlock.ts +35 -4
  702. package/src/chain/blocks/verifyBlocksDataAvailability.ts +3 -0
  703. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -2
  704. package/src/chain/blocks/verifyBlocksSanityChecks.ts +7 -2
  705. package/src/chain/blocks/writeBlockInputToDb.ts +105 -104
  706. package/src/chain/chain.ts +31 -19
  707. package/src/chain/emitter.ts +3 -3
  708. package/src/chain/errors/executionPayloadBid.ts +1 -1
  709. package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
  710. package/src/chain/errors/payloadAttestation.ts +1 -1
  711. package/src/chain/forkChoice/index.ts +39 -21
  712. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  713. package/src/chain/produceBlock/computeNewStateRoot.ts +4 -3
  714. package/src/chain/produceBlock/produceBlockBody.ts +1 -2
  715. package/src/chain/regen/queued.ts +7 -2
  716. package/src/chain/regen/regen.ts +9 -3
  717. package/src/chain/seenCache/seenGossipBlockInput.ts +56 -18
  718. package/src/chain/validation/aggregateAndProof.ts +1 -1
  719. package/src/chain/validation/attestation.ts +10 -6
  720. package/src/chain/validation/attesterSlashing.ts +9 -0
  721. package/src/chain/validation/blobSidecar.ts +2 -2
  722. package/src/chain/validation/block.ts +9 -4
  723. package/src/chain/validation/dataColumnSidecar.ts +1 -1
  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/constants/network.ts +0 -1
  728. package/src/db/index.ts +1 -0
  729. package/src/metrics/metrics/lodestar.ts +18 -10
  730. package/src/network/network.ts +2 -1
  731. package/src/network/peers/peerManager.ts +4 -61
  732. package/src/network/processor/gossipHandlers.ts +12 -3
  733. package/src/network/processor/gossipValidatorFn.ts +1 -1
  734. package/src/network/reqresp/ReqRespBeaconNode.ts +1 -1
  735. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +4 -3
  736. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +3 -2
  737. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +1 -1
  738. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +4 -3
  739. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +2 -2
  740. package/src/network/reqresp/utils/collect.ts +1 -1
  741. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +1 -1
  742. package/src/sync/utils/downloadByRoot.ts +1 -1
  743. package/src/sync/utils/remoteSyncType.ts +1 -1
  744. package/src/util/clock.ts +9 -4
  745. package/src/util/serializedCache.ts +7 -5
@@ -1,7 +1,9 @@
1
- import {fulu} from "@lodestar/types";
2
- import {prettyPrintIndices, toRootHex} from "@lodestar/utils";
1
+ import {ForkPostDeneb, isForkPostDeneb} from "@lodestar/params";
2
+ import {SignedBeaconBlock} from "@lodestar/types";
3
+ import {fromHex, toRootHex} from "@lodestar/utils";
4
+ import {getBlobKzgCommitments} from "../../util/dataColumns.js";
3
5
  import {BeaconChain} from "../chain.js";
4
- import {IBlockInput, isBlockInputBlobs, isBlockInputColumns} from "./blockInput/index.js";
6
+ import {IBlockInput, IDataColumnsInput, isBlockInputBlobs, isBlockInputColumns} from "./blockInput/index.js";
5
7
  import {BLOB_AVAILABILITY_TIMEOUT} from "./verifyBlocksDataAvailability.js";
6
8
 
7
9
  /**
@@ -10,129 +12,128 @@ import {BLOB_AVAILABILITY_TIMEOUT} from "./verifyBlocksDataAvailability.js";
10
12
  *
11
13
  * This operation may be performed before, during or after importing to the fork-choice. As long as errors
12
14
  * are handled properly for eventual consistency.
15
+ *
16
+ * Block+blobs (pre-fulu) and data columns (fulu+) are written in parallel.
13
17
  */
14
- export async function writeBlockInputToDb(this: BeaconChain, blocksInputs: IBlockInput[]): Promise<void> {
15
- const fnPromises: Promise<void>[] = [];
16
- // track slots for logging
17
- const slots: number[] = [];
18
-
19
- for (const blockInput of blocksInputs) {
20
- const block = blockInput.getBlock();
21
- const slot = block.message.slot;
22
- slots.push(slot);
23
- const blockRoot = this.config.getForkTypes(block.message.slot).BeaconBlock.hashTreeRoot(block.message);
24
- const blockRootHex = toRootHex(blockRoot);
25
- const blockBytes = this.serializedCache.get(block);
26
- if (blockBytes) {
27
- // skip serializing data if we already have it
28
- this.metrics?.importBlock.persistBlockWithSerializedDataCount.inc();
29
- fnPromises.push(this.db.block.putBinary(this.db.block.getId(block), blockBytes));
30
- } else {
31
- this.metrics?.importBlock.persistBlockNoSerializedDataCount.inc();
32
- fnPromises.push(this.db.block.add(block));
33
- }
18
+ export async function writeBlockInputToDb(this: BeaconChain, blockInput: IBlockInput): Promise<void> {
19
+ const promises: Promise<void>[] = [writeBlockAndBlobsToDb.call(this, blockInput)];
34
20
 
35
- this.logger.debug("Persist block to hot DB", {
36
- slot: block.message.slot,
37
- root: blockRootHex,
38
- inputType: blockInput.type,
39
- });
21
+ if (isBlockInputColumns(blockInput)) {
22
+ promises.push(writeDataColumnsToDb.call(this, blockInput));
23
+ }
40
24
 
41
- if (!blockInput.hasAllData()) {
42
- await blockInput.waitForAllData(BLOB_AVAILABILITY_TIMEOUT);
43
- }
25
+ await Promise.all(promises);
26
+ this.logger.debug("Persisted blockInput to db", {slot: blockInput.slot, root: blockInput.blockRootHex});
27
+ }
44
28
 
45
- // NOTE: Old data is pruned on archive
46
- if (isBlockInputColumns(blockInput)) {
47
- if (!blockInput.hasComputedAllData()) {
48
- // Supernodes may only have a subset of the data columns by the time the block begins to be imported
49
- // because full data availability can be assumed after NUMBER_OF_COLUMNS / 2 columns are available.
50
- // Here, however, all data columns must be fully available/reconstructed before persisting to the DB.
51
- await blockInput.waitForComputedAllData(BLOB_AVAILABILITY_TIMEOUT).catch(() => {
52
- this.logger.debug("Failed to wait for computed all data", {slot, blockRoot: blockRootHex});
53
- });
54
- }
29
+ async function writeBlockAndBlobsToDb(this: BeaconChain, blockInput: IBlockInput): Promise<void> {
30
+ const block = blockInput.getBlock();
31
+ const slot = block.message.slot;
32
+ const blockRoot = this.config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block.message);
33
+ const blockRootHex = toRootHex(blockRoot);
34
+ const numBlobs = isForkPostDeneb(blockInput.forkName)
35
+ ? getBlobKzgCommitments(blockInput.forkName, block as SignedBeaconBlock<ForkPostDeneb>).length
36
+ : undefined;
37
+ const fnPromises: Promise<void>[] = [];
55
38
 
56
- const {custodyColumns} = this.custodyConfig;
57
- const blobsLen = (block.message as fulu.BeaconBlock).body.blobKzgCommitments.length;
58
- let dataColumnsLen: number;
59
- if (blobsLen === 0) {
60
- dataColumnsLen = 0;
61
- } else {
62
- dataColumnsLen = custodyColumns.length;
63
- }
39
+ const blockBytes = this.serializedCache.get(block);
40
+ if (blockBytes) {
41
+ // skip serializing data if we already have it
42
+ this.metrics?.importBlock.persistBlockWithSerializedDataCount.inc();
43
+ fnPromises.push(this.db.block.putBinary(this.db.block.getId(block), blockBytes));
44
+ } else {
45
+ this.metrics?.importBlock.persistBlockNoSerializedDataCount.inc();
46
+ fnPromises.push(this.db.block.add(block));
47
+ }
64
48
 
65
- const dataColumnSidecars = blockInput.getCustodyColumns();
66
- if (dataColumnSidecars.length !== dataColumnsLen) {
67
- this.logger.debug(
68
- `Invalid dataColumnSidecars=${dataColumnSidecars.length} for custody expected custodyColumnsLen=${dataColumnsLen}`
69
- );
70
- }
49
+ this.logger.debug("Persist block to hot DB", {slot, root: blockRootHex, inputType: blockInput.type, numBlobs});
71
50
 
72
- const binaryPuts = [];
73
- const nonbinaryPuts = [];
74
- for (const dataColumnSidecar of dataColumnSidecars) {
75
- // skip reserializing column if we already have it
76
- const serialized = this.serializedCache.get(dataColumnSidecar);
77
- if (serialized) {
78
- binaryPuts.push({key: dataColumnSidecar.index, value: serialized});
79
- } else {
80
- nonbinaryPuts.push(dataColumnSidecar);
51
+ if (isBlockInputBlobs(blockInput)) {
52
+ fnPromises.push(
53
+ (async () => {
54
+ if (!blockInput.hasAllData()) {
55
+ await blockInput.waitForAllData(BLOB_AVAILABILITY_TIMEOUT);
81
56
  }
82
- }
83
- fnPromises.push(this.db.dataColumnSidecar.putManyBinary(blockRoot, binaryPuts));
84
- fnPromises.push(this.db.dataColumnSidecar.putMany(blockRoot, nonbinaryPuts));
85
- this.logger.debug("Persisted dataColumnSidecars to hot DB", {
86
- slot: block.message.slot,
87
- root: blockRootHex,
88
- dataColumnSidecars: dataColumnSidecars.length,
89
- numBlobs: blobsLen,
90
- custodyColumns: custodyColumns.length,
91
- });
92
- } else if (isBlockInputBlobs(blockInput)) {
93
- const blobSidecars = blockInput.getBlobs();
94
- fnPromises.push(this.db.blobSidecars.add({blockRoot, slot: block.message.slot, blobSidecars}));
95
- this.logger.debug("Persisted blobSidecars to hot DB", {
96
- blobsLen: blobSidecars.length,
97
- slot: block.message.slot,
98
- root: blockRootHex,
99
- });
100
- }
57
+ const blobSidecars = blockInput.getBlobs();
58
+ await this.db.blobSidecars.add({blockRoot, slot, blobSidecars});
59
+ this.logger.debug("Persisted blobSidecars to hot DB", {
60
+ slot,
61
+ root: blockRootHex,
62
+ numBlobs: blobSidecars.length,
63
+ });
64
+ })()
65
+ );
66
+ }
67
+
68
+ await Promise.all(fnPromises);
69
+ }
70
+
71
+ /**
72
+ * Persists data columns to DB for a given block. Accepts a narrow sub-interface of IBlockInput
73
+ * so it can be reused across forks (e.g. Fulu, Gloas).
74
+ *
75
+ * NOTE: Old data is pruned on archive.
76
+ */
77
+ export async function writeDataColumnsToDb(this: BeaconChain, blockInput: IDataColumnsInput): Promise<void> {
78
+ const {slot, blockRootHex} = blockInput;
79
+ const blockRoot = fromHex(blockRootHex);
101
80
 
102
- await Promise.all(fnPromises);
103
- this.logger.debug("Persisted blocksInput to db", {
104
- blocksInput: blocksInputs.length,
105
- slots: prettyPrintIndices(slots),
81
+ if (!blockInput.hasComputedAllData()) {
82
+ // Supernodes may only have a subset of the data columns by the time the block begins to be imported
83
+ // because full data availability can be assumed after NUMBER_OF_COLUMNS / 2 columns are available.
84
+ // Here, however, all data columns must be fully available/reconstructed before persisting to the DB.
85
+ await blockInput.waitForComputedAllData(BLOB_AVAILABILITY_TIMEOUT).catch(() => {
86
+ this.logger.debug("Failed to wait for computed all data", {slot, blockRoot: blockRootHex});
106
87
  });
107
88
  }
89
+
90
+ const {custodyColumns} = this.custodyConfig;
91
+ const dataColumnSidecars = blockInput.getCustodyColumns();
92
+
93
+ const binaryPuts: {key: number; value: Uint8Array}[] = [];
94
+ const nonbinaryPuts = [];
95
+ for (const dataColumnSidecar of dataColumnSidecars) {
96
+ // skip reserializing column if we already have it
97
+ const serialized = this.serializedCache.get(dataColumnSidecar);
98
+ if (serialized) {
99
+ binaryPuts.push({key: dataColumnSidecar.index, value: serialized});
100
+ } else {
101
+ nonbinaryPuts.push(dataColumnSidecar);
102
+ }
103
+ }
104
+
105
+ await Promise.all([
106
+ this.db.dataColumnSidecar.putManyBinary(blockRoot, binaryPuts),
107
+ this.db.dataColumnSidecar.putMany(blockRoot, nonbinaryPuts),
108
+ ]);
109
+
110
+ this.logger.debug("Persisted dataColumnSidecars to hot DB", {
111
+ slot,
112
+ root: blockRootHex,
113
+ dataColumnSidecars: dataColumnSidecars.length,
114
+ custodyColumns: custodyColumns.length,
115
+ numBlobs: dataColumnSidecars[0]?.column.length,
116
+ });
108
117
  }
109
118
 
110
- export async function persistBlockInputs(this: BeaconChain, blockInputs: IBlockInput[]): Promise<void> {
119
+ export async function persistBlockInput(this: BeaconChain, blockInput: IBlockInput): Promise<void> {
111
120
  await writeBlockInputToDb
112
- .call(this, blockInputs)
121
+ .call(this, blockInput)
113
122
  .catch((e) => {
114
123
  this.logger.debug(
115
124
  "Error persisting block input in hot db",
116
125
  {
117
- count: blockInputs.length,
118
- slot: blockInputs[0].slot,
119
- root: blockInputs[0].blockRootHex,
126
+ slot: blockInput.slot,
127
+ root: blockInput.blockRootHex,
120
128
  },
121
129
  e
122
130
  );
123
131
  })
124
132
  .finally(() => {
125
- for (const blockInput of blockInputs) {
126
- this.seenBlockInputCache.prune(blockInput.blockRootHex);
127
- }
128
- // Without forcefully clearing this cache, we would rely on WeakMap to evict memory which is not reliable.
129
- // Clear here (after the DB write) so that writeBlockInputToDb can still use the cached serialized bytes.
130
- this.serializedCache.clear();
131
- if (blockInputs.length === 1) {
132
- this.logger.debug("Pruned block input", {
133
- slot: blockInputs[0].slot,
134
- root: blockInputs[0].blockRootHex,
135
- });
136
- }
133
+ this.seenBlockInputCache.prune(blockInput.blockRootHex);
134
+ this.logger.debug("Pruned block input", {
135
+ slot: blockInput.slot,
136
+ root: blockInput.blockRootHex,
137
+ });
137
138
  });
138
139
  }
@@ -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;
@@ -314,12 +320,14 @@ export class BeaconChain implements IBeaconChain {
314
320
 
315
321
  this.beaconProposerCache = new BeaconProposerCache(opts);
316
322
  this.checkpointBalancesCache = new CheckpointBalancesCache();
323
+ this.serializedCache = new SerializedCache();
317
324
  this.seenBlockInputCache = new SeenBlockInput({
318
325
  config,
319
326
  custodyConfig: this.custodyConfig,
320
327
  clock,
321
328
  chainEvents: emitter,
322
329
  signal,
330
+ serializedCache: this.serializedCache,
323
331
  metrics,
324
332
  logger,
325
333
  });
@@ -406,8 +414,6 @@ export class BeaconChain implements IBeaconChain {
406
414
  this.bls = bls;
407
415
  this.emitter = emitter;
408
416
 
409
- this.serializedCache = new SerializedCache();
410
-
411
417
  this.getBlobsTracker = new GetBlobsTracker({
412
418
  logger,
413
419
  executionEngine: this.executionEngine,
@@ -429,7 +435,7 @@ export class BeaconChain implements IBeaconChain {
429
435
  );
430
436
 
431
437
  this.unfinalizedBlockWrites = new JobItemQueue(
432
- persistBlockInputs.bind(this),
438
+ persistBlockInput.bind(this),
433
439
  {
434
440
  maxLength: DEFAULT_MAX_PENDING_UNFINALIZED_BLOCK_WRITES,
435
441
  signal,
@@ -600,7 +606,7 @@ export class BeaconChain implements IBeaconChain {
600
606
  ): Promise<{state: CachedBeaconStateAllForks | Uint8Array; executionOptimistic: boolean; finalized: boolean} | null> {
601
607
  if (opts?.allowRegen) {
602
608
  const state = await this.regen.getState(stateRoot, RegenCaller.restApi);
603
- const block = this.forkChoice.getBlock(state.latestBlockHeader.hashTreeRoot());
609
+ const block = this.forkChoice.getBlockDefaultStatus(state.latestBlockHeader.hashTreeRoot());
604
610
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
605
611
  return {
606
612
  state,
@@ -616,7 +622,7 @@ export class BeaconChain implements IBeaconChain {
616
622
  // TODO: This is very inneficient for debug requests of serialized content, since it deserializes to serialize again
617
623
  const cachedStateCtx = this.regen.getStateSync(stateRoot);
618
624
  if (cachedStateCtx) {
619
- const block = this.forkChoice.getBlock(cachedStateCtx.latestBlockHeader.hashTreeRoot());
625
+ const block = this.forkChoice.getBlockDefaultStatus(cachedStateCtx.latestBlockHeader.hashTreeRoot());
620
626
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
621
627
  return {
622
628
  state: cachedStateCtx,
@@ -650,7 +656,7 @@ export class BeaconChain implements IBeaconChain {
650
656
  // finalized or justified checkpoint states maynot be available with PersistentCheckpointStateCache, use getCheckpointStateOrBytes() api to get Uint8Array
651
657
  const cachedStateCtx = this.regen.getCheckpointStateSync(checkpoint);
652
658
  if (cachedStateCtx) {
653
- const block = this.forkChoice.getBlock(cachedStateCtx.latestBlockHeader.hashTreeRoot());
659
+ const block = this.forkChoice.getBlockDefaultStatus(cachedStateCtx.latestBlockHeader.hashTreeRoot());
654
660
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
655
661
  return {
656
662
  state: cachedStateCtx,
@@ -667,7 +673,7 @@ export class BeaconChain implements IBeaconChain {
667
673
  ): Promise<{state: CachedBeaconStateAllForks | Uint8Array; executionOptimistic: boolean; finalized: boolean} | null> {
668
674
  const cachedStateCtx = await this.regen.getCheckpointStateOrBytes(checkpoint);
669
675
  if (cachedStateCtx) {
670
- const block = this.forkChoice.getBlock(checkpoint.root);
676
+ const block = this.forkChoice.getBlockDefaultStatus(checkpoint.root);
671
677
  const finalizedEpoch = this.forkChoice.getFinalizedCheckpoint().epoch;
672
678
  return {
673
679
  state: cachedStateCtx,
@@ -711,7 +717,7 @@ export class BeaconChain implements IBeaconChain {
711
717
  async getBlockByRoot(
712
718
  root: string
713
719
  ): Promise<{block: SignedBeaconBlock; executionOptimistic: boolean; finalized: boolean} | null> {
714
- const block = this.forkChoice.getBlockHex(root);
720
+ const block = this.forkChoice.getBlockHexDefaultStatus(root);
715
721
  if (block) {
716
722
  // Block found in fork-choice.
717
723
  // It may be in the block input cache, awaiting full DA reconstruction, check there first
@@ -735,7 +741,7 @@ export class BeaconChain implements IBeaconChain {
735
741
  async getSerializedBlockByRoot(
736
742
  root: string
737
743
  ): Promise<{block: Uint8Array; executionOptimistic: boolean; finalized: boolean; slot: Slot} | null> {
738
- const block = this.forkChoice.getBlockHex(root);
744
+ const block = this.forkChoice.getBlockHexDefaultStatus(root);
739
745
  if (block) {
740
746
  // Block found in fork-choice.
741
747
  // It may be in the block input cache, awaiting full DA reconstruction, check there first
@@ -1186,7 +1192,7 @@ export class BeaconChain implements IBeaconChain {
1186
1192
  * @param blockState state that declares justified checkpoint `checkpoint`
1187
1193
  */
1188
1194
  private justifiedBalancesGetter(
1189
- checkpoint: CheckpointWithHex,
1195
+ checkpoint: CheckpointWithPayloadStatus,
1190
1196
  blockState: CachedBeaconStateAllForks
1191
1197
  ): EffectiveBalanceIncrements {
1192
1198
  this.metrics?.balancesCache.requests.inc();
@@ -1225,7 +1231,7 @@ export class BeaconChain implements IBeaconChain {
1225
1231
  * @param blockState state that declares justified checkpoint `checkpoint`
1226
1232
  */
1227
1233
  private closestJustifiedBalancesStateToCheckpoint(
1228
- checkpoint: CheckpointWithHex,
1234
+ checkpoint: CheckpointWithPayloadStatus,
1229
1235
  blockState: CachedBeaconStateAllForks
1230
1236
  ): {state: CachedBeaconStateAllForks; stateId: string; shouldWarn: boolean} {
1231
1237
  const state = this.regen.getCheckpointStateSync(checkpoint);
@@ -1239,7 +1245,10 @@ export class BeaconChain implements IBeaconChain {
1239
1245
  }
1240
1246
 
1241
1247
  // 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)) {
1248
+ for (const descendantBlock of this.forkChoice.forwardIterateDescendants(
1249
+ checkpoint.rootHex,
1250
+ checkpoint.payloadStatus
1251
+ )) {
1243
1252
  if (computeEpochAtSlot(descendantBlock.slot) === checkpoint.epoch) {
1244
1253
  const descendantBlockState = this.regen.getStateSync(descendantBlock.stateRoot);
1245
1254
  if (descendantBlockState) {
@@ -1255,7 +1264,10 @@ export class BeaconChain implements IBeaconChain {
1255
1264
 
1256
1265
  // Find a state in the same branch of checkpoint at a latter epoch. Balances are not the same, but should be close
1257
1266
  // Note: must call .forwardIterateDescendants() again since nodes are not sorted
1258
- for (const descendantBlock of this.forkChoice.forwardIterateDescendants(checkpoint.rootHex)) {
1267
+ for (const descendantBlock of this.forkChoice.forwardIterateDescendants(
1268
+ checkpoint.rootHex,
1269
+ checkpoint.payloadStatus
1270
+ )) {
1259
1271
  if (computeEpochAtSlot(descendantBlock.slot) > checkpoint.epoch) {
1260
1272
  const descendantBlockState = this.regen.getStateSync(descendantBlock.stateRoot);
1261
1273
  if (descendantBlockState) {
@@ -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;
@@ -723,8 +723,7 @@ export function getPayloadAttributesForSSE(
723
723
 
724
724
  let parentBlockNumber: number;
725
725
  if (isForkPostGloas(fork)) {
726
- // TODO GLOAS: revisit this after fork choice changes are merged
727
- const parentBlock = chain.forkChoice.getBlock(parentBlockRoot);
726
+ const parentBlock = chain.forkChoice.getBlockHexAndBlockHash(toRootHex(parentBlockRoot), toRootHex(parentHash));
728
727
  if (parentBlock?.executionPayloadBlockHash == null) {
729
728
  throw Error(`Parent block not found in fork choice root=${toRootHex(parentBlockRoot)}`);
730
729
  }