@lodestar/beacon-node 1.35.0-dev.b42a298a7c → 1.35.0-dev.ba92bd8a88

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 (884) 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/historicalState/worker.js +1 -1
  41. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  42. package/lib/chain/archiveStore/index.d.ts.map +1 -0
  43. package/lib/chain/archiveStore/interface.d.ts.map +1 -0
  44. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -0
  45. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -0
  46. package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +1 -0
  47. package/lib/chain/archiveStore/utils/updateBackfillRange.d.ts.map +1 -0
  48. package/lib/chain/balancesCache.d.ts.map +1 -0
  49. package/lib/chain/beaconProposerCache.d.ts.map +1 -0
  50. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -0
  51. package/lib/chain/blocks/blockInput/errors.d.ts.map +1 -0
  52. package/lib/chain/blocks/blockInput/index.d.ts.map +1 -0
  53. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -0
  54. package/lib/chain/blocks/blockInput/utils.d.ts.map +1 -0
  55. package/lib/chain/blocks/importBlock.d.ts.map +1 -0
  56. package/lib/chain/blocks/index.d.ts.map +1 -0
  57. package/lib/chain/blocks/types.d.ts.map +1 -0
  58. package/lib/chain/blocks/utils/blowfishBanner.d.ts.map +1 -0
  59. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -0
  60. package/lib/chain/blocks/utils/checkpoint.d.ts.map +1 -0
  61. package/lib/chain/blocks/utils/giraffeBanner.d.ts.map +1 -0
  62. package/lib/chain/blocks/utils/ownBanner.d.ts.map +1 -0
  63. package/lib/chain/blocks/utils/pandaMergeTransitionBanner.d.ts.map +1 -0
  64. package/lib/chain/blocks/utils/zebraBanner.d.ts.map +1 -0
  65. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -0
  66. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -0
  67. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -0
  68. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -0
  69. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -0
  70. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -0
  71. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -0
  72. package/lib/chain/bls/index.d.ts.map +1 -0
  73. package/lib/chain/bls/interface.d.ts.map +1 -0
  74. package/lib/chain/bls/maybeBatch.d.ts.map +1 -0
  75. package/lib/chain/bls/multithread/index.d.ts.map +1 -0
  76. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -0
  77. package/lib/chain/bls/multithread/poolSize.d.ts.map +1 -0
  78. package/lib/chain/bls/multithread/types.d.ts.map +1 -0
  79. package/lib/chain/bls/multithread/utils.d.ts.map +1 -0
  80. package/lib/chain/bls/multithread/worker.d.ts.map +1 -0
  81. package/lib/chain/bls/singleThread.d.ts.map +1 -0
  82. package/lib/chain/bls/utils.d.ts.map +1 -0
  83. package/lib/chain/chain.d.ts.map +1 -0
  84. package/lib/chain/emitter.d.ts +2 -2
  85. package/lib/chain/emitter.d.ts.map +1 -0
  86. package/lib/chain/errors/attestationError.d.ts.map +1 -0
  87. package/lib/chain/errors/attesterSlashingError.d.ts.map +1 -0
  88. package/lib/chain/errors/blobSidecarError.d.ts.map +1 -0
  89. package/lib/chain/errors/blockError.d.ts.map +1 -0
  90. package/lib/chain/errors/blsToExecutionChangeError.d.ts.map +1 -0
  91. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -0
  92. package/lib/chain/errors/gossipValidation.d.ts.map +1 -0
  93. package/lib/chain/errors/index.d.ts.map +1 -0
  94. package/lib/chain/errors/lightClientError.d.ts.map +1 -0
  95. package/lib/chain/errors/proposerSlashingError.d.ts.map +1 -0
  96. package/lib/chain/errors/syncCommitteeError.d.ts.map +1 -0
  97. package/lib/chain/errors/voluntaryExitError.d.ts.map +1 -0
  98. package/lib/chain/forkChoice/index.d.ts.map +1 -0
  99. package/lib/chain/genesis/genesis.d.ts.map +1 -0
  100. package/lib/chain/genesis/interface.d.ts.map +1 -0
  101. package/lib/chain/index.d.ts.map +1 -0
  102. package/lib/chain/initState.d.ts.map +1 -0
  103. package/lib/chain/interface.d.ts.map +1 -0
  104. package/lib/chain/lightClient/index.d.ts.map +1 -0
  105. package/lib/chain/lightClient/proofs.d.ts.map +1 -0
  106. package/lib/chain/lightClient/types.d.ts.map +1 -0
  107. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -0
  108. package/lib/chain/opPools/attestationPool.d.ts.map +1 -0
  109. package/lib/chain/opPools/index.d.ts.map +1 -0
  110. package/lib/chain/opPools/opPool.d.ts.map +1 -0
  111. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -0
  112. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -0
  113. package/lib/chain/opPools/types.d.ts.map +1 -0
  114. package/lib/chain/opPools/utils.d.ts.map +1 -0
  115. package/lib/chain/options.d.ts.map +1 -0
  116. package/lib/chain/prepareNextSlot.d.ts.map +1 -0
  117. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -0
  118. package/lib/chain/produceBlock/index.d.ts.map +1 -0
  119. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -0
  120. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts.map +1 -0
  121. package/lib/chain/regen/errors.d.ts.map +1 -0
  122. package/lib/chain/regen/index.d.ts.map +1 -0
  123. package/lib/chain/regen/interface.d.ts.map +1 -0
  124. package/lib/chain/regen/queued.d.ts.map +1 -0
  125. package/lib/chain/regen/regen.d.ts.map +1 -0
  126. package/lib/chain/reprocess.d.ts.map +1 -0
  127. package/lib/chain/rewards/attestationsRewards.d.ts.map +1 -0
  128. package/lib/chain/rewards/blockRewards.d.ts.map +1 -0
  129. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +1 -0
  130. package/lib/chain/seenCache/index.d.ts.map +1 -0
  131. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -0
  132. package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -0
  133. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -0
  134. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -0
  135. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -0
  136. package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -0
  137. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -0
  138. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -0
  139. package/lib/chain/serializeState.d.ts.map +1 -0
  140. package/lib/chain/shufflingCache.d.ts.map +1 -0
  141. package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +1 -0
  142. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -0
  143. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -0
  144. package/lib/chain/stateCache/datastore/index.d.ts.map +1 -0
  145. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -0
  146. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -0
  147. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +1 -0
  148. package/lib/chain/stateCache/index.d.ts.map +1 -0
  149. package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -0
  150. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -0
  151. package/lib/chain/stateCache/types.d.ts.map +1 -0
  152. package/lib/chain/validation/aggregateAndProof.d.ts.map +1 -0
  153. package/lib/chain/validation/attestation.d.ts.map +1 -0
  154. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -0
  155. package/lib/chain/validation/blobSidecar.d.ts.map +1 -0
  156. package/lib/chain/validation/block.d.ts.map +1 -0
  157. package/lib/chain/validation/blsToExecutionChange.d.ts.map +1 -0
  158. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -0
  159. package/lib/chain/validation/index.d.ts.map +1 -0
  160. package/lib/chain/validation/lightClientFinalityUpdate.d.ts.map +1 -0
  161. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +1 -0
  162. package/lib/chain/validation/proposerSlashing.d.ts.map +1 -0
  163. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +1 -0
  164. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -0
  165. package/lib/chain/validation/signatureSets/index.d.ts.map +1 -0
  166. package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +1 -0
  167. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -0
  168. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -0
  169. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -0
  170. package/lib/chain/validation/syncCommittee.d.ts.map +1 -0
  171. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -0
  172. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -0
  173. package/lib/chain/validatorMonitor.d.ts.map +1 -0
  174. package/lib/constants/constants.d.ts.map +1 -0
  175. package/lib/constants/index.d.ts.map +1 -0
  176. package/lib/constants/network.d.ts.map +1 -0
  177. package/lib/db/beacon.d.ts.map +1 -0
  178. package/lib/db/buckets.d.ts +4 -4
  179. package/lib/db/buckets.d.ts.map +1 -0
  180. package/lib/db/buckets.js +4 -4
  181. package/lib/db/buckets.js.map +1 -1
  182. package/lib/db/index.d.ts.map +1 -0
  183. package/lib/db/interface.d.ts.map +1 -0
  184. package/lib/db/options.d.ts.map +1 -0
  185. package/lib/db/repositories/attesterSlashing.d.ts.map +1 -0
  186. package/lib/db/repositories/backfilledRanges.d.ts.map +1 -0
  187. package/lib/db/repositories/blobSidecars.d.ts.map +1 -0
  188. package/lib/db/repositories/blobSidecars.js +1 -1
  189. package/lib/db/repositories/blobSidecars.js.map +1 -1
  190. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -0
  191. package/lib/db/repositories/blobSidecarsArchive.js +1 -1
  192. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  193. package/lib/db/repositories/block.d.ts.map +1 -0
  194. package/lib/db/repositories/blockArchive.d.ts.map +1 -0
  195. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  196. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -0
  197. package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -0
  198. package/lib/db/repositories/checkpointState.d.ts.map +1 -0
  199. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -0
  200. package/lib/db/repositories/dataColumnSidecar.js +1 -1
  201. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  202. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -0
  203. package/lib/db/repositories/dataColumnSidecarArchive.js +1 -1
  204. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  205. package/lib/db/repositories/depositDataRoot.d.ts.map +1 -0
  206. package/lib/db/repositories/depositEvent.d.ts.map +1 -0
  207. package/lib/db/repositories/eth1Data.d.ts.map +1 -0
  208. package/lib/db/repositories/index.d.ts.map +1 -0
  209. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +1 -0
  210. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +1 -0
  211. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +1 -0
  212. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -0
  213. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -0
  214. package/lib/db/repositories/stateArchive.d.ts.map +1 -0
  215. package/lib/db/repositories/stateArchiveIndex.d.ts.map +1 -0
  216. package/lib/db/repositories/voluntaryExit.d.ts.map +1 -0
  217. package/lib/db/single/index.d.ts.map +1 -0
  218. package/lib/db/single/preGenesisState.d.ts.map +1 -0
  219. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +1 -0
  220. package/lib/eth1/errors.d.ts.map +1 -0
  221. package/lib/eth1/eth1DataCache.d.ts.map +1 -0
  222. package/lib/eth1/eth1DepositDataTracker.d.ts.map +1 -0
  223. package/lib/eth1/eth1DepositsCache.d.ts.map +1 -0
  224. package/lib/eth1/eth1MergeBlockTracker.d.ts.map +1 -0
  225. package/lib/eth1/index.d.ts.map +1 -0
  226. package/lib/eth1/interface.d.ts.map +1 -0
  227. package/lib/eth1/options.d.ts.map +1 -0
  228. package/lib/eth1/provider/eth1Provider.d.ts.map +1 -0
  229. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +1 -0
  230. package/lib/eth1/provider/jwt.d.ts.map +1 -0
  231. package/lib/eth1/provider/utils.d.ts.map +1 -0
  232. package/lib/eth1/stream.d.ts.map +1 -0
  233. package/lib/eth1/utils/depositContract.d.ts.map +1 -0
  234. package/lib/eth1/utils/deposits.d.ts.map +1 -0
  235. package/lib/eth1/utils/eth1Data.d.ts.map +1 -0
  236. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +1 -0
  237. package/lib/eth1/utils/eth1Vote.d.ts.map +1 -0
  238. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +1 -0
  239. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +1 -0
  240. package/lib/execution/builder/cache.d.ts.map +1 -0
  241. package/lib/execution/builder/http.d.ts.map +1 -0
  242. package/lib/execution/builder/index.d.ts.map +1 -0
  243. package/lib/execution/builder/interface.d.ts.map +1 -0
  244. package/lib/execution/builder/utils.d.ts.map +1 -0
  245. package/lib/execution/engine/disabled.d.ts.map +1 -0
  246. package/lib/execution/engine/http.d.ts.map +1 -0
  247. package/lib/execution/engine/index.d.ts.map +1 -0
  248. package/lib/execution/engine/interface.d.ts.map +1 -0
  249. package/lib/execution/engine/mock.d.ts.map +1 -0
  250. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -0
  251. package/lib/execution/engine/types.d.ts.map +1 -0
  252. package/lib/execution/engine/utils.d.ts.map +1 -0
  253. package/lib/execution/index.d.ts.map +1 -0
  254. package/lib/index.d.ts.map +1 -0
  255. package/lib/metrics/index.d.ts.map +1 -0
  256. package/lib/metrics/metrics/beacon.d.ts.map +1 -0
  257. package/lib/metrics/metrics/lodestar.d.ts.map +1 -0
  258. package/lib/metrics/metrics.d.ts.map +1 -0
  259. package/lib/metrics/nodeJsMetrics.d.ts.map +1 -0
  260. package/lib/metrics/options.d.ts.map +1 -0
  261. package/lib/metrics/server/http.d.ts.map +1 -0
  262. package/lib/metrics/server/index.d.ts.map +1 -0
  263. package/lib/metrics/utils/avgMinMax.d.ts.map +1 -0
  264. package/lib/metrics/utils/gauge.d.ts.map +1 -0
  265. package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -0
  266. package/lib/monitoring/clientStats.d.ts.map +1 -0
  267. package/lib/monitoring/index.d.ts.map +1 -0
  268. package/lib/monitoring/options.d.ts.map +1 -0
  269. package/lib/monitoring/properties.d.ts.map +1 -0
  270. package/lib/monitoring/service.d.ts.map +1 -0
  271. package/lib/monitoring/system.d.ts.map +1 -0
  272. package/lib/monitoring/types.d.ts.map +1 -0
  273. package/lib/network/core/events.d.ts.map +1 -0
  274. package/lib/network/core/index.d.ts.map +1 -0
  275. package/lib/network/core/metrics.d.ts.map +1 -0
  276. package/lib/network/core/networkCore.d.ts.map +1 -0
  277. package/lib/network/core/networkCoreWorker.d.ts.map +1 -0
  278. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -0
  279. package/lib/network/core/types.d.ts.map +1 -0
  280. package/lib/network/discv5/index.d.ts.map +1 -0
  281. package/lib/network/discv5/types.d.ts.map +1 -0
  282. package/lib/network/discv5/utils.d.ts.map +1 -0
  283. package/lib/network/discv5/worker.d.ts.map +1 -0
  284. package/lib/network/events.d.ts.map +1 -0
  285. package/lib/network/forks.d.ts.map +1 -0
  286. package/lib/network/gossip/constants.d.ts.map +1 -0
  287. package/lib/network/gossip/encoding.d.ts.map +1 -0
  288. package/lib/network/gossip/errors.d.ts.map +1 -0
  289. package/lib/network/gossip/gossipsub.d.ts +1 -0
  290. package/lib/network/gossip/gossipsub.d.ts.map +1 -0
  291. package/lib/network/gossip/gossipsub.js +35 -16
  292. package/lib/network/gossip/gossipsub.js.map +1 -1
  293. package/lib/network/gossip/index.d.ts.map +1 -0
  294. package/lib/network/gossip/interface.d.ts.map +1 -0
  295. package/lib/network/gossip/metrics.d.ts +15 -7
  296. package/lib/network/gossip/metrics.d.ts.map +1 -0
  297. package/lib/network/gossip/metrics.js +16 -6
  298. package/lib/network/gossip/metrics.js.map +1 -1
  299. package/lib/network/gossip/scoringParameters.d.ts.map +1 -0
  300. package/lib/network/gossip/topic.d.ts.map +1 -0
  301. package/lib/network/index.d.ts.map +1 -0
  302. package/lib/network/interface.d.ts.map +1 -0
  303. package/lib/network/libp2p/error.d.ts.map +1 -0
  304. package/lib/network/libp2p/index.d.ts.map +1 -0
  305. package/lib/network/metadata.d.ts.map +1 -0
  306. package/lib/network/metadata.js +2 -1
  307. package/lib/network/metadata.js.map +1 -1
  308. package/lib/network/network.d.ts.map +1 -0
  309. package/lib/network/network.js +2 -4
  310. package/lib/network/network.js.map +1 -1
  311. package/lib/network/networkConfig.d.ts.map +1 -0
  312. package/lib/network/options.d.ts.map +1 -0
  313. package/lib/network/peers/client.d.ts.map +1 -0
  314. package/lib/network/peers/datastore.d.ts.map +1 -0
  315. package/lib/network/peers/discover.d.ts.map +1 -0
  316. package/lib/network/peers/index.d.ts.map +1 -0
  317. package/lib/network/peers/peerManager.d.ts.map +1 -0
  318. package/lib/network/peers/peersData.d.ts.map +1 -0
  319. package/lib/network/peers/score/constants.d.ts.map +1 -0
  320. package/lib/network/peers/score/index.d.ts.map +1 -0
  321. package/lib/network/peers/score/interface.d.ts.map +1 -0
  322. package/lib/network/peers/score/score.d.ts.map +1 -0
  323. package/lib/network/peers/score/store.d.ts.map +1 -0
  324. package/lib/network/peers/score/utils.d.ts.map +1 -0
  325. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -0
  326. package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +1 -0
  327. package/lib/network/peers/utils/getConnectedPeerIds.d.ts.map +1 -0
  328. package/lib/network/peers/utils/index.d.ts.map +1 -0
  329. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -0
  330. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -0
  331. package/lib/network/processor/aggregatorTracker.d.ts.map +1 -0
  332. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -0
  333. package/lib/network/processor/gossipHandlers.d.ts.map +1 -0
  334. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -0
  335. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -0
  336. package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -0
  337. package/lib/network/processor/gossipQueues/types.d.ts.map +1 -0
  338. package/lib/network/processor/gossipValidatorFn.d.ts.map +1 -0
  339. package/lib/network/processor/index.d.ts +1 -1
  340. package/lib/network/processor/index.d.ts.map +1 -0
  341. package/lib/network/processor/index.js +2 -3
  342. package/lib/network/processor/index.js.map +1 -1
  343. package/lib/network/processor/types.d.ts.map +1 -0
  344. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -0
  345. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -0
  346. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +1 -0
  347. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -0
  348. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +1 -0
  349. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -0
  350. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -0
  351. package/lib/network/reqresp/handlers/index.d.ts.map +1 -0
  352. package/lib/network/reqresp/handlers/lightClientBootstrap.d.ts.map +1 -0
  353. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.d.ts.map +1 -0
  354. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.d.ts.map +1 -0
  355. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +1 -0
  356. package/lib/network/reqresp/index.d.ts.map +1 -0
  357. package/lib/network/reqresp/interface.d.ts.map +1 -0
  358. package/lib/network/reqresp/protocols.d.ts.map +1 -0
  359. package/lib/network/reqresp/rateLimit.d.ts.map +1 -0
  360. package/lib/network/reqresp/score.d.ts.map +1 -0
  361. package/lib/network/reqresp/types.d.ts.map +1 -0
  362. package/lib/network/reqresp/utils/collect.d.ts.map +1 -0
  363. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts.map +1 -0
  364. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -0
  365. package/lib/network/statusCache.d.ts.map +1 -0
  366. package/lib/network/subnets/attnetsService.d.ts.map +1 -0
  367. package/lib/network/subnets/index.d.ts.map +1 -0
  368. package/lib/network/subnets/interface.d.ts.map +1 -0
  369. package/lib/network/subnets/syncnetsService.d.ts.map +1 -0
  370. package/lib/network/subnets/util.d.ts.map +1 -0
  371. package/lib/network/util.d.ts.map +1 -0
  372. package/lib/node/index.d.ts.map +1 -0
  373. package/lib/node/nodejs.d.ts.map +1 -0
  374. package/lib/node/notifier.d.ts.map +1 -0
  375. package/lib/node/options.d.ts.map +1 -0
  376. package/lib/node/utils/interop/deposits.d.ts.map +1 -0
  377. package/lib/node/utils/interop/state.d.ts.map +1 -0
  378. package/lib/node/utils/lightclient.d.ts.map +1 -0
  379. package/lib/node/utils/state.d.ts.map +1 -0
  380. package/lib/sync/backfill/backfill.d.ts.map +1 -0
  381. package/lib/sync/backfill/errors.d.ts.map +1 -0
  382. package/lib/sync/backfill/index.d.ts.map +1 -0
  383. package/lib/sync/backfill/verify.d.ts.map +1 -0
  384. package/lib/sync/constants.d.ts.map +1 -0
  385. package/lib/sync/index.d.ts.map +1 -0
  386. package/lib/sync/interface.d.ts.map +1 -0
  387. package/lib/sync/options.d.ts.map +1 -0
  388. package/lib/sync/range/batch.d.ts.map +1 -0
  389. package/lib/sync/range/chain.d.ts.map +1 -0
  390. package/lib/sync/range/range.d.ts.map +1 -0
  391. package/lib/sync/range/utils/batches.d.ts.map +1 -0
  392. package/lib/sync/range/utils/chainTarget.d.ts.map +1 -0
  393. package/lib/sync/range/utils/hashBlocks.d.ts.map +1 -0
  394. package/lib/sync/range/utils/index.d.ts.map +1 -0
  395. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -0
  396. package/lib/sync/range/utils/updateChains.d.ts.map +1 -0
  397. package/lib/sync/sync.d.ts.map +1 -0
  398. package/lib/sync/types.d.ts +0 -1
  399. package/lib/sync/types.d.ts.map +1 -0
  400. package/lib/sync/types.js.map +1 -1
  401. package/lib/sync/unknownBlock.d.ts.map +1 -0
  402. package/lib/sync/unknownBlock.js +12 -14
  403. package/lib/sync/unknownBlock.js.map +1 -1
  404. package/lib/sync/utils/downloadByRange.d.ts.map +1 -0
  405. package/lib/sync/utils/downloadByRoot.d.ts +3 -1
  406. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -0
  407. package/lib/sync/utils/downloadByRoot.js +32 -5
  408. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  409. package/lib/sync/utils/pendingBlocksTree.d.ts.map +1 -0
  410. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -0
  411. package/lib/util/address.d.ts.map +1 -0
  412. package/lib/util/array.d.ts.map +1 -0
  413. package/lib/util/asyncIterableToEvents.d.ts.map +1 -0
  414. package/lib/util/binarySearch.d.ts.map +1 -0
  415. package/lib/util/bitArray.d.ts.map +1 -0
  416. package/lib/util/blobs.d.ts.map +1 -0
  417. package/lib/util/blobs.js +5 -3
  418. package/lib/util/blobs.js.map +1 -1
  419. package/lib/util/bufferPool.d.ts.map +1 -0
  420. package/lib/util/bytes.d.ts.map +1 -0
  421. package/lib/util/chunkify.d.ts.map +1 -0
  422. package/lib/util/clock.d.ts.map +1 -0
  423. package/lib/util/dataColumns.d.ts.map +1 -0
  424. package/lib/util/dependentRoot.d.ts.map +1 -0
  425. package/lib/util/enum.d.ts.map +1 -0
  426. package/lib/util/error.d.ts.map +1 -0
  427. package/lib/util/eventLoop.d.ts.map +1 -0
  428. package/lib/util/execution.d.ts.map +1 -0
  429. package/lib/util/file.d.ts.map +1 -0
  430. package/lib/util/forkChoice.d.ts.map +1 -0
  431. package/lib/util/forkName.d.ts.map +1 -0
  432. package/lib/util/graffiti.d.ts.map +1 -0
  433. package/lib/util/hex.d.ts.map +1 -0
  434. package/lib/util/index.d.ts.map +1 -0
  435. package/lib/util/ip.d.ts.map +1 -0
  436. package/lib/util/itTrigger.d.ts.map +1 -0
  437. package/lib/util/kzg.d.ts.map +1 -0
  438. package/lib/util/map.d.ts.map +1 -0
  439. package/lib/util/metadata.d.ts.map +1 -0
  440. package/lib/util/multifork.d.ts.map +1 -0
  441. package/lib/util/numpy.d.ts.map +1 -0
  442. package/lib/util/peerId.d.ts.map +1 -0
  443. package/lib/util/profile.d.ts.map +1 -0
  444. package/lib/util/promises.d.ts.map +1 -0
  445. package/lib/util/queue/errors.d.ts.map +1 -0
  446. package/lib/util/queue/fnQueue.d.ts.map +1 -0
  447. package/lib/util/queue/index.d.ts.map +1 -0
  448. package/lib/util/queue/itemQueue.d.ts.map +1 -0
  449. package/lib/util/queue/options.d.ts.map +1 -0
  450. package/lib/util/serializedCache.d.ts.map +1 -0
  451. package/lib/util/set.d.ts.map +1 -0
  452. package/lib/util/shuffle.d.ts.map +1 -0
  453. package/lib/util/sortBy.d.ts.map +1 -0
  454. package/lib/util/sszBytes.d.ts.map +1 -0
  455. package/lib/util/strictEvents.d.ts.map +1 -0
  456. package/lib/util/time.d.ts.map +1 -0
  457. package/lib/util/timeSeries.d.ts.map +1 -0
  458. package/lib/util/types.d.ts.map +1 -0
  459. package/lib/util/workerEvents.d.ts.map +1 -0
  460. package/lib/util/wrapError.d.ts.map +1 -0
  461. package/package.json +18 -20
  462. package/src/api/impl/api.ts +26 -0
  463. package/src/api/impl/beacon/blocks/index.ts +744 -0
  464. package/src/api/impl/beacon/blocks/utils.ts +75 -0
  465. package/src/api/impl/beacon/index.ts +35 -0
  466. package/src/api/impl/beacon/pool/index.ts +314 -0
  467. package/src/api/impl/beacon/rewards/index.ts +30 -0
  468. package/src/api/impl/beacon/state/index.ts +406 -0
  469. package/src/api/impl/beacon/state/utils.ts +189 -0
  470. package/src/api/impl/config/constants.ts +127 -0
  471. package/src/api/impl/config/index.ts +59 -0
  472. package/src/api/impl/debug/index.ts +131 -0
  473. package/src/api/impl/errors.ts +50 -0
  474. package/src/api/impl/events/index.ts +33 -0
  475. package/src/api/impl/index.ts +6 -0
  476. package/src/api/impl/lightclient/index.ts +64 -0
  477. package/src/api/impl/lodestar/index.ts +257 -0
  478. package/src/api/impl/node/index.ts +88 -0
  479. package/src/api/impl/node/utils.ts +51 -0
  480. package/src/api/impl/proof/index.ts +60 -0
  481. package/src/api/impl/types.ts +17 -0
  482. package/src/api/impl/utils.ts +25 -0
  483. package/src/api/impl/validator/index.ts +1538 -0
  484. package/src/api/impl/validator/utils.ts +85 -0
  485. package/src/api/index.ts +2 -0
  486. package/src/api/options.ts +16 -0
  487. package/src/api/rest/activeSockets.ts +109 -0
  488. package/src/api/rest/base.ts +216 -0
  489. package/src/api/rest/index.ts +63 -0
  490. package/src/api/rest/swaggerUI.ts +80 -0
  491. package/src/bun-wrappers/prometheus-gc-stats.ts +7 -0
  492. package/src/chain/ColumnReconstructionTracker.ts +90 -0
  493. package/src/chain/GetBlobsTracker.ts +115 -0
  494. package/src/chain/archiveStore/archiveStore.ts +222 -0
  495. package/src/chain/archiveStore/constants.ts +5 -0
  496. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +116 -0
  497. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +68 -0
  498. package/src/chain/archiveStore/historicalState/metrics.ts +214 -0
  499. package/src/chain/archiveStore/historicalState/types.ts +41 -0
  500. package/src/chain/archiveStore/historicalState/worker.ts +77 -0
  501. package/src/chain/archiveStore/index.ts +3 -0
  502. package/src/chain/archiveStore/interface.ts +75 -0
  503. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +138 -0
  504. package/src/chain/archiveStore/utils/archiveBlocks.ts +437 -0
  505. package/src/chain/archiveStore/utils/pruneHistory.ts +56 -0
  506. package/src/chain/archiveStore/utils/updateBackfillRange.ts +50 -0
  507. package/src/chain/balancesCache.ts +52 -0
  508. package/src/chain/beaconProposerCache.ts +43 -0
  509. package/src/chain/blocks/blockInput/blockInput.ts +851 -0
  510. package/src/chain/blocks/blockInput/errors.ts +48 -0
  511. package/src/chain/blocks/blockInput/index.ts +4 -0
  512. package/src/chain/blocks/blockInput/types.ts +145 -0
  513. package/src/chain/blocks/blockInput/utils.ts +21 -0
  514. package/src/chain/blocks/importBlock.ts +603 -0
  515. package/src/chain/blocks/index.ts +179 -0
  516. package/src/chain/blocks/types.ts +101 -0
  517. package/src/chain/blocks/utils/blowfishBanner.ts +28 -0
  518. package/src/chain/blocks/utils/chainSegment.ts +29 -0
  519. package/src/chain/blocks/utils/checkpoint.ts +25 -0
  520. package/src/chain/blocks/utils/giraffeBanner.ts +30 -0
  521. package/src/chain/blocks/utils/ownBanner.ts +20 -0
  522. package/src/chain/blocks/utils/pandaMergeTransitionBanner.ts +43 -0
  523. package/src/chain/blocks/utils/zebraBanner.ts +45 -0
  524. package/src/chain/blocks/verifyBlock.ts +242 -0
  525. package/src/chain/blocks/verifyBlocksDataAvailability.ts +34 -0
  526. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +438 -0
  527. package/src/chain/blocks/verifyBlocksSanityChecks.ts +129 -0
  528. package/src/chain/blocks/verifyBlocksSignatures.ts +105 -0
  529. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +114 -0
  530. package/src/chain/blocks/writeBlockInputToDb.ts +128 -0
  531. package/src/chain/bls/index.ts +4 -0
  532. package/src/chain/bls/interface.ts +68 -0
  533. package/src/chain/bls/maybeBatch.ts +45 -0
  534. package/src/chain/bls/multithread/index.ts +582 -0
  535. package/src/chain/bls/multithread/jobItem.ts +119 -0
  536. package/src/chain/bls/multithread/poolSize.ts +16 -0
  537. package/src/chain/bls/multithread/types.ts +38 -0
  538. package/src/chain/bls/multithread/utils.ts +19 -0
  539. package/src/chain/bls/multithread/worker.ts +114 -0
  540. package/src/chain/bls/singleThread.ts +87 -0
  541. package/src/chain/bls/utils.ts +30 -0
  542. package/src/chain/chain.ts +1365 -0
  543. package/src/chain/emitter.ts +113 -0
  544. package/src/chain/errors/attestationError.ts +194 -0
  545. package/src/chain/errors/attesterSlashingError.ts +11 -0
  546. package/src/chain/errors/blobSidecarError.ts +60 -0
  547. package/src/chain/errors/blockError.ts +166 -0
  548. package/src/chain/errors/blsToExecutionChangeError.ts +13 -0
  549. package/src/chain/errors/dataColumnSidecarError.ts +80 -0
  550. package/src/chain/errors/gossipValidation.ts +20 -0
  551. package/src/chain/errors/index.ts +10 -0
  552. package/src/chain/errors/lightClientError.ts +30 -0
  553. package/src/chain/errors/proposerSlashingError.ts +11 -0
  554. package/src/chain/errors/syncCommitteeError.ts +36 -0
  555. package/src/chain/errors/voluntaryExitError.ts +13 -0
  556. package/src/chain/forkChoice/index.ts +112 -0
  557. package/src/chain/genesis/genesis.ts +190 -0
  558. package/src/chain/genesis/interface.ts +14 -0
  559. package/src/chain/index.ts +6 -0
  560. package/src/chain/initState.ts +221 -0
  561. package/src/chain/interface.ts +280 -0
  562. package/src/chain/lightClient/index.ts +764 -0
  563. package/src/chain/lightClient/proofs.ts +85 -0
  564. package/src/chain/lightClient/types.ts +33 -0
  565. package/src/chain/opPools/aggregatedAttestationPool.ts +1063 -0
  566. package/src/chain/opPools/attestationPool.ts +283 -0
  567. package/src/chain/opPools/index.ts +5 -0
  568. package/src/chain/opPools/opPool.ts +462 -0
  569. package/src/chain/opPools/syncCommitteeMessagePool.ts +167 -0
  570. package/src/chain/opPools/syncContributionAndProofPool.ts +240 -0
  571. package/src/chain/opPools/types.ts +35 -0
  572. package/src/chain/opPools/utils.ts +65 -0
  573. package/src/chain/options.ts +138 -0
  574. package/src/chain/prepareNextSlot.ts +277 -0
  575. package/src/chain/produceBlock/computeNewStateRoot.ts +55 -0
  576. package/src/chain/produceBlock/index.ts +2 -0
  577. package/src/chain/produceBlock/produceBlockBody.ts +797 -0
  578. package/src/chain/produceBlock/validateBlobsAndKzgCommitments.ts +54 -0
  579. package/src/chain/regen/errors.ts +30 -0
  580. package/src/chain/regen/index.ts +4 -0
  581. package/src/chain/regen/interface.ts +93 -0
  582. package/src/chain/regen/queued.ts +317 -0
  583. package/src/chain/regen/regen.ts +424 -0
  584. package/src/chain/reprocess.ts +161 -0
  585. package/src/chain/rewards/attestationsRewards.ts +196 -0
  586. package/src/chain/rewards/blockRewards.ts +150 -0
  587. package/src/chain/rewards/syncCommitteeRewards.ts +58 -0
  588. package/src/chain/seenCache/index.ts +5 -0
  589. package/src/chain/seenCache/seenAggregateAndProof.ts +120 -0
  590. package/src/chain/seenCache/seenAttestationData.ts +145 -0
  591. package/src/chain/seenCache/seenAttesters.ts +58 -0
  592. package/src/chain/seenCache/seenBlockAttesters.ts +18 -0
  593. package/src/chain/seenCache/seenBlockProposers.ts +48 -0
  594. package/src/chain/seenCache/seenCommittee.ts +43 -0
  595. package/src/chain/seenCache/seenCommitteeContribution.ts +104 -0
  596. package/src/chain/seenCache/seenGossipBlockInput.ts +373 -0
  597. package/src/chain/serializeState.ts +32 -0
  598. package/src/chain/shufflingCache.ts +238 -0
  599. package/src/chain/stateCache/blockStateCacheImpl.ts +150 -0
  600. package/src/chain/stateCache/datastore/db.ts +36 -0
  601. package/src/chain/stateCache/datastore/file.ts +53 -0
  602. package/src/chain/stateCache/datastore/index.ts +2 -0
  603. package/src/chain/stateCache/datastore/types.ts +13 -0
  604. package/src/chain/stateCache/fifoBlockStateCache.ts +208 -0
  605. package/src/chain/stateCache/inMemoryCheckpointsCache.ts +198 -0
  606. package/src/chain/stateCache/index.ts +3 -0
  607. package/src/chain/stateCache/mapMetrics.ts +52 -0
  608. package/src/chain/stateCache/persistentCheckpointsCache.ts +835 -0
  609. package/src/chain/stateCache/types.ts +86 -0
  610. package/src/chain/validation/aggregateAndProof.ts +258 -0
  611. package/src/chain/validation/attestation.ts +885 -0
  612. package/src/chain/validation/attesterSlashing.ts +61 -0
  613. package/src/chain/validation/blobSidecar.ts +301 -0
  614. package/src/chain/validation/block.ts +188 -0
  615. package/src/chain/validation/blsToExecutionChange.ts +61 -0
  616. package/src/chain/validation/dataColumnSidecar.ts +381 -0
  617. package/src/chain/validation/index.ts +9 -0
  618. package/src/chain/validation/lightClientFinalityUpdate.ts +45 -0
  619. package/src/chain/validation/lightClientOptimisticUpdate.ts +67 -0
  620. package/src/chain/validation/proposerSlashing.ts +54 -0
  621. package/src/chain/validation/signatureSets/aggregateAndProof.ts +38 -0
  622. package/src/chain/validation/signatureSets/contributionAndProof.ts +27 -0
  623. package/src/chain/validation/signatureSets/index.ts +6 -0
  624. package/src/chain/validation/signatureSets/selectionProof.ts +27 -0
  625. package/src/chain/validation/signatureSets/syncCommittee.ts +22 -0
  626. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +18 -0
  627. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +27 -0
  628. package/src/chain/validation/syncCommittee.ts +165 -0
  629. package/src/chain/validation/syncCommitteeContributionAndProof.ts +122 -0
  630. package/src/chain/validation/voluntaryExit.ts +58 -0
  631. package/src/chain/validatorMonitor.ts +1299 -0
  632. package/src/constants/constants.ts +15 -0
  633. package/src/constants/index.ts +2 -0
  634. package/src/constants/network.ts +52 -0
  635. package/src/db/beacon.ts +113 -0
  636. package/src/db/buckets.ts +80 -0
  637. package/src/db/index.ts +2 -0
  638. package/src/db/interface.ts +76 -0
  639. package/src/db/options.ts +7 -0
  640. package/src/db/repositories/attesterSlashing.ts +38 -0
  641. package/src/db/repositories/backfilledRanges.ts +29 -0
  642. package/src/db/repositories/blobSidecars.ts +37 -0
  643. package/src/db/repositories/blobSidecarsArchive.ts +28 -0
  644. package/src/db/repositories/block.ts +33 -0
  645. package/src/db/repositories/blockArchive.ts +170 -0
  646. package/src/db/repositories/blockArchiveIndex.ts +45 -0
  647. package/src/db/repositories/blsToExecutionChange.ts +16 -0
  648. package/src/db/repositories/checkpointState.ts +31 -0
  649. package/src/db/repositories/dataColumnSidecar.ts +49 -0
  650. package/src/db/repositories/dataColumnSidecarArchive.ts +56 -0
  651. package/src/db/repositories/depositDataRoot.ts +80 -0
  652. package/src/db/repositories/depositEvent.ts +32 -0
  653. package/src/db/repositories/eth1Data.ts +33 -0
  654. package/src/db/repositories/index.ts +20 -0
  655. package/src/db/repositories/lightclientBestUpdate.ts +41 -0
  656. package/src/db/repositories/lightclientCheckpointHeader.ts +32 -0
  657. package/src/db/repositories/lightclientSyncCommittee.ts +16 -0
  658. package/src/db/repositories/lightclientSyncCommitteeWitness.ts +77 -0
  659. package/src/db/repositories/proposerSlashing.ts +15 -0
  660. package/src/db/repositories/stateArchive.ts +69 -0
  661. package/src/db/repositories/stateArchiveIndex.ts +18 -0
  662. package/src/db/repositories/voluntaryExit.ts +15 -0
  663. package/src/db/single/index.ts +2 -0
  664. package/src/db/single/preGenesisState.ts +37 -0
  665. package/src/db/single/preGenesisStateLastProcessedBlock.ts +34 -0
  666. package/src/eth1/errors.ts +40 -0
  667. package/src/eth1/eth1DataCache.ts +26 -0
  668. package/src/eth1/eth1DepositDataTracker.ts +410 -0
  669. package/src/eth1/eth1DepositsCache.ts +141 -0
  670. package/src/eth1/eth1MergeBlockTracker.ts +328 -0
  671. package/src/eth1/index.ts +157 -0
  672. package/src/eth1/interface.ts +131 -0
  673. package/src/eth1/options.ts +28 -0
  674. package/src/eth1/provider/eth1Provider.ts +229 -0
  675. package/src/eth1/provider/jsonRpcHttpClient.ts +390 -0
  676. package/src/eth1/provider/jwt.ts +36 -0
  677. package/src/eth1/provider/utils.ts +136 -0
  678. package/src/eth1/stream.ts +75 -0
  679. package/src/eth1/utils/depositContract.ts +37 -0
  680. package/src/eth1/utils/deposits.ts +70 -0
  681. package/src/eth1/utils/eth1Data.ts +100 -0
  682. package/src/eth1/utils/eth1DepositEvent.ts +12 -0
  683. package/src/eth1/utils/eth1Vote.ts +142 -0
  684. package/src/eth1/utils/groupDepositEventsByBlock.ts +19 -0
  685. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +18 -0
  686. package/src/execution/builder/cache.ts +39 -0
  687. package/src/execution/builder/http.ts +229 -0
  688. package/src/execution/builder/index.ts +27 -0
  689. package/src/execution/builder/interface.ts +49 -0
  690. package/src/execution/builder/utils.ts +19 -0
  691. package/src/execution/engine/disabled.ts +35 -0
  692. package/src/execution/engine/http.ts +644 -0
  693. package/src/execution/engine/index.ts +63 -0
  694. package/src/execution/engine/interface.ts +199 -0
  695. package/src/execution/engine/mock.ts +493 -0
  696. package/src/execution/engine/payloadIdCache.ts +54 -0
  697. package/src/execution/engine/types.ts +640 -0
  698. package/src/execution/engine/utils.ts +136 -0
  699. package/src/execution/index.ts +4 -0
  700. package/src/index.ts +20 -0
  701. package/src/metrics/index.ts +4 -0
  702. package/src/metrics/metrics/beacon.ts +390 -0
  703. package/src/metrics/metrics/lodestar.ts +1870 -0
  704. package/src/metrics/metrics.ts +43 -0
  705. package/src/metrics/nodeJsMetrics.ts +19 -0
  706. package/src/metrics/options.ts +22 -0
  707. package/src/metrics/server/http.ts +114 -0
  708. package/src/metrics/server/index.ts +1 -0
  709. package/src/metrics/utils/avgMinMax.ts +87 -0
  710. package/src/metrics/utils/gauge.ts +22 -0
  711. package/src/metrics/utils/registryMetricCreator.ts +41 -0
  712. package/src/monitoring/clientStats.ts +297 -0
  713. package/src/monitoring/index.ts +2 -0
  714. package/src/monitoring/options.ts +19 -0
  715. package/src/monitoring/properties.ts +152 -0
  716. package/src/monitoring/service.ts +235 -0
  717. package/src/monitoring/system.ts +146 -0
  718. package/src/monitoring/types.ts +21 -0
  719. package/src/network/core/events.ts +59 -0
  720. package/src/network/core/index.ts +3 -0
  721. package/src/network/core/metrics.ts +304 -0
  722. package/src/network/core/networkCore.ts +599 -0
  723. package/src/network/core/networkCoreWorker.ts +176 -0
  724. package/src/network/core/networkCoreWorkerHandler.ts +284 -0
  725. package/src/network/core/types.ts +119 -0
  726. package/src/network/discv5/index.ts +132 -0
  727. package/src/network/discv5/types.ts +74 -0
  728. package/src/network/discv5/utils.ts +50 -0
  729. package/src/network/discv5/worker.ts +137 -0
  730. package/src/network/events.ts +51 -0
  731. package/src/network/forks.ts +94 -0
  732. package/src/network/gossip/constants.ts +15 -0
  733. package/src/network/gossip/encoding.ts +111 -0
  734. package/src/network/gossip/errors.ts +7 -0
  735. package/src/network/gossip/gossipsub.ts +384 -0
  736. package/src/network/gossip/index.ts +4 -0
  737. package/src/network/gossip/interface.ts +215 -0
  738. package/src/network/gossip/metrics.ts +71 -0
  739. package/src/network/gossip/scoringParameters.ts +333 -0
  740. package/src/network/gossip/topic.ts +332 -0
  741. package/src/network/index.ts +8 -0
  742. package/src/network/interface.ts +134 -0
  743. package/src/network/libp2p/error.ts +55 -0
  744. package/src/network/libp2p/index.ts +153 -0
  745. package/src/network/metadata.ts +162 -0
  746. package/src/network/network.ts +767 -0
  747. package/src/network/networkConfig.ts +12 -0
  748. package/src/network/options.ts +70 -0
  749. package/src/network/peers/client.ts +29 -0
  750. package/src/network/peers/datastore.ts +188 -0
  751. package/src/network/peers/discover.ts +647 -0
  752. package/src/network/peers/index.ts +2 -0
  753. package/src/network/peers/peerManager.ts +899 -0
  754. package/src/network/peers/peersData.ts +65 -0
  755. package/src/network/peers/score/constants.ts +34 -0
  756. package/src/network/peers/score/index.ts +4 -0
  757. package/src/network/peers/score/interface.ts +74 -0
  758. package/src/network/peers/score/score.ts +200 -0
  759. package/src/network/peers/score/store.ts +95 -0
  760. package/src/network/peers/score/utils.ts +37 -0
  761. package/src/network/peers/utils/assertPeerRelevance.ts +99 -0
  762. package/src/network/peers/utils/enrSubnetsDeserialize.ts +27 -0
  763. package/src/network/peers/utils/getConnectedPeerIds.ts +33 -0
  764. package/src/network/peers/utils/index.ts +4 -0
  765. package/src/network/peers/utils/prioritizePeers.ts +627 -0
  766. package/src/network/peers/utils/subnetMap.ts +88 -0
  767. package/src/network/processor/aggregatorTracker.ts +38 -0
  768. package/src/network/processor/extractSlotRootFns.ts +64 -0
  769. package/src/network/processor/gossipHandlers.ts +951 -0
  770. package/src/network/processor/gossipQueues/index.ts +114 -0
  771. package/src/network/processor/gossipQueues/indexed.ts +219 -0
  772. package/src/network/processor/gossipQueues/linear.ts +162 -0
  773. package/src/network/processor/gossipQueues/types.ts +57 -0
  774. package/src/network/processor/gossipValidatorFn.ts +142 -0
  775. package/src/network/processor/index.ts +496 -0
  776. package/src/network/processor/types.ts +27 -0
  777. package/src/network/reqresp/ReqRespBeaconNode.ts +373 -0
  778. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +101 -0
  779. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +49 -0
  780. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +114 -0
  781. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +62 -0
  782. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +144 -0
  783. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +88 -0
  784. package/src/network/reqresp/handlers/index.ts +78 -0
  785. package/src/network/reqresp/handlers/lightClientBootstrap.ts +31 -0
  786. package/src/network/reqresp/handlers/lightClientFinalityUpdate.ts +21 -0
  787. package/src/network/reqresp/handlers/lightClientOptimisticUpdate.ts +21 -0
  788. package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +39 -0
  789. package/src/network/reqresp/index.ts +2 -0
  790. package/src/network/reqresp/interface.ts +45 -0
  791. package/src/network/reqresp/protocols.ts +146 -0
  792. package/src/network/reqresp/rateLimit.ts +112 -0
  793. package/src/network/reqresp/score.ts +70 -0
  794. package/src/network/reqresp/types.ts +174 -0
  795. package/src/network/reqresp/utils/collect.ts +84 -0
  796. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +57 -0
  797. package/src/network/reqresp/utils/dataColumnResponseValidation.ts +99 -0
  798. package/src/network/statusCache.ts +17 -0
  799. package/src/network/subnets/attnetsService.ts +385 -0
  800. package/src/network/subnets/index.ts +2 -0
  801. package/src/network/subnets/interface.ts +66 -0
  802. package/src/network/subnets/syncnetsService.ts +147 -0
  803. package/src/network/subnets/util.ts +63 -0
  804. package/src/network/util.ts +29 -0
  805. package/src/node/index.ts +2 -0
  806. package/src/node/nodejs.ts +349 -0
  807. package/src/node/notifier.ts +206 -0
  808. package/src/node/options.ts +51 -0
  809. package/src/node/utils/interop/deposits.ts +53 -0
  810. package/src/node/utils/interop/state.ts +59 -0
  811. package/src/node/utils/lightclient.ts +7 -0
  812. package/src/node/utils/state.ts +37 -0
  813. package/src/sync/backfill/backfill.ts +893 -0
  814. package/src/sync/backfill/errors.ts +23 -0
  815. package/src/sync/backfill/index.ts +1 -0
  816. package/src/sync/backfill/verify.ts +58 -0
  817. package/src/sync/constants.ts +71 -0
  818. package/src/sync/index.ts +2 -0
  819. package/src/sync/interface.ts +55 -0
  820. package/src/sync/options.ts +45 -0
  821. package/src/sync/range/batch.ts +455 -0
  822. package/src/sync/range/chain.ts +715 -0
  823. package/src/sync/range/range.ts +354 -0
  824. package/src/sync/range/utils/batches.ts +119 -0
  825. package/src/sync/range/utils/chainTarget.ts +62 -0
  826. package/src/sync/range/utils/hashBlocks.ts +27 -0
  827. package/src/sync/range/utils/index.ts +5 -0
  828. package/src/sync/range/utils/peerBalancer.ts +184 -0
  829. package/src/sync/range/utils/updateChains.ts +66 -0
  830. package/src/sync/sync.ts +290 -0
  831. package/src/sync/types.ts +57 -0
  832. package/src/sync/unknownBlock.ts +859 -0
  833. package/src/sync/utils/downloadByRange.ts +808 -0
  834. package/src/sync/utils/downloadByRoot.ts +560 -0
  835. package/src/sync/utils/pendingBlocksTree.ts +97 -0
  836. package/src/sync/utils/remoteSyncType.ts +144 -0
  837. package/src/util/address.ts +3 -0
  838. package/src/util/array.ts +311 -0
  839. package/src/util/asyncIterableToEvents.ts +164 -0
  840. package/src/util/binarySearch.ts +48 -0
  841. package/src/util/bitArray.ts +84 -0
  842. package/src/util/blobs.ts +210 -0
  843. package/src/util/bufferPool.ts +95 -0
  844. package/src/util/bytes.ts +11 -0
  845. package/src/util/chunkify.ts +27 -0
  846. package/src/util/clock.ts +204 -0
  847. package/src/util/dataColumns.ts +415 -0
  848. package/src/util/dependentRoot.ts +47 -0
  849. package/src/util/enum.ts +17 -0
  850. package/src/util/error.ts +56 -0
  851. package/src/util/eventLoop.ts +22 -0
  852. package/src/util/execution.ts +223 -0
  853. package/src/util/file.ts +52 -0
  854. package/src/util/forkChoice.ts +5 -0
  855. package/src/util/forkName.ts +20 -0
  856. package/src/util/graffiti.ts +39 -0
  857. package/src/util/hex.ts +9 -0
  858. package/src/util/index.ts +2 -0
  859. package/src/util/ip.ts +6 -0
  860. package/src/util/itTrigger.ts +49 -0
  861. package/src/util/kzg.ts +3 -0
  862. package/src/util/map.ts +77 -0
  863. package/src/util/metadata.ts +22 -0
  864. package/src/util/multifork.ts +69 -0
  865. package/src/util/numpy.ts +8 -0
  866. package/src/util/peerId.ts +16 -0
  867. package/src/util/profile.ts +54 -0
  868. package/src/util/promises.ts +14 -0
  869. package/src/util/queue/errors.ts +14 -0
  870. package/src/util/queue/fnQueue.ts +16 -0
  871. package/src/util/queue/index.ts +4 -0
  872. package/src/util/queue/itemQueue.ts +128 -0
  873. package/src/util/queue/options.ts +37 -0
  874. package/src/util/serializedCache.ts +20 -0
  875. package/src/util/set.ts +62 -0
  876. package/src/util/shuffle.ts +21 -0
  877. package/src/util/sortBy.ts +19 -0
  878. package/src/util/sszBytes.ts +481 -0
  879. package/src/util/strictEvents.ts +8 -0
  880. package/src/util/time.ts +13 -0
  881. package/src/util/timeSeries.ts +118 -0
  882. package/src/util/types.ts +31 -0
  883. package/src/util/workerEvents.ts +142 -0
  884. package/src/util/wrapError.ts +27 -0
@@ -0,0 +1,496 @@
1
+ import {routes} from "@lodestar/api";
2
+ import {ForkSeq} from "@lodestar/params";
3
+ import {computeStartSlotAtEpoch} from "@lodestar/state-transition";
4
+ import {RootHex, Slot, SlotRootHex} from "@lodestar/types";
5
+ import {Logger, MapDef, mapValues, pruneSetToMax, sleep} from "@lodestar/utils";
6
+ import {BlockInputSource} from "../../chain/blocks/blockInput/types.js";
7
+ import {ChainEvent} from "../../chain/emitter.js";
8
+ import {GossipErrorCode} from "../../chain/errors/gossipValidation.js";
9
+ import {IBeaconChain} from "../../chain/interface.js";
10
+ import {IBeaconDb} from "../../db/interface.js";
11
+ import {Metrics} from "../../metrics/metrics.js";
12
+ import {ClockEvent} from "../../util/clock.js";
13
+ import {callInNextEventLoop} from "../../util/eventLoop.js";
14
+ import {PeerIdStr} from "../../util/peerId.js";
15
+ import {NetworkEvent, NetworkEventBus} from "../events.js";
16
+ import {
17
+ GossipHandlers,
18
+ GossipMessageInfo,
19
+ GossipType,
20
+ GossipValidatorBatchFn,
21
+ GossipValidatorFn,
22
+ } from "../gossip/interface.js";
23
+ import {createExtractBlockSlotRootFns} from "./extractSlotRootFns.js";
24
+ import {GossipHandlerOpts, ValidatorFnsModules, getGossipHandlers} from "./gossipHandlers.js";
25
+ import {createGossipQueues} from "./gossipQueues/index.js";
26
+ import {ValidatorFnModules, getGossipValidatorBatchFn, getGossipValidatorFn} from "./gossipValidatorFn.js";
27
+ import {PendingGossipsubMessage} from "./types.js";
28
+
29
+ export * from "./types.js";
30
+
31
+ export type NetworkProcessorModules = ValidatorFnsModules &
32
+ ValidatorFnModules & {
33
+ chain: IBeaconChain;
34
+ db: IBeaconDb;
35
+ events: NetworkEventBus;
36
+ logger: Logger;
37
+ metrics: Metrics | null;
38
+ // Optionally pass custom GossipHandlers, for testing
39
+ gossipHandlers?: GossipHandlers;
40
+ };
41
+
42
+ export type NetworkProcessorOpts = GossipHandlerOpts & {
43
+ maxGossipTopicConcurrency?: number;
44
+ };
45
+
46
+ /**
47
+ * Keep up to 3 slot of unknown roots, so we don't always emit to UnknownBlock sync.
48
+ */
49
+ const MAX_UNKNOWN_ROOTS_SLOT_CACHE_SIZE = 3;
50
+
51
+ /**
52
+ * This is respective to gossipsub seenTTL (which is 550 * 0.7 = 385s), also it's respective
53
+ * to beacon_attestation ATTESTATION_PROPAGATION_SLOT_RANGE (32 slots).
54
+ * If message slots are within this window, it'll likely to be filtered by gossipsub seenCache.
55
+ * This is mainly for DOS protection, see https://github.com/ChainSafe/lodestar/issues/5393
56
+ */
57
+ const DEFAULT_EARLIEST_PERMISSIBLE_SLOT_DISTANCE = 32;
58
+
59
+ type WorkOpts = {
60
+ bypassQueue?: boolean;
61
+ };
62
+
63
+ /**
64
+ * True if we want to process gossip object immediately, false if we check for bls and regen
65
+ * in order to process the gossip object.
66
+ */
67
+ const executeGossipWorkOrderObj: Record<GossipType, WorkOpts> = {
68
+ [GossipType.beacon_block]: {bypassQueue: true},
69
+ [GossipType.blob_sidecar]: {bypassQueue: true},
70
+ [GossipType.data_column_sidecar]: {bypassQueue: true},
71
+ [GossipType.beacon_aggregate_and_proof]: {},
72
+ [GossipType.voluntary_exit]: {},
73
+ [GossipType.bls_to_execution_change]: {},
74
+ [GossipType.beacon_attestation]: {},
75
+ [GossipType.proposer_slashing]: {},
76
+ [GossipType.attester_slashing]: {},
77
+ [GossipType.sync_committee_contribution_and_proof]: {},
78
+ [GossipType.sync_committee]: {},
79
+ [GossipType.light_client_finality_update]: {},
80
+ [GossipType.light_client_optimistic_update]: {},
81
+ };
82
+ const executeGossipWorkOrder = Object.keys(executeGossipWorkOrderObj) as (keyof typeof executeGossipWorkOrderObj)[];
83
+
84
+ // TODO: Arbitrary constant, check metrics
85
+ const MAX_JOBS_SUBMITTED_PER_TICK = 128;
86
+
87
+ // How many attestations (aggregate + unaggregate) we keep before new ones get dropped.
88
+ const MAX_QUEUED_UNKNOWN_BLOCK_GOSSIP_OBJECTS = 16_384;
89
+
90
+ // We don't want to process too many attestations in a single tick
91
+ // As seen on mainnet, attestation concurrency metric ranges from 1000 to 2000
92
+ // so make this constant a little bit conservative
93
+ const MAX_UNKNOWN_BLOCK_GOSSIP_OBJECTS_PER_TICK = 1024;
94
+
95
+ // Same motivation to JobItemQueue, we don't want to block the event loop
96
+ const PROCESS_UNKNOWN_BLOCK_GOSSIP_OBJECTS_YIELD_EVERY_MS = 50;
97
+
98
+ /**
99
+ * Reprocess reject reason for metrics
100
+ */
101
+ export enum ReprocessRejectReason {
102
+ /**
103
+ * There are too many attestations that have unknown block root.
104
+ */
105
+ reached_limit = "reached_limit",
106
+ /**
107
+ * The awaiting attestation is pruned per clock slot.
108
+ */
109
+ expired = "expired",
110
+ }
111
+
112
+ /**
113
+ * Cannot accept work reason for metrics
114
+ */
115
+ export enum CannotAcceptWorkReason {
116
+ /**
117
+ * bls is busy.
118
+ */
119
+ bls = "bls_busy",
120
+ /**
121
+ * regen is busy.
122
+ */
123
+ regen = "regen_busy",
124
+ }
125
+
126
+ /**
127
+ * Network processor handles the gossip queues and throtles processing to not overload the main thread
128
+ * - Decides when to process work and what to process
129
+ *
130
+ * What triggers execute work?
131
+ *
132
+ * - When work is submitted
133
+ * - When downstream workers become available
134
+ *
135
+ * ### PendingGossipsubMessage beacon_attestation example
136
+ *
137
+ * For attestations, processing the message includes the steps:
138
+ * 1. Pre shuffling sync validation
139
+ * 2. Retrieve shuffling: async + goes into the regen queue and can be expensive
140
+ * 3. Pre sig validation sync validation
141
+ * 4. Validate BLS signature: async + goes into workers through another manager
142
+ *
143
+ * The gossip queues should receive "backpressue" from the regen and BLS workers queues.
144
+ * Such that enough work is processed to fill either one of the queue.
145
+ */
146
+ export class NetworkProcessor {
147
+ private readonly chain: IBeaconChain;
148
+ private readonly events: NetworkEventBus;
149
+ private readonly logger: Logger;
150
+ private readonly metrics: Metrics | null;
151
+ private readonly gossipValidatorFn: GossipValidatorFn;
152
+ private readonly gossipValidatorBatchFn: GossipValidatorBatchFn;
153
+ private readonly gossipQueues: ReturnType<typeof createGossipQueues>;
154
+ private readonly gossipTopicConcurrency: {[K in GossipType]: number};
155
+ private readonly extractBlockSlotRootFns = createExtractBlockSlotRootFns();
156
+ // we may not receive the block for Attestation and SignedAggregateAndProof messages, in that case PendingGossipsubMessage needs
157
+ // to be stored in this Map and reprocessed once the block comes
158
+ private readonly awaitingGossipsubMessagesByRootBySlot: MapDef<Slot, MapDef<RootHex, Set<PendingGossipsubMessage>>>;
159
+ private unknownBlockGossipsubMessagesCount = 0;
160
+ private unknownRootsBySlot = new MapDef<Slot, Set<RootHex>>(() => new Set());
161
+
162
+ constructor(
163
+ modules: NetworkProcessorModules,
164
+ private readonly opts: NetworkProcessorOpts
165
+ ) {
166
+ const {chain, events, logger, metrics} = modules;
167
+ this.chain = chain;
168
+ this.events = events;
169
+ this.metrics = metrics;
170
+ this.logger = logger;
171
+ this.events = events;
172
+ this.gossipQueues = createGossipQueues();
173
+ this.gossipTopicConcurrency = mapValues(this.gossipQueues, () => 0);
174
+ this.gossipValidatorFn = getGossipValidatorFn(modules.gossipHandlers ?? getGossipHandlers(modules, opts), modules);
175
+ this.gossipValidatorBatchFn = getGossipValidatorBatchFn(
176
+ modules.gossipHandlers ?? getGossipHandlers(modules, opts),
177
+ modules
178
+ );
179
+
180
+ events.on(NetworkEvent.pendingGossipsubMessage, this.onPendingGossipsubMessage.bind(this));
181
+ this.chain.emitter.on(routes.events.EventType.block, this.onBlockProcessed.bind(this));
182
+ this.chain.clock.on(ClockEvent.slot, this.onClockSlot.bind(this));
183
+
184
+ this.awaitingGossipsubMessagesByRootBySlot = new MapDef(
185
+ () => new MapDef<RootHex, Set<PendingGossipsubMessage>>(() => new Set())
186
+ );
187
+
188
+ // TODO: Implement queues and priorization for ReqResp incoming requests
189
+ // Listens to NetworkEvent.reqRespIncomingRequest event
190
+
191
+ if (metrics) {
192
+ metrics.gossipValidationQueue.length.addCollect(() => {
193
+ for (const topic of executeGossipWorkOrder) {
194
+ metrics.gossipValidationQueue.length.set({topic}, this.gossipQueues[topic].length);
195
+ metrics.gossipValidationQueue.keySize.set({topic}, this.gossipQueues[topic].keySize);
196
+ metrics.gossipValidationQueue.concurrency.set({topic}, this.gossipTopicConcurrency[topic]);
197
+ }
198
+ metrics.reprocessGossipAttestations.countPerSlot.set(this.unknownBlockGossipsubMessagesCount);
199
+ // specific metric for beacon_attestation topic
200
+ metrics.gossipValidationQueue.keyAge.reset();
201
+ for (const ageMs of this.gossipQueues.beacon_attestation.getDataAgeMs()) {
202
+ metrics.gossipValidationQueue.keyAge.observe(ageMs / 1000);
203
+ }
204
+ });
205
+ }
206
+
207
+ // TODO: Pull new work when available
208
+ // this.bls.onAvailable(() => this.executeWork());
209
+ // this.regen.onAvailable(() => this.executeWork());
210
+ }
211
+
212
+ async stop(): Promise<void> {
213
+ this.events.off(NetworkEvent.pendingGossipsubMessage, this.onPendingGossipsubMessage);
214
+ this.chain.emitter.off(routes.events.EventType.block, this.onBlockProcessed);
215
+ this.chain.emitter.off(ClockEvent.slot, this.onClockSlot);
216
+ }
217
+
218
+ dropAllJobs(): void {
219
+ for (const topic of executeGossipWorkOrder) {
220
+ this.gossipQueues[topic].clear();
221
+ }
222
+ }
223
+
224
+ dumpGossipQueue(topic: GossipType): PendingGossipsubMessage[] {
225
+ const queue = this.gossipQueues[topic];
226
+ if (queue === undefined) {
227
+ throw Error(`Unknown gossipType ${topic}, known values: ${Object.keys(this.gossipQueues).join(", ")}`);
228
+ }
229
+
230
+ return queue.getAll();
231
+ }
232
+
233
+ searchUnknownSlotRoot({slot, root}: SlotRootHex, source: BlockInputSource, peer?: PeerIdStr): void {
234
+ if (this.chain.seenBlock(root) || this.unknownRootsBySlot.getOrDefault(slot).has(root)) {
235
+ return;
236
+ }
237
+ // Search for the unknown block
238
+ this.unknownRootsBySlot.getOrDefault(slot).add(root);
239
+ this.chain.emitter.emit(ChainEvent.unknownBlockRoot, {rootHex: root, peer, source});
240
+ }
241
+
242
+ private onPendingGossipsubMessage(message: PendingGossipsubMessage): void {
243
+ const topicType = message.topic.type;
244
+ const extractBlockSlotRootFn = this.extractBlockSlotRootFns[topicType];
245
+ // check block root of Attestation and SignedAggregateAndProof messages
246
+ if (extractBlockSlotRootFn) {
247
+ const slotRoot = extractBlockSlotRootFn(message.msg.data, message.topic.boundary.fork);
248
+ // if slotRoot is null, it means the msg.data is invalid
249
+ // in that case message will be rejected when deserializing data in later phase (gossipValidatorFn)
250
+ if (slotRoot) {
251
+ // DOS protection: avoid processing messages that are too old
252
+ const {slot, root} = slotRoot;
253
+ const clockSlot = this.chain.clock.currentSlot;
254
+ const {fork} = message.topic.boundary;
255
+ let earliestPermissableSlot = clockSlot - DEFAULT_EARLIEST_PERMISSIBLE_SLOT_DISTANCE;
256
+ if (ForkSeq[fork] >= ForkSeq.deneb && topicType === GossipType.beacon_attestation) {
257
+ // post deneb, the attestations could be in current or previous epoch
258
+ earliestPermissableSlot = computeStartSlotAtEpoch(this.chain.clock.currentEpoch - 1);
259
+ }
260
+ if (slot < earliestPermissableSlot) {
261
+ // TODO: Should report the dropped job to gossip? It will be eventually pruned from the mcache
262
+ this.metrics?.networkProcessor.gossipValidationError.inc({
263
+ topic: topicType,
264
+ error: GossipErrorCode.PAST_SLOT,
265
+ });
266
+ return;
267
+ }
268
+ message.msgSlot = slot;
269
+ // check if we processed a block with this root
270
+ // no need to check if root is a descendant of the current finalized block, it will be checked once we validate the message if needed
271
+ if (root && !this.chain.forkChoice.hasBlockHexUnsafe(root)) {
272
+ this.searchUnknownSlotRoot({slot, root}, BlockInputSource.gossip, message.propagationSource.toString());
273
+
274
+ if (this.unknownBlockGossipsubMessagesCount > MAX_QUEUED_UNKNOWN_BLOCK_GOSSIP_OBJECTS) {
275
+ // TODO: Should report the dropped job to gossip? It will be eventually pruned from the mcache
276
+ this.metrics?.reprocessGossipAttestations.reject.inc({reason: ReprocessRejectReason.reached_limit});
277
+ return;
278
+ }
279
+
280
+ this.metrics?.reprocessGossipAttestations.total.inc();
281
+ const awaitingGossipsubMessagesByRoot = this.awaitingGossipsubMessagesByRootBySlot.getOrDefault(slot);
282
+ const awaitingGossipsubMessages = awaitingGossipsubMessagesByRoot.getOrDefault(root);
283
+ awaitingGossipsubMessages.add(message);
284
+ this.unknownBlockGossipsubMessagesCount++;
285
+ return;
286
+ }
287
+ }
288
+ }
289
+
290
+ // bypass the check for other messages
291
+ this.pushPendingGossipsubMessageToQueue(message);
292
+ }
293
+
294
+ private pushPendingGossipsubMessageToQueue(message: PendingGossipsubMessage): void {
295
+ const topicType = message.topic.type;
296
+ const droppedCount = this.gossipQueues[topicType].add(message);
297
+ if (droppedCount) {
298
+ // TODO: Should report the dropped job to gossip? It will be eventually pruned from the mcache
299
+ this.metrics?.gossipValidationQueue.droppedJobs.inc({topic: message.topic.type}, droppedCount);
300
+ }
301
+
302
+ // Tentatively perform work
303
+ this.executeWork();
304
+ }
305
+
306
+ private async onBlockProcessed({
307
+ slot,
308
+ block: rootHex,
309
+ }: {
310
+ slot: Slot;
311
+ block: string;
312
+ executionOptimistic: boolean;
313
+ }): Promise<void> {
314
+ const byRootGossipsubMessages = this.awaitingGossipsubMessagesByRootBySlot.getOrDefault(slot);
315
+ const waitingGossipsubMessages = byRootGossipsubMessages.getOrDefault(rootHex);
316
+ if (waitingGossipsubMessages.size === 0) {
317
+ return;
318
+ }
319
+
320
+ this.metrics?.reprocessGossipAttestations.resolve.inc(waitingGossipsubMessages.size);
321
+ const nowSec = Date.now() / 1000;
322
+ let count = 0;
323
+ // TODO: we can group attestations to process in batches but since we have the SeenAttestationDatas
324
+ // cache, it may not be necessary at this time
325
+ for (const message of waitingGossipsubMessages) {
326
+ this.metrics?.reprocessGossipAttestations.waitSecBeforeResolve.set(nowSec - message.seenTimestampSec);
327
+ this.pushPendingGossipsubMessageToQueue(message);
328
+ count++;
329
+ // don't want to block the event loop, worse case it'd wait for 16_084 / 1024 * 50ms = 800ms which is not a big deal
330
+ if (count === MAX_UNKNOWN_BLOCK_GOSSIP_OBJECTS_PER_TICK) {
331
+ count = 0;
332
+ await sleep(PROCESS_UNKNOWN_BLOCK_GOSSIP_OBJECTS_YIELD_EVERY_MS);
333
+ }
334
+ }
335
+
336
+ byRootGossipsubMessages.delete(rootHex);
337
+ }
338
+
339
+ private onClockSlot(clockSlot: Slot): void {
340
+ const nowSec = Date.now() / 1000;
341
+ for (const [slot, gossipMessagesByRoot] of this.awaitingGossipsubMessagesByRootBySlot.entries()) {
342
+ if (slot < clockSlot) {
343
+ for (const gossipMessages of gossipMessagesByRoot.values()) {
344
+ for (const message of gossipMessages) {
345
+ this.metrics?.reprocessGossipAttestations.reject.inc({reason: ReprocessRejectReason.expired});
346
+ this.metrics?.reprocessGossipAttestations.waitSecBeforeReject.set(
347
+ {reason: ReprocessRejectReason.expired},
348
+ nowSec - message.seenTimestampSec
349
+ );
350
+ // TODO: Should report the dropped job to gossip? It will be eventually pruned from the mcache
351
+ }
352
+ }
353
+ this.awaitingGossipsubMessagesByRootBySlot.delete(slot);
354
+ }
355
+ }
356
+ pruneSetToMax(this.unknownRootsBySlot, MAX_UNKNOWN_ROOTS_SLOT_CACHE_SIZE);
357
+ this.unknownBlockGossipsubMessagesCount = 0;
358
+ }
359
+
360
+ private executeWork(): void {
361
+ // TODO: Maybe de-bounce by timing the last time executeWork was run
362
+
363
+ this.metrics?.networkProcessor.executeWorkCalls.inc();
364
+ let jobsSubmitted = 0;
365
+
366
+ job_loop: while (jobsSubmitted < MAX_JOBS_SUBMITTED_PER_TICK) {
367
+ // Check if chain can accept work before calling queue.next() since it consumes the items
368
+ const reason = this.checkAcceptWork();
369
+
370
+ for (const topic of executeGossipWorkOrder) {
371
+ // beacon block is guaranteed to be processed immedately
372
+ // reason !== null means cannot accept work
373
+ if (reason !== null && !executeGossipWorkOrderObj[topic]?.bypassQueue) {
374
+ this.metrics?.networkProcessor.canNotAcceptWork.inc({reason});
375
+ break job_loop;
376
+ }
377
+ if (
378
+ this.opts.maxGossipTopicConcurrency !== undefined &&
379
+ this.gossipTopicConcurrency[topic] > this.opts.maxGossipTopicConcurrency
380
+ ) {
381
+ // Reached concurrency limit for topic, continue to next topic
382
+ continue;
383
+ }
384
+
385
+ const item = this.gossipQueues[topic].next();
386
+ const numMessages = Array.isArray(item) ? item.length : 1;
387
+ if (item) {
388
+ this.gossipTopicConcurrency[topic] += numMessages;
389
+ this.processPendingGossipsubMessage(item)
390
+ .finally(() => {
391
+ this.gossipTopicConcurrency[topic] -= numMessages;
392
+ })
393
+ .catch((e) => this.logger.error("processGossipAttestations must not throw", {}, e));
394
+
395
+ jobsSubmitted += numMessages;
396
+ // Attempt to find more work, but check canAcceptWork() again and run executeGossipWorkOrder priorization
397
+ continue job_loop;
398
+ }
399
+ }
400
+
401
+ // No item of work available on all queues, break off job_loop
402
+ break;
403
+ }
404
+
405
+ if (jobsSubmitted > 0) {
406
+ this.metrics?.networkProcessor.jobsSubmitted.observe(jobsSubmitted);
407
+ }
408
+ }
409
+
410
+ private async processPendingGossipsubMessage(
411
+ messageOrArray: PendingGossipsubMessage | PendingGossipsubMessage[]
412
+ ): Promise<void> {
413
+ const nowSec = Date.now() / 1000;
414
+ if (Array.isArray(messageOrArray)) {
415
+ for (const msg of messageOrArray) {
416
+ msg.startProcessUnixSec = nowSec;
417
+ if (msg.queueAddedMs !== undefined) {
418
+ this.metrics?.gossipValidationQueue.queueTime.observe(nowSec - msg.queueAddedMs / 1000);
419
+ }
420
+ }
421
+ } else {
422
+ // indexed queue is not used here
423
+ messageOrArray.startProcessUnixSec = nowSec;
424
+ }
425
+
426
+ const acceptanceArr = Array.isArray(messageOrArray)
427
+ ? // for beacon_attestation topic, process attestations with same attestation data
428
+ // we always have msgSlot in beaccon_attestation topic so the type conversion is safe
429
+ await this.gossipValidatorBatchFn(messageOrArray as GossipMessageInfo[])
430
+ : [
431
+ // for other topics
432
+ await this.gossipValidatorFn({...messageOrArray, msgSlot: messageOrArray.msgSlot ?? null}),
433
+ ];
434
+
435
+ if (Array.isArray(messageOrArray)) {
436
+ for (const msg of messageOrArray) {
437
+ this.trackJobTime(msg, messageOrArray.length);
438
+ }
439
+ } else {
440
+ this.trackJobTime(messageOrArray, 1);
441
+ }
442
+
443
+ // Use setTimeout to yield to the macro queue
444
+ // This is mostly due to too many attestation messages, and a gossipsub RPC may
445
+ // contain multiple of them. This helps avoid the I/O lag issue.
446
+
447
+ if (Array.isArray(messageOrArray)) {
448
+ for (const [i, msg] of messageOrArray.entries()) {
449
+ callInNextEventLoop(() => {
450
+ this.events.emit(NetworkEvent.gossipMessageValidationResult, {
451
+ msgId: msg.msgId,
452
+ propagationSource: msg.propagationSource,
453
+ acceptance: acceptanceArr[i],
454
+ });
455
+ });
456
+ }
457
+ } else {
458
+ callInNextEventLoop(() => {
459
+ this.events.emit(NetworkEvent.gossipMessageValidationResult, {
460
+ msgId: messageOrArray.msgId,
461
+ propagationSource: messageOrArray.propagationSource,
462
+ acceptance: acceptanceArr[0],
463
+ });
464
+ });
465
+ }
466
+ }
467
+
468
+ private trackJobTime(message: PendingGossipsubMessage, numJob: number): void {
469
+ if (message.startProcessUnixSec !== null) {
470
+ this.metrics?.gossipValidationQueue.jobWaitTime.observe(
471
+ {topic: message.topic.type},
472
+ message.startProcessUnixSec - message.seenTimestampSec
473
+ );
474
+ // if it takes 64ms to process 64 jobs, the average job time is 1ms
475
+ this.metrics?.gossipValidationQueue.jobTime.observe(
476
+ {topic: message.topic.type},
477
+ (Date.now() / 1000 - message.startProcessUnixSec) / numJob
478
+ );
479
+ }
480
+ }
481
+
482
+ /**
483
+ * Return null if chain can accept work, otherwise return the reason why it cannot accept work
484
+ */
485
+ private checkAcceptWork(): null | CannotAcceptWorkReason {
486
+ if (!this.chain.blsThreadPoolCanAcceptWork()) {
487
+ return CannotAcceptWorkReason.bls;
488
+ }
489
+
490
+ if (!this.chain.regenCanAcceptWork()) {
491
+ return CannotAcceptWorkReason.regen;
492
+ }
493
+
494
+ return null;
495
+ }
496
+ }
@@ -0,0 +1,27 @@
1
+ import {Message} from "@libp2p/interface";
2
+ import {ForkName} from "@lodestar/params";
3
+ import {Slot, SlotOptionalRoot} from "@lodestar/types";
4
+ import {PeerIdStr} from "../../util/peerId.js";
5
+ import {GossipTopic, GossipType} from "../gossip/index.js";
6
+
7
+ export type GossipAttestationsWork = {
8
+ messages: PendingGossipsubMessage[];
9
+ };
10
+
11
+ export type PendingGossipsubMessage = {
12
+ topic: GossipTopic;
13
+ msg: Message;
14
+ // only available for beacon_attestation and aggregate_and_proof
15
+ msgSlot?: Slot;
16
+ msgId: string;
17
+ propagationSource: PeerIdStr;
18
+ seenTimestampSec: number;
19
+ startProcessUnixSec: number | null;
20
+ // specific properties for IndexedGossipQueueMinSize, for beacon_attestation topic only
21
+ indexed?: string;
22
+ queueAddedMs?: number;
23
+ };
24
+
25
+ export type ExtractSlotRootFns = {
26
+ [K in GossipType]?: (data: Uint8Array, forkName: ForkName) => SlotOptionalRoot | null;
27
+ };