@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,951 +0,0 @@
1
- import {routes} from "@lodestar/api";
2
- import {BeaconConfig, ChainForkConfig} from "@lodestar/config";
3
- import {
4
- ForkName,
5
- ForkPostElectra,
6
- ForkPreElectra,
7
- ForkSeq,
8
- NUMBER_OF_COLUMNS,
9
- isForkPostElectra,
10
- } from "@lodestar/params";
11
- import {computeTimeAtSlot} from "@lodestar/state-transition";
12
- import {
13
- Root,
14
- SignedBeaconBlock,
15
- SingleAttestation,
16
- Slot,
17
- SubnetID,
18
- UintNum64,
19
- deneb,
20
- fulu,
21
- ssz,
22
- sszTypesFor,
23
- } from "@lodestar/types";
24
- import {LogLevel, Logger, prettyBytes, toHex, toRootHex} from "@lodestar/utils";
25
- import {
26
- BlockInput,
27
- BlockInputColumns,
28
- BlockInputSource,
29
- IBlockInput,
30
- isBlockInputColumns,
31
- } from "../../chain/blocks/blockInput/index.js";
32
- import {BlobSidecarValidation} from "../../chain/blocks/types.js";
33
- import {ChainEvent} from "../../chain/emitter.js";
34
- import {
35
- AttestationError,
36
- AttestationErrorCode,
37
- BlobSidecarErrorCode,
38
- BlobSidecarGossipError,
39
- BlockError,
40
- BlockErrorCode,
41
- BlockGossipError,
42
- DataColumnSidecarGossipError,
43
- GossipAction,
44
- GossipActionError,
45
- SyncCommitteeError,
46
- } from "../../chain/errors/index.js";
47
- import {IBeaconChain} from "../../chain/interface.js";
48
- import {validateGossipBlobSidecar} from "../../chain/validation/blobSidecar.js";
49
- import {validateGossipDataColumnSidecar} from "../../chain/validation/dataColumnSidecar.js";
50
- import {
51
- AggregateAndProofValidationResult,
52
- GossipAttestation,
53
- toElectraSingleAttestation,
54
- validateGossipAggregateAndProof,
55
- validateGossipAttestationsSameAttData,
56
- validateGossipAttesterSlashing,
57
- validateGossipBlock,
58
- validateGossipBlsToExecutionChange,
59
- validateGossipProposerSlashing,
60
- validateGossipSyncCommittee,
61
- validateGossipVoluntaryExit,
62
- validateSyncCommitteeGossipContributionAndProof,
63
- } from "../../chain/validation/index.js";
64
- import {validateLightClientFinalityUpdate} from "../../chain/validation/lightClientFinalityUpdate.js";
65
- import {validateLightClientOptimisticUpdate} from "../../chain/validation/lightClientOptimisticUpdate.js";
66
- import {OpSource} from "../../chain/validatorMonitor.js";
67
- import {Metrics} from "../../metrics/index.js";
68
- import {kzgCommitmentToVersionedHash} from "../../util/blobs.js";
69
- import {INetworkCore} from "../core/index.js";
70
- import {NetworkEventBus} from "../events.js";
71
- import {
72
- BatchGossipHandlers,
73
- GossipHandlerParamGeneric,
74
- GossipHandlers,
75
- GossipType,
76
- SequentialGossipHandlers,
77
- } from "../gossip/interface.js";
78
- import {sszDeserialize} from "../gossip/topic.js";
79
- import {INetwork} from "../interface.js";
80
- import {PeerAction} from "../peers/index.js";
81
- import {AggregatorTracker} from "./aggregatorTracker.js";
82
-
83
- /**
84
- * Gossip handler options as part of network options
85
- */
86
- export type GossipHandlerOpts = {
87
- /** By default pass gossip attestations to forkchoice */
88
- dontSendGossipAttestationsToForkchoice?: boolean;
89
- };
90
-
91
- export type ValidatorFnsModules = {
92
- chain: IBeaconChain;
93
- config: BeaconConfig;
94
- logger: Logger;
95
- metrics: Metrics | null;
96
- events: NetworkEventBus;
97
- aggregatorTracker: AggregatorTracker;
98
- core: INetworkCore;
99
- };
100
-
101
- const MAX_UNKNOWN_BLOCK_ROOT_RETRIES = 1;
102
- const BLOCK_AVAILABILITY_CUTOFF_MS = 3_000;
103
-
104
- /**
105
- * Gossip handlers perform validation + handling in a single function.
106
- * - This gossip handlers MUST only be registered as validator functions. No handler is registered for any topic.
107
- * - All `chain/validation/*` functions MUST throw typed GossipActionError instances so they gossip action is captured
108
- * by `getGossipValidatorFn()` try catch block.
109
- * - This gossip handlers should not let any handling errors propagate to the caller. Only validation errors must be thrown.
110
- *
111
- * Note: `libp2p/js-libp2p-interfaces` would normally indicate to register separate validator functions and handler functions.
112
- * This approach is not suitable for us because:
113
- * - We do expensive processing on the object in the validator function that we need to re-use in the handler function.
114
- * - The validator function produces extra data that is needed for the handler function. Making this data available in
115
- * the handler function scope is hard to achieve without very hacky strategies
116
- * - Ethereum Consensus gossipsub protocol strictly defined a single topic for message
117
- */
118
- export function getGossipHandlers(modules: ValidatorFnsModules, options: GossipHandlerOpts): GossipHandlers {
119
- return {...getSequentialHandlers(modules, options), ...getBatchHandlers(modules, options)};
120
- }
121
-
122
- /**
123
- * Default handlers validate gossip messages one by one.
124
- * We only have a choice to do batch validation for beacon_attestation topic.
125
- */
126
- function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHandlerOpts): SequentialGossipHandlers {
127
- const {chain, config, metrics, logger, core} = modules;
128
-
129
- async function validateBeaconBlock(
130
- signedBlock: SignedBeaconBlock,
131
- fork: ForkName,
132
- peerIdStr: string,
133
- seenTimestampSec: number
134
- ): Promise<IBlockInput> {
135
- const slot = signedBlock.message.slot;
136
- const forkTypes = config.getForkTypes(slot);
137
- const blockRootHex = toRootHex(forkTypes.BeaconBlock.hashTreeRoot(signedBlock.message));
138
- const blockShortHex = prettyBytes(blockRootHex);
139
- const delaySec = chain.clock.secFromSlot(slot, seenTimestampSec);
140
- const recvToValLatency = Date.now() / 1000 - seenTimestampSec;
141
-
142
- // always set block to seen cache for all forks so that we don't need to download it
143
- // TODO: validate block before adding to cache
144
- // tracked in https://github.com/ChainSafe/lodestar/issues/7957
145
-
146
- const logCtx = {
147
- currentSlot: chain.clock.currentSlot,
148
- peerId: peerIdStr,
149
- delaySec,
150
- recvToValLatency,
151
- };
152
-
153
- logger.debug("Received gossip block", {...logCtx});
154
-
155
- let blockInput: IBlockInput | undefined;
156
- try {
157
- await validateGossipBlock(config, chain, signedBlock, fork);
158
- blockInput = chain.seenBlockInputCache.getByBlock({
159
- block: signedBlock,
160
- blockRootHex,
161
- source: BlockInputSource.gossip,
162
- seenTimestampSec,
163
- peerIdStr,
164
- });
165
- const blockInputMeta = blockInput.getLogMeta();
166
-
167
- const recvToValidation = Date.now() / 1000 - seenTimestampSec;
168
- const validationTime = recvToValidation - recvToValLatency;
169
-
170
- metrics?.gossipBlock.gossipValidation.recvToValidation.observe(recvToValidation);
171
- metrics?.gossipBlock.gossipValidation.validationTime.observe(validationTime);
172
-
173
- logger.debug("Validated gossip block", {...blockInputMeta, ...logCtx, recvToValidation, validationTime});
174
-
175
- chain.emitter.emit(routes.events.EventType.blockGossip, {slot, block: blockRootHex});
176
-
177
- return blockInput;
178
- } catch (e) {
179
- if (e instanceof BlockGossipError) {
180
- if (e.type.code === BlockErrorCode.PARENT_UNKNOWN && blockInput) {
181
- logger.debug("Gossip block has error", {slot, root: blockShortHex, code: e.type.code});
182
- chain.emitter.emit(ChainEvent.unknownParent, {
183
- blockInput,
184
- peer: peerIdStr,
185
- source: BlockInputSource.gossip,
186
- });
187
- // throw error (don't prune the blockInput)
188
- throw e;
189
- }
190
-
191
- if (e.action === GossipAction.REJECT) {
192
- chain.persistInvalidSszValue(forkTypes.SignedBeaconBlock, signedBlock, `gossip_reject_slot_${slot}`);
193
- }
194
- }
195
-
196
- chain.seenBlockInputCache.prune(blockRootHex);
197
- throw e;
198
- }
199
- }
200
-
201
- async function validateBeaconBlob(
202
- blobSidecar: deneb.BlobSidecar,
203
- subnet: SubnetID,
204
- peerIdStr: string,
205
- seenTimestampSec: number
206
- ): Promise<BlockInput> {
207
- const blobBlockHeader = blobSidecar.signedBlockHeader.message;
208
- const slot = blobBlockHeader.slot;
209
- const fork = config.getForkName(slot);
210
- const blockRootHex = toRootHex(ssz.phase0.BeaconBlockHeader.hashTreeRoot(blobBlockHeader));
211
- const blockShortHex = prettyBytes(blockRootHex);
212
-
213
- const delaySec = chain.clock.secFromSlot(slot, seenTimestampSec);
214
- const recvToValLatency = Date.now() / 1000 - seenTimestampSec;
215
-
216
- try {
217
- await validateGossipBlobSidecar(fork, chain, blobSidecar, subnet);
218
- const blockInput = chain.seenBlockInputCache.getByBlob({
219
- blockRootHex,
220
- blobSidecar,
221
- source: BlockInputSource.gossip,
222
- seenTimestampSec,
223
- peerIdStr,
224
- });
225
- const recvToValidation = Date.now() / 1000 - seenTimestampSec;
226
- const validationTime = recvToValidation - recvToValLatency;
227
-
228
- metrics?.gossipBlob.recvToValidation.observe(recvToValidation);
229
- metrics?.gossipBlob.validationTime.observe(validationTime);
230
-
231
- if (chain.emitter.listenerCount(routes.events.EventType.blobSidecar)) {
232
- let versionedHash: Uint8Array;
233
- if (blockInput.hasBlock()) {
234
- // if block hasn't arrived yet then this will throw and need to calculate the versionedHash as a 1-off
235
- versionedHash = blockInput.getVersionedHashes()[blobSidecar.index];
236
- } else {
237
- versionedHash = kzgCommitmentToVersionedHash(blobSidecar.kzgCommitment);
238
- }
239
- chain.emitter.emit(routes.events.EventType.blobSidecar, {
240
- blockRoot: blockRootHex,
241
- slot,
242
- index: blobSidecar.index,
243
- kzgCommitment: toHex(blobSidecar.kzgCommitment),
244
- versionedHash: toHex(versionedHash),
245
- });
246
- }
247
-
248
- logger.debug("Received gossip blob", {
249
- ...blockInput.getLogMeta(),
250
- currentSlot: chain.clock.currentSlot,
251
- peerId: peerIdStr,
252
- delaySec,
253
- subnet,
254
- recvToValLatency,
255
- recvToValidation,
256
- validationTime,
257
- });
258
-
259
- return blockInput;
260
- } catch (e) {
261
- if (e instanceof BlobSidecarGossipError) {
262
- // Don't trigger this yet if full block and blobs haven't arrived yet
263
- if (e.type.code === BlobSidecarErrorCode.PARENT_UNKNOWN) {
264
- logger.debug("Gossip blob has error", {slot, root: blockShortHex, code: e.type.code});
265
- // no need to trigger `unknownBlockParent` event here, as we already did it in `validateBeaconBlock()`
266
- //
267
- // TODO(fulu): is this note above correct? Could have random blob that we see that could trigger
268
- // unknownBlockSync. And duplicate addition of a block will be deduplicated by the
269
- // BlockInputSync event handler. Check this!!
270
- // events.emit(NetworkEvent.unknownBlockParent, {blockInput, peer: peerIdStr});
271
- }
272
-
273
- if (e.action === GossipAction.REJECT) {
274
- chain.persistInvalidSszValue(
275
- ssz.deneb.BlobSidecar,
276
- blobSidecar,
277
- `gossip_reject_slot_${slot}_index_${blobSidecar.index}`
278
- );
279
- }
280
- }
281
-
282
- throw e;
283
- }
284
- }
285
-
286
- async function validateBeaconDataColumn(
287
- dataColumnSidecar: fulu.DataColumnSidecar,
288
- _dataColumnBytes: Uint8Array,
289
- gossipSubnet: SubnetID,
290
- peerIdStr: string,
291
- seenTimestampSec: number
292
- ): Promise<BlockInputColumns> {
293
- metrics?.peerDas.dataColumnSidecarProcessingRequests.inc();
294
- const dataColumnBlockHeader = dataColumnSidecar.signedBlockHeader.message;
295
- const slot = dataColumnBlockHeader.slot;
296
- const blockRootHex = toRootHex(ssz.phase0.BeaconBlockHeader.hashTreeRoot(dataColumnBlockHeader));
297
-
298
- // first check if we should even process this column (we may have already processed it via getBlobsV2)
299
- {
300
- const blockInput = chain.seenBlockInputCache.get(blockRootHex);
301
- if (blockInput && isBlockInputColumns(blockInput) && blockInput.hasColumn(dataColumnSidecar.index)) {
302
- metrics?.peerDas.dataColumnSidecarProcessingSkip.inc();
303
- logger.debug("Already have column sidecar, skipping processing", {
304
- ...blockInput.getLogMeta(),
305
- index: dataColumnSidecar.index,
306
- });
307
- return blockInput;
308
- }
309
- }
310
-
311
- const verificationTimer = metrics?.peerDas.dataColumnSidecarGossipVerificationTime.startTimer();
312
-
313
- const delaySec = chain.clock.secFromSlot(slot, seenTimestampSec);
314
- const recvToValLatency = Date.now() / 1000 - seenTimestampSec;
315
-
316
- try {
317
- await validateGossipDataColumnSidecar(chain, dataColumnSidecar, gossipSubnet, metrics);
318
- const blockInput = chain.seenBlockInputCache.getByColumn({
319
- blockRootHex,
320
- columnSidecar: dataColumnSidecar,
321
- source: BlockInputSource.gossip,
322
- seenTimestampSec,
323
- peerIdStr,
324
- });
325
-
326
- const recvToValidation = Date.now() / 1000 - seenTimestampSec;
327
- const validationTime = recvToValidation - recvToValLatency;
328
-
329
- metrics?.peerDas.dataColumnSidecarProcessingSuccesses.inc();
330
- metrics?.gossipBlob.recvToValidation.observe(recvToValidation);
331
- metrics?.gossipBlob.validationTime.observe(validationTime);
332
-
333
- if (chain.emitter.listenerCount(routes.events.EventType.dataColumnSidecar)) {
334
- chain.emitter.emit(routes.events.EventType.dataColumnSidecar, {
335
- blockRoot: blockRootHex,
336
- slot,
337
- index: dataColumnSidecar.index,
338
- kzgCommitments: dataColumnSidecar.kzgCommitments.map(toHex),
339
- });
340
- }
341
-
342
- logger.debug("Received gossip dataColumn", {
343
- ...blockInput.getLogMeta(),
344
- currentSlot: chain.clock.currentSlot,
345
- peerId: peerIdStr,
346
- delaySec,
347
- gossipSubnet,
348
- columnIndex: dataColumnSidecar.index,
349
- recvToValLatency,
350
- recvToValidation,
351
- validationTime,
352
- });
353
-
354
- return blockInput;
355
- } catch (e) {
356
- if (e instanceof DataColumnSidecarGossipError && e.action === GossipAction.REJECT) {
357
- chain.persistInvalidSszValue(
358
- ssz.fulu.DataColumnSidecar,
359
- dataColumnSidecar,
360
- `gossip_reject_slot_${slot}_index_${dataColumnSidecar.index}`
361
- );
362
- // no need to trigger `unknownBlockParent` event here, as we already did it in `validateBeaconBlock()`
363
- //
364
- // TODO(fulu): is this note above correct? Could have random column that we see that could trigger
365
- // unknownBlockSync. And duplicate addition of a block will be deduplicated by the
366
- // BlockInputSync event handler. Check this!!
367
- // events.emit(NetworkEvent.unknownBlockParent, {blockInput, peer: peerIdStr});
368
- }
369
-
370
- throw e;
371
- } finally {
372
- verificationTimer?.();
373
- }
374
- }
375
-
376
- function handleValidBeaconBlock(blockInput: IBlockInput, peerIdStr: string, seenTimestampSec: number): void {
377
- const signedBlock = blockInput.getBlock();
378
- const slot = signedBlock.message.slot;
379
-
380
- // Handler - MUST NOT `await`, to allow validation result to be propagated
381
-
382
- const delaySec = seenTimestampSec - (chain.genesisTime + slot * config.SECONDS_PER_SLOT);
383
- metrics?.gossipBlock.elapsedTimeTillReceived.observe({source: OpSource.gossip}, delaySec);
384
- chain.validatorMonitor?.registerBeaconBlock(OpSource.gossip, delaySec, signedBlock.message);
385
- if (!blockInput.hasBlockAndAllData()) {
386
- chain.logger.debug("Received gossip block, attempting fetch of unavailable data", blockInput.getLogMeta());
387
- // The data is not yet fully available, immediately trigger an aggressive pull via unknown block sync
388
- chain.emitter.emit(ChainEvent.incompleteBlockInput, {
389
- blockInput,
390
- peer: peerIdStr,
391
- source: BlockInputSource.gossip,
392
- });
393
- // immediately attempt fetch of data columns from execution engine
394
- chain.getBlobsTracker.triggerGetBlobs(blockInput);
395
- } else {
396
- metrics?.blockInputFetchStats.totalDataAvailableBlockInputs.inc();
397
- metrics?.blockInputFetchStats.totalDataAvailableBlockInputBlobs.inc(
398
- (signedBlock.message as deneb.BeaconBlock).body.blobKzgCommitments.length
399
- );
400
- }
401
-
402
- chain
403
- .processBlock(blockInput, {
404
- // block may be downloaded and processed by UnknownBlockSync
405
- ignoreIfKnown: true,
406
- // proposer signature already checked in validateBeaconBlock()
407
- validProposerSignature: true,
408
- // blobSidecars already checked in validateGossipBlobSidecars()
409
- validBlobSidecars: BlobSidecarValidation.Individual,
410
- // It's critical to keep a good number of mesh peers.
411
- // To do that, the Gossip Job Wait Time should be consistently <3s to avoid the behavior penalties in gossip
412
- // Gossip Job Wait Time depends on the BLS Job Wait Time
413
- // so `blsVerifyOnMainThread = true`: we want to verify signatures immediately without affecting the bls thread pool.
414
- // otherwise we can't utilize bls thread pool capacity and Gossip Job Wait Time can't be kept low consistently.
415
- // See https://github.com/ChainSafe/lodestar/issues/3792
416
- blsVerifyOnMainThread: true,
417
- // to track block process steps
418
- seenTimestampSec,
419
- // gossip block is validated, we want to process it asap
420
- eagerPersistBlock: true,
421
- })
422
- .then(() => {
423
- // Returns the delay between the start of `block.slot` and `current time`
424
- const delaySec = chain.clock.secFromSlot(slot);
425
- metrics?.gossipBlock.elapsedTimeTillProcessed.observe(delaySec);
426
- chain.seenBlockInputCache.prune(blockInput.blockRootHex);
427
- })
428
- .catch((e) => {
429
- // Adjust verbosity based on error type
430
- let logLevel: LogLevel;
431
-
432
- if (e instanceof BlockError) {
433
- switch (e.type.code) {
434
- case BlockErrorCode.DATA_UNAVAILABLE: {
435
- // Error is quite frequent and not critical
436
- logLevel = LogLevel.debug;
437
- break;
438
- }
439
- // ALREADY_KNOWN should not happen with ignoreIfKnown=true above
440
- // PARENT_UNKNOWN should not happen, we handled this in validateBeaconBlock() function above
441
- case BlockErrorCode.ALREADY_KNOWN:
442
- case BlockErrorCode.PARENT_UNKNOWN:
443
- case BlockErrorCode.PRESTATE_MISSING:
444
- case BlockErrorCode.EXECUTION_ENGINE_ERROR:
445
- // Errors might indicate an issue with our node or the connected EL client
446
- logLevel = LogLevel.error;
447
- break;
448
- default:
449
- // TODO: Should it use PeerId or string?
450
- core.reportPeer(peerIdStr, PeerAction.LowToleranceError, "BadGossipBlock");
451
- // Misbehaving peer, but could highlight an issue in another client
452
- logLevel = LogLevel.warn;
453
- }
454
- } else {
455
- // Any unexpected error
456
- logLevel = LogLevel.error;
457
- }
458
- metrics?.gossipBlock.processBlockErrors.inc({error: e instanceof BlockError ? e.type.code : "NOT_BLOCK_ERROR"});
459
- logger[logLevel](
460
- "Error processing block",
461
- {slot, peer: peerIdStr, blockRoot: prettyBytes(blockInput.blockRootHex)},
462
- e as Error
463
- );
464
- // TODO(fulu): Revisit when we prune block inputs
465
- chain.seenBlockInputCache.prune(blockInput.blockRootHex);
466
- });
467
- }
468
-
469
- return {
470
- [GossipType.beacon_block]: async ({
471
- gossipData,
472
- topic,
473
- peerIdStr,
474
- seenTimestampSec,
475
- }: GossipHandlerParamGeneric<GossipType.beacon_block>) => {
476
- const {serializedData} = gossipData;
477
-
478
- const signedBlock = sszDeserialize(topic, serializedData);
479
- const blockInput = await validateBeaconBlock(signedBlock, topic.boundary.fork, peerIdStr, seenTimestampSec);
480
- chain.serializedCache.set(signedBlock, serializedData);
481
- handleValidBeaconBlock(blockInput, peerIdStr, seenTimestampSec);
482
- },
483
-
484
- [GossipType.blob_sidecar]: async ({
485
- gossipData,
486
- topic,
487
- peerIdStr,
488
- seenTimestampSec,
489
- }: GossipHandlerParamGeneric<GossipType.blob_sidecar>) => {
490
- const {serializedData} = gossipData;
491
- const blobSidecar = sszDeserialize(topic, serializedData);
492
- const blobSlot = blobSidecar.signedBlockHeader.message.slot;
493
- const index = blobSidecar.index;
494
-
495
- if (config.getForkSeq(blobSlot) < ForkSeq.deneb) {
496
- throw new GossipActionError(GossipAction.REJECT, {code: "PRE_DENEB_BLOCK"});
497
- }
498
- const blockInput = await validateBeaconBlob(blobSidecar, topic.subnet, peerIdStr, seenTimestampSec);
499
- if (!blockInput.hasBlockAndAllData()) {
500
- const cutoffTimeMs = getCutoffTimeMs(chain, blobSlot, BLOCK_AVAILABILITY_CUTOFF_MS);
501
- chain.logger.debug("Received gossip blob, waiting for full data availability", {
502
- msToWait: cutoffTimeMs,
503
- blobIndex: index,
504
- ...blockInput.getLogMeta(),
505
- });
506
- blockInput.waitForAllData(cutoffTimeMs).catch((_e) => {
507
- chain.logger.debug(
508
- "Waited for data after receiving gossip blob. Cut-off reached so attempting to fetch remainder of BlockInput",
509
- {
510
- blobIndex: index,
511
- ...blockInput.getLogMeta(),
512
- }
513
- );
514
- chain.emitter.emit(ChainEvent.incompleteBlockInput, {
515
- blockInput,
516
- peer: peerIdStr,
517
- source: BlockInputSource.gossip,
518
- });
519
- });
520
- }
521
- },
522
-
523
- [GossipType.data_column_sidecar]: async ({
524
- gossipData,
525
- topic,
526
- peerIdStr,
527
- seenTimestampSec,
528
- }: GossipHandlerParamGeneric<GossipType.data_column_sidecar>) => {
529
- const {serializedData} = gossipData;
530
- const dataColumnSidecar = sszDeserialize(topic, serializedData);
531
- const dataColumnSlot = dataColumnSidecar.signedBlockHeader.message.slot;
532
- const index = dataColumnSidecar.index;
533
-
534
- if (config.getForkSeq(dataColumnSlot) < ForkSeq.fulu) {
535
- throw new GossipActionError(GossipAction.REJECT, {code: "PRE_FULU_BLOCK"});
536
- }
537
- const delaySec = chain.clock.secFromSlot(dataColumnSlot, seenTimestampSec);
538
- const blockInput = await validateBeaconDataColumn(
539
- dataColumnSidecar,
540
- serializedData,
541
- topic.subnet,
542
- peerIdStr,
543
- seenTimestampSec
544
- );
545
- const blockInputMeta = blockInput.getLogMeta();
546
- const {receivedColumns} = blockInputMeta;
547
- // it's not helpful to track every single column received
548
- // instead of that, track 1st, 8th, 16th 32th, 64th, and 128th column
549
- switch (receivedColumns) {
550
- case 1:
551
- case config.SAMPLES_PER_SLOT:
552
- case 2 * config.SAMPLES_PER_SLOT:
553
- case NUMBER_OF_COLUMNS / 4:
554
- case NUMBER_OF_COLUMNS / 2:
555
- case NUMBER_OF_COLUMNS:
556
- metrics?.dataColumns.elapsedTimeTillReceived.observe({receivedOrder: receivedColumns}, delaySec);
557
- break;
558
- }
559
- if (!blockInput.hasBlockAndAllData()) {
560
- const cutoffTimeMs = getCutoffTimeMs(chain, dataColumnSlot, BLOCK_AVAILABILITY_CUTOFF_MS);
561
- chain.logger.debug("Received gossip data column, waiting for full data availability", {
562
- msToWait: cutoffTimeMs,
563
- dataColumnIndex: index,
564
- ...blockInputMeta,
565
- });
566
- // do not await here to not delay gossip validation
567
- blockInput.waitForBlockAndAllData(cutoffTimeMs).catch((_e) => {
568
- chain.logger.debug(
569
- "Waited for data after receiving gossip column. Cut-off reached so attempting to fetch remainder of BlockInput",
570
- {
571
- dataColumnIndex: index,
572
- ...blockInputMeta,
573
- }
574
- );
575
- chain.emitter.emit(ChainEvent.incompleteBlockInput, {
576
- blockInput,
577
- peer: peerIdStr,
578
- source: BlockInputSource.gossip,
579
- });
580
- });
581
- // immediately attempt fetch of data columns from execution engine
582
- chain.getBlobsTracker.triggerGetBlobs(blockInput);
583
- // if we've received at least half of the columns, trigger reconstruction of the rest
584
- if (blockInput.columnCount >= NUMBER_OF_COLUMNS / 2) {
585
- chain.columnReconstructionTracker.triggerColumnReconstruction(blockInput);
586
- }
587
- }
588
- },
589
-
590
- [GossipType.beacon_aggregate_and_proof]: async ({
591
- gossipData,
592
- topic,
593
- seenTimestampSec,
594
- }: GossipHandlerParamGeneric<GossipType.beacon_aggregate_and_proof>) => {
595
- const {serializedData} = gossipData;
596
- let validationResult: AggregateAndProofValidationResult;
597
- const signedAggregateAndProof = sszDeserialize(topic, serializedData);
598
- const {fork} = topic.boundary;
599
-
600
- try {
601
- validationResult = await validateGossipAggregateAndProof(fork, chain, signedAggregateAndProof, serializedData);
602
- } catch (e) {
603
- if (e instanceof AttestationError && e.action === GossipAction.REJECT) {
604
- chain.persistInvalidSszValue(
605
- sszTypesFor(fork).SignedAggregateAndProof,
606
- signedAggregateAndProof,
607
- "gossip_reject"
608
- );
609
- }
610
- throw e;
611
- }
612
-
613
- // Handler
614
- const {indexedAttestation, committeeValidatorIndices, attDataRootHex} = validationResult;
615
- chain.validatorMonitor?.registerGossipAggregatedAttestation(
616
- seenTimestampSec,
617
- signedAggregateAndProof,
618
- indexedAttestation
619
- );
620
- const aggregatedAttestation = signedAggregateAndProof.message.aggregate;
621
-
622
- const insertOutcome = chain.aggregatedAttestationPool.add(
623
- aggregatedAttestation,
624
- attDataRootHex,
625
- indexedAttestation.attestingIndices.length,
626
- committeeValidatorIndices
627
- );
628
- metrics?.opPool.aggregatedAttestationPool.gossipInsertOutcome.inc({insertOutcome});
629
-
630
- if (!options.dontSendGossipAttestationsToForkchoice) {
631
- try {
632
- chain.forkChoice.onAttestation(indexedAttestation, attDataRootHex);
633
- } catch (e) {
634
- logger.debug(
635
- "Error adding gossip aggregated attestation to forkchoice",
636
- {slot: aggregatedAttestation.data.slot},
637
- e as Error
638
- );
639
- }
640
- }
641
-
642
- chain.emitter.emit(routes.events.EventType.attestation, signedAggregateAndProof.message.aggregate);
643
- },
644
-
645
- [GossipType.attester_slashing]: async ({
646
- gossipData,
647
- topic,
648
- }: GossipHandlerParamGeneric<GossipType.attester_slashing>) => {
649
- const {serializedData} = gossipData;
650
- const {fork} = topic.boundary;
651
- const attesterSlashing = sszDeserialize(topic, serializedData);
652
- await validateGossipAttesterSlashing(chain, attesterSlashing);
653
-
654
- // Handler
655
-
656
- try {
657
- chain.opPool.insertAttesterSlashing(fork, attesterSlashing);
658
- chain.forkChoice.onAttesterSlashing(attesterSlashing);
659
- } catch (e) {
660
- logger.error("Error adding attesterSlashing to pool", {}, e as Error);
661
- }
662
-
663
- chain.emitter.emit(routes.events.EventType.attesterSlashing, attesterSlashing);
664
- },
665
-
666
- [GossipType.proposer_slashing]: async ({
667
- gossipData,
668
- topic,
669
- }: GossipHandlerParamGeneric<GossipType.proposer_slashing>) => {
670
- const {serializedData} = gossipData;
671
- const proposerSlashing = sszDeserialize(topic, serializedData);
672
- await validateGossipProposerSlashing(chain, proposerSlashing);
673
-
674
- // Handler
675
-
676
- try {
677
- chain.opPool.insertProposerSlashing(proposerSlashing);
678
- } catch (e) {
679
- logger.error("Error adding attesterSlashing to pool", {}, e as Error);
680
- }
681
-
682
- chain.emitter.emit(routes.events.EventType.proposerSlashing, proposerSlashing);
683
- },
684
-
685
- [GossipType.voluntary_exit]: async ({gossipData, topic}: GossipHandlerParamGeneric<GossipType.voluntary_exit>) => {
686
- const {serializedData} = gossipData;
687
- const voluntaryExit = sszDeserialize(topic, serializedData);
688
- await validateGossipVoluntaryExit(chain, voluntaryExit);
689
-
690
- // Handler
691
-
692
- try {
693
- chain.opPool.insertVoluntaryExit(voluntaryExit);
694
- } catch (e) {
695
- logger.error("Error adding voluntaryExit to pool", {}, e as Error);
696
- }
697
-
698
- chain.emitter.emit(routes.events.EventType.voluntaryExit, voluntaryExit);
699
- },
700
-
701
- [GossipType.sync_committee_contribution_and_proof]: async ({
702
- gossipData,
703
- topic,
704
- }: GossipHandlerParamGeneric<GossipType.sync_committee_contribution_and_proof>) => {
705
- const {serializedData} = gossipData;
706
- const contributionAndProof = sszDeserialize(topic, serializedData);
707
- const {syncCommitteeParticipantIndices} = await validateSyncCommitteeGossipContributionAndProof(
708
- chain,
709
- contributionAndProof
710
- ).catch((e) => {
711
- if (e instanceof SyncCommitteeError && e.action === GossipAction.REJECT) {
712
- chain.persistInvalidSszValue(ssz.altair.SignedContributionAndProof, contributionAndProof, "gossip_reject");
713
- }
714
- throw e;
715
- });
716
-
717
- // Handler
718
- chain.validatorMonitor?.registerGossipSyncContributionAndProof(
719
- contributionAndProof.message,
720
- syncCommitteeParticipantIndices
721
- );
722
- try {
723
- const insertOutcome = chain.syncContributionAndProofPool.add(
724
- contributionAndProof.message,
725
- syncCommitteeParticipantIndices.length
726
- );
727
- metrics?.opPool.syncContributionAndProofPool.gossipInsertOutcome.inc({insertOutcome});
728
- } catch (e) {
729
- logger.error("Error adding to contributionAndProof pool", {}, e as Error);
730
- }
731
-
732
- chain.emitter.emit(routes.events.EventType.contributionAndProof, contributionAndProof);
733
- },
734
-
735
- [GossipType.sync_committee]: async ({gossipData, topic}: GossipHandlerParamGeneric<GossipType.sync_committee>) => {
736
- const {serializedData} = gossipData;
737
- const syncCommittee = sszDeserialize(topic, serializedData);
738
- const {subnet} = topic;
739
- let indexInSubcommittee = 0;
740
- try {
741
- indexInSubcommittee = (await validateGossipSyncCommittee(chain, syncCommittee, subnet)).indexInSubcommittee;
742
- } catch (e) {
743
- if (e instanceof SyncCommitteeError && e.action === GossipAction.REJECT) {
744
- chain.persistInvalidSszValue(ssz.altair.SyncCommitteeMessage, syncCommittee, "gossip_reject");
745
- }
746
- throw e;
747
- }
748
-
749
- // Handler
750
-
751
- try {
752
- const insertOutcome = chain.syncCommitteeMessagePool.add(subnet, syncCommittee, indexInSubcommittee);
753
- metrics?.opPool.syncCommitteeMessagePoolInsertOutcome.inc({insertOutcome});
754
- } catch (e) {
755
- logger.debug("Error adding to syncCommittee pool", {subnet}, e as Error);
756
- }
757
- },
758
-
759
- [GossipType.light_client_finality_update]: async ({
760
- gossipData,
761
- topic,
762
- }: GossipHandlerParamGeneric<GossipType.light_client_finality_update>) => {
763
- const {serializedData} = gossipData;
764
- const lightClientFinalityUpdate = sszDeserialize(topic, serializedData);
765
- validateLightClientFinalityUpdate(config, chain, lightClientFinalityUpdate);
766
- },
767
-
768
- [GossipType.light_client_optimistic_update]: async ({
769
- gossipData,
770
- topic,
771
- }: GossipHandlerParamGeneric<GossipType.light_client_optimistic_update>) => {
772
- const {serializedData} = gossipData;
773
- const lightClientOptimisticUpdate = sszDeserialize(topic, serializedData);
774
- validateLightClientOptimisticUpdate(config, chain, lightClientOptimisticUpdate);
775
- },
776
-
777
- // blsToExecutionChange is to be generated and validated against GENESIS_FORK_VERSION
778
- [GossipType.bls_to_execution_change]: async ({
779
- gossipData,
780
- topic,
781
- }: GossipHandlerParamGeneric<GossipType.bls_to_execution_change>) => {
782
- const {serializedData} = gossipData;
783
- const blsToExecutionChange = sszDeserialize(topic, serializedData);
784
- await validateGossipBlsToExecutionChange(chain, blsToExecutionChange);
785
-
786
- // Handler
787
- try {
788
- chain.opPool.insertBlsToExecutionChange(blsToExecutionChange);
789
- } catch (e) {
790
- logger.error("Error adding blsToExecutionChange to pool", {}, e as Error);
791
- }
792
-
793
- chain.emitter.emit(routes.events.EventType.blsToExecutionChange, blsToExecutionChange);
794
- },
795
- };
796
- }
797
-
798
- /**
799
- * For now, only beacon_attestation topic is batched.
800
- */
801
- function getBatchHandlers(modules: ValidatorFnsModules, options: GossipHandlerOpts): BatchGossipHandlers {
802
- const {chain, metrics, logger, aggregatorTracker} = modules;
803
- return {
804
- [GossipType.beacon_attestation]: async (
805
- gossipHandlerParams: GossipHandlerParamGeneric<GossipType.beacon_attestation>[]
806
- ): Promise<(null | AttestationError)[]> => {
807
- const results: (null | AttestationError)[] = [];
808
- const attestationCount = gossipHandlerParams.length;
809
- if (attestationCount === 0) {
810
- return results;
811
- }
812
- // all attestations should have same attestation data as filtered by network processor
813
- const {fork} = gossipHandlerParams[0].topic.boundary;
814
- const validationParams = gossipHandlerParams.map((param) => ({
815
- attestation: null,
816
- serializedData: param.gossipData.serializedData,
817
- attSlot: param.gossipData.msgSlot,
818
- attDataBase64: param.gossipData.indexed,
819
- subnet: param.topic.subnet,
820
- })) as GossipAttestation[];
821
- const {results: validationResults, batchableBls} = await validateGossipAttestationsSameAttData(
822
- fork,
823
- chain,
824
- validationParams
825
- );
826
- for (const [i, validationResult] of validationResults.entries()) {
827
- if (validationResult.err) {
828
- results.push(validationResult.err as AttestationError);
829
- continue;
830
- }
831
- // null means no error
832
- results.push(null);
833
-
834
- // Handler
835
- const {
836
- indexedAttestation,
837
- attDataRootHex,
838
- attestation,
839
- committeeIndex,
840
- validatorCommitteeIndex,
841
- committeeSize,
842
- } = validationResult.result;
843
- chain.validatorMonitor?.registerGossipUnaggregatedAttestation(
844
- gossipHandlerParams[i].seenTimestampSec,
845
- indexedAttestation
846
- );
847
-
848
- const {subnet} = validationResult.result;
849
- try {
850
- // Node may be subscribe to extra subnets (long-lived random subnets). For those, validate the messages
851
- // but don't add to attestation pool, to save CPU and RAM
852
- if (aggregatorTracker.shouldAggregate(subnet, indexedAttestation.data.slot)) {
853
- const insertOutcome = chain.attestationPool.add(
854
- committeeIndex,
855
- attestation,
856
- attDataRootHex,
857
- validatorCommitteeIndex,
858
- committeeSize
859
- );
860
- metrics?.opPool.attestationPool.gossipInsertOutcome.inc({insertOutcome});
861
- }
862
- } catch (e) {
863
- logger.error("Error adding unaggregated attestation to pool", {subnet}, e as Error);
864
- }
865
-
866
- if (!options.dontSendGossipAttestationsToForkchoice) {
867
- try {
868
- chain.forkChoice.onAttestation(indexedAttestation, attDataRootHex);
869
- } catch (e) {
870
- logger.debug("Error adding gossip unaggregated attestation to forkchoice", {subnet}, e as Error);
871
- }
872
- }
873
-
874
- if (isForkPostElectra(fork)) {
875
- chain.emitter.emit(
876
- routes.events.EventType.singleAttestation,
877
- attestation as SingleAttestation<ForkPostElectra>
878
- );
879
- } else {
880
- chain.emitter.emit(routes.events.EventType.attestation, attestation as SingleAttestation<ForkPreElectra>);
881
- chain.emitter.emit(
882
- routes.events.EventType.singleAttestation,
883
- toElectraSingleAttestation(
884
- attestation as SingleAttestation<ForkPreElectra>,
885
- indexedAttestation.attestingIndices[0]
886
- )
887
- );
888
- }
889
- }
890
-
891
- if (batchableBls) {
892
- metrics?.gossipAttestation.attestationBatchHistogram.observe(attestationCount);
893
- } else {
894
- metrics?.gossipAttestation.attestationNonBatchCount.inc(attestationCount);
895
- }
896
-
897
- return results;
898
- },
899
- };
900
- }
901
-
902
- /**
903
- * Retry a function if it throws error code UNKNOWN_OR_PREFINALIZED_BEACON_BLOCK_ROOT
904
- */
905
- export async function validateGossipFnRetryUnknownRoot<T>(
906
- fn: () => Promise<T>,
907
- network: INetwork,
908
- chain: IBeaconChain,
909
- slot: Slot,
910
- blockRoot: Root
911
- ): Promise<T> {
912
- let unknownBlockRootRetries = 0;
913
- while (true) {
914
- try {
915
- return await fn();
916
- } catch (e) {
917
- if (
918
- e instanceof AttestationError &&
919
- e.type.code === AttestationErrorCode.UNKNOWN_OR_PREFINALIZED_BEACON_BLOCK_ROOT
920
- ) {
921
- if (unknownBlockRootRetries === 0) {
922
- // Trigger unknown block root search here
923
- const rootHex = toRootHex(blockRoot);
924
- network.searchUnknownSlotRoot({slot, root: rootHex}, BlockInputSource.gossip);
925
- }
926
-
927
- if (unknownBlockRootRetries++ < MAX_UNKNOWN_BLOCK_ROOT_RETRIES) {
928
- const foundBlock = await chain.waitForBlock(slot, toRootHex(blockRoot));
929
- // Returns true if the block was found on time. In that case, try to get it from the fork-choice again.
930
- // Otherwise, throw the error below.
931
- if (foundBlock) {
932
- continue;
933
- }
934
- }
935
- }
936
-
937
- throw e;
938
- }
939
- }
940
- }
941
-
942
- function getCutoffTimeMs(
943
- chain: {config: ChainForkConfig; genesisTime: UintNum64; logger: Logger},
944
- blockSlot: Slot,
945
- cutoffMsFromSlotStart: number
946
- ): number {
947
- return Math.max(
948
- computeTimeAtSlot(chain.config, blockSlot, chain.genesisTime) * 1000 + cutoffMsFromSlotStart - Date.now(),
949
- 0
950
- );
951
- }