@lodestar/beacon-node 1.35.0-dev.83de5b8dea → 1.35.0-dev.8689cc3545

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 (849) hide show
  1. package/lib/api/impl/api.d.ts.map +1 -0
  2. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -0
  3. package/lib/api/impl/beacon/blocks/utils.d.ts.map +1 -0
  4. package/lib/api/impl/beacon/index.d.ts.map +1 -0
  5. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -0
  6. package/lib/api/impl/beacon/rewards/index.d.ts.map +1 -0
  7. package/lib/api/impl/beacon/state/index.d.ts.map +1 -0
  8. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -0
  9. package/lib/api/impl/config/constants.d.ts.map +1 -0
  10. package/lib/api/impl/config/index.d.ts.map +1 -0
  11. package/lib/api/impl/debug/index.d.ts.map +1 -0
  12. package/lib/api/impl/errors.d.ts.map +1 -0
  13. package/lib/api/impl/events/index.d.ts.map +1 -0
  14. package/lib/api/impl/index.d.ts.map +1 -0
  15. package/lib/api/impl/lightclient/index.d.ts.map +1 -0
  16. package/lib/api/impl/lodestar/index.d.ts.map +1 -0
  17. package/lib/api/impl/node/index.d.ts.map +1 -0
  18. package/lib/api/impl/node/utils.d.ts.map +1 -0
  19. package/lib/api/impl/proof/index.d.ts.map +1 -0
  20. package/lib/api/impl/types.d.ts.map +1 -0
  21. package/lib/api/impl/utils.d.ts.map +1 -0
  22. package/lib/api/impl/validator/index.d.ts.map +1 -0
  23. package/lib/api/impl/validator/utils.d.ts.map +1 -0
  24. package/lib/api/index.d.ts.map +1 -0
  25. package/lib/api/options.d.ts.map +1 -0
  26. package/lib/api/rest/activeSockets.d.ts.map +1 -0
  27. package/lib/api/rest/base.d.ts.map +1 -0
  28. package/lib/api/rest/index.d.ts.map +1 -0
  29. package/lib/api/rest/swaggerUI.d.ts.map +1 -0
  30. package/lib/bun-wrappers/prometheus-gc-stats.d.ts.map +1 -0
  31. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -0
  32. package/lib/chain/GetBlobsTracker.d.ts.map +1 -0
  33. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -0
  34. package/lib/chain/archiveStore/constants.d.ts.map +1 -0
  35. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -0
  36. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -0
  37. package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +1 -0
  38. package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -0
  39. package/lib/chain/archiveStore/historicalState/worker.d.ts.map +1 -0
  40. package/lib/chain/archiveStore/index.d.ts.map +1 -0
  41. package/lib/chain/archiveStore/interface.d.ts.map +1 -0
  42. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -0
  43. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -0
  44. package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +1 -0
  45. package/lib/chain/archiveStore/utils/updateBackfillRange.d.ts.map +1 -0
  46. package/lib/chain/balancesCache.d.ts.map +1 -0
  47. package/lib/chain/beaconProposerCache.d.ts.map +1 -0
  48. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -0
  49. package/lib/chain/blocks/blockInput/errors.d.ts.map +1 -0
  50. package/lib/chain/blocks/blockInput/index.d.ts.map +1 -0
  51. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -0
  52. package/lib/chain/blocks/blockInput/utils.d.ts.map +1 -0
  53. package/lib/chain/blocks/importBlock.d.ts.map +1 -0
  54. package/lib/chain/blocks/index.d.ts.map +1 -0
  55. package/lib/chain/blocks/types.d.ts.map +1 -0
  56. package/lib/chain/blocks/utils/blowfishBanner.d.ts.map +1 -0
  57. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -0
  58. package/lib/chain/blocks/utils/checkpoint.d.ts.map +1 -0
  59. package/lib/chain/blocks/utils/giraffeBanner.d.ts.map +1 -0
  60. package/lib/chain/blocks/utils/ownBanner.d.ts.map +1 -0
  61. package/lib/chain/blocks/utils/pandaMergeTransitionBanner.d.ts.map +1 -0
  62. package/lib/chain/blocks/utils/zebraBanner.d.ts.map +1 -0
  63. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -0
  64. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -0
  65. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -0
  66. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -0
  67. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -0
  68. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -0
  69. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -0
  70. package/lib/chain/bls/index.d.ts.map +1 -0
  71. package/lib/chain/bls/interface.d.ts.map +1 -0
  72. package/lib/chain/bls/maybeBatch.d.ts.map +1 -0
  73. package/lib/chain/bls/multithread/index.d.ts.map +1 -0
  74. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -0
  75. package/lib/chain/bls/multithread/poolSize.d.ts.map +1 -0
  76. package/lib/chain/bls/multithread/types.d.ts.map +1 -0
  77. package/lib/chain/bls/multithread/utils.d.ts.map +1 -0
  78. package/lib/chain/bls/multithread/worker.d.ts.map +1 -0
  79. package/lib/chain/bls/singleThread.d.ts.map +1 -0
  80. package/lib/chain/bls/utils.d.ts.map +1 -0
  81. package/lib/chain/chain.d.ts.map +1 -0
  82. package/lib/chain/emitter.d.ts.map +1 -0
  83. package/lib/chain/errors/attestationError.d.ts.map +1 -0
  84. package/lib/chain/errors/attesterSlashingError.d.ts.map +1 -0
  85. package/lib/chain/errors/blobSidecarError.d.ts.map +1 -0
  86. package/lib/chain/errors/blockError.d.ts.map +1 -0
  87. package/lib/chain/errors/blsToExecutionChangeError.d.ts.map +1 -0
  88. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -0
  89. package/lib/chain/errors/gossipValidation.d.ts.map +1 -0
  90. package/lib/chain/errors/index.d.ts.map +1 -0
  91. package/lib/chain/errors/lightClientError.d.ts.map +1 -0
  92. package/lib/chain/errors/proposerSlashingError.d.ts.map +1 -0
  93. package/lib/chain/errors/syncCommitteeError.d.ts.map +1 -0
  94. package/lib/chain/errors/voluntaryExitError.d.ts.map +1 -0
  95. package/lib/chain/forkChoice/index.d.ts.map +1 -0
  96. package/lib/chain/genesis/genesis.d.ts.map +1 -0
  97. package/lib/chain/genesis/interface.d.ts.map +1 -0
  98. package/lib/chain/index.d.ts.map +1 -0
  99. package/lib/chain/initState.d.ts.map +1 -0
  100. package/lib/chain/interface.d.ts.map +1 -0
  101. package/lib/chain/lightClient/index.d.ts.map +1 -0
  102. package/lib/chain/lightClient/proofs.d.ts.map +1 -0
  103. package/lib/chain/lightClient/types.d.ts.map +1 -0
  104. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -0
  105. package/lib/chain/opPools/attestationPool.d.ts.map +1 -0
  106. package/lib/chain/opPools/index.d.ts.map +1 -0
  107. package/lib/chain/opPools/opPool.d.ts.map +1 -0
  108. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -0
  109. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -0
  110. package/lib/chain/opPools/types.d.ts.map +1 -0
  111. package/lib/chain/opPools/utils.d.ts.map +1 -0
  112. package/lib/chain/options.d.ts.map +1 -0
  113. package/lib/chain/prepareNextSlot.d.ts.map +1 -0
  114. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -0
  115. package/lib/chain/produceBlock/index.d.ts.map +1 -0
  116. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -0
  117. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts.map +1 -0
  118. package/lib/chain/regen/errors.d.ts.map +1 -0
  119. package/lib/chain/regen/index.d.ts.map +1 -0
  120. package/lib/chain/regen/interface.d.ts.map +1 -0
  121. package/lib/chain/regen/queued.d.ts.map +1 -0
  122. package/lib/chain/regen/regen.d.ts.map +1 -0
  123. package/lib/chain/reprocess.d.ts.map +1 -0
  124. package/lib/chain/rewards/attestationsRewards.d.ts.map +1 -0
  125. package/lib/chain/rewards/blockRewards.d.ts.map +1 -0
  126. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +1 -0
  127. package/lib/chain/seenCache/index.d.ts.map +1 -0
  128. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -0
  129. package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -0
  130. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -0
  131. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -0
  132. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -0
  133. package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -0
  134. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -0
  135. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -0
  136. package/lib/chain/serializeState.d.ts.map +1 -0
  137. package/lib/chain/shufflingCache.d.ts.map +1 -0
  138. package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +1 -0
  139. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -0
  140. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -0
  141. package/lib/chain/stateCache/datastore/index.d.ts.map +1 -0
  142. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -0
  143. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -0
  144. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +1 -0
  145. package/lib/chain/stateCache/index.d.ts.map +1 -0
  146. package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -0
  147. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -0
  148. package/lib/chain/stateCache/types.d.ts.map +1 -0
  149. package/lib/chain/validation/aggregateAndProof.d.ts.map +1 -0
  150. package/lib/chain/validation/attestation.d.ts.map +1 -0
  151. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -0
  152. package/lib/chain/validation/blobSidecar.d.ts.map +1 -0
  153. package/lib/chain/validation/block.d.ts.map +1 -0
  154. package/lib/chain/validation/blsToExecutionChange.d.ts.map +1 -0
  155. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -0
  156. package/lib/chain/validation/index.d.ts.map +1 -0
  157. package/lib/chain/validation/lightClientFinalityUpdate.d.ts.map +1 -0
  158. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +1 -0
  159. package/lib/chain/validation/proposerSlashing.d.ts.map +1 -0
  160. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +1 -0
  161. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -0
  162. package/lib/chain/validation/signatureSets/index.d.ts.map +1 -0
  163. package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +1 -0
  164. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -0
  165. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -0
  166. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -0
  167. package/lib/chain/validation/syncCommittee.d.ts.map +1 -0
  168. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -0
  169. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -0
  170. package/lib/chain/validatorMonitor.d.ts.map +1 -0
  171. package/lib/constants/constants.d.ts.map +1 -0
  172. package/lib/constants/index.d.ts.map +1 -0
  173. package/lib/constants/network.d.ts.map +1 -0
  174. package/lib/db/beacon.d.ts.map +1 -0
  175. package/lib/db/buckets.d.ts.map +1 -0
  176. package/lib/db/index.d.ts.map +1 -0
  177. package/lib/db/interface.d.ts.map +1 -0
  178. package/lib/db/options.d.ts.map +1 -0
  179. package/lib/db/repositories/attesterSlashing.d.ts.map +1 -0
  180. package/lib/db/repositories/backfilledRanges.d.ts.map +1 -0
  181. package/lib/db/repositories/blobSidecars.d.ts.map +1 -0
  182. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -0
  183. package/lib/db/repositories/block.d.ts.map +1 -0
  184. package/lib/db/repositories/blockArchive.d.ts.map +1 -0
  185. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -0
  186. package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -0
  187. package/lib/db/repositories/checkpointState.d.ts.map +1 -0
  188. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -0
  189. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -0
  190. package/lib/db/repositories/depositDataRoot.d.ts.map +1 -0
  191. package/lib/db/repositories/depositEvent.d.ts.map +1 -0
  192. package/lib/db/repositories/eth1Data.d.ts.map +1 -0
  193. package/lib/db/repositories/index.d.ts.map +1 -0
  194. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +1 -0
  195. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +1 -0
  196. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +1 -0
  197. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -0
  198. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -0
  199. package/lib/db/repositories/stateArchive.d.ts.map +1 -0
  200. package/lib/db/repositories/stateArchiveIndex.d.ts.map +1 -0
  201. package/lib/db/repositories/voluntaryExit.d.ts.map +1 -0
  202. package/lib/db/single/index.d.ts.map +1 -0
  203. package/lib/db/single/preGenesisState.d.ts.map +1 -0
  204. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +1 -0
  205. package/lib/eth1/errors.d.ts.map +1 -0
  206. package/lib/eth1/eth1DataCache.d.ts.map +1 -0
  207. package/lib/eth1/eth1DepositDataTracker.d.ts.map +1 -0
  208. package/lib/eth1/eth1DepositsCache.d.ts.map +1 -0
  209. package/lib/eth1/eth1MergeBlockTracker.d.ts.map +1 -0
  210. package/lib/eth1/index.d.ts.map +1 -0
  211. package/lib/eth1/interface.d.ts.map +1 -0
  212. package/lib/eth1/options.d.ts.map +1 -0
  213. package/lib/eth1/provider/eth1Provider.d.ts.map +1 -0
  214. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +1 -0
  215. package/lib/eth1/provider/jwt.d.ts.map +1 -0
  216. package/lib/eth1/provider/utils.d.ts.map +1 -0
  217. package/lib/eth1/stream.d.ts.map +1 -0
  218. package/lib/eth1/utils/depositContract.d.ts.map +1 -0
  219. package/lib/eth1/utils/deposits.d.ts.map +1 -0
  220. package/lib/eth1/utils/eth1Data.d.ts.map +1 -0
  221. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +1 -0
  222. package/lib/eth1/utils/eth1Vote.d.ts.map +1 -0
  223. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +1 -0
  224. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +1 -0
  225. package/lib/execution/builder/cache.d.ts.map +1 -0
  226. package/lib/execution/builder/http.d.ts.map +1 -0
  227. package/lib/execution/builder/index.d.ts.map +1 -0
  228. package/lib/execution/builder/interface.d.ts.map +1 -0
  229. package/lib/execution/builder/utils.d.ts.map +1 -0
  230. package/lib/execution/engine/disabled.d.ts.map +1 -0
  231. package/lib/execution/engine/http.d.ts.map +1 -0
  232. package/lib/execution/engine/index.d.ts.map +1 -0
  233. package/lib/execution/engine/interface.d.ts.map +1 -0
  234. package/lib/execution/engine/mock.d.ts.map +1 -0
  235. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -0
  236. package/lib/execution/engine/types.d.ts.map +1 -0
  237. package/lib/execution/engine/utils.d.ts.map +1 -0
  238. package/lib/execution/index.d.ts.map +1 -0
  239. package/lib/index.d.ts.map +1 -0
  240. package/lib/metrics/index.d.ts.map +1 -0
  241. package/lib/metrics/metrics/beacon.d.ts.map +1 -0
  242. package/lib/metrics/metrics/lodestar.d.ts.map +1 -0
  243. package/lib/metrics/metrics.d.ts.map +1 -0
  244. package/lib/metrics/nodeJsMetrics.d.ts.map +1 -0
  245. package/lib/metrics/options.d.ts.map +1 -0
  246. package/lib/metrics/server/http.d.ts.map +1 -0
  247. package/lib/metrics/server/index.d.ts.map +1 -0
  248. package/lib/metrics/utils/avgMinMax.d.ts.map +1 -0
  249. package/lib/metrics/utils/gauge.d.ts.map +1 -0
  250. package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -0
  251. package/lib/monitoring/clientStats.d.ts.map +1 -0
  252. package/lib/monitoring/index.d.ts.map +1 -0
  253. package/lib/monitoring/options.d.ts.map +1 -0
  254. package/lib/monitoring/properties.d.ts.map +1 -0
  255. package/lib/monitoring/service.d.ts.map +1 -0
  256. package/lib/monitoring/system.d.ts.map +1 -0
  257. package/lib/monitoring/types.d.ts.map +1 -0
  258. package/lib/network/core/events.d.ts.map +1 -0
  259. package/lib/network/core/index.d.ts.map +1 -0
  260. package/lib/network/core/metrics.d.ts.map +1 -0
  261. package/lib/network/core/networkCore.d.ts.map +1 -0
  262. package/lib/network/core/networkCoreWorker.d.ts.map +1 -0
  263. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -0
  264. package/lib/network/core/types.d.ts.map +1 -0
  265. package/lib/network/discv5/index.d.ts.map +1 -0
  266. package/lib/network/discv5/types.d.ts.map +1 -0
  267. package/lib/network/discv5/utils.d.ts.map +1 -0
  268. package/lib/network/discv5/worker.d.ts.map +1 -0
  269. package/lib/network/events.d.ts.map +1 -0
  270. package/lib/network/forks.d.ts.map +1 -0
  271. package/lib/network/gossip/constants.d.ts.map +1 -0
  272. package/lib/network/gossip/encoding.d.ts.map +1 -0
  273. package/lib/network/gossip/errors.d.ts.map +1 -0
  274. package/lib/network/gossip/gossipsub.d.ts.map +1 -0
  275. package/lib/network/gossip/index.d.ts.map +1 -0
  276. package/lib/network/gossip/interface.d.ts.map +1 -0
  277. package/lib/network/gossip/metrics.d.ts.map +1 -0
  278. package/lib/network/gossip/scoringParameters.d.ts.map +1 -0
  279. package/lib/network/gossip/topic.d.ts.map +1 -0
  280. package/lib/network/index.d.ts.map +1 -0
  281. package/lib/network/interface.d.ts.map +1 -0
  282. package/lib/network/libp2p/error.d.ts.map +1 -0
  283. package/lib/network/libp2p/index.d.ts.map +1 -0
  284. package/lib/network/metadata.d.ts.map +1 -0
  285. package/lib/network/network.d.ts.map +1 -0
  286. package/lib/network/networkConfig.d.ts.map +1 -0
  287. package/lib/network/options.d.ts.map +1 -0
  288. package/lib/network/peers/client.d.ts.map +1 -0
  289. package/lib/network/peers/datastore.d.ts.map +1 -0
  290. package/lib/network/peers/discover.d.ts.map +1 -0
  291. package/lib/network/peers/index.d.ts.map +1 -0
  292. package/lib/network/peers/peerManager.d.ts.map +1 -0
  293. package/lib/network/peers/peersData.d.ts.map +1 -0
  294. package/lib/network/peers/score/constants.d.ts.map +1 -0
  295. package/lib/network/peers/score/index.d.ts.map +1 -0
  296. package/lib/network/peers/score/interface.d.ts.map +1 -0
  297. package/lib/network/peers/score/score.d.ts.map +1 -0
  298. package/lib/network/peers/score/store.d.ts.map +1 -0
  299. package/lib/network/peers/score/utils.d.ts.map +1 -0
  300. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -0
  301. package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +1 -0
  302. package/lib/network/peers/utils/getConnectedPeerIds.d.ts.map +1 -0
  303. package/lib/network/peers/utils/index.d.ts.map +1 -0
  304. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -0
  305. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -0
  306. package/lib/network/processor/aggregatorTracker.d.ts.map +1 -0
  307. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -0
  308. package/lib/network/processor/gossipHandlers.d.ts.map +1 -0
  309. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -0
  310. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -0
  311. package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -0
  312. package/lib/network/processor/gossipQueues/types.d.ts.map +1 -0
  313. package/lib/network/processor/gossipValidatorFn.d.ts.map +1 -0
  314. package/lib/network/processor/index.d.ts.map +1 -0
  315. package/lib/network/processor/types.d.ts.map +1 -0
  316. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -0
  317. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -0
  318. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +1 -0
  319. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -0
  320. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +1 -0
  321. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -0
  322. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -0
  323. package/lib/network/reqresp/handlers/index.d.ts.map +1 -0
  324. package/lib/network/reqresp/handlers/lightClientBootstrap.d.ts.map +1 -0
  325. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.d.ts.map +1 -0
  326. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.d.ts.map +1 -0
  327. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +1 -0
  328. package/lib/network/reqresp/index.d.ts.map +1 -0
  329. package/lib/network/reqresp/interface.d.ts.map +1 -0
  330. package/lib/network/reqresp/protocols.d.ts.map +1 -0
  331. package/lib/network/reqresp/rateLimit.d.ts.map +1 -0
  332. package/lib/network/reqresp/score.d.ts.map +1 -0
  333. package/lib/network/reqresp/types.d.ts.map +1 -0
  334. package/lib/network/reqresp/utils/collect.d.ts.map +1 -0
  335. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts.map +1 -0
  336. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -0
  337. package/lib/network/statusCache.d.ts.map +1 -0
  338. package/lib/network/subnets/attnetsService.d.ts.map +1 -0
  339. package/lib/network/subnets/index.d.ts.map +1 -0
  340. package/lib/network/subnets/interface.d.ts.map +1 -0
  341. package/lib/network/subnets/syncnetsService.d.ts.map +1 -0
  342. package/lib/network/subnets/util.d.ts.map +1 -0
  343. package/lib/network/util.d.ts.map +1 -0
  344. package/lib/node/index.d.ts.map +1 -0
  345. package/lib/node/nodejs.d.ts.map +1 -0
  346. package/lib/node/notifier.d.ts.map +1 -0
  347. package/lib/node/options.d.ts.map +1 -0
  348. package/lib/node/utils/interop/deposits.d.ts.map +1 -0
  349. package/lib/node/utils/interop/state.d.ts.map +1 -0
  350. package/lib/node/utils/lightclient.d.ts.map +1 -0
  351. package/lib/node/utils/state.d.ts.map +1 -0
  352. package/lib/sync/backfill/backfill.d.ts.map +1 -0
  353. package/lib/sync/backfill/errors.d.ts.map +1 -0
  354. package/lib/sync/backfill/index.d.ts.map +1 -0
  355. package/lib/sync/backfill/verify.d.ts.map +1 -0
  356. package/lib/sync/constants.d.ts.map +1 -0
  357. package/lib/sync/index.d.ts.map +1 -0
  358. package/lib/sync/interface.d.ts.map +1 -0
  359. package/lib/sync/options.d.ts.map +1 -0
  360. package/lib/sync/range/batch.d.ts.map +1 -0
  361. package/lib/sync/range/chain.d.ts.map +1 -0
  362. package/lib/sync/range/range.d.ts.map +1 -0
  363. package/lib/sync/range/utils/batches.d.ts.map +1 -0
  364. package/lib/sync/range/utils/chainTarget.d.ts.map +1 -0
  365. package/lib/sync/range/utils/hashBlocks.d.ts.map +1 -0
  366. package/lib/sync/range/utils/index.d.ts.map +1 -0
  367. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -0
  368. package/lib/sync/range/utils/updateChains.d.ts.map +1 -0
  369. package/lib/sync/sync.d.ts.map +1 -0
  370. package/lib/sync/types.d.ts.map +1 -0
  371. package/lib/sync/unknownBlock.d.ts.map +1 -0
  372. package/lib/sync/utils/downloadByRange.d.ts.map +1 -0
  373. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -0
  374. package/lib/sync/utils/pendingBlocksTree.d.ts.map +1 -0
  375. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -0
  376. package/lib/util/address.d.ts.map +1 -0
  377. package/lib/util/array.d.ts.map +1 -0
  378. package/lib/util/asyncIterableToEvents.d.ts.map +1 -0
  379. package/lib/util/binarySearch.d.ts.map +1 -0
  380. package/lib/util/bitArray.d.ts.map +1 -0
  381. package/lib/util/blobs.d.ts.map +1 -0
  382. package/lib/util/blobs.js +5 -3
  383. package/lib/util/blobs.js.map +1 -1
  384. package/lib/util/bufferPool.d.ts.map +1 -0
  385. package/lib/util/bytes.d.ts.map +1 -0
  386. package/lib/util/chunkify.d.ts.map +1 -0
  387. package/lib/util/clock.d.ts.map +1 -0
  388. package/lib/util/dataColumns.d.ts.map +1 -0
  389. package/lib/util/dependentRoot.d.ts.map +1 -0
  390. package/lib/util/enum.d.ts.map +1 -0
  391. package/lib/util/error.d.ts.map +1 -0
  392. package/lib/util/eventLoop.d.ts.map +1 -0
  393. package/lib/util/execution.d.ts.map +1 -0
  394. package/lib/util/file.d.ts.map +1 -0
  395. package/lib/util/forkChoice.d.ts.map +1 -0
  396. package/lib/util/forkName.d.ts.map +1 -0
  397. package/lib/util/graffiti.d.ts.map +1 -0
  398. package/lib/util/hex.d.ts.map +1 -0
  399. package/lib/util/index.d.ts.map +1 -0
  400. package/lib/util/ip.d.ts.map +1 -0
  401. package/lib/util/itTrigger.d.ts.map +1 -0
  402. package/lib/util/kzg.d.ts.map +1 -0
  403. package/lib/util/map.d.ts.map +1 -0
  404. package/lib/util/metadata.d.ts.map +1 -0
  405. package/lib/util/multifork.d.ts.map +1 -0
  406. package/lib/util/numpy.d.ts.map +1 -0
  407. package/lib/util/peerId.d.ts.map +1 -0
  408. package/lib/util/profile.d.ts.map +1 -0
  409. package/lib/util/promises.d.ts.map +1 -0
  410. package/lib/util/queue/errors.d.ts.map +1 -0
  411. package/lib/util/queue/fnQueue.d.ts.map +1 -0
  412. package/lib/util/queue/index.d.ts.map +1 -0
  413. package/lib/util/queue/itemQueue.d.ts.map +1 -0
  414. package/lib/util/queue/options.d.ts.map +1 -0
  415. package/lib/util/serializedCache.d.ts.map +1 -0
  416. package/lib/util/set.d.ts.map +1 -0
  417. package/lib/util/shuffle.d.ts.map +1 -0
  418. package/lib/util/sortBy.d.ts.map +1 -0
  419. package/lib/util/sszBytes.d.ts.map +1 -0
  420. package/lib/util/strictEvents.d.ts.map +1 -0
  421. package/lib/util/time.d.ts.map +1 -0
  422. package/lib/util/timeSeries.d.ts.map +1 -0
  423. package/lib/util/types.d.ts.map +1 -0
  424. package/lib/util/workerEvents.d.ts.map +1 -0
  425. package/lib/util/wrapError.d.ts.map +1 -0
  426. package/package.json +17 -19
  427. package/src/api/impl/api.ts +26 -0
  428. package/src/api/impl/beacon/blocks/index.ts +744 -0
  429. package/src/api/impl/beacon/blocks/utils.ts +75 -0
  430. package/src/api/impl/beacon/index.ts +35 -0
  431. package/src/api/impl/beacon/pool/index.ts +314 -0
  432. package/src/api/impl/beacon/rewards/index.ts +30 -0
  433. package/src/api/impl/beacon/state/index.ts +406 -0
  434. package/src/api/impl/beacon/state/utils.ts +189 -0
  435. package/src/api/impl/config/constants.ts +127 -0
  436. package/src/api/impl/config/index.ts +59 -0
  437. package/src/api/impl/debug/index.ts +131 -0
  438. package/src/api/impl/errors.ts +50 -0
  439. package/src/api/impl/events/index.ts +33 -0
  440. package/src/api/impl/index.ts +6 -0
  441. package/src/api/impl/lightclient/index.ts +64 -0
  442. package/src/api/impl/lodestar/index.ts +257 -0
  443. package/src/api/impl/node/index.ts +88 -0
  444. package/src/api/impl/node/utils.ts +51 -0
  445. package/src/api/impl/proof/index.ts +60 -0
  446. package/src/api/impl/types.ts +17 -0
  447. package/src/api/impl/utils.ts +25 -0
  448. package/src/api/impl/validator/index.ts +1538 -0
  449. package/src/api/impl/validator/utils.ts +85 -0
  450. package/src/api/index.ts +2 -0
  451. package/src/api/options.ts +16 -0
  452. package/src/api/rest/activeSockets.ts +109 -0
  453. package/src/api/rest/base.ts +216 -0
  454. package/src/api/rest/index.ts +63 -0
  455. package/src/api/rest/swaggerUI.ts +80 -0
  456. package/src/bun-wrappers/prometheus-gc-stats.ts +7 -0
  457. package/src/chain/ColumnReconstructionTracker.ts +90 -0
  458. package/src/chain/GetBlobsTracker.ts +115 -0
  459. package/src/chain/archiveStore/archiveStore.ts +222 -0
  460. package/src/chain/archiveStore/constants.ts +5 -0
  461. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +116 -0
  462. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +68 -0
  463. package/src/chain/archiveStore/historicalState/metrics.ts +214 -0
  464. package/src/chain/archiveStore/historicalState/types.ts +41 -0
  465. package/src/chain/archiveStore/historicalState/worker.ts +77 -0
  466. package/src/chain/archiveStore/index.ts +3 -0
  467. package/src/chain/archiveStore/interface.ts +75 -0
  468. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +138 -0
  469. package/src/chain/archiveStore/utils/archiveBlocks.ts +437 -0
  470. package/src/chain/archiveStore/utils/pruneHistory.ts +56 -0
  471. package/src/chain/archiveStore/utils/updateBackfillRange.ts +50 -0
  472. package/src/chain/balancesCache.ts +52 -0
  473. package/src/chain/beaconProposerCache.ts +43 -0
  474. package/src/chain/blocks/blockInput/blockInput.ts +851 -0
  475. package/src/chain/blocks/blockInput/errors.ts +48 -0
  476. package/src/chain/blocks/blockInput/index.ts +4 -0
  477. package/src/chain/blocks/blockInput/types.ts +145 -0
  478. package/src/chain/blocks/blockInput/utils.ts +21 -0
  479. package/src/chain/blocks/importBlock.ts +603 -0
  480. package/src/chain/blocks/index.ts +179 -0
  481. package/src/chain/blocks/types.ts +101 -0
  482. package/src/chain/blocks/utils/blowfishBanner.ts +28 -0
  483. package/src/chain/blocks/utils/chainSegment.ts +29 -0
  484. package/src/chain/blocks/utils/checkpoint.ts +25 -0
  485. package/src/chain/blocks/utils/giraffeBanner.ts +30 -0
  486. package/src/chain/blocks/utils/ownBanner.ts +20 -0
  487. package/src/chain/blocks/utils/pandaMergeTransitionBanner.ts +43 -0
  488. package/src/chain/blocks/utils/zebraBanner.ts +45 -0
  489. package/src/chain/blocks/verifyBlock.ts +242 -0
  490. package/src/chain/blocks/verifyBlocksDataAvailability.ts +34 -0
  491. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +438 -0
  492. package/src/chain/blocks/verifyBlocksSanityChecks.ts +129 -0
  493. package/src/chain/blocks/verifyBlocksSignatures.ts +105 -0
  494. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +114 -0
  495. package/src/chain/blocks/writeBlockInputToDb.ts +128 -0
  496. package/src/chain/bls/index.ts +4 -0
  497. package/src/chain/bls/interface.ts +68 -0
  498. package/src/chain/bls/maybeBatch.ts +45 -0
  499. package/src/chain/bls/multithread/index.ts +582 -0
  500. package/src/chain/bls/multithread/jobItem.ts +119 -0
  501. package/src/chain/bls/multithread/poolSize.ts +16 -0
  502. package/src/chain/bls/multithread/types.ts +38 -0
  503. package/src/chain/bls/multithread/utils.ts +19 -0
  504. package/src/chain/bls/multithread/worker.ts +114 -0
  505. package/src/chain/bls/singleThread.ts +87 -0
  506. package/src/chain/bls/utils.ts +30 -0
  507. package/src/chain/chain.ts +1365 -0
  508. package/src/chain/emitter.ts +113 -0
  509. package/src/chain/errors/attestationError.ts +194 -0
  510. package/src/chain/errors/attesterSlashingError.ts +11 -0
  511. package/src/chain/errors/blobSidecarError.ts +60 -0
  512. package/src/chain/errors/blockError.ts +166 -0
  513. package/src/chain/errors/blsToExecutionChangeError.ts +13 -0
  514. package/src/chain/errors/dataColumnSidecarError.ts +80 -0
  515. package/src/chain/errors/gossipValidation.ts +20 -0
  516. package/src/chain/errors/index.ts +10 -0
  517. package/src/chain/errors/lightClientError.ts +30 -0
  518. package/src/chain/errors/proposerSlashingError.ts +11 -0
  519. package/src/chain/errors/syncCommitteeError.ts +36 -0
  520. package/src/chain/errors/voluntaryExitError.ts +13 -0
  521. package/src/chain/forkChoice/index.ts +112 -0
  522. package/src/chain/genesis/genesis.ts +190 -0
  523. package/src/chain/genesis/interface.ts +14 -0
  524. package/src/chain/index.ts +6 -0
  525. package/src/chain/initState.ts +221 -0
  526. package/src/chain/interface.ts +280 -0
  527. package/src/chain/lightClient/index.ts +764 -0
  528. package/src/chain/lightClient/proofs.ts +85 -0
  529. package/src/chain/lightClient/types.ts +33 -0
  530. package/src/chain/opPools/aggregatedAttestationPool.ts +1063 -0
  531. package/src/chain/opPools/attestationPool.ts +283 -0
  532. package/src/chain/opPools/index.ts +5 -0
  533. package/src/chain/opPools/opPool.ts +462 -0
  534. package/src/chain/opPools/syncCommitteeMessagePool.ts +167 -0
  535. package/src/chain/opPools/syncContributionAndProofPool.ts +240 -0
  536. package/src/chain/opPools/types.ts +35 -0
  537. package/src/chain/opPools/utils.ts +65 -0
  538. package/src/chain/options.ts +138 -0
  539. package/src/chain/prepareNextSlot.ts +277 -0
  540. package/src/chain/produceBlock/computeNewStateRoot.ts +55 -0
  541. package/src/chain/produceBlock/index.ts +2 -0
  542. package/src/chain/produceBlock/produceBlockBody.ts +797 -0
  543. package/src/chain/produceBlock/validateBlobsAndKzgCommitments.ts +54 -0
  544. package/src/chain/regen/errors.ts +30 -0
  545. package/src/chain/regen/index.ts +4 -0
  546. package/src/chain/regen/interface.ts +93 -0
  547. package/src/chain/regen/queued.ts +317 -0
  548. package/src/chain/regen/regen.ts +424 -0
  549. package/src/chain/reprocess.ts +161 -0
  550. package/src/chain/rewards/attestationsRewards.ts +196 -0
  551. package/src/chain/rewards/blockRewards.ts +150 -0
  552. package/src/chain/rewards/syncCommitteeRewards.ts +58 -0
  553. package/src/chain/seenCache/index.ts +5 -0
  554. package/src/chain/seenCache/seenAggregateAndProof.ts +120 -0
  555. package/src/chain/seenCache/seenAttestationData.ts +145 -0
  556. package/src/chain/seenCache/seenAttesters.ts +58 -0
  557. package/src/chain/seenCache/seenBlockAttesters.ts +18 -0
  558. package/src/chain/seenCache/seenBlockProposers.ts +48 -0
  559. package/src/chain/seenCache/seenCommittee.ts +43 -0
  560. package/src/chain/seenCache/seenCommitteeContribution.ts +104 -0
  561. package/src/chain/seenCache/seenGossipBlockInput.ts +373 -0
  562. package/src/chain/serializeState.ts +32 -0
  563. package/src/chain/shufflingCache.ts +238 -0
  564. package/src/chain/stateCache/blockStateCacheImpl.ts +150 -0
  565. package/src/chain/stateCache/datastore/db.ts +36 -0
  566. package/src/chain/stateCache/datastore/file.ts +53 -0
  567. package/src/chain/stateCache/datastore/index.ts +2 -0
  568. package/src/chain/stateCache/datastore/types.ts +13 -0
  569. package/src/chain/stateCache/fifoBlockStateCache.ts +208 -0
  570. package/src/chain/stateCache/inMemoryCheckpointsCache.ts +198 -0
  571. package/src/chain/stateCache/index.ts +3 -0
  572. package/src/chain/stateCache/mapMetrics.ts +52 -0
  573. package/src/chain/stateCache/persistentCheckpointsCache.ts +835 -0
  574. package/src/chain/stateCache/types.ts +86 -0
  575. package/src/chain/validation/aggregateAndProof.ts +258 -0
  576. package/src/chain/validation/attestation.ts +885 -0
  577. package/src/chain/validation/attesterSlashing.ts +61 -0
  578. package/src/chain/validation/blobSidecar.ts +301 -0
  579. package/src/chain/validation/block.ts +188 -0
  580. package/src/chain/validation/blsToExecutionChange.ts +61 -0
  581. package/src/chain/validation/dataColumnSidecar.ts +381 -0
  582. package/src/chain/validation/index.ts +9 -0
  583. package/src/chain/validation/lightClientFinalityUpdate.ts +45 -0
  584. package/src/chain/validation/lightClientOptimisticUpdate.ts +67 -0
  585. package/src/chain/validation/proposerSlashing.ts +54 -0
  586. package/src/chain/validation/signatureSets/aggregateAndProof.ts +38 -0
  587. package/src/chain/validation/signatureSets/contributionAndProof.ts +27 -0
  588. package/src/chain/validation/signatureSets/index.ts +6 -0
  589. package/src/chain/validation/signatureSets/selectionProof.ts +27 -0
  590. package/src/chain/validation/signatureSets/syncCommittee.ts +22 -0
  591. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +18 -0
  592. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +27 -0
  593. package/src/chain/validation/syncCommittee.ts +165 -0
  594. package/src/chain/validation/syncCommitteeContributionAndProof.ts +122 -0
  595. package/src/chain/validation/voluntaryExit.ts +58 -0
  596. package/src/chain/validatorMonitor.ts +1299 -0
  597. package/src/constants/constants.ts +15 -0
  598. package/src/constants/index.ts +2 -0
  599. package/src/constants/network.ts +52 -0
  600. package/src/db/beacon.ts +113 -0
  601. package/src/db/buckets.ts +80 -0
  602. package/src/db/index.ts +2 -0
  603. package/src/db/interface.ts +76 -0
  604. package/src/db/options.ts +7 -0
  605. package/src/db/repositories/attesterSlashing.ts +38 -0
  606. package/src/db/repositories/backfilledRanges.ts +29 -0
  607. package/src/db/repositories/blobSidecars.ts +37 -0
  608. package/src/db/repositories/blobSidecarsArchive.ts +28 -0
  609. package/src/db/repositories/block.ts +33 -0
  610. package/src/db/repositories/blockArchive.ts +170 -0
  611. package/src/db/repositories/blockArchiveIndex.ts +45 -0
  612. package/src/db/repositories/blsToExecutionChange.ts +16 -0
  613. package/src/db/repositories/checkpointState.ts +31 -0
  614. package/src/db/repositories/dataColumnSidecar.ts +49 -0
  615. package/src/db/repositories/dataColumnSidecarArchive.ts +56 -0
  616. package/src/db/repositories/depositDataRoot.ts +80 -0
  617. package/src/db/repositories/depositEvent.ts +32 -0
  618. package/src/db/repositories/eth1Data.ts +33 -0
  619. package/src/db/repositories/index.ts +20 -0
  620. package/src/db/repositories/lightclientBestUpdate.ts +41 -0
  621. package/src/db/repositories/lightclientCheckpointHeader.ts +32 -0
  622. package/src/db/repositories/lightclientSyncCommittee.ts +16 -0
  623. package/src/db/repositories/lightclientSyncCommitteeWitness.ts +77 -0
  624. package/src/db/repositories/proposerSlashing.ts +15 -0
  625. package/src/db/repositories/stateArchive.ts +69 -0
  626. package/src/db/repositories/stateArchiveIndex.ts +18 -0
  627. package/src/db/repositories/voluntaryExit.ts +15 -0
  628. package/src/db/single/index.ts +2 -0
  629. package/src/db/single/preGenesisState.ts +37 -0
  630. package/src/db/single/preGenesisStateLastProcessedBlock.ts +34 -0
  631. package/src/eth1/errors.ts +40 -0
  632. package/src/eth1/eth1DataCache.ts +26 -0
  633. package/src/eth1/eth1DepositDataTracker.ts +410 -0
  634. package/src/eth1/eth1DepositsCache.ts +141 -0
  635. package/src/eth1/eth1MergeBlockTracker.ts +328 -0
  636. package/src/eth1/index.ts +157 -0
  637. package/src/eth1/interface.ts +131 -0
  638. package/src/eth1/options.ts +28 -0
  639. package/src/eth1/provider/eth1Provider.ts +229 -0
  640. package/src/eth1/provider/jsonRpcHttpClient.ts +390 -0
  641. package/src/eth1/provider/jwt.ts +36 -0
  642. package/src/eth1/provider/utils.ts +136 -0
  643. package/src/eth1/stream.ts +75 -0
  644. package/src/eth1/utils/depositContract.ts +37 -0
  645. package/src/eth1/utils/deposits.ts +70 -0
  646. package/src/eth1/utils/eth1Data.ts +100 -0
  647. package/src/eth1/utils/eth1DepositEvent.ts +12 -0
  648. package/src/eth1/utils/eth1Vote.ts +142 -0
  649. package/src/eth1/utils/groupDepositEventsByBlock.ts +19 -0
  650. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +18 -0
  651. package/src/execution/builder/cache.ts +39 -0
  652. package/src/execution/builder/http.ts +229 -0
  653. package/src/execution/builder/index.ts +27 -0
  654. package/src/execution/builder/interface.ts +49 -0
  655. package/src/execution/builder/utils.ts +19 -0
  656. package/src/execution/engine/disabled.ts +35 -0
  657. package/src/execution/engine/http.ts +644 -0
  658. package/src/execution/engine/index.ts +63 -0
  659. package/src/execution/engine/interface.ts +199 -0
  660. package/src/execution/engine/mock.ts +493 -0
  661. package/src/execution/engine/payloadIdCache.ts +54 -0
  662. package/src/execution/engine/types.ts +640 -0
  663. package/src/execution/engine/utils.ts +136 -0
  664. package/src/execution/index.ts +4 -0
  665. package/src/index.ts +20 -0
  666. package/src/metrics/index.ts +4 -0
  667. package/src/metrics/metrics/beacon.ts +390 -0
  668. package/src/metrics/metrics/lodestar.ts +1870 -0
  669. package/src/metrics/metrics.ts +43 -0
  670. package/src/metrics/nodeJsMetrics.ts +19 -0
  671. package/src/metrics/options.ts +22 -0
  672. package/src/metrics/server/http.ts +114 -0
  673. package/src/metrics/server/index.ts +1 -0
  674. package/src/metrics/utils/avgMinMax.ts +87 -0
  675. package/src/metrics/utils/gauge.ts +22 -0
  676. package/src/metrics/utils/registryMetricCreator.ts +41 -0
  677. package/src/monitoring/clientStats.ts +297 -0
  678. package/src/monitoring/index.ts +2 -0
  679. package/src/monitoring/options.ts +19 -0
  680. package/src/monitoring/properties.ts +152 -0
  681. package/src/monitoring/service.ts +235 -0
  682. package/src/monitoring/system.ts +146 -0
  683. package/src/monitoring/types.ts +21 -0
  684. package/src/network/core/events.ts +59 -0
  685. package/src/network/core/index.ts +3 -0
  686. package/src/network/core/metrics.ts +304 -0
  687. package/src/network/core/networkCore.ts +599 -0
  688. package/src/network/core/networkCoreWorker.ts +176 -0
  689. package/src/network/core/networkCoreWorkerHandler.ts +284 -0
  690. package/src/network/core/types.ts +119 -0
  691. package/src/network/discv5/index.ts +132 -0
  692. package/src/network/discv5/types.ts +74 -0
  693. package/src/network/discv5/utils.ts +50 -0
  694. package/src/network/discv5/worker.ts +137 -0
  695. package/src/network/events.ts +51 -0
  696. package/src/network/forks.ts +94 -0
  697. package/src/network/gossip/constants.ts +15 -0
  698. package/src/network/gossip/encoding.ts +111 -0
  699. package/src/network/gossip/errors.ts +7 -0
  700. package/src/network/gossip/gossipsub.ts +384 -0
  701. package/src/network/gossip/index.ts +4 -0
  702. package/src/network/gossip/interface.ts +215 -0
  703. package/src/network/gossip/metrics.ts +71 -0
  704. package/src/network/gossip/scoringParameters.ts +333 -0
  705. package/src/network/gossip/topic.ts +332 -0
  706. package/src/network/index.ts +8 -0
  707. package/src/network/interface.ts +134 -0
  708. package/src/network/libp2p/error.ts +55 -0
  709. package/src/network/libp2p/index.ts +153 -0
  710. package/src/network/metadata.ts +162 -0
  711. package/src/network/network.ts +767 -0
  712. package/src/network/networkConfig.ts +12 -0
  713. package/src/network/options.ts +70 -0
  714. package/src/network/peers/client.ts +29 -0
  715. package/src/network/peers/datastore.ts +188 -0
  716. package/src/network/peers/discover.ts +647 -0
  717. package/src/network/peers/index.ts +2 -0
  718. package/src/network/peers/peerManager.ts +899 -0
  719. package/src/network/peers/peersData.ts +65 -0
  720. package/src/network/peers/score/constants.ts +34 -0
  721. package/src/network/peers/score/index.ts +4 -0
  722. package/src/network/peers/score/interface.ts +74 -0
  723. package/src/network/peers/score/score.ts +200 -0
  724. package/src/network/peers/score/store.ts +95 -0
  725. package/src/network/peers/score/utils.ts +37 -0
  726. package/src/network/peers/utils/assertPeerRelevance.ts +99 -0
  727. package/src/network/peers/utils/enrSubnetsDeserialize.ts +27 -0
  728. package/src/network/peers/utils/getConnectedPeerIds.ts +33 -0
  729. package/src/network/peers/utils/index.ts +4 -0
  730. package/src/network/peers/utils/prioritizePeers.ts +627 -0
  731. package/src/network/peers/utils/subnetMap.ts +88 -0
  732. package/src/network/processor/aggregatorTracker.ts +38 -0
  733. package/src/network/processor/extractSlotRootFns.ts +64 -0
  734. package/src/network/processor/gossipHandlers.ts +951 -0
  735. package/src/network/processor/gossipQueues/index.ts +114 -0
  736. package/src/network/processor/gossipQueues/indexed.ts +219 -0
  737. package/src/network/processor/gossipQueues/linear.ts +162 -0
  738. package/src/network/processor/gossipQueues/types.ts +57 -0
  739. package/src/network/processor/gossipValidatorFn.ts +142 -0
  740. package/src/network/processor/index.ts +497 -0
  741. package/src/network/processor/types.ts +27 -0
  742. package/src/network/reqresp/ReqRespBeaconNode.ts +373 -0
  743. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +101 -0
  744. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +49 -0
  745. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +114 -0
  746. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +62 -0
  747. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +144 -0
  748. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +88 -0
  749. package/src/network/reqresp/handlers/index.ts +78 -0
  750. package/src/network/reqresp/handlers/lightClientBootstrap.ts +31 -0
  751. package/src/network/reqresp/handlers/lightClientFinalityUpdate.ts +21 -0
  752. package/src/network/reqresp/handlers/lightClientOptimisticUpdate.ts +21 -0
  753. package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +39 -0
  754. package/src/network/reqresp/index.ts +2 -0
  755. package/src/network/reqresp/interface.ts +45 -0
  756. package/src/network/reqresp/protocols.ts +146 -0
  757. package/src/network/reqresp/rateLimit.ts +112 -0
  758. package/src/network/reqresp/score.ts +70 -0
  759. package/src/network/reqresp/types.ts +174 -0
  760. package/src/network/reqresp/utils/collect.ts +84 -0
  761. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +57 -0
  762. package/src/network/reqresp/utils/dataColumnResponseValidation.ts +99 -0
  763. package/src/network/statusCache.ts +17 -0
  764. package/src/network/subnets/attnetsService.ts +385 -0
  765. package/src/network/subnets/index.ts +2 -0
  766. package/src/network/subnets/interface.ts +66 -0
  767. package/src/network/subnets/syncnetsService.ts +147 -0
  768. package/src/network/subnets/util.ts +63 -0
  769. package/src/network/util.ts +29 -0
  770. package/src/node/index.ts +2 -0
  771. package/src/node/nodejs.ts +349 -0
  772. package/src/node/notifier.ts +206 -0
  773. package/src/node/options.ts +51 -0
  774. package/src/node/utils/interop/deposits.ts +53 -0
  775. package/src/node/utils/interop/state.ts +59 -0
  776. package/src/node/utils/lightclient.ts +7 -0
  777. package/src/node/utils/state.ts +37 -0
  778. package/src/sync/backfill/backfill.ts +893 -0
  779. package/src/sync/backfill/errors.ts +23 -0
  780. package/src/sync/backfill/index.ts +1 -0
  781. package/src/sync/backfill/verify.ts +58 -0
  782. package/src/sync/constants.ts +71 -0
  783. package/src/sync/index.ts +2 -0
  784. package/src/sync/interface.ts +55 -0
  785. package/src/sync/options.ts +45 -0
  786. package/src/sync/range/batch.ts +455 -0
  787. package/src/sync/range/chain.ts +715 -0
  788. package/src/sync/range/range.ts +354 -0
  789. package/src/sync/range/utils/batches.ts +119 -0
  790. package/src/sync/range/utils/chainTarget.ts +62 -0
  791. package/src/sync/range/utils/hashBlocks.ts +27 -0
  792. package/src/sync/range/utils/index.ts +5 -0
  793. package/src/sync/range/utils/peerBalancer.ts +184 -0
  794. package/src/sync/range/utils/updateChains.ts +66 -0
  795. package/src/sync/sync.ts +290 -0
  796. package/src/sync/types.ts +59 -0
  797. package/src/sync/unknownBlock.ts +862 -0
  798. package/src/sync/utils/downloadByRange.ts +808 -0
  799. package/src/sync/utils/downloadByRoot.ts +560 -0
  800. package/src/sync/utils/pendingBlocksTree.ts +97 -0
  801. package/src/sync/utils/remoteSyncType.ts +144 -0
  802. package/src/util/address.ts +3 -0
  803. package/src/util/array.ts +311 -0
  804. package/src/util/asyncIterableToEvents.ts +164 -0
  805. package/src/util/binarySearch.ts +48 -0
  806. package/src/util/bitArray.ts +84 -0
  807. package/src/util/blobs.ts +210 -0
  808. package/src/util/bufferPool.ts +95 -0
  809. package/src/util/bytes.ts +11 -0
  810. package/src/util/chunkify.ts +27 -0
  811. package/src/util/clock.ts +204 -0
  812. package/src/util/dataColumns.ts +415 -0
  813. package/src/util/dependentRoot.ts +47 -0
  814. package/src/util/enum.ts +17 -0
  815. package/src/util/error.ts +56 -0
  816. package/src/util/eventLoop.ts +22 -0
  817. package/src/util/execution.ts +223 -0
  818. package/src/util/file.ts +52 -0
  819. package/src/util/forkChoice.ts +5 -0
  820. package/src/util/forkName.ts +20 -0
  821. package/src/util/graffiti.ts +39 -0
  822. package/src/util/hex.ts +9 -0
  823. package/src/util/index.ts +2 -0
  824. package/src/util/ip.ts +6 -0
  825. package/src/util/itTrigger.ts +49 -0
  826. package/src/util/kzg.ts +3 -0
  827. package/src/util/map.ts +77 -0
  828. package/src/util/metadata.ts +22 -0
  829. package/src/util/multifork.ts +69 -0
  830. package/src/util/numpy.ts +8 -0
  831. package/src/util/peerId.ts +16 -0
  832. package/src/util/profile.ts +54 -0
  833. package/src/util/promises.ts +14 -0
  834. package/src/util/queue/errors.ts +14 -0
  835. package/src/util/queue/fnQueue.ts +16 -0
  836. package/src/util/queue/index.ts +4 -0
  837. package/src/util/queue/itemQueue.ts +128 -0
  838. package/src/util/queue/options.ts +37 -0
  839. package/src/util/serializedCache.ts +20 -0
  840. package/src/util/set.ts +62 -0
  841. package/src/util/shuffle.ts +21 -0
  842. package/src/util/sortBy.ts +19 -0
  843. package/src/util/sszBytes.ts +481 -0
  844. package/src/util/strictEvents.ts +8 -0
  845. package/src/util/time.ts +13 -0
  846. package/src/util/timeSeries.ts +118 -0
  847. package/src/util/types.ts +31 -0
  848. package/src/util/workerEvents.ts +142 -0
  849. package/src/util/wrapError.ts +27 -0
@@ -0,0 +1,84 @@
1
+ import {BitArray} from "@chainsafe/ssz";
2
+
3
+ export enum IntersectResult {
4
+ Equal,
5
+ /** All elements in set B are in set A */
6
+ Superset,
7
+ /** All elements in set A are in set B */
8
+ Subset,
9
+ /** Set A and set B do not share any elements */
10
+ Exclusive,
11
+ /** Set A and set B intersect but are not superset or subset */
12
+ Intersect,
13
+ }
14
+
15
+ /**
16
+ * For each byte check if a includes b,
17
+ * | a | b | result |
18
+ * | -------- | -------- | ------------- |
19
+ * | 00001111 | 00001111 | A equals B |
20
+ * | 00001111 | 00000011 | A superset B |
21
+ * | 00000011 | 00001111 | A subset B |
22
+ * | 11110000 | 00001111 | A exclude B |
23
+ * | 11111100 | 00111111 | A intersect B |
24
+ *
25
+ * For all bytes in BitArray:
26
+ * - equals = MAYBE ONLY equals
27
+ * - excludes = MUST ONLY equals
28
+ * - superset = MUST superset MAYBE equal
29
+ * - subset = MUST subset MAYBE equal
30
+ * - intersect = any other condition
31
+ */
32
+ export function intersectUint8Arrays(aUA: Uint8Array, bUA: Uint8Array): IntersectResult {
33
+ const len = aUA.length;
34
+
35
+ let someEquals = false;
36
+ let someExcludes = false;
37
+ let someSuperset = false;
38
+ let someSubset = false;
39
+
40
+ for (let i = 0; i < len; i++) {
41
+ const a = aUA[i];
42
+ const b = bUA[i];
43
+
44
+ if (a === 0 && b === 0) {
45
+ // zero, skip
46
+ } else if (a === b) {
47
+ // A equals B
48
+ someEquals = true;
49
+ } else if ((a & b) === 0) {
50
+ // A excludes B
51
+ someExcludes = true;
52
+ } else if ((a & b) === b) {
53
+ // A superset B
54
+ if (someSubset) return IntersectResult.Intersect;
55
+ someSuperset = true;
56
+ } else if ((a & b) === a) {
57
+ // A subset B
58
+ if (someSuperset) return IntersectResult.Intersect;
59
+ someSubset = true;
60
+ } else {
61
+ // A diff B
62
+ return IntersectResult.Intersect;
63
+ }
64
+ }
65
+
66
+ // equals = MAYBE ONLY equals
67
+ if (!someExcludes && !someSuperset && !someSubset) return IntersectResult.Equal;
68
+ // excludes = MUST ONLY equals
69
+ if (!someEquals && someExcludes && !someSuperset && !someSubset) return IntersectResult.Exclusive;
70
+ // superset = MUST superset MAYBE equal
71
+ if (!someExcludes && someSuperset && !someSubset) return IntersectResult.Superset;
72
+ // subset = MUST subset MAYBE equal
73
+ if (!someExcludes && !someSuperset && someSubset) return IntersectResult.Subset;
74
+ // intersect = any other condition
75
+ return IntersectResult.Intersect;
76
+ }
77
+
78
+ /**
79
+ * Check if first BitArray is equal to or superset of the second
80
+ */
81
+ export function isSuperSetOrEqual(superSet: BitArray, toCheck: BitArray): boolean {
82
+ const intersectionResult = intersectUint8Arrays(superSet.uint8Array, toCheck.uint8Array);
83
+ return intersectionResult === IntersectResult.Superset || intersectionResult === IntersectResult.Equal;
84
+ }
@@ -0,0 +1,210 @@
1
+ import {digest as sha256Digest} from "@chainsafe/as-sha256";
2
+ import {Tree} from "@chainsafe/persistent-merkle-tree";
3
+ import {ChainForkConfig} from "@lodestar/config";
4
+ import {
5
+ BYTES_PER_CELL,
6
+ BYTES_PER_FIELD_ELEMENT,
7
+ CELLS_PER_EXT_BLOB,
8
+ FIELD_ELEMENTS_PER_BLOB,
9
+ ForkAll,
10
+ ForkName,
11
+ KZG_COMMITMENT_GINDEX0,
12
+ NUMBER_OF_COLUMNS,
13
+ VERSIONED_HASH_VERSION_KZG,
14
+ } from "@lodestar/params";
15
+ import {signedBlockToSignedHeader} from "@lodestar/state-transition";
16
+ import {BeaconBlockBody, SSZTypesFor, SignedBeaconBlock, deneb, fulu, ssz} from "@lodestar/types";
17
+ import {kzg} from "./kzg.js";
18
+
19
+ type VersionHash = Uint8Array;
20
+
21
+ export function kzgCommitmentToVersionedHash(kzgCommitment: deneb.KZGCommitment): VersionHash {
22
+ const hash = sha256Digest(kzgCommitment);
23
+ // Equivalent to `VERSIONED_HASH_VERSION_KZG + hash(kzg_commitment)[1:]`
24
+ hash[0] = VERSIONED_HASH_VERSION_KZG;
25
+ return hash;
26
+ }
27
+
28
+ export function computePreFuluKzgCommitmentsInclusionProof(
29
+ fork: ForkName,
30
+ body: BeaconBlockBody,
31
+ index: number
32
+ ): deneb.KzgCommitmentInclusionProof {
33
+ const bodyView = (ssz[fork].BeaconBlockBody as SSZTypesFor<ForkAll, "BeaconBlockBody">).toView(body);
34
+ const commitmentGindex = KZG_COMMITMENT_GINDEX0 + index;
35
+ return new Tree(bodyView.node).getSingleProof(BigInt(commitmentGindex));
36
+ }
37
+
38
+ /**
39
+ * SPEC FUNCTION get_blob_sidecars
40
+ * https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/deneb/validator.md#sidecar
41
+ */
42
+ export function getBlobSidecars(
43
+ config: ChainForkConfig,
44
+ signedBlock: SignedBeaconBlock,
45
+ blobs: deneb.Blobs,
46
+ proofs: deneb.KZGProofs
47
+ ): deneb.BlobSidecars {
48
+ const blobKzgCommitments = (signedBlock as deneb.SignedBeaconBlock).message.body.blobKzgCommitments;
49
+ if (blobKzgCommitments === undefined) {
50
+ throw Error("Invalid block with missing blobKzgCommitments for computeBlobSidecars");
51
+ }
52
+
53
+ const signedBlockHeader = signedBlockToSignedHeader(config, signedBlock);
54
+ const fork = config.getForkName(signedBlockHeader.message.slot);
55
+
56
+ return blobKzgCommitments.map((kzgCommitment, index) => {
57
+ const blob = blobs[index];
58
+ const kzgProof = proofs[index];
59
+ const kzgCommitmentInclusionProof = computePreFuluKzgCommitmentsInclusionProof(
60
+ fork,
61
+ signedBlock.message.body,
62
+ index
63
+ );
64
+
65
+ return {index, blob, kzgCommitment, kzgProof, signedBlockHeader, kzgCommitmentInclusionProof};
66
+ });
67
+ }
68
+
69
+ /**
70
+ * If the node obtains 50%+ of all the columns, it SHOULD reconstruct the full data matrix via the recover_matrix helper
71
+ * See https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/das-core.md#recover_matrix
72
+ */
73
+ export async function dataColumnMatrixRecovery(
74
+ partialSidecars: Map<number, fulu.DataColumnSidecar>
75
+ ): Promise<fulu.DataColumnSidecars | null> {
76
+ const columnCount = partialSidecars.size;
77
+ if (columnCount < NUMBER_OF_COLUMNS / 2) {
78
+ // We don't have enough columns to recover
79
+ return null;
80
+ }
81
+
82
+ if (columnCount === NUMBER_OF_COLUMNS) {
83
+ // full columns, no need to recover
84
+ return Array.from(partialSidecars.values());
85
+ }
86
+
87
+ // Sort data columns by index in ascending order before passing for kzg operations
88
+ const partialSidecarsSorted = Array.from(partialSidecars.values()).sort((a, b) => a.index - b.index);
89
+
90
+ const firstDataColumn = partialSidecarsSorted[0];
91
+ if (firstDataColumn == null) {
92
+ // should not happen because we check the size of the cache before this
93
+ throw new Error("No data column found in cache to recover from");
94
+ }
95
+ const blobCount = firstDataColumn.kzgCommitments.length;
96
+
97
+ const fullColumns: Array<Uint8Array[]> = Array.from(
98
+ {length: NUMBER_OF_COLUMNS},
99
+ () => new Array<Uint8Array>(blobCount)
100
+ );
101
+ const blobProofs: Array<Uint8Array[]> = Array.from({length: blobCount});
102
+ // https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/das-core.md#recover_matrix
103
+ const cellsAndProofs = await Promise.all(
104
+ blobProofs.map((_, blobIndex) => {
105
+ const cellIndices: number[] = [];
106
+ const cells: Uint8Array[] = [];
107
+ for (const dataColumn of partialSidecarsSorted) {
108
+ cellIndices.push(dataColumn.index);
109
+ cells.push(dataColumn.column[blobIndex]);
110
+ }
111
+ // recovered cells and proofs are of the same row/blob, their length should be NUMBER_OF_COLUMNS
112
+ return kzg.asyncRecoverCellsAndKzgProofs(cellIndices, cells);
113
+ })
114
+ );
115
+
116
+ for (let blobIndex = 0; blobIndex < blobCount; blobIndex++) {
117
+ const recoveredCells = cellsAndProofs[blobIndex].cells;
118
+ blobProofs[blobIndex] = cellsAndProofs[blobIndex].proofs;
119
+ for (let columnIndex = 0; columnIndex < NUMBER_OF_COLUMNS; columnIndex++) {
120
+ fullColumns[columnIndex][blobIndex] = recoveredCells[columnIndex];
121
+ }
122
+ }
123
+
124
+ const result: fulu.DataColumnSidecars = new Array(NUMBER_OF_COLUMNS);
125
+
126
+ for (let columnIndex = 0; columnIndex < NUMBER_OF_COLUMNS; columnIndex++) {
127
+ let sidecar = partialSidecars.get(columnIndex);
128
+ if (sidecar) {
129
+ // We already have this column
130
+ result[columnIndex] = sidecar;
131
+ continue;
132
+ }
133
+
134
+ sidecar = {
135
+ index: columnIndex,
136
+ column: fullColumns[columnIndex],
137
+ kzgCommitments: firstDataColumn.kzgCommitments,
138
+ kzgProofs: Array.from({length: blobCount}, (_, rowIndex) => blobProofs[rowIndex][columnIndex]),
139
+ signedBlockHeader: firstDataColumn.signedBlockHeader,
140
+ kzgCommitmentsInclusionProof: firstDataColumn.kzgCommitmentsInclusionProof,
141
+ };
142
+ result[columnIndex] = sidecar;
143
+ }
144
+
145
+ return result;
146
+ }
147
+
148
+ /**
149
+ * Reconstruct blobs from a set of data columns, at least 50%+ of all the columns
150
+ * must be provided to allow to reconstruct the full data matrix
151
+ */
152
+ export async function reconstructBlobs(sidecars: fulu.DataColumnSidecars): Promise<deneb.Blobs> {
153
+ if (sidecars.length < NUMBER_OF_COLUMNS / 2) {
154
+ throw Error(
155
+ `Expected at least ${NUMBER_OF_COLUMNS / 2} data columns to reconstruct blobs, received ${sidecars.length}`
156
+ );
157
+ }
158
+
159
+ let fullSidecars: fulu.DataColumnSidecars;
160
+
161
+ if (sidecars.length === NUMBER_OF_COLUMNS) {
162
+ // Full columns, no need to recover
163
+ fullSidecars = sidecars;
164
+ } else {
165
+ const sidecarsByIndex = new Map<number, fulu.DataColumnSidecar>(sidecars.map((sc) => [sc.index, sc]));
166
+ const recoveredSidecars = await dataColumnMatrixRecovery(sidecarsByIndex);
167
+ if (recoveredSidecars === null) {
168
+ // Should not happen because we check the column count above
169
+ throw Error("Failed to reconstruct the full data matrix");
170
+ }
171
+ fullSidecars = recoveredSidecars;
172
+ }
173
+
174
+ const blobCount = fullSidecars[0].column.length;
175
+ const blobs: deneb.Blobs = new Array(blobCount);
176
+
177
+ const ordered = fullSidecars.slice().sort((a, b) => a.index - b.index);
178
+ for (let row = 0; row < blobCount; row++) {
179
+ // 128 cells that make up one "extended blob" row
180
+ const cells = ordered.map((col) => col.column[row]);
181
+ blobs[row] = cellsToBlob(cells);
182
+ }
183
+
184
+ return blobs;
185
+ }
186
+
187
+ /**
188
+ * Concatenate the systematic half (columns 0‑63) of a row of cells into
189
+ * the original 131072 byte blob. The parity half (64‑127) is ignored as
190
+ * it is only needed for erasure‑coding recovery when columns are missing.
191
+ */
192
+ function cellsToBlob(cells: fulu.Cell[]): deneb.Blob {
193
+ if (cells.length !== CELLS_PER_EXT_BLOB) {
194
+ throw Error(`Expected ${CELLS_PER_EXT_BLOB} cells to reconstruct blob, received ${cells.length}`);
195
+ }
196
+
197
+ const blob = new Uint8Array(BYTES_PER_FIELD_ELEMENT * FIELD_ELEMENTS_PER_BLOB);
198
+
199
+ // Only the first 64 cells hold the original bytes
200
+ for (let i = 0; i < CELLS_PER_EXT_BLOB / 2; i++) {
201
+ const cell = cells[i];
202
+ if (cell.length !== BYTES_PER_CELL) {
203
+ throw Error(`Cell ${i} has incorrect byte size ${cell.length} != ${BYTES_PER_CELL}`);
204
+ }
205
+
206
+ blob.set(cell, i * BYTES_PER_CELL);
207
+ }
208
+
209
+ return blob;
210
+ }
@@ -0,0 +1,95 @@
1
+ import {Metrics} from "../metrics/metrics.js";
2
+
3
+ /**
4
+ * If consumer wants more memory than available, we grow the buffer by this ratio.
5
+ */
6
+ const GROW_RATIO = 1.1;
7
+
8
+ export enum AllocSource {
9
+ PERSISTENT_CHECKPOINTS_CACHE_VALIDATORS = "persistent_checkpoints_cache_validators",
10
+ PERSISTENT_CHECKPOINTS_CACHE_STATE = "persistent_checkpoints_cache_state",
11
+ ARCHIVE_STATE = "archive_state",
12
+ }
13
+
14
+ /**
15
+ * A simple implementation to manage a single buffer.
16
+ * This is initially used for state serialization at every epoch and for state reload.
17
+ * We can enhance and use this for other purposes in the future.
18
+ */
19
+ export class BufferPool {
20
+ private buffer: Uint8Array;
21
+ private inUse = false;
22
+ private currentKey: number;
23
+ private readonly metrics: Metrics["bufferPool"] | null = null;
24
+
25
+ constructor(size: number, metrics: Metrics | null = null) {
26
+ this.buffer = new Uint8Array(Math.floor(size * GROW_RATIO));
27
+ this.currentKey = 0;
28
+ if (metrics) {
29
+ this.metrics = metrics.bufferPool;
30
+ metrics.bufferPool.length.addCollect(() => {
31
+ metrics.bufferPool.length.set(this.buffer.length);
32
+ });
33
+ }
34
+ }
35
+
36
+ get length(): number {
37
+ return this.buffer.length;
38
+ }
39
+
40
+ /**
41
+ * Returns a buffer of the given size with all 0.
42
+ * If the buffer is already in use, return null.
43
+ * Grow the buffer if the requested size is larger than the current buffer.
44
+ */
45
+ alloc(size: number, source: AllocSource): BufferWithKey | null {
46
+ return this.doAlloc(size, source, false);
47
+ }
48
+
49
+ /**
50
+ * Same to alloc() but the buffer is not zeroed.
51
+ */
52
+ allocUnsafe(size: number, source: AllocSource): BufferWithKey | null {
53
+ return this.doAlloc(size, source, true);
54
+ }
55
+
56
+ private doAlloc(size: number, source: AllocSource, isUnsafe = false): BufferWithKey | null {
57
+ if (this.inUse) {
58
+ this.metrics?.misses.inc({source});
59
+ return null;
60
+ }
61
+ this.inUse = true;
62
+ this.metrics?.hits.inc({source});
63
+ this.currentKey += 1;
64
+ if (size > this.buffer.length) {
65
+ this.metrics?.grows.inc();
66
+ this.buffer = new Uint8Array(Math.floor(size * GROW_RATIO));
67
+ }
68
+ const bytes = this.buffer.subarray(0, size);
69
+ if (!isUnsafe) {
70
+ bytes.fill(0);
71
+ }
72
+ return new BufferWithKey(bytes, this.currentKey, this);
73
+ }
74
+
75
+ /**
76
+ * Marks the buffer as free.
77
+ */
78
+ free(key: number): void {
79
+ if (key === this.currentKey) {
80
+ this.inUse = false;
81
+ }
82
+ }
83
+ }
84
+
85
+ export class BufferWithKey implements Disposable {
86
+ constructor(
87
+ readonly buffer: Uint8Array,
88
+ private readonly key: number,
89
+ private readonly pool: BufferPool
90
+ ) {}
91
+
92
+ [Symbol.dispose](): void {
93
+ this.pool.free(this.key);
94
+ }
95
+ }
@@ -0,0 +1,11 @@
1
+ import {Root} from "@lodestar/types";
2
+
3
+ export function byteArrayEquals(a: Uint8Array | Root, b: Uint8Array | Root): boolean {
4
+ if (a.length !== b.length) {
5
+ return false;
6
+ }
7
+ for (let i = 0; i < a.length; i++) {
8
+ if (a[i] !== b[i]) return false;
9
+ }
10
+ return true;
11
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Split an inclusive range into a sequence of contiguous inclusive ranges
3
+ * ```
4
+ * [[a,b], [c,d] ... Sn] = chunkifyInclusiveRange([a,z], n)
5
+ * // where
6
+ * [a,z] = [a,b] U [c,d] U ... U Sn
7
+ * ```
8
+ * @param from range start inclusive
9
+ * @param to range end inclusive
10
+ * @param chunks Maximum number of chunks, if range is big enough
11
+ */
12
+ export function chunkifyInclusiveRange(from: number, to: number, chunkCount: number): number[][] {
13
+ // Enforce chunkCount >= 1
14
+ if (chunkCount < 1) chunkCount = 1;
15
+
16
+ const totalItems = to - from + 1;
17
+ const itemsPerChunk = Math.ceil(totalItems / chunkCount);
18
+
19
+ const chunks: number[][] = [];
20
+ for (let i = 0; i < chunkCount; i++) {
21
+ const _from = from + i * itemsPerChunk;
22
+ const _to = Math.min(from + (i + 1) * itemsPerChunk - 1, to);
23
+ chunks.push([_from, _to]);
24
+ if (_to >= to) break;
25
+ }
26
+ return chunks;
27
+ }
@@ -0,0 +1,204 @@
1
+ import EventEmitter from "node:events";
2
+ import type {StrictEventEmitter} from "strict-event-emitter-types";
3
+ import {ChainForkConfig} from "@lodestar/config";
4
+ import {computeEpochAtSlot, computeTimeAtSlot, getCurrentSlot} from "@lodestar/state-transition";
5
+ import type {Epoch, Slot} from "@lodestar/types";
6
+ import {ErrorAborted} from "@lodestar/utils";
7
+ import {MAXIMUM_GOSSIP_CLOCK_DISPARITY} from "../constants/constants.js";
8
+
9
+ export enum ClockEvent {
10
+ /**
11
+ * This event signals the start of a new slot, and that subsequent calls to `clock.currentSlot` will equal `slot`.
12
+ * This event is guaranteed to be emitted every `SECONDS_PER_SLOT` seconds.
13
+ */
14
+ slot = "clock:slot",
15
+ /**
16
+ * This event signals the start of a new epoch, and that subsequent calls to `clock.currentEpoch` will return `epoch`.
17
+ * This event is guaranteed to be emitted every `SECONDS_PER_SLOT * SLOTS_PER_EPOCH` seconds.
18
+ */
19
+ epoch = "clock:epoch",
20
+ }
21
+
22
+ export type ClockEvents = {
23
+ [ClockEvent.slot]: (slot: Slot) => void;
24
+ [ClockEvent.epoch]: (epoch: Epoch) => void;
25
+ };
26
+
27
+ /**
28
+ * Tracks the current chain time, measured in `Slot`s and `Epoch`s
29
+ *
30
+ * The time is dependent on:
31
+ * - `state.genesisTime` - the genesis time
32
+ * - `SECONDS_PER_SLOT` - # of seconds per slot
33
+ * - `SLOTS_PER_EPOCH` - # of slots per epoch
34
+ */
35
+ export type IClock = StrictEventEmitter<EventEmitter, ClockEvents> & {
36
+ readonly genesisTime: Slot;
37
+ readonly currentSlot: Slot;
38
+ /**
39
+ * If it's too close to next slot, maxCurrentSlot = currentSlot + 1
40
+ */
41
+ readonly currentSlotWithGossipDisparity: Slot;
42
+ readonly currentEpoch: Epoch;
43
+ /** Returns the slot if the internal clock were advanced by `toleranceSec`. */
44
+ slotWithFutureTolerance(toleranceSec: number): Slot;
45
+ /** Returns the slot if the internal clock were reversed by `toleranceSec`. */
46
+ slotWithPastTolerance(toleranceSec: number): Slot;
47
+ /**
48
+ * Check if a slot is current slot given MAXIMUM_GOSSIP_CLOCK_DISPARITY.
49
+ */
50
+ isCurrentSlotGivenGossipDisparity(slot: Slot): boolean;
51
+ /**
52
+ * Returns a promise that waits until at least `slot` is reached
53
+ * Resolves when the current slot >= `slot`
54
+ * Rejects if the clock is aborted
55
+ */
56
+ waitForSlot(slot: Slot): Promise<void>;
57
+ /**
58
+ * Return second from a slot to either toSec or now.
59
+ */
60
+ secFromSlot(slot: Slot, toSec?: number): number;
61
+ };
62
+
63
+ /**
64
+ * A local clock, the clock time is assumed to be trusted
65
+ */
66
+ export class Clock extends EventEmitter implements IClock {
67
+ readonly genesisTime: number;
68
+ private readonly config: ChainForkConfig;
69
+ private timeoutId: number | NodeJS.Timeout;
70
+ private readonly signal: AbortSignal;
71
+ private _currentSlot: number;
72
+
73
+ constructor({config, genesisTime, signal}: {config: ChainForkConfig; genesisTime: number; signal: AbortSignal}) {
74
+ super();
75
+
76
+ this.config = config;
77
+ this.genesisTime = genesisTime;
78
+ this.timeoutId = setTimeout(this.onNextSlot, this.msUntilNextSlot());
79
+ this.signal = signal;
80
+ this._currentSlot = getCurrentSlot(this.config, this.genesisTime);
81
+ this.signal.addEventListener("abort", () => clearTimeout(this.timeoutId), {once: true});
82
+ }
83
+
84
+ get currentSlot(): Slot {
85
+ const slot = getCurrentSlot(this.config, this.genesisTime);
86
+ if (slot > this._currentSlot) {
87
+ clearTimeout(this.timeoutId);
88
+ this.onNextSlot(slot);
89
+ }
90
+ return slot;
91
+ }
92
+
93
+ /**
94
+ * If it's too close to next slot given MAXIMUM_GOSSIP_CLOCK_DISPARITY, return currentSlot + 1.
95
+ * Otherwise return currentSlot
96
+ */
97
+ get currentSlotWithGossipDisparity(): Slot {
98
+ const currentSlot = this.currentSlot;
99
+ const nextSlotTime = computeTimeAtSlot(this.config, currentSlot + 1, this.genesisTime) * 1000;
100
+ return nextSlotTime - Date.now() < MAXIMUM_GOSSIP_CLOCK_DISPARITY ? currentSlot + 1 : currentSlot;
101
+ }
102
+
103
+ get currentEpoch(): Epoch {
104
+ return computeEpochAtSlot(this.currentSlot);
105
+ }
106
+
107
+ /** Returns the slot if the internal clock were advanced by `toleranceSec`. */
108
+ slotWithFutureTolerance(toleranceSec: number): Slot {
109
+ // this is the same to getting slot at now + toleranceSec
110
+ return getCurrentSlot(this.config, this.genesisTime - toleranceSec);
111
+ }
112
+
113
+ /** Returns the slot if the internal clock were reversed by `toleranceSec`. */
114
+ slotWithPastTolerance(toleranceSec: number): Slot {
115
+ // this is the same to getting slot at now - toleranceSec
116
+ return getCurrentSlot(this.config, this.genesisTime + toleranceSec);
117
+ }
118
+
119
+ /**
120
+ * Check if a slot is current slot given MAXIMUM_GOSSIP_CLOCK_DISPARITY.
121
+ */
122
+ isCurrentSlotGivenGossipDisparity(slot: Slot): boolean {
123
+ const currentSlot = this.currentSlot;
124
+ if (currentSlot === slot) {
125
+ return true;
126
+ }
127
+ const nextSlotTime = computeTimeAtSlot(this.config, currentSlot + 1, this.genesisTime) * 1000;
128
+ // we're too close to next slot, accept next slot
129
+ if (nextSlotTime - Date.now() < MAXIMUM_GOSSIP_CLOCK_DISPARITY) {
130
+ return slot === currentSlot + 1;
131
+ }
132
+ const currentSlotTime = computeTimeAtSlot(this.config, currentSlot, this.genesisTime) * 1000;
133
+ // we've just passed the current slot, accept previous slot
134
+ if (Date.now() - currentSlotTime < MAXIMUM_GOSSIP_CLOCK_DISPARITY) {
135
+ return slot === currentSlot - 1;
136
+ }
137
+ return false;
138
+ }
139
+
140
+ async waitForSlot(slot: Slot): Promise<void> {
141
+ if (this.signal.aborted) {
142
+ throw new ErrorAborted();
143
+ }
144
+
145
+ if (this.currentSlot >= slot) {
146
+ return;
147
+ }
148
+
149
+ return new Promise((resolve, reject) => {
150
+ const onSlot = (clockSlot: Slot): void => {
151
+ if (clockSlot >= slot) {
152
+ onDone();
153
+ }
154
+ };
155
+
156
+ const onDone = (): void => {
157
+ this.off(ClockEvent.slot, onSlot);
158
+ this.signal.removeEventListener("abort", onAbort);
159
+ resolve();
160
+ };
161
+
162
+ const onAbort = (): void => {
163
+ this.off(ClockEvent.slot, onSlot);
164
+ reject(new ErrorAborted());
165
+ };
166
+
167
+ this.on(ClockEvent.slot, onSlot);
168
+ this.signal.addEventListener("abort", onAbort, {once: true});
169
+ });
170
+ }
171
+
172
+ secFromSlot(slot: Slot, toSec = Date.now() / 1000): number {
173
+ return toSec - (this.genesisTime + slot * this.config.SECONDS_PER_SLOT);
174
+ }
175
+
176
+ private onNextSlot = (slot?: Slot): void => {
177
+ const clockSlot = slot ?? getCurrentSlot(this.config, this.genesisTime);
178
+ // process multiple clock slots in the case the main thread has been saturated for > SECONDS_PER_SLOT
179
+ while (this._currentSlot < clockSlot && !this.signal.aborted) {
180
+ const previousSlot = this._currentSlot;
181
+ this._currentSlot++;
182
+
183
+ this.emit(ClockEvent.slot, this._currentSlot);
184
+
185
+ const previousEpoch = computeEpochAtSlot(previousSlot);
186
+ const currentEpoch = computeEpochAtSlot(this._currentSlot);
187
+
188
+ if (previousEpoch < currentEpoch) {
189
+ this.emit(ClockEvent.epoch, currentEpoch);
190
+ }
191
+ }
192
+
193
+ if (!this.signal.aborted) {
194
+ //recursively invoke onNextSlot
195
+ this.timeoutId = setTimeout(this.onNextSlot, this.msUntilNextSlot());
196
+ }
197
+ };
198
+
199
+ private msUntilNextSlot(): number {
200
+ const milliSecondsPerSlot = this.config.SECONDS_PER_SLOT * 1000;
201
+ const diffInMilliSeconds = Date.now() - this.genesisTime * 1000;
202
+ return milliSecondsPerSlot - (diffInMilliSeconds % milliSecondsPerSlot);
203
+ }
204
+ }