@lodestar/beacon-node 1.35.0-dev.98d359db41 → 1.35.0-dev.a70bac5bd3

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 (1258) hide show
  1. package/lib/api/impl/config/constants.d.ts +0 -5
  2. package/lib/api/impl/config/constants.js +1 -6
  3. package/lib/api/impl/config/constants.js.map +1 -1
  4. package/lib/api/impl/debug/index.js +1 -1
  5. package/lib/api/impl/debug/index.js.map +1 -1
  6. package/lib/api/impl/errors.js +0 -2
  7. package/lib/api/impl/errors.js.map +1 -1
  8. package/lib/api/impl/index.d.ts +3 -3
  9. package/lib/api/impl/index.js +3 -3
  10. package/lib/api/impl/index.js.map +1 -1
  11. package/lib/api/rest/activeSockets.js +2 -3
  12. package/lib/api/rest/activeSockets.js.map +1 -1
  13. package/lib/api/rest/base.d.ts +1 -1
  14. package/lib/api/rest/base.js +2 -6
  15. package/lib/api/rest/base.js.map +1 -1
  16. package/lib/api/rest/index.js +0 -2
  17. package/lib/api/rest/index.js.map +1 -1
  18. package/lib/api/rest/swaggerUI.js +2 -4
  19. package/lib/api/rest/swaggerUI.js.map +1 -1
  20. package/lib/chain/ColumnReconstructionTracker.d.ts +2 -2
  21. package/lib/chain/ColumnReconstructionTracker.js +12 -34
  22. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  23. package/lib/chain/GetBlobsTracker.d.ts +2 -2
  24. package/lib/chain/GetBlobsTracker.js +8 -28
  25. package/lib/chain/GetBlobsTracker.js.map +1 -1
  26. package/lib/chain/archiveStore/archiveStore.js +38 -49
  27. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  28. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +0 -3
  29. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  30. package/lib/chain/archiveStore/index.d.ts +1 -1
  31. package/lib/chain/archiveStore/index.js +1 -1
  32. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +0 -5
  33. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  34. package/lib/chain/balancesCache.js +3 -1
  35. package/lib/chain/balancesCache.js.map +1 -1
  36. package/lib/chain/beaconProposerCache.js +0 -1
  37. package/lib/chain/beaconProposerCache.js.map +1 -1
  38. package/lib/chain/blocks/blockInput/blockInput.js +7 -18
  39. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  40. package/lib/chain/blocks/blockInput/index.d.ts +1 -1
  41. package/lib/chain/blocks/blockInput/index.js +1 -1
  42. package/lib/chain/blocks/index.d.ts +1 -1
  43. package/lib/chain/blocks/index.js +0 -1
  44. package/lib/chain/blocks/index.js.map +1 -1
  45. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -1
  46. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  47. package/lib/chain/bls/multithread/index.js +163 -168
  48. package/lib/chain/bls/multithread/index.js.map +1 -1
  49. package/lib/chain/bls/singleThread.js +0 -1
  50. package/lib/chain/bls/singleThread.js.map +1 -1
  51. package/lib/chain/chain.d.ts +6 -6
  52. package/lib/chain/chain.js +17 -62
  53. package/lib/chain/chain.js.map +1 -1
  54. package/lib/chain/emitter.d.ts +2 -2
  55. package/lib/chain/emitter.js.map +1 -1
  56. package/lib/chain/errors/blockError.js +0 -1
  57. package/lib/chain/errors/blockError.js.map +1 -1
  58. package/lib/chain/errors/gossipValidation.js +0 -1
  59. package/lib/chain/errors/gossipValidation.js.map +1 -1
  60. package/lib/chain/errors/index.d.ts +2 -2
  61. package/lib/chain/errors/index.js +2 -2
  62. package/lib/chain/errors/index.js.map +1 -1
  63. package/lib/chain/forkChoice/index.js.map +1 -1
  64. package/lib/chain/genesis/genesis.js +5 -16
  65. package/lib/chain/genesis/genesis.js.map +1 -1
  66. package/lib/chain/index.d.ts +2 -2
  67. package/lib/chain/index.js +2 -2
  68. package/lib/chain/index.js.map +1 -1
  69. package/lib/chain/interface.d.ts +4 -4
  70. package/lib/chain/interface.js.map +1 -1
  71. package/lib/chain/lightClient/index.js +9 -16
  72. package/lib/chain/lightClient/index.js.map +1 -1
  73. package/lib/chain/lightClient/proofs.js.map +1 -1
  74. package/lib/chain/opPools/aggregatedAttestationPool.js +9 -14
  75. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  76. package/lib/chain/opPools/attestationPool.js +3 -8
  77. package/lib/chain/opPools/attestationPool.js.map +1 -1
  78. package/lib/chain/opPools/index.d.ts +1 -1
  79. package/lib/chain/opPools/index.js +1 -1
  80. package/lib/chain/opPools/index.js.map +1 -1
  81. package/lib/chain/opPools/opPool.js +12 -10
  82. package/lib/chain/opPools/opPool.js.map +1 -1
  83. package/lib/chain/opPools/syncCommitteeMessagePool.js +6 -9
  84. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  85. package/lib/chain/opPools/syncContributionAndProofPool.js +2 -5
  86. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  87. package/lib/chain/options.js +1 -1
  88. package/lib/chain/options.js.map +1 -1
  89. package/lib/chain/prepareNextSlot.js +136 -141
  90. package/lib/chain/prepareNextSlot.js.map +1 -1
  91. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  92. package/lib/chain/produceBlock/produceBlockBody.js +10 -3
  93. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  94. package/lib/chain/regen/errors.js +0 -1
  95. package/lib/chain/regen/errors.js.map +1 -1
  96. package/lib/chain/regen/index.d.ts +1 -1
  97. package/lib/chain/regen/index.js +1 -1
  98. package/lib/chain/regen/index.js.map +1 -1
  99. package/lib/chain/regen/queued.js +28 -35
  100. package/lib/chain/regen/queued.js.map +1 -1
  101. package/lib/chain/regen/regen.js +0 -1
  102. package/lib/chain/regen/regen.js.map +1 -1
  103. package/lib/chain/reprocess.js +1 -3
  104. package/lib/chain/reprocess.js.map +1 -1
  105. package/lib/chain/seenCache/seenAggregateAndProof.js +6 -7
  106. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  107. package/lib/chain/seenCache/seenAttestationData.js +2 -5
  108. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  109. package/lib/chain/seenCache/seenAttesters.js +4 -2
  110. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  111. package/lib/chain/seenCache/seenBlockProposers.js +4 -2
  112. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  113. package/lib/chain/seenCache/seenCommittee.js +3 -1
  114. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  115. package/lib/chain/seenCache/seenCommitteeContribution.js +2 -3
  116. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  117. package/lib/chain/seenCache/seenGossipBlockInput.js +13 -20
  118. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  119. package/lib/chain/shufflingCache.js +2 -5
  120. package/lib/chain/shufflingCache.js.map +1 -1
  121. package/lib/chain/stateCache/blockStateCacheImpl.js +7 -13
  122. package/lib/chain/stateCache/blockStateCacheImpl.js.map +1 -1
  123. package/lib/chain/stateCache/datastore/db.js +0 -1
  124. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  125. package/lib/chain/stateCache/datastore/file.js +0 -1
  126. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  127. package/lib/chain/stateCache/datastore/index.d.ts +1 -1
  128. package/lib/chain/stateCache/datastore/index.js +1 -1
  129. package/lib/chain/stateCache/datastore/index.js.map +1 -1
  130. package/lib/chain/stateCache/fifoBlockStateCache.js +0 -10
  131. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  132. package/lib/chain/stateCache/inMemoryCheckpointsCache.js +4 -10
  133. package/lib/chain/stateCache/inMemoryCheckpointsCache.js.map +1 -1
  134. package/lib/chain/stateCache/index.d.ts +1 -1
  135. package/lib/chain/stateCache/index.js +1 -1
  136. package/lib/chain/stateCache/index.js.map +1 -1
  137. package/lib/chain/stateCache/mapMetrics.js +4 -4
  138. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  139. package/lib/chain/stateCache/persistentCheckpointsCache.js +6 -14
  140. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  141. package/lib/chain/validation/blobSidecar.js.map +1 -1
  142. package/lib/chain/validation/dataColumnSidecar.js +1 -1
  143. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  144. package/lib/chain/validation/index.d.ts +1 -1
  145. package/lib/chain/validation/index.js +1 -1
  146. package/lib/chain/validation/index.js.map +1 -1
  147. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +2 -1
  148. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  149. package/lib/chain/validatorMonitor.d.ts +3 -1
  150. package/lib/chain/validatorMonitor.js +1 -2
  151. package/lib/chain/validatorMonitor.js.map +1 -1
  152. package/lib/db/beacon.js +0 -24
  153. package/lib/db/beacon.js.map +1 -1
  154. package/lib/db/buckets.d.ts +4 -4
  155. package/lib/db/buckets.js +4 -4
  156. package/lib/db/buckets.js.map +1 -1
  157. package/lib/db/index.d.ts +1 -1
  158. package/lib/db/index.js.map +1 -1
  159. package/lib/db/repositories/blobSidecars.js +1 -1
  160. package/lib/db/repositories/blobSidecars.js.map +1 -1
  161. package/lib/db/repositories/blobSidecarsArchive.js +1 -1
  162. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  163. package/lib/db/repositories/blockArchive.js +3 -2
  164. package/lib/db/repositories/blockArchive.js.map +1 -1
  165. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  166. package/lib/db/repositories/dataColumnSidecar.js +2 -2
  167. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  168. package/lib/db/repositories/dataColumnSidecarArchive.js +2 -2
  169. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  170. package/lib/db/repositories/depositDataRoot.js +0 -1
  171. package/lib/db/repositories/depositDataRoot.js.map +1 -1
  172. package/lib/db/repositories/index.d.ts +10 -10
  173. package/lib/db/repositories/index.js +9 -9
  174. package/lib/db/repositories/index.js.map +1 -1
  175. package/lib/db/single/preGenesisState.js +0 -6
  176. package/lib/db/single/preGenesisState.js.map +1 -1
  177. package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -5
  178. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +1 -1
  179. package/lib/eth1/eth1DataCache.js +0 -2
  180. package/lib/eth1/eth1DataCache.js.map +1 -1
  181. package/lib/eth1/eth1DepositDataTracker.js +5 -18
  182. package/lib/eth1/eth1DepositDataTracker.js.map +1 -1
  183. package/lib/eth1/eth1DepositsCache.js +0 -3
  184. package/lib/eth1/eth1DepositsCache.js.map +1 -1
  185. package/lib/eth1/eth1MergeBlockTracker.js +4 -10
  186. package/lib/eth1/eth1MergeBlockTracker.js.map +1 -1
  187. package/lib/eth1/index.js +0 -2
  188. package/lib/eth1/index.js.map +1 -1
  189. package/lib/eth1/provider/eth1Provider.d.ts +2 -1
  190. package/lib/eth1/provider/eth1Provider.js +2 -6
  191. package/lib/eth1/provider/eth1Provider.js.map +1 -1
  192. package/lib/eth1/provider/jsonRpcHttpClient.d.ts +1 -1
  193. package/lib/eth1/provider/jsonRpcHttpClient.js +2 -16
  194. package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -1
  195. package/lib/eth1/provider/jwt.js.map +1 -1
  196. package/lib/eth1/utils/deposits.js.map +1 -1
  197. package/lib/execution/builder/cache.js +0 -6
  198. package/lib/execution/builder/cache.js.map +1 -1
  199. package/lib/execution/builder/http.js +8 -14
  200. package/lib/execution/builder/http.js.map +1 -1
  201. package/lib/execution/builder/index.js.map +1 -1
  202. package/lib/execution/engine/disabled.js +4 -2
  203. package/lib/execution/engine/disabled.js.map +1 -1
  204. package/lib/execution/engine/http.js +8 -23
  205. package/lib/execution/engine/http.js.map +1 -1
  206. package/lib/execution/engine/interface.js.map +1 -1
  207. package/lib/execution/engine/mock.d.ts +0 -1
  208. package/lib/execution/engine/mock.js +12 -16
  209. package/lib/execution/engine/mock.js.map +1 -1
  210. package/lib/execution/engine/payloadIdCache.js +3 -1
  211. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  212. package/lib/execution/engine/types.d.ts +1 -0
  213. package/lib/execution/engine/types.js.map +1 -1
  214. package/lib/execution/engine/utils.js +3 -3
  215. package/lib/execution/engine/utils.js.map +1 -1
  216. package/lib/execution/index.d.ts +2 -2
  217. package/lib/execution/index.js +2 -2
  218. package/lib/execution/index.js.map +1 -1
  219. package/lib/index.d.ts +6 -6
  220. package/lib/index.js +5 -5
  221. package/lib/index.js.map +1 -1
  222. package/lib/metrics/index.d.ts +1 -1
  223. package/lib/metrics/index.js +1 -1
  224. package/lib/metrics/index.js.map +1 -1
  225. package/lib/metrics/metrics/lodestar.d.ts +1 -6
  226. package/lib/metrics/metrics/lodestar.js +1 -10
  227. package/lib/metrics/metrics/lodestar.js.map +1 -1
  228. package/lib/metrics/metrics.d.ts +1 -1
  229. package/lib/metrics/metrics.js.map +1 -1
  230. package/lib/metrics/nodeJsMetrics.js +1 -1
  231. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  232. package/lib/metrics/server/http.d.ts +1 -1
  233. package/lib/metrics/utils/avgMinMax.d.ts +1 -1
  234. package/lib/metrics/utils/avgMinMax.js +6 -10
  235. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  236. package/lib/metrics/utils/gauge.d.ts +1 -1
  237. package/lib/metrics/utils/gauge.js +4 -1
  238. package/lib/metrics/utils/gauge.js.map +1 -1
  239. package/lib/metrics/utils/registryMetricCreator.d.ts +1 -1
  240. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  241. package/lib/monitoring/properties.js +0 -4
  242. package/lib/monitoring/properties.js.map +1 -1
  243. package/lib/monitoring/service.js +1 -13
  244. package/lib/monitoring/service.js.map +1 -1
  245. package/lib/monitoring/system.js +27 -25
  246. package/lib/monitoring/system.js.map +1 -1
  247. package/lib/network/core/networkCore.d.ts +2 -2
  248. package/lib/network/core/networkCore.js +50 -67
  249. package/lib/network/core/networkCore.js.map +1 -1
  250. package/lib/network/core/networkCoreWorker.js +1 -1
  251. package/lib/network/core/networkCoreWorker.js.map +1 -1
  252. package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -2
  253. package/lib/network/core/networkCoreWorkerHandler.js +5 -14
  254. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  255. package/lib/network/discv5/index.d.ts +2 -2
  256. package/lib/network/discv5/index.js +3 -9
  257. package/lib/network/discv5/index.js.map +1 -1
  258. package/lib/network/discv5/worker.js +3 -3
  259. package/lib/network/discv5/worker.js.map +1 -1
  260. package/lib/network/gossip/encoding.d.ts +1 -1
  261. package/lib/network/gossip/encoding.js +2 -4
  262. package/lib/network/gossip/encoding.js.map +1 -1
  263. package/lib/network/gossip/errors.js +0 -1
  264. package/lib/network/gossip/errors.js.map +1 -1
  265. package/lib/network/gossip/gossipsub.d.ts +1 -2
  266. package/lib/network/gossip/gossipsub.js +17 -43
  267. package/lib/network/gossip/gossipsub.js.map +1 -1
  268. package/lib/network/gossip/index.d.ts +2 -2
  269. package/lib/network/gossip/index.js +2 -2
  270. package/lib/network/gossip/index.js.map +1 -1
  271. package/lib/network/gossip/interface.d.ts +2 -2
  272. package/lib/network/gossip/metrics.d.ts +7 -15
  273. package/lib/network/gossip/metrics.js +6 -16
  274. package/lib/network/gossip/metrics.js.map +1 -1
  275. package/lib/network/gossip/topic.d.ts +105 -125
  276. package/lib/network/gossip/topic.js +1 -2
  277. package/lib/network/gossip/topic.js.map +1 -1
  278. package/lib/network/index.d.ts +3 -3
  279. package/lib/network/index.js +3 -3
  280. package/lib/network/index.js.map +1 -1
  281. package/lib/network/interface.d.ts +1 -1
  282. package/lib/network/libp2p/index.js +3 -11
  283. package/lib/network/libp2p/index.js.map +1 -1
  284. package/lib/network/metadata.js +1 -6
  285. package/lib/network/metadata.js.map +1 -1
  286. package/lib/network/network.d.ts +1 -1
  287. package/lib/network/network.js +76 -88
  288. package/lib/network/network.js.map +1 -1
  289. package/lib/network/options.js +1 -1
  290. package/lib/network/options.js.map +1 -1
  291. package/lib/network/peers/datastore.d.ts +2 -2
  292. package/lib/network/peers/datastore.js +4 -10
  293. package/lib/network/peers/datastore.js.map +1 -1
  294. package/lib/network/peers/discover.js +66 -75
  295. package/lib/network/peers/discover.js.map +1 -1
  296. package/lib/network/peers/peerManager.js +125 -145
  297. package/lib/network/peers/peerManager.js.map +1 -1
  298. package/lib/network/peers/peersData.js +3 -1
  299. package/lib/network/peers/peersData.js.map +1 -1
  300. package/lib/network/peers/score/index.d.ts +1 -1
  301. package/lib/network/peers/score/index.js +1 -1
  302. package/lib/network/peers/score/index.js.map +1 -1
  303. package/lib/network/peers/score/score.js +0 -6
  304. package/lib/network/peers/score/score.js.map +1 -1
  305. package/lib/network/peers/score/store.js +0 -3
  306. package/lib/network/peers/score/store.js.map +1 -1
  307. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  308. package/lib/network/peers/utils/subnetMap.js +4 -2
  309. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  310. package/lib/network/processor/aggregatorTracker.js +3 -1
  311. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  312. package/lib/network/processor/gossipHandlers.js +7 -3
  313. package/lib/network/processor/gossipHandlers.js.map +1 -1
  314. package/lib/network/processor/gossipQueues/indexed.js +9 -11
  315. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  316. package/lib/network/processor/gossipQueues/linear.js +8 -9
  317. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  318. package/lib/network/processor/index.d.ts +1 -1
  319. package/lib/network/processor/index.js +8 -18
  320. package/lib/network/processor/index.js.map +1 -1
  321. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +1 -1
  322. package/lib/network/reqresp/ReqRespBeaconNode.js +2 -11
  323. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  324. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  325. package/lib/network/reqresp/index.d.ts +1 -1
  326. package/lib/network/reqresp/index.js +1 -1
  327. package/lib/network/reqresp/index.js.map +1 -1
  328. package/lib/network/reqresp/rateLimit.js +2 -2
  329. package/lib/network/reqresp/rateLimit.js.map +1 -1
  330. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  331. package/lib/network/statusCache.js +0 -1
  332. package/lib/network/statusCache.js.map +1 -1
  333. package/lib/network/subnets/attnetsService.js +65 -73
  334. package/lib/network/subnets/attnetsService.js.map +1 -1
  335. package/lib/network/subnets/interface.js +1 -1
  336. package/lib/network/subnets/interface.js.map +1 -1
  337. package/lib/network/subnets/syncnetsService.js +22 -29
  338. package/lib/network/subnets/syncnetsService.js.map +1 -1
  339. package/lib/network/subnets/util.js +2 -1
  340. package/lib/network/subnets/util.js.map +1 -1
  341. package/lib/node/nodejs.d.ts +1 -1
  342. package/lib/node/nodejs.js +0 -15
  343. package/lib/node/nodejs.js.map +1 -1
  344. package/lib/node/notifier.js +2 -1
  345. package/lib/node/notifier.js.map +1 -1
  346. package/lib/node/options.js.map +1 -1
  347. package/lib/node/utils/interop/state.js +2 -1
  348. package/lib/node/utils/interop/state.js.map +1 -1
  349. package/lib/sync/backfill/backfill.d.ts +1 -1
  350. package/lib/sync/backfill/backfill.js +16 -58
  351. package/lib/sync/backfill/backfill.js.map +1 -1
  352. package/lib/sync/range/batch.d.ts +2 -2
  353. package/lib/sync/range/batch.js +11 -20
  354. package/lib/sync/range/batch.js.map +1 -1
  355. package/lib/sync/range/chain.d.ts +1 -1
  356. package/lib/sync/range/chain.js +8 -33
  357. package/lib/sync/range/chain.js.map +1 -1
  358. package/lib/sync/range/range.d.ts +1 -1
  359. package/lib/sync/range/range.js +70 -76
  360. package/lib/sync/range/range.js.map +1 -1
  361. package/lib/sync/range/utils/peerBalancer.js +1 -5
  362. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  363. package/lib/sync/sync.d.ts +2 -1
  364. package/lib/sync/sync.js +85 -93
  365. package/lib/sync/sync.js.map +1 -1
  366. package/lib/sync/types.d.ts +1 -0
  367. package/lib/sync/types.js.map +1 -1
  368. package/lib/sync/unknownBlock.js +168 -177
  369. package/lib/sync/unknownBlock.js.map +1 -1
  370. package/lib/sync/utils/downloadByRange.d.ts +1 -1
  371. package/lib/sync/utils/downloadByRoot.d.ts +2 -4
  372. package/lib/sync/utils/downloadByRoot.js +9 -36
  373. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  374. package/lib/util/array.js +3 -7
  375. package/lib/util/array.js.map +1 -1
  376. package/lib/util/asyncIterableToEvents.js +3 -6
  377. package/lib/util/asyncIterableToEvents.js.map +1 -1
  378. package/lib/util/binarySearch.js +0 -2
  379. package/lib/util/binarySearch.js.map +1 -1
  380. package/lib/util/blobs.js +3 -5
  381. package/lib/util/blobs.js.map +1 -1
  382. package/lib/util/bufferPool.js +2 -7
  383. package/lib/util/bufferPool.js.map +1 -1
  384. package/lib/util/clock.d.ts +1 -1
  385. package/lib/util/clock.js +18 -23
  386. package/lib/util/clock.js.map +1 -1
  387. package/lib/util/dataColumns.d.ts +15 -9
  388. package/lib/util/dataColumns.js +29 -50
  389. package/lib/util/dataColumns.js.map +1 -1
  390. package/lib/util/execution.d.ts +3 -12
  391. package/lib/util/execution.js +13 -47
  392. package/lib/util/execution.js.map +1 -1
  393. package/lib/util/itTrigger.js +4 -4
  394. package/lib/util/itTrigger.js.map +1 -1
  395. package/lib/util/map.js +0 -2
  396. package/lib/util/map.js.map +1 -1
  397. package/lib/util/queue/index.d.ts +1 -1
  398. package/lib/util/queue/index.js +1 -1
  399. package/lib/util/queue/index.js.map +1 -1
  400. package/lib/util/queue/itemQueue.js +49 -52
  401. package/lib/util/queue/itemQueue.js.map +1 -1
  402. package/lib/util/serializedCache.js +3 -1
  403. package/lib/util/serializedCache.js.map +1 -1
  404. package/lib/util/set.js +0 -2
  405. package/lib/util/set.js.map +1 -1
  406. package/lib/util/timeSeries.js +1 -3
  407. package/lib/util/timeSeries.js.map +1 -1
  408. package/lib/util/types.d.ts +1 -1
  409. package/package.json +23 -39
  410. package/lib/api/impl/api.d.ts.map +0 -1
  411. package/lib/api/impl/beacon/blocks/index.d.ts.map +0 -1
  412. package/lib/api/impl/beacon/blocks/utils.d.ts.map +0 -1
  413. package/lib/api/impl/beacon/index.d.ts.map +0 -1
  414. package/lib/api/impl/beacon/pool/index.d.ts.map +0 -1
  415. package/lib/api/impl/beacon/rewards/index.d.ts.map +0 -1
  416. package/lib/api/impl/beacon/state/index.d.ts.map +0 -1
  417. package/lib/api/impl/beacon/state/utils.d.ts.map +0 -1
  418. package/lib/api/impl/config/constants.d.ts.map +0 -1
  419. package/lib/api/impl/config/index.d.ts.map +0 -1
  420. package/lib/api/impl/debug/index.d.ts.map +0 -1
  421. package/lib/api/impl/errors.d.ts.map +0 -1
  422. package/lib/api/impl/events/index.d.ts.map +0 -1
  423. package/lib/api/impl/index.d.ts.map +0 -1
  424. package/lib/api/impl/lightclient/index.d.ts.map +0 -1
  425. package/lib/api/impl/lodestar/index.d.ts.map +0 -1
  426. package/lib/api/impl/node/index.d.ts.map +0 -1
  427. package/lib/api/impl/node/utils.d.ts.map +0 -1
  428. package/lib/api/impl/proof/index.d.ts.map +0 -1
  429. package/lib/api/impl/types.d.ts.map +0 -1
  430. package/lib/api/impl/utils.d.ts.map +0 -1
  431. package/lib/api/impl/validator/index.d.ts.map +0 -1
  432. package/lib/api/impl/validator/utils.d.ts.map +0 -1
  433. package/lib/api/index.d.ts.map +0 -1
  434. package/lib/api/options.d.ts.map +0 -1
  435. package/lib/api/rest/activeSockets.d.ts.map +0 -1
  436. package/lib/api/rest/base.d.ts.map +0 -1
  437. package/lib/api/rest/index.d.ts.map +0 -1
  438. package/lib/api/rest/swaggerUI.d.ts.map +0 -1
  439. package/lib/bun-wrappers/prometheus-gc-stats.d.ts +0 -2
  440. package/lib/bun-wrappers/prometheus-gc-stats.d.ts.map +0 -1
  441. package/lib/bun-wrappers/prometheus-gc-stats.js +0 -8
  442. package/lib/bun-wrappers/prometheus-gc-stats.js.map +0 -1
  443. package/lib/chain/ColumnReconstructionTracker.d.ts.map +0 -1
  444. package/lib/chain/GetBlobsTracker.d.ts.map +0 -1
  445. package/lib/chain/archiveStore/archiveStore.d.ts.map +0 -1
  446. package/lib/chain/archiveStore/constants.d.ts.map +0 -1
  447. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +0 -1
  448. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +0 -1
  449. package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +0 -1
  450. package/lib/chain/archiveStore/historicalState/types.d.ts.map +0 -1
  451. package/lib/chain/archiveStore/historicalState/worker.d.ts.map +0 -1
  452. package/lib/chain/archiveStore/index.d.ts.map +0 -1
  453. package/lib/chain/archiveStore/interface.d.ts.map +0 -1
  454. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +0 -1
  455. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +0 -1
  456. package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +0 -1
  457. package/lib/chain/archiveStore/utils/updateBackfillRange.d.ts.map +0 -1
  458. package/lib/chain/balancesCache.d.ts.map +0 -1
  459. package/lib/chain/beaconProposerCache.d.ts.map +0 -1
  460. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +0 -1
  461. package/lib/chain/blocks/blockInput/errors.d.ts.map +0 -1
  462. package/lib/chain/blocks/blockInput/index.d.ts.map +0 -1
  463. package/lib/chain/blocks/blockInput/types.d.ts.map +0 -1
  464. package/lib/chain/blocks/blockInput/utils.d.ts.map +0 -1
  465. package/lib/chain/blocks/importBlock.d.ts.map +0 -1
  466. package/lib/chain/blocks/index.d.ts.map +0 -1
  467. package/lib/chain/blocks/types.d.ts.map +0 -1
  468. package/lib/chain/blocks/utils/blowfishBanner.d.ts.map +0 -1
  469. package/lib/chain/blocks/utils/chainSegment.d.ts.map +0 -1
  470. package/lib/chain/blocks/utils/checkpoint.d.ts.map +0 -1
  471. package/lib/chain/blocks/utils/giraffeBanner.d.ts.map +0 -1
  472. package/lib/chain/blocks/utils/ownBanner.d.ts.map +0 -1
  473. package/lib/chain/blocks/utils/pandaMergeTransitionBanner.d.ts.map +0 -1
  474. package/lib/chain/blocks/utils/zebraBanner.d.ts.map +0 -1
  475. package/lib/chain/blocks/verifyBlock.d.ts.map +0 -1
  476. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +0 -1
  477. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +0 -1
  478. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +0 -1
  479. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +0 -1
  480. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +0 -1
  481. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +0 -1
  482. package/lib/chain/bls/index.d.ts.map +0 -1
  483. package/lib/chain/bls/interface.d.ts.map +0 -1
  484. package/lib/chain/bls/maybeBatch.d.ts.map +0 -1
  485. package/lib/chain/bls/multithread/index.d.ts.map +0 -1
  486. package/lib/chain/bls/multithread/jobItem.d.ts.map +0 -1
  487. package/lib/chain/bls/multithread/poolSize.d.ts.map +0 -1
  488. package/lib/chain/bls/multithread/types.d.ts.map +0 -1
  489. package/lib/chain/bls/multithread/utils.d.ts.map +0 -1
  490. package/lib/chain/bls/multithread/worker.d.ts.map +0 -1
  491. package/lib/chain/bls/singleThread.d.ts.map +0 -1
  492. package/lib/chain/bls/utils.d.ts.map +0 -1
  493. package/lib/chain/chain.d.ts.map +0 -1
  494. package/lib/chain/emitter.d.ts.map +0 -1
  495. package/lib/chain/errors/attestationError.d.ts.map +0 -1
  496. package/lib/chain/errors/attesterSlashingError.d.ts.map +0 -1
  497. package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
  498. package/lib/chain/errors/blockError.d.ts.map +0 -1
  499. package/lib/chain/errors/blsToExecutionChangeError.d.ts.map +0 -1
  500. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +0 -1
  501. package/lib/chain/errors/gossipValidation.d.ts.map +0 -1
  502. package/lib/chain/errors/index.d.ts.map +0 -1
  503. package/lib/chain/errors/lightClientError.d.ts.map +0 -1
  504. package/lib/chain/errors/proposerSlashingError.d.ts.map +0 -1
  505. package/lib/chain/errors/syncCommitteeError.d.ts.map +0 -1
  506. package/lib/chain/errors/voluntaryExitError.d.ts.map +0 -1
  507. package/lib/chain/forkChoice/index.d.ts.map +0 -1
  508. package/lib/chain/genesis/genesis.d.ts.map +0 -1
  509. package/lib/chain/genesis/interface.d.ts.map +0 -1
  510. package/lib/chain/index.d.ts.map +0 -1
  511. package/lib/chain/initState.d.ts.map +0 -1
  512. package/lib/chain/interface.d.ts.map +0 -1
  513. package/lib/chain/lightClient/index.d.ts.map +0 -1
  514. package/lib/chain/lightClient/proofs.d.ts.map +0 -1
  515. package/lib/chain/lightClient/types.d.ts.map +0 -1
  516. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +0 -1
  517. package/lib/chain/opPools/attestationPool.d.ts.map +0 -1
  518. package/lib/chain/opPools/index.d.ts.map +0 -1
  519. package/lib/chain/opPools/opPool.d.ts.map +0 -1
  520. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +0 -1
  521. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +0 -1
  522. package/lib/chain/opPools/types.d.ts.map +0 -1
  523. package/lib/chain/opPools/utils.d.ts.map +0 -1
  524. package/lib/chain/options.d.ts.map +0 -1
  525. package/lib/chain/prepareNextSlot.d.ts.map +0 -1
  526. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +0 -1
  527. package/lib/chain/produceBlock/index.d.ts.map +0 -1
  528. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +0 -1
  529. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts.map +0 -1
  530. package/lib/chain/regen/errors.d.ts.map +0 -1
  531. package/lib/chain/regen/index.d.ts.map +0 -1
  532. package/lib/chain/regen/interface.d.ts.map +0 -1
  533. package/lib/chain/regen/queued.d.ts.map +0 -1
  534. package/lib/chain/regen/regen.d.ts.map +0 -1
  535. package/lib/chain/reprocess.d.ts.map +0 -1
  536. package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
  537. package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
  538. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
  539. package/lib/chain/seenCache/index.d.ts.map +0 -1
  540. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +0 -1
  541. package/lib/chain/seenCache/seenAttestationData.d.ts.map +0 -1
  542. package/lib/chain/seenCache/seenAttesters.d.ts.map +0 -1
  543. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +0 -1
  544. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +0 -1
  545. package/lib/chain/seenCache/seenCommittee.d.ts.map +0 -1
  546. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +0 -1
  547. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +0 -1
  548. package/lib/chain/serializeState.d.ts.map +0 -1
  549. package/lib/chain/shufflingCache.d.ts.map +0 -1
  550. package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +0 -1
  551. package/lib/chain/stateCache/datastore/db.d.ts.map +0 -1
  552. package/lib/chain/stateCache/datastore/file.d.ts.map +0 -1
  553. package/lib/chain/stateCache/datastore/index.d.ts.map +0 -1
  554. package/lib/chain/stateCache/datastore/types.d.ts.map +0 -1
  555. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +0 -1
  556. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +0 -1
  557. package/lib/chain/stateCache/index.d.ts.map +0 -1
  558. package/lib/chain/stateCache/mapMetrics.d.ts.map +0 -1
  559. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +0 -1
  560. package/lib/chain/stateCache/types.d.ts.map +0 -1
  561. package/lib/chain/validation/aggregateAndProof.d.ts.map +0 -1
  562. package/lib/chain/validation/attestation.d.ts.map +0 -1
  563. package/lib/chain/validation/attesterSlashing.d.ts.map +0 -1
  564. package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
  565. package/lib/chain/validation/block.d.ts.map +0 -1
  566. package/lib/chain/validation/blsToExecutionChange.d.ts.map +0 -1
  567. package/lib/chain/validation/dataColumnSidecar.d.ts.map +0 -1
  568. package/lib/chain/validation/index.d.ts.map +0 -1
  569. package/lib/chain/validation/lightClientFinalityUpdate.d.ts.map +0 -1
  570. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +0 -1
  571. package/lib/chain/validation/proposerSlashing.d.ts.map +0 -1
  572. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +0 -1
  573. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +0 -1
  574. package/lib/chain/validation/signatureSets/index.d.ts.map +0 -1
  575. package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +0 -1
  576. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +0 -1
  577. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +0 -1
  578. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +0 -1
  579. package/lib/chain/validation/syncCommittee.d.ts.map +0 -1
  580. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +0 -1
  581. package/lib/chain/validation/voluntaryExit.d.ts.map +0 -1
  582. package/lib/chain/validatorMonitor.d.ts.map +0 -1
  583. package/lib/constants/constants.d.ts.map +0 -1
  584. package/lib/constants/index.d.ts.map +0 -1
  585. package/lib/constants/network.d.ts.map +0 -1
  586. package/lib/db/beacon.d.ts.map +0 -1
  587. package/lib/db/buckets.d.ts.map +0 -1
  588. package/lib/db/index.d.ts.map +0 -1
  589. package/lib/db/interface.d.ts.map +0 -1
  590. package/lib/db/options.d.ts.map +0 -1
  591. package/lib/db/repositories/attesterSlashing.d.ts.map +0 -1
  592. package/lib/db/repositories/backfilledRanges.d.ts.map +0 -1
  593. package/lib/db/repositories/blobSidecars.d.ts.map +0 -1
  594. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +0 -1
  595. package/lib/db/repositories/block.d.ts.map +0 -1
  596. package/lib/db/repositories/blockArchive.d.ts.map +0 -1
  597. package/lib/db/repositories/blockArchiveIndex.d.ts.map +0 -1
  598. package/lib/db/repositories/blsToExecutionChange.d.ts.map +0 -1
  599. package/lib/db/repositories/checkpointState.d.ts.map +0 -1
  600. package/lib/db/repositories/dataColumnSidecar.d.ts.map +0 -1
  601. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +0 -1
  602. package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
  603. package/lib/db/repositories/depositEvent.d.ts.map +0 -1
  604. package/lib/db/repositories/eth1Data.d.ts.map +0 -1
  605. package/lib/db/repositories/index.d.ts.map +0 -1
  606. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +0 -1
  607. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +0 -1
  608. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +0 -1
  609. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +0 -1
  610. package/lib/db/repositories/proposerSlashing.d.ts.map +0 -1
  611. package/lib/db/repositories/stateArchive.d.ts.map +0 -1
  612. package/lib/db/repositories/stateArchiveIndex.d.ts.map +0 -1
  613. package/lib/db/repositories/voluntaryExit.d.ts.map +0 -1
  614. package/lib/db/single/index.d.ts.map +0 -1
  615. package/lib/db/single/preGenesisState.d.ts.map +0 -1
  616. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
  617. package/lib/eth1/errors.d.ts.map +0 -1
  618. package/lib/eth1/eth1DataCache.d.ts.map +0 -1
  619. package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
  620. package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
  621. package/lib/eth1/eth1MergeBlockTracker.d.ts.map +0 -1
  622. package/lib/eth1/index.d.ts.map +0 -1
  623. package/lib/eth1/interface.d.ts.map +0 -1
  624. package/lib/eth1/options.d.ts.map +0 -1
  625. package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
  626. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
  627. package/lib/eth1/provider/jwt.d.ts.map +0 -1
  628. package/lib/eth1/provider/utils.d.ts.map +0 -1
  629. package/lib/eth1/stream.d.ts.map +0 -1
  630. package/lib/eth1/utils/depositContract.d.ts.map +0 -1
  631. package/lib/eth1/utils/deposits.d.ts.map +0 -1
  632. package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
  633. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
  634. package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
  635. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
  636. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
  637. package/lib/execution/builder/cache.d.ts.map +0 -1
  638. package/lib/execution/builder/http.d.ts.map +0 -1
  639. package/lib/execution/builder/index.d.ts.map +0 -1
  640. package/lib/execution/builder/interface.d.ts.map +0 -1
  641. package/lib/execution/builder/utils.d.ts.map +0 -1
  642. package/lib/execution/engine/disabled.d.ts.map +0 -1
  643. package/lib/execution/engine/http.d.ts.map +0 -1
  644. package/lib/execution/engine/index.d.ts.map +0 -1
  645. package/lib/execution/engine/interface.d.ts.map +0 -1
  646. package/lib/execution/engine/mock.d.ts.map +0 -1
  647. package/lib/execution/engine/payloadIdCache.d.ts.map +0 -1
  648. package/lib/execution/engine/types.d.ts.map +0 -1
  649. package/lib/execution/engine/utils.d.ts.map +0 -1
  650. package/lib/execution/index.d.ts.map +0 -1
  651. package/lib/index.d.ts.map +0 -1
  652. package/lib/metrics/index.d.ts.map +0 -1
  653. package/lib/metrics/metrics/beacon.d.ts.map +0 -1
  654. package/lib/metrics/metrics/lodestar.d.ts.map +0 -1
  655. package/lib/metrics/metrics.d.ts.map +0 -1
  656. package/lib/metrics/nodeJsMetrics.d.ts.map +0 -1
  657. package/lib/metrics/options.d.ts.map +0 -1
  658. package/lib/metrics/server/http.d.ts.map +0 -1
  659. package/lib/metrics/server/index.d.ts.map +0 -1
  660. package/lib/metrics/utils/avgMinMax.d.ts.map +0 -1
  661. package/lib/metrics/utils/gauge.d.ts.map +0 -1
  662. package/lib/metrics/utils/registryMetricCreator.d.ts.map +0 -1
  663. package/lib/monitoring/clientStats.d.ts.map +0 -1
  664. package/lib/monitoring/index.d.ts.map +0 -1
  665. package/lib/monitoring/options.d.ts.map +0 -1
  666. package/lib/monitoring/properties.d.ts.map +0 -1
  667. package/lib/monitoring/service.d.ts.map +0 -1
  668. package/lib/monitoring/system.d.ts.map +0 -1
  669. package/lib/monitoring/types.d.ts.map +0 -1
  670. package/lib/network/core/events.d.ts.map +0 -1
  671. package/lib/network/core/index.d.ts.map +0 -1
  672. package/lib/network/core/metrics.d.ts.map +0 -1
  673. package/lib/network/core/networkCore.d.ts.map +0 -1
  674. package/lib/network/core/networkCoreWorker.d.ts.map +0 -1
  675. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +0 -1
  676. package/lib/network/core/types.d.ts.map +0 -1
  677. package/lib/network/discv5/index.d.ts.map +0 -1
  678. package/lib/network/discv5/types.d.ts.map +0 -1
  679. package/lib/network/discv5/utils.d.ts.map +0 -1
  680. package/lib/network/discv5/worker.d.ts.map +0 -1
  681. package/lib/network/events.d.ts.map +0 -1
  682. package/lib/network/forks.d.ts.map +0 -1
  683. package/lib/network/gossip/constants.d.ts.map +0 -1
  684. package/lib/network/gossip/encoding.d.ts.map +0 -1
  685. package/lib/network/gossip/errors.d.ts.map +0 -1
  686. package/lib/network/gossip/gossipsub.d.ts.map +0 -1
  687. package/lib/network/gossip/index.d.ts.map +0 -1
  688. package/lib/network/gossip/interface.d.ts.map +0 -1
  689. package/lib/network/gossip/metrics.d.ts.map +0 -1
  690. package/lib/network/gossip/scoringParameters.d.ts.map +0 -1
  691. package/lib/network/gossip/topic.d.ts.map +0 -1
  692. package/lib/network/index.d.ts.map +0 -1
  693. package/lib/network/interface.d.ts.map +0 -1
  694. package/lib/network/libp2p/error.d.ts.map +0 -1
  695. package/lib/network/libp2p/index.d.ts.map +0 -1
  696. package/lib/network/metadata.d.ts.map +0 -1
  697. package/lib/network/network.d.ts.map +0 -1
  698. package/lib/network/networkConfig.d.ts.map +0 -1
  699. package/lib/network/options.d.ts.map +0 -1
  700. package/lib/network/peers/client.d.ts.map +0 -1
  701. package/lib/network/peers/datastore.d.ts.map +0 -1
  702. package/lib/network/peers/discover.d.ts.map +0 -1
  703. package/lib/network/peers/index.d.ts.map +0 -1
  704. package/lib/network/peers/peerManager.d.ts.map +0 -1
  705. package/lib/network/peers/peersData.d.ts.map +0 -1
  706. package/lib/network/peers/score/constants.d.ts.map +0 -1
  707. package/lib/network/peers/score/index.d.ts.map +0 -1
  708. package/lib/network/peers/score/interface.d.ts.map +0 -1
  709. package/lib/network/peers/score/score.d.ts.map +0 -1
  710. package/lib/network/peers/score/store.d.ts.map +0 -1
  711. package/lib/network/peers/score/utils.d.ts.map +0 -1
  712. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +0 -1
  713. package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +0 -1
  714. package/lib/network/peers/utils/getConnectedPeerIds.d.ts.map +0 -1
  715. package/lib/network/peers/utils/index.d.ts.map +0 -1
  716. package/lib/network/peers/utils/prioritizePeers.d.ts.map +0 -1
  717. package/lib/network/peers/utils/subnetMap.d.ts.map +0 -1
  718. package/lib/network/processor/aggregatorTracker.d.ts.map +0 -1
  719. package/lib/network/processor/extractSlotRootFns.d.ts.map +0 -1
  720. package/lib/network/processor/gossipHandlers.d.ts.map +0 -1
  721. package/lib/network/processor/gossipQueues/index.d.ts.map +0 -1
  722. package/lib/network/processor/gossipQueues/indexed.d.ts.map +0 -1
  723. package/lib/network/processor/gossipQueues/linear.d.ts.map +0 -1
  724. package/lib/network/processor/gossipQueues/types.d.ts.map +0 -1
  725. package/lib/network/processor/gossipValidatorFn.d.ts.map +0 -1
  726. package/lib/network/processor/index.d.ts.map +0 -1
  727. package/lib/network/processor/types.d.ts.map +0 -1
  728. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +0 -1
  729. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +0 -1
  730. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +0 -1
  731. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
  732. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
  733. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +0 -1
  734. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +0 -1
  735. package/lib/network/reqresp/handlers/index.d.ts.map +0 -1
  736. package/lib/network/reqresp/handlers/lightClientBootstrap.d.ts.map +0 -1
  737. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.d.ts.map +0 -1
  738. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.d.ts.map +0 -1
  739. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +0 -1
  740. package/lib/network/reqresp/index.d.ts.map +0 -1
  741. package/lib/network/reqresp/interface.d.ts.map +0 -1
  742. package/lib/network/reqresp/protocols.d.ts.map +0 -1
  743. package/lib/network/reqresp/rateLimit.d.ts.map +0 -1
  744. package/lib/network/reqresp/score.d.ts.map +0 -1
  745. package/lib/network/reqresp/types.d.ts.map +0 -1
  746. package/lib/network/reqresp/utils/collect.d.ts.map +0 -1
  747. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts.map +0 -1
  748. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +0 -1
  749. package/lib/network/statusCache.d.ts.map +0 -1
  750. package/lib/network/subnets/attnetsService.d.ts.map +0 -1
  751. package/lib/network/subnets/index.d.ts.map +0 -1
  752. package/lib/network/subnets/interface.d.ts.map +0 -1
  753. package/lib/network/subnets/syncnetsService.d.ts.map +0 -1
  754. package/lib/network/subnets/util.d.ts.map +0 -1
  755. package/lib/network/util.d.ts.map +0 -1
  756. package/lib/node/index.d.ts.map +0 -1
  757. package/lib/node/nodejs.d.ts.map +0 -1
  758. package/lib/node/notifier.d.ts.map +0 -1
  759. package/lib/node/options.d.ts.map +0 -1
  760. package/lib/node/utils/interop/deposits.d.ts.map +0 -1
  761. package/lib/node/utils/interop/state.d.ts.map +0 -1
  762. package/lib/node/utils/lightclient.d.ts.map +0 -1
  763. package/lib/node/utils/state.d.ts.map +0 -1
  764. package/lib/sync/backfill/backfill.d.ts.map +0 -1
  765. package/lib/sync/backfill/errors.d.ts.map +0 -1
  766. package/lib/sync/backfill/index.d.ts.map +0 -1
  767. package/lib/sync/backfill/verify.d.ts.map +0 -1
  768. package/lib/sync/constants.d.ts.map +0 -1
  769. package/lib/sync/index.d.ts.map +0 -1
  770. package/lib/sync/interface.d.ts.map +0 -1
  771. package/lib/sync/options.d.ts.map +0 -1
  772. package/lib/sync/range/batch.d.ts.map +0 -1
  773. package/lib/sync/range/chain.d.ts.map +0 -1
  774. package/lib/sync/range/range.d.ts.map +0 -1
  775. package/lib/sync/range/utils/batches.d.ts.map +0 -1
  776. package/lib/sync/range/utils/chainTarget.d.ts.map +0 -1
  777. package/lib/sync/range/utils/hashBlocks.d.ts.map +0 -1
  778. package/lib/sync/range/utils/index.d.ts.map +0 -1
  779. package/lib/sync/range/utils/peerBalancer.d.ts.map +0 -1
  780. package/lib/sync/range/utils/updateChains.d.ts.map +0 -1
  781. package/lib/sync/sync.d.ts.map +0 -1
  782. package/lib/sync/types.d.ts.map +0 -1
  783. package/lib/sync/unknownBlock.d.ts.map +0 -1
  784. package/lib/sync/utils/downloadByRange.d.ts.map +0 -1
  785. package/lib/sync/utils/downloadByRoot.d.ts.map +0 -1
  786. package/lib/sync/utils/pendingBlocksTree.d.ts.map +0 -1
  787. package/lib/sync/utils/remoteSyncType.d.ts.map +0 -1
  788. package/lib/util/address.d.ts.map +0 -1
  789. package/lib/util/array.d.ts.map +0 -1
  790. package/lib/util/asyncIterableToEvents.d.ts.map +0 -1
  791. package/lib/util/binarySearch.d.ts.map +0 -1
  792. package/lib/util/bitArray.d.ts.map +0 -1
  793. package/lib/util/blobs.d.ts.map +0 -1
  794. package/lib/util/bufferPool.d.ts.map +0 -1
  795. package/lib/util/bytes.d.ts.map +0 -1
  796. package/lib/util/chunkify.d.ts.map +0 -1
  797. package/lib/util/clock.d.ts.map +0 -1
  798. package/lib/util/dataColumns.d.ts.map +0 -1
  799. package/lib/util/dependentRoot.d.ts.map +0 -1
  800. package/lib/util/enum.d.ts.map +0 -1
  801. package/lib/util/error.d.ts.map +0 -1
  802. package/lib/util/eventLoop.d.ts.map +0 -1
  803. package/lib/util/execution.d.ts.map +0 -1
  804. package/lib/util/file.d.ts.map +0 -1
  805. package/lib/util/forkChoice.d.ts.map +0 -1
  806. package/lib/util/forkName.d.ts.map +0 -1
  807. package/lib/util/graffiti.d.ts.map +0 -1
  808. package/lib/util/hex.d.ts.map +0 -1
  809. package/lib/util/index.d.ts.map +0 -1
  810. package/lib/util/ip.d.ts.map +0 -1
  811. package/lib/util/itTrigger.d.ts.map +0 -1
  812. package/lib/util/kzg.d.ts.map +0 -1
  813. package/lib/util/map.d.ts.map +0 -1
  814. package/lib/util/metadata.d.ts.map +0 -1
  815. package/lib/util/multifork.d.ts.map +0 -1
  816. package/lib/util/numpy.d.ts.map +0 -1
  817. package/lib/util/peerId.d.ts.map +0 -1
  818. package/lib/util/profile.d.ts.map +0 -1
  819. package/lib/util/promises.d.ts.map +0 -1
  820. package/lib/util/queue/errors.d.ts.map +0 -1
  821. package/lib/util/queue/fnQueue.d.ts.map +0 -1
  822. package/lib/util/queue/index.d.ts.map +0 -1
  823. package/lib/util/queue/itemQueue.d.ts.map +0 -1
  824. package/lib/util/queue/options.d.ts.map +0 -1
  825. package/lib/util/serializedCache.d.ts.map +0 -1
  826. package/lib/util/set.d.ts.map +0 -1
  827. package/lib/util/shuffle.d.ts.map +0 -1
  828. package/lib/util/sortBy.d.ts.map +0 -1
  829. package/lib/util/sszBytes.d.ts.map +0 -1
  830. package/lib/util/strictEvents.d.ts.map +0 -1
  831. package/lib/util/time.d.ts.map +0 -1
  832. package/lib/util/timeSeries.d.ts.map +0 -1
  833. package/lib/util/types.d.ts.map +0 -1
  834. package/lib/util/workerEvents.d.ts.map +0 -1
  835. package/lib/util/wrapError.d.ts.map +0 -1
  836. package/src/api/impl/api.ts +0 -26
  837. package/src/api/impl/beacon/blocks/index.ts +0 -744
  838. package/src/api/impl/beacon/blocks/utils.ts +0 -75
  839. package/src/api/impl/beacon/index.ts +0 -35
  840. package/src/api/impl/beacon/pool/index.ts +0 -314
  841. package/src/api/impl/beacon/rewards/index.ts +0 -30
  842. package/src/api/impl/beacon/state/index.ts +0 -406
  843. package/src/api/impl/beacon/state/utils.ts +0 -189
  844. package/src/api/impl/config/constants.ts +0 -127
  845. package/src/api/impl/config/index.ts +0 -59
  846. package/src/api/impl/debug/index.ts +0 -131
  847. package/src/api/impl/errors.ts +0 -50
  848. package/src/api/impl/events/index.ts +0 -33
  849. package/src/api/impl/index.ts +0 -6
  850. package/src/api/impl/lightclient/index.ts +0 -64
  851. package/src/api/impl/lodestar/index.ts +0 -257
  852. package/src/api/impl/node/index.ts +0 -88
  853. package/src/api/impl/node/utils.ts +0 -51
  854. package/src/api/impl/proof/index.ts +0 -60
  855. package/src/api/impl/types.ts +0 -17
  856. package/src/api/impl/utils.ts +0 -25
  857. package/src/api/impl/validator/index.ts +0 -1538
  858. package/src/api/impl/validator/utils.ts +0 -85
  859. package/src/api/index.ts +0 -2
  860. package/src/api/options.ts +0 -16
  861. package/src/api/rest/activeSockets.ts +0 -109
  862. package/src/api/rest/base.ts +0 -216
  863. package/src/api/rest/index.ts +0 -63
  864. package/src/api/rest/swaggerUI.ts +0 -80
  865. package/src/bun-wrappers/prometheus-gc-stats.ts +0 -7
  866. package/src/chain/ColumnReconstructionTracker.ts +0 -90
  867. package/src/chain/GetBlobsTracker.ts +0 -115
  868. package/src/chain/archiveStore/archiveStore.ts +0 -222
  869. package/src/chain/archiveStore/constants.ts +0 -5
  870. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +0 -116
  871. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +0 -68
  872. package/src/chain/archiveStore/historicalState/metrics.ts +0 -214
  873. package/src/chain/archiveStore/historicalState/types.ts +0 -41
  874. package/src/chain/archiveStore/historicalState/worker.ts +0 -77
  875. package/src/chain/archiveStore/index.ts +0 -3
  876. package/src/chain/archiveStore/interface.ts +0 -75
  877. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +0 -138
  878. package/src/chain/archiveStore/utils/archiveBlocks.ts +0 -437
  879. package/src/chain/archiveStore/utils/pruneHistory.ts +0 -56
  880. package/src/chain/archiveStore/utils/updateBackfillRange.ts +0 -50
  881. package/src/chain/balancesCache.ts +0 -52
  882. package/src/chain/beaconProposerCache.ts +0 -43
  883. package/src/chain/blocks/blockInput/blockInput.ts +0 -851
  884. package/src/chain/blocks/blockInput/errors.ts +0 -48
  885. package/src/chain/blocks/blockInput/index.ts +0 -4
  886. package/src/chain/blocks/blockInput/types.ts +0 -145
  887. package/src/chain/blocks/blockInput/utils.ts +0 -21
  888. package/src/chain/blocks/importBlock.ts +0 -603
  889. package/src/chain/blocks/index.ts +0 -179
  890. package/src/chain/blocks/types.ts +0 -101
  891. package/src/chain/blocks/utils/blowfishBanner.ts +0 -28
  892. package/src/chain/blocks/utils/chainSegment.ts +0 -29
  893. package/src/chain/blocks/utils/checkpoint.ts +0 -25
  894. package/src/chain/blocks/utils/giraffeBanner.ts +0 -30
  895. package/src/chain/blocks/utils/ownBanner.ts +0 -20
  896. package/src/chain/blocks/utils/pandaMergeTransitionBanner.ts +0 -43
  897. package/src/chain/blocks/utils/zebraBanner.ts +0 -45
  898. package/src/chain/blocks/verifyBlock.ts +0 -242
  899. package/src/chain/blocks/verifyBlocksDataAvailability.ts +0 -34
  900. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +0 -438
  901. package/src/chain/blocks/verifyBlocksSanityChecks.ts +0 -129
  902. package/src/chain/blocks/verifyBlocksSignatures.ts +0 -105
  903. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +0 -114
  904. package/src/chain/blocks/writeBlockInputToDb.ts +0 -128
  905. package/src/chain/bls/index.ts +0 -4
  906. package/src/chain/bls/interface.ts +0 -68
  907. package/src/chain/bls/maybeBatch.ts +0 -45
  908. package/src/chain/bls/multithread/index.ts +0 -582
  909. package/src/chain/bls/multithread/jobItem.ts +0 -119
  910. package/src/chain/bls/multithread/poolSize.ts +0 -16
  911. package/src/chain/bls/multithread/types.ts +0 -38
  912. package/src/chain/bls/multithread/utils.ts +0 -19
  913. package/src/chain/bls/multithread/worker.ts +0 -114
  914. package/src/chain/bls/singleThread.ts +0 -87
  915. package/src/chain/bls/utils.ts +0 -30
  916. package/src/chain/chain.ts +0 -1365
  917. package/src/chain/emitter.ts +0 -113
  918. package/src/chain/errors/attestationError.ts +0 -194
  919. package/src/chain/errors/attesterSlashingError.ts +0 -11
  920. package/src/chain/errors/blobSidecarError.ts +0 -60
  921. package/src/chain/errors/blockError.ts +0 -166
  922. package/src/chain/errors/blsToExecutionChangeError.ts +0 -13
  923. package/src/chain/errors/dataColumnSidecarError.ts +0 -80
  924. package/src/chain/errors/gossipValidation.ts +0 -20
  925. package/src/chain/errors/index.ts +0 -10
  926. package/src/chain/errors/lightClientError.ts +0 -30
  927. package/src/chain/errors/proposerSlashingError.ts +0 -11
  928. package/src/chain/errors/syncCommitteeError.ts +0 -36
  929. package/src/chain/errors/voluntaryExitError.ts +0 -13
  930. package/src/chain/forkChoice/index.ts +0 -112
  931. package/src/chain/genesis/genesis.ts +0 -190
  932. package/src/chain/genesis/interface.ts +0 -14
  933. package/src/chain/index.ts +0 -6
  934. package/src/chain/initState.ts +0 -221
  935. package/src/chain/interface.ts +0 -280
  936. package/src/chain/lightClient/index.ts +0 -764
  937. package/src/chain/lightClient/proofs.ts +0 -85
  938. package/src/chain/lightClient/types.ts +0 -33
  939. package/src/chain/opPools/aggregatedAttestationPool.ts +0 -1063
  940. package/src/chain/opPools/attestationPool.ts +0 -283
  941. package/src/chain/opPools/index.ts +0 -5
  942. package/src/chain/opPools/opPool.ts +0 -462
  943. package/src/chain/opPools/syncCommitteeMessagePool.ts +0 -167
  944. package/src/chain/opPools/syncContributionAndProofPool.ts +0 -240
  945. package/src/chain/opPools/types.ts +0 -35
  946. package/src/chain/opPools/utils.ts +0 -65
  947. package/src/chain/options.ts +0 -138
  948. package/src/chain/prepareNextSlot.ts +0 -277
  949. package/src/chain/produceBlock/computeNewStateRoot.ts +0 -55
  950. package/src/chain/produceBlock/index.ts +0 -2
  951. package/src/chain/produceBlock/produceBlockBody.ts +0 -797
  952. package/src/chain/produceBlock/validateBlobsAndKzgCommitments.ts +0 -54
  953. package/src/chain/regen/errors.ts +0 -30
  954. package/src/chain/regen/index.ts +0 -4
  955. package/src/chain/regen/interface.ts +0 -93
  956. package/src/chain/regen/queued.ts +0 -317
  957. package/src/chain/regen/regen.ts +0 -424
  958. package/src/chain/reprocess.ts +0 -161
  959. package/src/chain/rewards/attestationsRewards.ts +0 -196
  960. package/src/chain/rewards/blockRewards.ts +0 -150
  961. package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
  962. package/src/chain/seenCache/index.ts +0 -5
  963. package/src/chain/seenCache/seenAggregateAndProof.ts +0 -120
  964. package/src/chain/seenCache/seenAttestationData.ts +0 -145
  965. package/src/chain/seenCache/seenAttesters.ts +0 -58
  966. package/src/chain/seenCache/seenBlockAttesters.ts +0 -18
  967. package/src/chain/seenCache/seenBlockProposers.ts +0 -48
  968. package/src/chain/seenCache/seenCommittee.ts +0 -43
  969. package/src/chain/seenCache/seenCommitteeContribution.ts +0 -104
  970. package/src/chain/seenCache/seenGossipBlockInput.ts +0 -373
  971. package/src/chain/serializeState.ts +0 -32
  972. package/src/chain/shufflingCache.ts +0 -238
  973. package/src/chain/stateCache/blockStateCacheImpl.ts +0 -150
  974. package/src/chain/stateCache/datastore/db.ts +0 -36
  975. package/src/chain/stateCache/datastore/file.ts +0 -53
  976. package/src/chain/stateCache/datastore/index.ts +0 -2
  977. package/src/chain/stateCache/datastore/types.ts +0 -13
  978. package/src/chain/stateCache/fifoBlockStateCache.ts +0 -208
  979. package/src/chain/stateCache/inMemoryCheckpointsCache.ts +0 -198
  980. package/src/chain/stateCache/index.ts +0 -3
  981. package/src/chain/stateCache/mapMetrics.ts +0 -52
  982. package/src/chain/stateCache/persistentCheckpointsCache.ts +0 -835
  983. package/src/chain/stateCache/types.ts +0 -86
  984. package/src/chain/validation/aggregateAndProof.ts +0 -258
  985. package/src/chain/validation/attestation.ts +0 -885
  986. package/src/chain/validation/attesterSlashing.ts +0 -61
  987. package/src/chain/validation/blobSidecar.ts +0 -301
  988. package/src/chain/validation/block.ts +0 -188
  989. package/src/chain/validation/blsToExecutionChange.ts +0 -61
  990. package/src/chain/validation/dataColumnSidecar.ts +0 -381
  991. package/src/chain/validation/index.ts +0 -9
  992. package/src/chain/validation/lightClientFinalityUpdate.ts +0 -45
  993. package/src/chain/validation/lightClientOptimisticUpdate.ts +0 -67
  994. package/src/chain/validation/proposerSlashing.ts +0 -54
  995. package/src/chain/validation/signatureSets/aggregateAndProof.ts +0 -38
  996. package/src/chain/validation/signatureSets/contributionAndProof.ts +0 -27
  997. package/src/chain/validation/signatureSets/index.ts +0 -6
  998. package/src/chain/validation/signatureSets/selectionProof.ts +0 -27
  999. package/src/chain/validation/signatureSets/syncCommittee.ts +0 -22
  1000. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +0 -18
  1001. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +0 -27
  1002. package/src/chain/validation/syncCommittee.ts +0 -165
  1003. package/src/chain/validation/syncCommitteeContributionAndProof.ts +0 -122
  1004. package/src/chain/validation/voluntaryExit.ts +0 -58
  1005. package/src/chain/validatorMonitor.ts +0 -1299
  1006. package/src/constants/constants.ts +0 -15
  1007. package/src/constants/index.ts +0 -2
  1008. package/src/constants/network.ts +0 -52
  1009. package/src/db/beacon.ts +0 -113
  1010. package/src/db/buckets.ts +0 -80
  1011. package/src/db/index.ts +0 -2
  1012. package/src/db/interface.ts +0 -76
  1013. package/src/db/options.ts +0 -7
  1014. package/src/db/repositories/attesterSlashing.ts +0 -38
  1015. package/src/db/repositories/backfilledRanges.ts +0 -29
  1016. package/src/db/repositories/blobSidecars.ts +0 -37
  1017. package/src/db/repositories/blobSidecarsArchive.ts +0 -28
  1018. package/src/db/repositories/block.ts +0 -33
  1019. package/src/db/repositories/blockArchive.ts +0 -170
  1020. package/src/db/repositories/blockArchiveIndex.ts +0 -45
  1021. package/src/db/repositories/blsToExecutionChange.ts +0 -16
  1022. package/src/db/repositories/checkpointState.ts +0 -31
  1023. package/src/db/repositories/dataColumnSidecar.ts +0 -49
  1024. package/src/db/repositories/dataColumnSidecarArchive.ts +0 -56
  1025. package/src/db/repositories/depositDataRoot.ts +0 -80
  1026. package/src/db/repositories/depositEvent.ts +0 -32
  1027. package/src/db/repositories/eth1Data.ts +0 -33
  1028. package/src/db/repositories/index.ts +0 -20
  1029. package/src/db/repositories/lightclientBestUpdate.ts +0 -41
  1030. package/src/db/repositories/lightclientCheckpointHeader.ts +0 -32
  1031. package/src/db/repositories/lightclientSyncCommittee.ts +0 -16
  1032. package/src/db/repositories/lightclientSyncCommitteeWitness.ts +0 -77
  1033. package/src/db/repositories/proposerSlashing.ts +0 -15
  1034. package/src/db/repositories/stateArchive.ts +0 -69
  1035. package/src/db/repositories/stateArchiveIndex.ts +0 -18
  1036. package/src/db/repositories/voluntaryExit.ts +0 -15
  1037. package/src/db/single/index.ts +0 -2
  1038. package/src/db/single/preGenesisState.ts +0 -37
  1039. package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
  1040. package/src/eth1/errors.ts +0 -40
  1041. package/src/eth1/eth1DataCache.ts +0 -26
  1042. package/src/eth1/eth1DepositDataTracker.ts +0 -410
  1043. package/src/eth1/eth1DepositsCache.ts +0 -141
  1044. package/src/eth1/eth1MergeBlockTracker.ts +0 -328
  1045. package/src/eth1/index.ts +0 -157
  1046. package/src/eth1/interface.ts +0 -131
  1047. package/src/eth1/options.ts +0 -28
  1048. package/src/eth1/provider/eth1Provider.ts +0 -229
  1049. package/src/eth1/provider/jsonRpcHttpClient.ts +0 -390
  1050. package/src/eth1/provider/jwt.ts +0 -36
  1051. package/src/eth1/provider/utils.ts +0 -136
  1052. package/src/eth1/stream.ts +0 -75
  1053. package/src/eth1/utils/depositContract.ts +0 -37
  1054. package/src/eth1/utils/deposits.ts +0 -70
  1055. package/src/eth1/utils/eth1Data.ts +0 -100
  1056. package/src/eth1/utils/eth1DepositEvent.ts +0 -12
  1057. package/src/eth1/utils/eth1Vote.ts +0 -142
  1058. package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
  1059. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
  1060. package/src/execution/builder/cache.ts +0 -39
  1061. package/src/execution/builder/http.ts +0 -229
  1062. package/src/execution/builder/index.ts +0 -27
  1063. package/src/execution/builder/interface.ts +0 -49
  1064. package/src/execution/builder/utils.ts +0 -19
  1065. package/src/execution/engine/disabled.ts +0 -35
  1066. package/src/execution/engine/http.ts +0 -644
  1067. package/src/execution/engine/index.ts +0 -63
  1068. package/src/execution/engine/interface.ts +0 -199
  1069. package/src/execution/engine/mock.ts +0 -493
  1070. package/src/execution/engine/payloadIdCache.ts +0 -54
  1071. package/src/execution/engine/types.ts +0 -640
  1072. package/src/execution/engine/utils.ts +0 -136
  1073. package/src/execution/index.ts +0 -4
  1074. package/src/index.ts +0 -20
  1075. package/src/metrics/index.ts +0 -4
  1076. package/src/metrics/metrics/beacon.ts +0 -390
  1077. package/src/metrics/metrics/lodestar.ts +0 -1870
  1078. package/src/metrics/metrics.ts +0 -43
  1079. package/src/metrics/nodeJsMetrics.ts +0 -19
  1080. package/src/metrics/options.ts +0 -22
  1081. package/src/metrics/server/http.ts +0 -114
  1082. package/src/metrics/server/index.ts +0 -1
  1083. package/src/metrics/utils/avgMinMax.ts +0 -87
  1084. package/src/metrics/utils/gauge.ts +0 -22
  1085. package/src/metrics/utils/registryMetricCreator.ts +0 -41
  1086. package/src/monitoring/clientStats.ts +0 -297
  1087. package/src/monitoring/index.ts +0 -2
  1088. package/src/monitoring/options.ts +0 -19
  1089. package/src/monitoring/properties.ts +0 -152
  1090. package/src/monitoring/service.ts +0 -235
  1091. package/src/monitoring/system.ts +0 -146
  1092. package/src/monitoring/types.ts +0 -21
  1093. package/src/network/core/events.ts +0 -59
  1094. package/src/network/core/index.ts +0 -3
  1095. package/src/network/core/metrics.ts +0 -304
  1096. package/src/network/core/networkCore.ts +0 -599
  1097. package/src/network/core/networkCoreWorker.ts +0 -176
  1098. package/src/network/core/networkCoreWorkerHandler.ts +0 -284
  1099. package/src/network/core/types.ts +0 -119
  1100. package/src/network/discv5/index.ts +0 -132
  1101. package/src/network/discv5/types.ts +0 -74
  1102. package/src/network/discv5/utils.ts +0 -50
  1103. package/src/network/discv5/worker.ts +0 -137
  1104. package/src/network/events.ts +0 -51
  1105. package/src/network/forks.ts +0 -94
  1106. package/src/network/gossip/constants.ts +0 -15
  1107. package/src/network/gossip/encoding.ts +0 -111
  1108. package/src/network/gossip/errors.ts +0 -7
  1109. package/src/network/gossip/gossipsub.ts +0 -384
  1110. package/src/network/gossip/index.ts +0 -4
  1111. package/src/network/gossip/interface.ts +0 -215
  1112. package/src/network/gossip/metrics.ts +0 -71
  1113. package/src/network/gossip/scoringParameters.ts +0 -333
  1114. package/src/network/gossip/topic.ts +0 -332
  1115. package/src/network/index.ts +0 -8
  1116. package/src/network/interface.ts +0 -134
  1117. package/src/network/libp2p/error.ts +0 -55
  1118. package/src/network/libp2p/index.ts +0 -153
  1119. package/src/network/metadata.ts +0 -162
  1120. package/src/network/network.ts +0 -767
  1121. package/src/network/networkConfig.ts +0 -12
  1122. package/src/network/options.ts +0 -70
  1123. package/src/network/peers/client.ts +0 -29
  1124. package/src/network/peers/datastore.ts +0 -188
  1125. package/src/network/peers/discover.ts +0 -647
  1126. package/src/network/peers/index.ts +0 -2
  1127. package/src/network/peers/peerManager.ts +0 -899
  1128. package/src/network/peers/peersData.ts +0 -65
  1129. package/src/network/peers/score/constants.ts +0 -34
  1130. package/src/network/peers/score/index.ts +0 -4
  1131. package/src/network/peers/score/interface.ts +0 -74
  1132. package/src/network/peers/score/score.ts +0 -200
  1133. package/src/network/peers/score/store.ts +0 -95
  1134. package/src/network/peers/score/utils.ts +0 -37
  1135. package/src/network/peers/utils/assertPeerRelevance.ts +0 -99
  1136. package/src/network/peers/utils/enrSubnetsDeserialize.ts +0 -27
  1137. package/src/network/peers/utils/getConnectedPeerIds.ts +0 -33
  1138. package/src/network/peers/utils/index.ts +0 -4
  1139. package/src/network/peers/utils/prioritizePeers.ts +0 -627
  1140. package/src/network/peers/utils/subnetMap.ts +0 -88
  1141. package/src/network/processor/aggregatorTracker.ts +0 -38
  1142. package/src/network/processor/extractSlotRootFns.ts +0 -64
  1143. package/src/network/processor/gossipHandlers.ts +0 -951
  1144. package/src/network/processor/gossipQueues/index.ts +0 -114
  1145. package/src/network/processor/gossipQueues/indexed.ts +0 -219
  1146. package/src/network/processor/gossipQueues/linear.ts +0 -162
  1147. package/src/network/processor/gossipQueues/types.ts +0 -57
  1148. package/src/network/processor/gossipValidatorFn.ts +0 -142
  1149. package/src/network/processor/index.ts +0 -496
  1150. package/src/network/processor/types.ts +0 -27
  1151. package/src/network/reqresp/ReqRespBeaconNode.ts +0 -373
  1152. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +0 -101
  1153. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +0 -49
  1154. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -114
  1155. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -62
  1156. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +0 -144
  1157. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +0 -88
  1158. package/src/network/reqresp/handlers/index.ts +0 -78
  1159. package/src/network/reqresp/handlers/lightClientBootstrap.ts +0 -31
  1160. package/src/network/reqresp/handlers/lightClientFinalityUpdate.ts +0 -21
  1161. package/src/network/reqresp/handlers/lightClientOptimisticUpdate.ts +0 -21
  1162. package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +0 -39
  1163. package/src/network/reqresp/index.ts +0 -2
  1164. package/src/network/reqresp/interface.ts +0 -45
  1165. package/src/network/reqresp/protocols.ts +0 -146
  1166. package/src/network/reqresp/rateLimit.ts +0 -112
  1167. package/src/network/reqresp/score.ts +0 -70
  1168. package/src/network/reqresp/types.ts +0 -174
  1169. package/src/network/reqresp/utils/collect.ts +0 -84
  1170. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +0 -57
  1171. package/src/network/reqresp/utils/dataColumnResponseValidation.ts +0 -99
  1172. package/src/network/statusCache.ts +0 -17
  1173. package/src/network/subnets/attnetsService.ts +0 -385
  1174. package/src/network/subnets/index.ts +0 -2
  1175. package/src/network/subnets/interface.ts +0 -66
  1176. package/src/network/subnets/syncnetsService.ts +0 -147
  1177. package/src/network/subnets/util.ts +0 -63
  1178. package/src/network/util.ts +0 -29
  1179. package/src/node/index.ts +0 -2
  1180. package/src/node/nodejs.ts +0 -349
  1181. package/src/node/notifier.ts +0 -206
  1182. package/src/node/options.ts +0 -51
  1183. package/src/node/utils/interop/deposits.ts +0 -53
  1184. package/src/node/utils/interop/state.ts +0 -59
  1185. package/src/node/utils/lightclient.ts +0 -7
  1186. package/src/node/utils/state.ts +0 -37
  1187. package/src/sync/backfill/backfill.ts +0 -893
  1188. package/src/sync/backfill/errors.ts +0 -23
  1189. package/src/sync/backfill/index.ts +0 -1
  1190. package/src/sync/backfill/verify.ts +0 -58
  1191. package/src/sync/constants.ts +0 -71
  1192. package/src/sync/index.ts +0 -2
  1193. package/src/sync/interface.ts +0 -55
  1194. package/src/sync/options.ts +0 -45
  1195. package/src/sync/range/batch.ts +0 -455
  1196. package/src/sync/range/chain.ts +0 -715
  1197. package/src/sync/range/range.ts +0 -354
  1198. package/src/sync/range/utils/batches.ts +0 -119
  1199. package/src/sync/range/utils/chainTarget.ts +0 -62
  1200. package/src/sync/range/utils/hashBlocks.ts +0 -27
  1201. package/src/sync/range/utils/index.ts +0 -5
  1202. package/src/sync/range/utils/peerBalancer.ts +0 -184
  1203. package/src/sync/range/utils/updateChains.ts +0 -66
  1204. package/src/sync/sync.ts +0 -290
  1205. package/src/sync/types.ts +0 -57
  1206. package/src/sync/unknownBlock.ts +0 -859
  1207. package/src/sync/utils/downloadByRange.ts +0 -808
  1208. package/src/sync/utils/downloadByRoot.ts +0 -560
  1209. package/src/sync/utils/pendingBlocksTree.ts +0 -97
  1210. package/src/sync/utils/remoteSyncType.ts +0 -144
  1211. package/src/util/address.ts +0 -3
  1212. package/src/util/array.ts +0 -311
  1213. package/src/util/asyncIterableToEvents.ts +0 -164
  1214. package/src/util/binarySearch.ts +0 -48
  1215. package/src/util/bitArray.ts +0 -84
  1216. package/src/util/blobs.ts +0 -210
  1217. package/src/util/bufferPool.ts +0 -95
  1218. package/src/util/bytes.ts +0 -11
  1219. package/src/util/chunkify.ts +0 -27
  1220. package/src/util/clock.ts +0 -204
  1221. package/src/util/dataColumns.ts +0 -415
  1222. package/src/util/dependentRoot.ts +0 -47
  1223. package/src/util/enum.ts +0 -17
  1224. package/src/util/error.ts +0 -56
  1225. package/src/util/eventLoop.ts +0 -22
  1226. package/src/util/execution.ts +0 -223
  1227. package/src/util/file.ts +0 -52
  1228. package/src/util/forkChoice.ts +0 -5
  1229. package/src/util/forkName.ts +0 -20
  1230. package/src/util/graffiti.ts +0 -39
  1231. package/src/util/hex.ts +0 -9
  1232. package/src/util/index.ts +0 -2
  1233. package/src/util/ip.ts +0 -6
  1234. package/src/util/itTrigger.ts +0 -49
  1235. package/src/util/kzg.ts +0 -3
  1236. package/src/util/map.ts +0 -77
  1237. package/src/util/metadata.ts +0 -22
  1238. package/src/util/multifork.ts +0 -69
  1239. package/src/util/numpy.ts +0 -8
  1240. package/src/util/peerId.ts +0 -16
  1241. package/src/util/profile.ts +0 -54
  1242. package/src/util/promises.ts +0 -14
  1243. package/src/util/queue/errors.ts +0 -14
  1244. package/src/util/queue/fnQueue.ts +0 -16
  1245. package/src/util/queue/index.ts +0 -4
  1246. package/src/util/queue/itemQueue.ts +0 -128
  1247. package/src/util/queue/options.ts +0 -37
  1248. package/src/util/serializedCache.ts +0 -20
  1249. package/src/util/set.ts +0 -62
  1250. package/src/util/shuffle.ts +0 -21
  1251. package/src/util/sortBy.ts +0 -19
  1252. package/src/util/sszBytes.ts +0 -481
  1253. package/src/util/strictEvents.ts +0 -8
  1254. package/src/util/time.ts +0 -13
  1255. package/src/util/timeSeries.ts +0 -118
  1256. package/src/util/types.ts +0 -31
  1257. package/src/util/workerEvents.ts +0 -142
  1258. package/src/util/wrapError.ts +0 -27
@@ -1,899 +0,0 @@
1
- import {Connection, PeerId, PrivateKey} from "@libp2p/interface";
2
- import {BitArray} from "@chainsafe/ssz";
3
- import {BeaconConfig} from "@lodestar/config";
4
- import {LoggerNode} from "@lodestar/logger/node";
5
- import {ForkSeq, SLOTS_PER_EPOCH, SYNC_COMMITTEE_SUBNET_COUNT} from "@lodestar/params";
6
- import {Metadata, Status, altair, fulu, phase0} from "@lodestar/types";
7
- import {prettyPrintIndices, toHex, withTimeout} from "@lodestar/utils";
8
- import {GOODBYE_KNOWN_CODES, GoodByeReasonCode, Libp2pEvent} from "../../constants/index.js";
9
- import {IClock} from "../../util/clock.js";
10
- import {computeColumnsForCustodyGroup, getCustodyGroups} from "../../util/dataColumns.js";
11
- import {NetworkCoreMetrics} from "../core/metrics.js";
12
- import {LodestarDiscv5Opts} from "../discv5/types.js";
13
- import {INetworkEventBus, NetworkEvent, NetworkEventData} from "../events.js";
14
- import {Eth2Gossipsub} from "../gossip/gossipsub.js";
15
- import {Libp2p} from "../interface.js";
16
- import {SubnetType} from "../metadata.js";
17
- import {NetworkConfig} from "../networkConfig.js";
18
- import {ReqRespMethod} from "../reqresp/ReqRespBeaconNode.js";
19
- import {StatusCache} from "../statusCache.js";
20
- import {NodeId, SubnetsService, computeNodeId} from "../subnets/index.js";
21
- import {getConnection, getConnectionsMap, prettyPrintPeerId, prettyPrintPeerIdStr} from "../util.js";
22
- import {ClientKind, getKnownClientFromAgentVersion} from "./client.js";
23
- import {PeerDiscovery, SubnetDiscvQueryMs} from "./discover.js";
24
- import {PeerData, PeersData} from "./peersData.js";
25
- import {NO_COOL_DOWN_APPLIED} from "./score/constants.js";
26
- import {IPeerRpcScoreStore, PeerAction, PeerScoreStats, ScoreState, updateGossipsubScores} from "./score/index.js";
27
- import {
28
- assertPeerRelevance,
29
- getConnectedPeerIds,
30
- hasSomeConnectedPeer,
31
- prioritizePeers,
32
- renderIrrelevantPeerType,
33
- } from "./utils/index.js";
34
-
35
- /** heartbeat performs regular updates such as updating reputations and performing discovery requests */
36
- const HEARTBEAT_INTERVAL_MS = 30 * 1000;
37
- /** The time in seconds between PING events. We do not send a ping if the other peer has PING'd us */
38
- const PING_INTERVAL_INBOUND_MS = 15 * 1000; // Offset to not ping when outbound reqs
39
- const PING_INTERVAL_OUTBOUND_MS = 20 * 1000;
40
- /** The time in seconds between re-status's peers. */
41
- const STATUS_INTERVAL_MS = 5 * 60 * 1000;
42
- /** Expect a STATUS request from on inbound peer for some time. Afterwards the node does a request */
43
- const STATUS_INBOUND_GRACE_PERIOD = 15 * 1000;
44
- /** Internal interval to check PING and STATUS timeouts */
45
- const CHECK_PING_STATUS_INTERVAL = 10 * 1000;
46
- /** A peer is considered long connection if it's >= 1 day */
47
- const LONG_PEER_CONNECTION_MS = 24 * 60 * 60 * 1000;
48
- /** Ref https://github.com/ChainSafe/lodestar/issues/3423 */
49
- const DEFAULT_DISCV5_FIRST_QUERY_DELAY_MS = 1000;
50
- /**
51
- * Tag peer when it's relevant and connecting to our node.
52
- * When node has > maxPeer (55), libp2p randomly prune peers if we don't tag peers in use.
53
- * See https://github.com/ChainSafe/lodestar/issues/4623#issuecomment-1374447934
54
- **/
55
- const PEER_RELEVANT_TAG = "relevant";
56
- /** Tag value of PEER_RELEVANT_TAG */
57
- const PEER_RELEVANT_TAG_VALUE = 100;
58
-
59
- /** Change pruning behavior once the head falls behind */
60
- const STARVATION_THRESHOLD_SLOTS = SLOTS_PER_EPOCH * 2;
61
- /** Percentage of peers to attempt to prune when starvation threshold is met */
62
- const STARVATION_PRUNE_RATIO = 0.05;
63
-
64
- /**
65
- * Relative factor of peers that are allowed to have a negative gossipsub score without penalizing them in lodestar.
66
- */
67
- const ALLOWED_NEGATIVE_GOSSIPSUB_FACTOR = 0.1;
68
-
69
- // TODO:
70
- // maxPeers and targetPeers should be dynamic on the num of validators connected
71
- // The Node should compute a recommended value every interval and log a warning
72
- // to terminal if it deviates significantly from the user's settings
73
-
74
- export type PeerManagerOpts = {
75
- /** The target number of peers we would like to connect to. */
76
- targetPeers: number;
77
- /** The maximum number of peers we allow (exceptions for subnet peers) */
78
- maxPeers: number;
79
- /** Target peer per PeerDAS group */
80
- targetGroupPeers: number;
81
- /**
82
- * Delay the 1st query after starting discv5
83
- * See https://github.com/ChainSafe/lodestar/issues/3423
84
- */
85
- discv5FirstQueryDelayMs?: number;
86
- /**
87
- * If null, Don't run discv5 queries, nor connect to cached peers in the peerStore
88
- */
89
- discv5: LodestarDiscv5Opts | null;
90
- /**
91
- * If set to true, connect to Discv5 bootnodes. If not set or false, do not connect
92
- */
93
- connectToDiscv5Bootnodes?: boolean;
94
- };
95
-
96
- /**
97
- * ReqResp methods used only be PeerManager, so the main thread never has to call them
98
- */
99
- export interface IReqRespBeaconNodePeerManager {
100
- sendPing(peerId: PeerId): Promise<phase0.Ping>;
101
- sendStatus(peerId: PeerId, request: Status): Promise<Status>;
102
- sendGoodbye(peerId: PeerId, request: phase0.Goodbye): Promise<void>;
103
- sendMetadata(peerId: PeerId): Promise<Metadata>;
104
- }
105
-
106
- export type PeerManagerModules = {
107
- privateKey: PrivateKey;
108
- libp2p: Libp2p;
109
- logger: LoggerNode;
110
- metrics: NetworkCoreMetrics | null;
111
- reqResp: IReqRespBeaconNodePeerManager;
112
- gossip: Eth2Gossipsub;
113
- attnetsService: SubnetsService;
114
- syncnetsService: SubnetsService;
115
- clock: IClock;
116
- peerRpcScores: IPeerRpcScoreStore;
117
- events: INetworkEventBus;
118
- networkConfig: NetworkConfig;
119
- peersData: PeersData;
120
- statusCache: StatusCache;
121
- };
122
-
123
- export type PeerRequestedSubnetType = SubnetType | "column";
124
-
125
- type PeerIdStr = string;
126
-
127
- // TODO(fulu): dedupe with network/peers/peerData.ts
128
- enum RelevantPeerStatus {
129
- Unknown = "unknown",
130
- relevant = "relevant",
131
- irrelevant = "irrelevant",
132
- }
133
-
134
- /**
135
- * Performs all peer management functionality in a single grouped class:
136
- * - Ping peers every `PING_INTERVAL_MS`
137
- * - Status peers every `STATUS_INTERVAL_MS`
138
- * - Execute discovery query if under target peers
139
- * - Execute discovery query if need peers on some subnet: TODO
140
- * - Disconnect peers if over target peers
141
- */
142
- export class PeerManager {
143
- private nodeId: NodeId;
144
- private readonly libp2p: Libp2p;
145
- private readonly logger: LoggerNode;
146
- private readonly metrics: NetworkCoreMetrics | null;
147
- private readonly reqResp: IReqRespBeaconNodePeerManager;
148
- private readonly gossipsub: Eth2Gossipsub;
149
- private readonly attnetsService: SubnetsService;
150
- private readonly syncnetsService: SubnetsService;
151
- private readonly clock: IClock;
152
- private readonly networkConfig: NetworkConfig;
153
- private readonly config: BeaconConfig;
154
- private readonly peerRpcScores: IPeerRpcScoreStore;
155
- /** If null, discovery is disabled */
156
- private readonly discovery: PeerDiscovery | null;
157
- private readonly networkEventBus: INetworkEventBus;
158
- private readonly statusCache: StatusCache;
159
- private lastStatus: Status;
160
-
161
- // A single map of connected peers with all necessary data to handle PINGs, STATUS, and metrics
162
- private connectedPeers: Map<PeerIdStr, PeerData>;
163
-
164
- private opts: PeerManagerOpts;
165
- private intervals: NodeJS.Timeout[] = [];
166
-
167
- constructor(modules: PeerManagerModules, opts: PeerManagerOpts, discovery: PeerDiscovery | null) {
168
- const {networkConfig} = modules;
169
- this.libp2p = modules.libp2p;
170
- this.logger = modules.logger;
171
- this.metrics = modules.metrics;
172
- this.reqResp = modules.reqResp;
173
- this.gossipsub = modules.gossip;
174
- this.attnetsService = modules.attnetsService;
175
- this.syncnetsService = modules.syncnetsService;
176
- this.statusCache = modules.statusCache;
177
- this.clock = modules.clock;
178
- this.networkConfig = networkConfig;
179
- this.config = networkConfig.config;
180
- this.peerRpcScores = modules.peerRpcScores;
181
- this.networkEventBus = modules.events;
182
- this.connectedPeers = modules.peersData.connectedPeers;
183
- this.opts = opts;
184
- this.discovery = discovery;
185
- this.nodeId = networkConfig.nodeId;
186
-
187
- const {metrics} = modules;
188
- if (metrics) {
189
- metrics.peers.addCollect(() => this.runPeerCountMetrics(metrics));
190
- }
191
-
192
- this.libp2p.services.components.events.addEventListener(Libp2pEvent.connectionOpen, this.onLibp2pPeerConnect);
193
- this.libp2p.services.components.events.addEventListener(Libp2pEvent.connectionClose, this.onLibp2pPeerDisconnect);
194
- this.networkEventBus.on(NetworkEvent.reqRespRequest, this.onRequest);
195
-
196
- this.lastStatus = this.statusCache.get();
197
-
198
- // On start-up will connected to existing peers in libp2p.peerStore, same as autoDial behaviour
199
- this.heartbeat();
200
- this.intervals = [
201
- setInterval(this.pingAndStatusTimeouts.bind(this), CHECK_PING_STATUS_INTERVAL),
202
- setInterval(this.heartbeat.bind(this), HEARTBEAT_INTERVAL_MS),
203
- setInterval(
204
- this.updateGossipsubScores.bind(this),
205
- this.gossipsub.scoreParams.decayInterval ?? HEARTBEAT_INTERVAL_MS
206
- ),
207
- ];
208
- }
209
-
210
- static async init(modules: PeerManagerModules, opts: PeerManagerOpts): Promise<PeerManager> {
211
- // opts.discv5 === null, discovery is disabled
212
- const discovery = opts.discv5
213
- ? await PeerDiscovery.init(modules, {
214
- discv5FirstQueryDelayMs: opts.discv5FirstQueryDelayMs ?? DEFAULT_DISCV5_FIRST_QUERY_DELAY_MS,
215
- discv5: opts.discv5,
216
- connectToDiscv5Bootnodes: opts.connectToDiscv5Bootnodes,
217
- })
218
- : null;
219
-
220
- return new PeerManager(modules, opts, discovery);
221
- }
222
-
223
- async close(): Promise<void> {
224
- await this.discovery?.stop();
225
- this.libp2p.services.components.events.removeEventListener(Libp2pEvent.connectionOpen, this.onLibp2pPeerConnect);
226
- this.libp2p.services.components.events.removeEventListener(
227
- Libp2pEvent.connectionClose,
228
- this.onLibp2pPeerDisconnect
229
- );
230
- this.networkEventBus.off(NetworkEvent.reqRespRequest, this.onRequest);
231
- for (const interval of this.intervals) clearInterval(interval);
232
- }
233
-
234
- /**
235
- * Return peers with at least one connection in status "open"
236
- */
237
- getConnectedPeerIds(): PeerId[] {
238
- return getConnectedPeerIds(this.libp2p);
239
- }
240
-
241
- /**
242
- * Efficiently check if there is at least one peer connected
243
- */
244
- hasSomeConnectedPeer(): boolean {
245
- return hasSomeConnectedPeer(this.libp2p);
246
- }
247
-
248
- async goodbyeAndDisconnectAllPeers(): Promise<void> {
249
- await Promise.all(
250
- // Filter by peers that support the goodbye protocol: {supportsProtocols: [goodbyeProtocol]}
251
- this.getConnectedPeerIds().map(async (peer) => this.goodbyeAndDisconnect(peer, GoodByeReasonCode.CLIENT_SHUTDOWN))
252
- );
253
- }
254
-
255
- /**
256
- * Run after validator subscriptions request.
257
- */
258
- onCommitteeSubscriptions(): void {
259
- // TODO:
260
- // Only if the slot is more than epoch away, add an event to start looking for peers
261
-
262
- // Request to run heartbeat fn
263
- this.heartbeat();
264
- }
265
-
266
- reportPeer(peer: PeerId, action: PeerAction, actionName: string): void {
267
- this.peerRpcScores.applyAction(peer, action, actionName);
268
- }
269
-
270
- /**
271
- * The app layer needs to refresh the status of some peers. The sync have reached a target
272
- */
273
- reStatusPeers(peers: PeerIdStr[]): void {
274
- for (const peer of peers) {
275
- const peerData = this.connectedPeers.get(peer);
276
- if (peerData) {
277
- // Set to 0 to trigger a status request after calling pingAndStatusTimeouts()
278
- peerData.lastStatusUnixTsMs = 0;
279
- }
280
- }
281
- this.pingAndStatusTimeouts();
282
- }
283
-
284
- dumpPeerScoreStats(): PeerScoreStats {
285
- return this.peerRpcScores.dumpPeerScoreStats();
286
- }
287
-
288
- /**
289
- * Must be called when network ReqResp receives incoming requests
290
- */
291
- private onRequest = ({peer, request}: NetworkEventData[NetworkEvent.reqRespRequest]): void => {
292
- try {
293
- const peerData = this.connectedPeers.get(peer.toString());
294
- if (peerData) {
295
- peerData.lastReceivedMsgUnixTsMs = Date.now();
296
- }
297
-
298
- switch (request.method) {
299
- case ReqRespMethod.Ping:
300
- this.onPing(peer, request.body);
301
- return;
302
- case ReqRespMethod.Goodbye:
303
- this.onGoodbye(peer, request.body);
304
- return;
305
- case ReqRespMethod.Status:
306
- this.onStatus(peer, request.body);
307
- return;
308
- }
309
- } catch (e) {
310
- this.logger.error("Error onRequest handler", {}, e as Error);
311
- }
312
- };
313
-
314
- /**
315
- * Handle a PING request + response (rpc handler responds with PONG automatically)
316
- */
317
- private onPing(peer: PeerId, seqNumber: phase0.Ping): void {
318
- // if the sequence number is unknown update the peer's metadata
319
- const metadata = this.connectedPeers.get(peer.toString())?.metadata;
320
- if (!metadata || metadata.seqNumber < seqNumber) {
321
- void this.requestMetadata(peer);
322
- }
323
- }
324
-
325
- /**
326
- * Handle a METADATA request + response (rpc handler responds with METADATA automatically)
327
- */
328
- private onMetadata(peer: PeerId, metadata: Metadata): void {
329
- // Store metadata always in case the peer updates attnets but not the sequence number
330
- // Trust that the peer always sends the latest metadata (From Lighthouse)
331
- const peerData = this.connectedPeers.get(peer.toString());
332
- this.logger.debug("onMetadata", {
333
- peer: peer.toString(),
334
- peerData: peerData !== undefined,
335
- custodyGroupCount: (metadata as Partial<fulu.Metadata>)?.custodyGroupCount,
336
- });
337
- if (peerData) {
338
- const oldMetadata = peerData.metadata;
339
- const custodyGroupCount =
340
- (metadata as Partial<fulu.Metadata>).custodyGroupCount ?? this.config.CUSTODY_REQUIREMENT;
341
- const samplingGroupCount = Math.max(this.config.SAMPLES_PER_SLOT, custodyGroupCount);
342
- const nodeId = peerData?.nodeId ?? computeNodeId(peer);
343
- const custodyGroups =
344
- oldMetadata == null || oldMetadata.custodyGroups == null || custodyGroupCount !== oldMetadata.custodyGroupCount
345
- ? getCustodyGroups(this.config, nodeId, custodyGroupCount)
346
- : oldMetadata.custodyGroups;
347
- const oldSamplingGroupCount = Math.max(this.config.SAMPLES_PER_SLOT, oldMetadata?.custodyGroupCount ?? 0);
348
- const samplingGroups =
349
- oldMetadata == null || oldMetadata.samplingGroups == null || samplingGroupCount !== oldSamplingGroupCount
350
- ? getCustodyGroups(this.config, nodeId, samplingGroupCount)
351
- : oldMetadata.samplingGroups;
352
- peerData.metadata = {
353
- seqNumber: metadata.seqNumber,
354
- attnets: metadata.attnets,
355
- syncnets: (metadata as Partial<altair.Metadata>).syncnets ?? BitArray.fromBitLen(SYNC_COMMITTEE_SUBNET_COUNT),
356
- custodyGroupCount:
357
- (metadata as Partial<fulu.Metadata>).custodyGroupCount ??
358
- // TODO: spec says that Clients MAY reject peers with a value less than CUSTODY_REQUIREMENT
359
- this.config.CUSTODY_REQUIREMENT,
360
- // TODO(fulu): this should be columns not groups. need to change everywhere. we consume columns and should
361
- // cache that instead so if groups->columns ever changes from 1-1 we only need to update that here
362
- custodyGroups,
363
- samplingGroups,
364
- };
365
- if (oldMetadata === null || oldMetadata.custodyGroupCount !== peerData.metadata.custodyGroupCount) {
366
- void this.requestStatus(peer, this.statusCache.get());
367
- }
368
- }
369
- }
370
-
371
- /**
372
- * Handle a GOODBYE request (rpc handler responds automatically)
373
- */
374
- private onGoodbye(peer: PeerId, goodbye: phase0.Goodbye): void {
375
- const reason = GOODBYE_KNOWN_CODES[goodbye.toString()] || "";
376
- this.logger.verbose("Received goodbye request", {peer: prettyPrintPeerId(peer), goodbye, reason});
377
- this.metrics?.peerGoodbyeReceived.inc({reason});
378
-
379
- const conn = getConnection(this.libp2p, peer.toString());
380
- if (conn && Date.now() - conn.timeline.open > LONG_PEER_CONNECTION_MS) {
381
- this.metrics?.peerLongConnectionDisconnect.inc({reason});
382
- }
383
-
384
- void this.disconnect(peer);
385
- }
386
-
387
- /**
388
- * Handle a STATUS request + response (rpc handler responds with STATUS automatically)
389
- */
390
- private onStatus(peer: PeerId, status: Status): void {
391
- // reset the to-status timer of this peer
392
- const peerData = this.connectedPeers.get(peer.toString());
393
- if (peerData) {
394
- peerData.lastStatusUnixTsMs = Date.now();
395
- peerData.status = status;
396
- }
397
-
398
- const forkName = this.config.getForkName(this.clock.currentSlot);
399
-
400
- let isIrrelevant: boolean;
401
- try {
402
- const irrelevantReasonType = assertPeerRelevance(
403
- forkName,
404
- status,
405
- this.statusCache.get(),
406
- this.clock.currentSlot
407
- );
408
- if (irrelevantReasonType === null) {
409
- isIrrelevant = false;
410
- } else {
411
- isIrrelevant = true;
412
- this.logger.debug("Irrelevant peer", {
413
- peer: prettyPrintPeerId(peer),
414
- reason: renderIrrelevantPeerType(irrelevantReasonType),
415
- });
416
- }
417
- } catch (e) {
418
- this.logger.error("Irrelevant peer - unexpected error", {peer: prettyPrintPeerId(peer)}, e as Error);
419
- isIrrelevant = true;
420
- }
421
-
422
- if (isIrrelevant) {
423
- if (peerData) peerData.relevantStatus = RelevantPeerStatus.irrelevant;
424
- void this.goodbyeAndDisconnect(peer, GoodByeReasonCode.IRRELEVANT_NETWORK);
425
- return;
426
- }
427
-
428
- // Peer is usable, send it to the rangeSync
429
- // NOTE: Peer may not be connected anymore at this point, potential race condition
430
- // libp2p.connectionManager.get() returns not null if there's +1 open connections with `peer`
431
- if (peerData && peerData.relevantStatus !== RelevantPeerStatus.relevant) {
432
- this.libp2p.peerStore
433
- .merge(peer, {
434
- // ttl = undefined means it's never expired
435
- tags: {[PEER_RELEVANT_TAG]: {ttl: undefined, value: PEER_RELEVANT_TAG_VALUE}},
436
- })
437
- .catch((e) => this.logger.verbose("cannot tag peer", {peerId: peer.toString()}, e as Error));
438
- peerData.relevantStatus = RelevantPeerStatus.relevant;
439
- }
440
- if (getConnection(this.libp2p, peer.toString())) {
441
- const nodeId = peerData?.nodeId ?? computeNodeId(peer);
442
- // TODO(fulu): Are we sure we've run Metadata before this?
443
- const custodyGroupCount = peerData?.metadata?.custodyGroupCount ?? this.config.CUSTODY_REQUIREMENT;
444
- const custodyGroups =
445
- peerData?.metadata?.custodyGroups ?? getCustodyGroups(this.config, nodeId, custodyGroupCount);
446
- const custodyColumns = custodyGroups
447
- .flatMap((g) => computeColumnsForCustodyGroup(this.config, g))
448
- .sort((a, b) => a - b);
449
-
450
- const sampleSubnets = this.networkConfig.custodyConfig.sampledSubnets;
451
- const matchingSubnetsNum = sampleSubnets.reduce((acc, elem) => acc + (custodyColumns.includes(elem) ? 1 : 0), 0);
452
- const hasAllColumns = matchingSubnetsNum === sampleSubnets.length;
453
- const clientAgent = peerData?.agentClient ?? ClientKind.Unknown;
454
-
455
- this.logger.debug("onStatus", {
456
- nodeId: toHex(nodeId),
457
- myNodeId: toHex(this.nodeId),
458
- peerId: peer.toString(),
459
- custodyGroupCount,
460
- hasAllColumns,
461
- matchingSubnetsNum,
462
- custodyGroups: prettyPrintIndices(custodyGroups),
463
- custodyColumns: prettyPrintIndices(custodyColumns),
464
- mySampleSubnets: prettyPrintIndices(sampleSubnets),
465
- clientAgent,
466
- });
467
-
468
- this.networkEventBus.emit(NetworkEvent.peerConnected, {
469
- peer: peer.toString(),
470
- status,
471
- clientAgent,
472
- custodyColumns,
473
- });
474
- }
475
- }
476
-
477
- private async requestMetadata(peer: PeerId): Promise<void> {
478
- const peerIdStr = peer.toString();
479
- try {
480
- this.onMetadata(peer, await this.reqResp.sendMetadata(peer));
481
- } catch (e) {
482
- this.logger.verbose("invalid requestMetadata", {peer: prettyPrintPeerIdStr(peerIdStr)}, e as Error);
483
- // TODO: Downvote peer here or in the reqResp layer
484
- }
485
- }
486
-
487
- private async requestPing(peer: PeerId): Promise<void> {
488
- const peerIdStr = peer.toString();
489
- try {
490
- this.onPing(peer, await this.reqResp.sendPing(peer));
491
-
492
- // If peer replies a PING request also update lastReceivedMsg
493
- const peerData = this.connectedPeers.get(peer.toString());
494
- if (peerData) peerData.lastReceivedMsgUnixTsMs = Date.now();
495
- } catch (e) {
496
- this.logger.verbose("invalid requestPing", {peer: prettyPrintPeerIdStr(peerIdStr)}, e as Error);
497
- // TODO: Downvote peer here or in the reqResp layer
498
- }
499
- }
500
-
501
- private async requestStatus(peer: PeerId, localStatus: Status): Promise<void> {
502
- const peerIdStr = peer.toString();
503
- try {
504
- this.onStatus(peer, await this.reqResp.sendStatus(peer, localStatus));
505
- } catch (e) {
506
- this.logger.verbose("invalid requestStatus", {peer: prettyPrintPeerIdStr(peerIdStr)}, e as Error);
507
- // TODO: Failed to get peer latest status: downvote but don't disconnect
508
- }
509
- }
510
-
511
- private async requestStatusMany(peers: PeerId[]): Promise<void> {
512
- try {
513
- const localStatus = this.statusCache.get();
514
- await Promise.all(peers.map(async (peer) => this.requestStatus(peer, localStatus)));
515
- } catch (e) {
516
- this.logger.verbose("Error requesting new status to peers", {}, e as Error);
517
- }
518
- }
519
-
520
- /**
521
- * The Peer manager's heartbeat maintains the peer count and maintains peer reputations.
522
- * It will request discovery queries if the peer count has not reached the desired number of peers.
523
- * NOTE: Discovery should only add a new query if one isn't already queued.
524
- */
525
- private heartbeat(): void {
526
- // timer is safe without a try {} catch (_e) {}, in case of error the metric won't register and timer is GC'ed
527
- const timer = this.metrics?.peerManager.heartbeatDuration.startTimer();
528
-
529
- const connectedPeers = this.getConnectedPeerIds();
530
-
531
- // Decay scores before reading them. Also prunes scores
532
- this.peerRpcScores.update();
533
-
534
- // ban and disconnect peers with bad score, collect rest of healthy peers
535
- const connectedHealthyPeers: PeerId[] = [];
536
- for (const peer of connectedPeers) {
537
- switch (this.peerRpcScores.getScoreState(peer)) {
538
- case ScoreState.Banned:
539
- void this.goodbyeAndDisconnect(peer, GoodByeReasonCode.BANNED);
540
- break;
541
- case ScoreState.Disconnected:
542
- void this.goodbyeAndDisconnect(peer, GoodByeReasonCode.SCORE_TOO_LOW);
543
- break;
544
- case ScoreState.Healthy:
545
- connectedHealthyPeers.push(peer);
546
- }
547
- }
548
-
549
- const status = this.statusCache.get();
550
- const starved =
551
- // while syncing progress is happening, we aren't starved
552
- this.lastStatus.headSlot === status.headSlot &&
553
- // if the head falls behind the threshold, we are starved
554
- this.clock.currentSlot - status.headSlot > STARVATION_THRESHOLD_SLOTS;
555
- this.lastStatus = status;
556
- this.metrics?.peerManager.starved.set(starved ? 1 : 0);
557
- const forkSeq = this.config.getForkSeq(this.clock.currentSlot);
558
-
559
- const {peersToDisconnect, peersToConnect, attnetQueries, syncnetQueries, custodyGroupQueries} = prioritizePeers(
560
- connectedHealthyPeers.map((peer) => {
561
- const peerData = this.connectedPeers.get(peer.toString());
562
- return {
563
- id: peer,
564
- direction: peerData?.direction ?? null,
565
- status: peerData?.status ?? null,
566
- attnets: peerData?.metadata?.attnets ?? null,
567
- syncnets: peerData?.metadata?.syncnets ?? null,
568
- // here we care samplingGroups not custodyGroups in order to know which column subnets peers subscribe to
569
- samplingGroups: peerData?.metadata?.samplingGroups ?? null,
570
- score: this.peerRpcScores.getScore(peer),
571
- };
572
- }),
573
- // Collect subnets which we need peers for in the current slot
574
- this.attnetsService.getActiveSubnets(),
575
- this.syncnetsService.getActiveSubnets(),
576
- // ignore samplingGroups for pre-fulu forks
577
- forkSeq >= ForkSeq.fulu ? this.networkConfig.custodyConfig.sampleGroups : undefined,
578
- {
579
- ...this.opts,
580
- status,
581
- starved,
582
- starvationPruneRatio: STARVATION_PRUNE_RATIO,
583
- starvationThresholdSlots: STARVATION_THRESHOLD_SLOTS,
584
- },
585
- this.config,
586
- this.metrics
587
- );
588
-
589
- const queriesMerged: SubnetDiscvQueryMs[] = [];
590
- for (const {type, queries} of [
591
- {type: SubnetType.attnets, queries: attnetQueries},
592
- {type: SubnetType.syncnets, queries: syncnetQueries},
593
- ]) {
594
- if (queries.length > 0) {
595
- let count = 0;
596
- for (const query of queries) {
597
- count += query.maxPeersToDiscover;
598
- queriesMerged.push({
599
- subnet: query.subnet,
600
- type,
601
- maxPeersToDiscover: query.maxPeersToDiscover,
602
- toUnixMs: 1000 * (this.clock.genesisTime + query.toSlot * this.config.SECONDS_PER_SLOT),
603
- });
604
- }
605
-
606
- this.metrics?.peersRequestedSubnetsToQuery.inc({type}, queries.length);
607
- this.metrics?.peersRequestedSubnetsPeerCount.inc({type}, count);
608
- }
609
- }
610
-
611
- for (const maxPeersToDiscover of custodyGroupQueries.values()) {
612
- this.metrics?.peersRequestedSubnetsToQuery.inc({type: "column"}, 1);
613
- this.metrics?.peersRequestedSubnetsPeerCount.inc({type: "column"}, maxPeersToDiscover);
614
- }
615
-
616
- // disconnect first to have more slots before we dial new peers
617
- for (const [reason, peers] of peersToDisconnect) {
618
- this.metrics?.peersRequestedToDisconnect.inc({reason}, peers.length);
619
- for (const peer of peers) {
620
- void this.goodbyeAndDisconnect(peer, GoodByeReasonCode.TOO_MANY_PEERS);
621
- }
622
- }
623
-
624
- if (this.discovery) {
625
- try {
626
- this.metrics?.peersRequestedToConnect.inc(peersToConnect);
627
- // for PeerDAS, lodestar implements subnet sampling strategy, hence we need to issue columnSubnetQueries to PeerDiscovery
628
- this.discovery.discoverPeers(peersToConnect, custodyGroupQueries, queriesMerged);
629
- } catch (e) {
630
- this.logger.error("Error on discoverPeers", {}, e as Error);
631
- }
632
- }
633
-
634
- // Prune connectedPeers map in case it leaks. It has happen in previous nodes,
635
- // disconnect is not always called for all peers
636
- if (this.connectedPeers.size > connectedPeers.length * 1.1) {
637
- const actualConnectedPeerIds = new Set(connectedPeers.map((peerId) => peerId.toString()));
638
- for (const peerIdStr of this.connectedPeers.keys()) {
639
- if (!actualConnectedPeerIds.has(peerIdStr)) {
640
- this.connectedPeers.delete(peerIdStr);
641
- this.metrics?.leakedConnectionsCount.inc();
642
- }
643
- }
644
- }
645
-
646
- timer?.();
647
-
648
- this.logger.debug("peerManager heartbeat result", {
649
- peersToDisconnect: peersToDisconnect.size,
650
- peersToConnect: peersToConnect,
651
- attnetQueries: attnetQueries.length,
652
- syncnetQueries: syncnetQueries.length,
653
- });
654
- }
655
-
656
- private updateGossipsubScores(): void {
657
- const gossipsubScores = new Map<string, number>();
658
- for (const peerIdStr of this.connectedPeers.keys()) {
659
- gossipsubScores.set(peerIdStr, this.gossipsub.getScore(peerIdStr));
660
- }
661
-
662
- const toIgnoreNegativePeers = Math.ceil(this.opts.targetPeers * ALLOWED_NEGATIVE_GOSSIPSUB_FACTOR);
663
- updateGossipsubScores(this.peerRpcScores, gossipsubScores, toIgnoreNegativePeers);
664
- }
665
-
666
- private pingAndStatusTimeouts(): void {
667
- const now = Date.now();
668
- const peersToStatus: PeerId[] = [];
669
-
670
- for (const peer of this.connectedPeers.values()) {
671
- // Every interval request to send some peers our seqNumber and process theirs
672
- // If the seqNumber is different it must request the new metadata
673
- const pingInterval = peer.direction === "inbound" ? PING_INTERVAL_INBOUND_MS : PING_INTERVAL_OUTBOUND_MS;
674
- if (now > peer.lastReceivedMsgUnixTsMs + pingInterval) {
675
- void this.requestPing(peer.peerId);
676
- }
677
-
678
- // TODO: Consider sending status request to peers that do support status protocol
679
- // {supportsProtocols: getStatusProtocols()}
680
-
681
- // Every interval request to send some peers our status, and process theirs
682
- // Must re-check if this peer is relevant to us and emit an event if the status changes
683
- // So the sync layer can update things
684
- if (now > peer.lastStatusUnixTsMs + STATUS_INTERVAL_MS) {
685
- peersToStatus.push(peer.peerId);
686
- }
687
- }
688
-
689
- if (peersToStatus.length > 0) {
690
- void this.requestStatusMany(peersToStatus);
691
- }
692
- }
693
-
694
- /**
695
- * The libp2p Upgrader has successfully upgraded a peer connection on a particular multiaddress
696
- * This event is routed through the connectionManager
697
- *
698
- * Registers a peer as connected. The `direction` parameter determines if the peer is being
699
- * dialed or connecting to us.
700
- */
701
- private onLibp2pPeerConnect = async (evt: CustomEvent<Connection>): Promise<void> => {
702
- const {direction, status, remotePeer} = evt.detail;
703
- const remotePeerStr = remotePeer.toString();
704
- const remotePeerPrettyStr = prettyPrintPeerId(remotePeer);
705
- this.logger.verbose("peer connected", {peer: remotePeerPrettyStr, direction, status});
706
- // NOTE: The peerConnect event is not emitted here here, but after asserting peer relevance
707
- this.metrics?.peerConnectedEvent.inc({direction, status});
708
-
709
- if (evt.detail.status !== "open") {
710
- this.logger.debug("Peer disconnected before identify protocol initiated", {
711
- peerId: remotePeerPrettyStr,
712
- status: evt.detail.status,
713
- });
714
- return;
715
- }
716
-
717
- // On connection:
718
- // - Outbound connections: send a STATUS and PING request
719
- // - Inbound connections: expect to be STATUS'd, schedule STATUS and PING for latter
720
- // NOTE: libp2p may emit two "peer:connect" events: One for inbound, one for outbound
721
- // If that happens, it's okay. Only the "outbound" connection triggers immediate action
722
- const now = Date.now();
723
- const nodeId = computeNodeId(remotePeer);
724
- const peerData: PeerData = {
725
- lastReceivedMsgUnixTsMs: direction === "outbound" ? 0 : now,
726
- // If inbound, request after STATUS_INBOUND_GRACE_PERIOD
727
- lastStatusUnixTsMs: direction === "outbound" ? 0 : now - STATUS_INTERVAL_MS + STATUS_INBOUND_GRACE_PERIOD,
728
- connectedUnixTsMs: now,
729
- relevantStatus: RelevantPeerStatus.Unknown,
730
- direction,
731
- nodeId,
732
- peerId: remotePeer,
733
- status: null,
734
- metadata: null,
735
- agentVersion: null,
736
- agentClient: null,
737
- encodingPreference: null,
738
- };
739
- this.connectedPeers.set(remotePeerStr, peerData);
740
-
741
- if (direction === "outbound") {
742
- // this.pingAndStatusTimeouts();
743
- void this.requestPing(remotePeer);
744
- void this.requestStatus(remotePeer, this.statusCache.get());
745
- }
746
-
747
- this.libp2p.services.identify
748
- .identify(evt.detail)
749
- .then((result) => {
750
- const agentVersion = result.agentVersion;
751
- if (agentVersion) {
752
- peerData.agentVersion = agentVersion;
753
- peerData.agentClient = getKnownClientFromAgentVersion(agentVersion);
754
- }
755
- })
756
- .catch((err) => {
757
- if (evt.detail.status !== "open") {
758
- this.logger.debug("Peer disconnected during identify protocol", {
759
- peerId: remotePeerPrettyStr,
760
- error: (err as Error).message,
761
- });
762
- } else {
763
- this.logger.debug("Error setting agentVersion for the peer", {peerId: remotePeerPrettyStr}, err);
764
- }
765
- });
766
- };
767
-
768
- /**
769
- * The libp2p Upgrader has ended a connection
770
- */
771
- private onLibp2pPeerDisconnect = (evt: CustomEvent<Connection>): void => {
772
- const {direction, status, remotePeer} = evt.detail;
773
- const peerIdStr = remotePeer.toString();
774
-
775
- let logMessage = "onLibp2pPeerDisconnect";
776
- const logContext: Record<string, string | number> = {
777
- peerId: prettyPrintPeerIdStr(peerIdStr),
778
- direction,
779
- status,
780
- };
781
- // Some clients do not send good-bye requests (Nimbus) so check for inbound disconnects and apply reconnection
782
- // cool-down period to prevent automatic reconnection by Discovery
783
- if (direction === "inbound") {
784
- // prevent automatic/immediate reconnects
785
- const coolDownMin = this.peerRpcScores.applyReconnectionCoolDown(peerIdStr, GoodByeReasonCode.INBOUND_DISCONNECT);
786
- logMessage += ". Enforcing a reconnection cool-down period";
787
- logContext.coolDownMin = coolDownMin;
788
- }
789
-
790
- // remove the ping and status timer for the peer
791
- this.connectedPeers.delete(peerIdStr);
792
-
793
- this.logger.verbose(logMessage, logContext);
794
- this.networkEventBus.emit(NetworkEvent.peerDisconnected, {peer: peerIdStr});
795
- this.metrics?.peerDisconnectedEvent.inc({direction});
796
- this.libp2p.peerStore
797
- .merge(remotePeer, {tags: {[PEER_RELEVANT_TAG]: undefined}})
798
- .catch((e) => this.logger.verbose("cannot untag peer", {peerId: peerIdStr}, e as Error));
799
- };
800
-
801
- private async disconnect(peer: PeerId): Promise<void> {
802
- try {
803
- await this.libp2p.hangUp(peer);
804
- } catch (e) {
805
- this.logger.debug("Unclean disconnect", {peer: prettyPrintPeerId(peer)}, e as Error);
806
- }
807
- }
808
-
809
- private async goodbyeAndDisconnect(peer: PeerId, goodbye: GoodByeReasonCode): Promise<void> {
810
- const reason = GOODBYE_KNOWN_CODES[goodbye.toString()] || "";
811
- const peerIdStr = peer.toString();
812
- try {
813
- this.metrics?.peerGoodbyeSent.inc({reason});
814
- this.logger.debug("initiating goodbyeAndDisconnect peer", {reason, peerId: prettyPrintPeerId(peer)});
815
-
816
- const conn = getConnection(this.libp2p, peerIdStr);
817
- if (conn && Date.now() - conn.timeline.open > LONG_PEER_CONNECTION_MS) {
818
- this.metrics?.peerLongConnectionDisconnect.inc({reason});
819
- }
820
-
821
- // Wrap with shorter timeout than regular ReqResp requests to speed up shutdown
822
- await withTimeout(() => this.reqResp.sendGoodbye(peer, BigInt(goodbye)), 1_000);
823
- } catch (e) {
824
- this.logger.verbose("Failed to send goodbye", {peer: prettyPrintPeerId(peer)}, e as Error);
825
- } finally {
826
- await this.disconnect(peer);
827
- // prevent automatic/immediate reconnects
828
- const coolDownMin = this.peerRpcScores.applyReconnectionCoolDown(peerIdStr, goodbye);
829
- if (coolDownMin === NO_COOL_DOWN_APPLIED) {
830
- this.logger.verbose("Disconnected a peer", {peerId: prettyPrintPeerIdStr(peerIdStr)});
831
- } else {
832
- this.logger.verbose("Disconnected a peer. Enforcing a reconnection cool-down period", {
833
- peerId: prettyPrintPeerIdStr(peerIdStr),
834
- coolDownMin,
835
- });
836
- }
837
- }
838
- }
839
-
840
- /** Register peer count metrics */
841
- private async runPeerCountMetrics(metrics: NetworkCoreMetrics): Promise<void> {
842
- let total = 0;
843
-
844
- const peersByDirection = new Map<string, number>();
845
- const peersByClient = new Map<string, number>();
846
- const now = Date.now();
847
-
848
- // peerLongLivedAttnets metric is a count
849
- metrics.peerLongLivedAttnets.reset();
850
- metrics.peerScoreByClient.reset();
851
- metrics.peerConnectionLength.reset();
852
- metrics.peerGossipScoreByClient.reset();
853
-
854
- // reset client counts _for each client_ to 0
855
- for (const client of Object.values(ClientKind)) {
856
- peersByClient.set(client, 0);
857
- }
858
-
859
- for (const connections of getConnectionsMap(this.libp2p).values()) {
860
- const openCnx = connections.value.find((cnx) => cnx.status === "open");
861
- if (openCnx) {
862
- const direction = openCnx.direction;
863
- peersByDirection.set(direction, 1 + (peersByDirection.get(direction) ?? 0));
864
- const peerId = openCnx.remotePeer;
865
- const peerData = this.connectedPeers.get(peerId.toString());
866
- const client = peerData?.agentClient ?? ClientKind.Unknown;
867
- peersByClient.set(client, 1 + (peersByClient.get(client) ?? 0));
868
-
869
- const attnets = peerData?.metadata?.attnets;
870
-
871
- // TODO: Consider optimizing by doing observe in batch
872
- metrics.peerLongLivedAttnets.observe(attnets ? attnets.getTrueBitIndexes().length : 0);
873
- metrics.peerColumnGroupCount.observe(peerData?.metadata?.custodyGroupCount ?? 0);
874
- metrics.peerScoreByClient.observe({client}, this.peerRpcScores.getScore(peerId));
875
- metrics.peerGossipScoreByClient.observe({client}, this.peerRpcScores.getGossipScore(peerId));
876
- metrics.peerConnectionLength.observe((now - openCnx.timeline.open) / 1000);
877
- total++;
878
- }
879
- }
880
-
881
- for (const [direction, peers] of peersByDirection.entries()) {
882
- metrics.peersByDirection.set({direction}, peers);
883
- }
884
-
885
- for (const [client, peers] of peersByClient.entries()) {
886
- metrics.peersByClient.set({client}, peers);
887
- }
888
-
889
- let syncPeers = 0;
890
- for (const peer of this.connectedPeers.values()) {
891
- if (peer.relevantStatus === RelevantPeerStatus.relevant) {
892
- syncPeers++;
893
- }
894
- }
895
-
896
- metrics.peers.set(total);
897
- metrics.peersSync.set(syncPeers);
898
- }
899
- }