@lodestar/beacon-node 1.35.0-dev.91dadf81de → 1.35.0-dev.955e9f89ed

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 (1276) 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/impl/validator/index.js +3 -5
  12. package/lib/api/impl/validator/index.js.map +1 -1
  13. package/lib/api/rest/activeSockets.js +2 -3
  14. package/lib/api/rest/activeSockets.js.map +1 -1
  15. package/lib/api/rest/base.d.ts +1 -1
  16. package/lib/api/rest/base.js +2 -6
  17. package/lib/api/rest/base.js.map +1 -1
  18. package/lib/api/rest/index.js +0 -2
  19. package/lib/api/rest/index.js.map +1 -1
  20. package/lib/api/rest/swaggerUI.js +2 -4
  21. package/lib/api/rest/swaggerUI.js.map +1 -1
  22. package/lib/chain/ColumnReconstructionTracker.d.ts +2 -2
  23. package/lib/chain/ColumnReconstructionTracker.js +12 -34
  24. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  25. package/lib/chain/GetBlobsTracker.d.ts +2 -2
  26. package/lib/chain/GetBlobsTracker.js +8 -28
  27. package/lib/chain/GetBlobsTracker.js.map +1 -1
  28. package/lib/chain/archiveStore/archiveStore.js +38 -49
  29. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  30. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +0 -3
  31. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  32. package/lib/chain/archiveStore/historicalState/worker.js +1 -1
  33. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  34. package/lib/chain/archiveStore/index.d.ts +1 -1
  35. package/lib/chain/archiveStore/index.js +1 -1
  36. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +0 -5
  37. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  38. package/lib/chain/balancesCache.js +3 -1
  39. package/lib/chain/balancesCache.js.map +1 -1
  40. package/lib/chain/beaconProposerCache.js +0 -1
  41. package/lib/chain/beaconProposerCache.js.map +1 -1
  42. package/lib/chain/blocks/blockInput/blockInput.js +8 -19
  43. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  44. package/lib/chain/blocks/blockInput/index.d.ts +1 -1
  45. package/lib/chain/blocks/blockInput/index.js +1 -1
  46. package/lib/chain/blocks/importBlock.js +3 -4
  47. package/lib/chain/blocks/importBlock.js.map +1 -1
  48. package/lib/chain/blocks/index.d.ts +1 -1
  49. package/lib/chain/blocks/index.js +0 -1
  50. package/lib/chain/blocks/index.js.map +1 -1
  51. package/lib/chain/blocks/verifyBlocksDataAvailability.js +1 -8
  52. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  53. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -1
  54. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  55. package/lib/chain/bls/multithread/index.js +163 -168
  56. package/lib/chain/bls/multithread/index.js.map +1 -1
  57. package/lib/chain/bls/singleThread.js +0 -1
  58. package/lib/chain/bls/singleThread.js.map +1 -1
  59. package/lib/chain/chain.d.ts +6 -6
  60. package/lib/chain/chain.js +20 -64
  61. package/lib/chain/chain.js.map +1 -1
  62. package/lib/chain/emitter.d.ts +2 -2
  63. package/lib/chain/emitter.js.map +1 -1
  64. package/lib/chain/errors/blockError.js +0 -1
  65. package/lib/chain/errors/blockError.js.map +1 -1
  66. package/lib/chain/errors/gossipValidation.js +0 -1
  67. package/lib/chain/errors/gossipValidation.js.map +1 -1
  68. package/lib/chain/errors/index.d.ts +2 -2
  69. package/lib/chain/errors/index.js +2 -2
  70. package/lib/chain/errors/index.js.map +1 -1
  71. package/lib/chain/forkChoice/index.js.map +1 -1
  72. package/lib/chain/genesis/genesis.js +5 -16
  73. package/lib/chain/genesis/genesis.js.map +1 -1
  74. package/lib/chain/index.d.ts +2 -2
  75. package/lib/chain/index.js +2 -2
  76. package/lib/chain/index.js.map +1 -1
  77. package/lib/chain/interface.d.ts +4 -4
  78. package/lib/chain/interface.js.map +1 -1
  79. package/lib/chain/lightClient/index.js +9 -16
  80. package/lib/chain/lightClient/index.js.map +1 -1
  81. package/lib/chain/lightClient/proofs.js.map +1 -1
  82. package/lib/chain/opPools/aggregatedAttestationPool.js +9 -14
  83. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  84. package/lib/chain/opPools/attestationPool.d.ts +3 -2
  85. package/lib/chain/opPools/attestationPool.js +7 -10
  86. package/lib/chain/opPools/attestationPool.js.map +1 -1
  87. package/lib/chain/opPools/index.d.ts +1 -1
  88. package/lib/chain/opPools/index.js +1 -1
  89. package/lib/chain/opPools/index.js.map +1 -1
  90. package/lib/chain/opPools/opPool.js +12 -10
  91. package/lib/chain/opPools/opPool.js.map +1 -1
  92. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts +2 -3
  93. package/lib/chain/opPools/syncCommitteeMessagePool.js +10 -14
  94. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  95. package/lib/chain/opPools/syncContributionAndProofPool.js +2 -5
  96. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  97. package/lib/chain/opPools/types.d.ts +1 -1
  98. package/lib/chain/opPools/types.js +1 -1
  99. package/lib/chain/opPools/types.js.map +1 -1
  100. package/lib/chain/options.js +1 -1
  101. package/lib/chain/options.js.map +1 -1
  102. package/lib/chain/prepareNextSlot.d.ts +3 -3
  103. package/lib/chain/prepareNextSlot.js +140 -145
  104. package/lib/chain/prepareNextSlot.js.map +1 -1
  105. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  106. package/lib/chain/produceBlock/produceBlockBody.js +10 -3
  107. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  108. package/lib/chain/regen/errors.js +0 -1
  109. package/lib/chain/regen/errors.js.map +1 -1
  110. package/lib/chain/regen/index.d.ts +1 -1
  111. package/lib/chain/regen/index.js +1 -1
  112. package/lib/chain/regen/index.js.map +1 -1
  113. package/lib/chain/regen/queued.js +28 -35
  114. package/lib/chain/regen/queued.js.map +1 -1
  115. package/lib/chain/regen/regen.js +0 -1
  116. package/lib/chain/regen/regen.js.map +1 -1
  117. package/lib/chain/reprocess.js +1 -3
  118. package/lib/chain/reprocess.js.map +1 -1
  119. package/lib/chain/seenCache/seenAggregateAndProof.js +6 -7
  120. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  121. package/lib/chain/seenCache/seenAttestationData.js +2 -5
  122. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  123. package/lib/chain/seenCache/seenAttesters.js +4 -2
  124. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  125. package/lib/chain/seenCache/seenBlockProposers.js +4 -2
  126. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  127. package/lib/chain/seenCache/seenCommittee.js +3 -1
  128. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  129. package/lib/chain/seenCache/seenCommitteeContribution.js +2 -3
  130. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  131. package/lib/chain/seenCache/seenGossipBlockInput.js +13 -20
  132. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  133. package/lib/chain/shufflingCache.js +2 -5
  134. package/lib/chain/shufflingCache.js.map +1 -1
  135. package/lib/chain/stateCache/blockStateCacheImpl.js +7 -13
  136. package/lib/chain/stateCache/blockStateCacheImpl.js.map +1 -1
  137. package/lib/chain/stateCache/datastore/db.js +0 -1
  138. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  139. package/lib/chain/stateCache/datastore/file.js +0 -1
  140. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  141. package/lib/chain/stateCache/datastore/index.d.ts +1 -1
  142. package/lib/chain/stateCache/datastore/index.js +1 -1
  143. package/lib/chain/stateCache/datastore/index.js.map +1 -1
  144. package/lib/chain/stateCache/fifoBlockStateCache.js +0 -10
  145. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  146. package/lib/chain/stateCache/inMemoryCheckpointsCache.js +4 -10
  147. package/lib/chain/stateCache/inMemoryCheckpointsCache.js.map +1 -1
  148. package/lib/chain/stateCache/index.d.ts +1 -1
  149. package/lib/chain/stateCache/index.js +1 -1
  150. package/lib/chain/stateCache/index.js.map +1 -1
  151. package/lib/chain/stateCache/mapMetrics.js +4 -4
  152. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  153. package/lib/chain/stateCache/persistentCheckpointsCache.js +14 -23
  154. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  155. package/lib/chain/validation/blobSidecar.js.map +1 -1
  156. package/lib/chain/validation/dataColumnSidecar.js +1 -1
  157. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  158. package/lib/chain/validation/index.d.ts +1 -1
  159. package/lib/chain/validation/index.js +1 -1
  160. package/lib/chain/validation/index.js.map +1 -1
  161. package/lib/chain/validation/lightClientFinalityUpdate.js +3 -4
  162. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  163. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts +4 -6
  164. package/lib/chain/validation/lightClientOptimisticUpdate.js +11 -11
  165. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  166. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +2 -1
  167. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  168. package/lib/chain/validatorMonitor.d.ts +3 -1
  169. package/lib/chain/validatorMonitor.js +15 -22
  170. package/lib/chain/validatorMonitor.js.map +1 -1
  171. package/lib/db/beacon.js +0 -24
  172. package/lib/db/beacon.js.map +1 -1
  173. package/lib/db/buckets.d.ts +4 -4
  174. package/lib/db/buckets.js +4 -4
  175. package/lib/db/buckets.js.map +1 -1
  176. package/lib/db/index.d.ts +1 -1
  177. package/lib/db/index.js.map +1 -1
  178. package/lib/db/repositories/blobSidecars.js +1 -1
  179. package/lib/db/repositories/blobSidecars.js.map +1 -1
  180. package/lib/db/repositories/blobSidecarsArchive.js +1 -1
  181. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  182. package/lib/db/repositories/blockArchive.js +3 -2
  183. package/lib/db/repositories/blockArchive.js.map +1 -1
  184. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  185. package/lib/db/repositories/dataColumnSidecar.js +2 -2
  186. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  187. package/lib/db/repositories/dataColumnSidecarArchive.js +2 -2
  188. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  189. package/lib/db/repositories/depositDataRoot.js +0 -1
  190. package/lib/db/repositories/depositDataRoot.js.map +1 -1
  191. package/lib/db/repositories/index.d.ts +10 -10
  192. package/lib/db/repositories/index.js +9 -9
  193. package/lib/db/repositories/index.js.map +1 -1
  194. package/lib/db/single/preGenesisState.js +0 -6
  195. package/lib/db/single/preGenesisState.js.map +1 -1
  196. package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -5
  197. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +1 -1
  198. package/lib/eth1/eth1DataCache.js +0 -2
  199. package/lib/eth1/eth1DataCache.js.map +1 -1
  200. package/lib/eth1/eth1DepositDataTracker.js +5 -18
  201. package/lib/eth1/eth1DepositDataTracker.js.map +1 -1
  202. package/lib/eth1/eth1DepositsCache.js +0 -3
  203. package/lib/eth1/eth1DepositsCache.js.map +1 -1
  204. package/lib/eth1/eth1MergeBlockTracker.js +4 -10
  205. package/lib/eth1/eth1MergeBlockTracker.js.map +1 -1
  206. package/lib/eth1/index.js +0 -2
  207. package/lib/eth1/index.js.map +1 -1
  208. package/lib/eth1/provider/eth1Provider.d.ts +2 -1
  209. package/lib/eth1/provider/eth1Provider.js +2 -6
  210. package/lib/eth1/provider/eth1Provider.js.map +1 -1
  211. package/lib/eth1/provider/jsonRpcHttpClient.d.ts +1 -1
  212. package/lib/eth1/provider/jsonRpcHttpClient.js +2 -16
  213. package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -1
  214. package/lib/eth1/provider/jwt.js.map +1 -1
  215. package/lib/eth1/utils/deposits.js.map +1 -1
  216. package/lib/execution/builder/cache.js +0 -6
  217. package/lib/execution/builder/cache.js.map +1 -1
  218. package/lib/execution/builder/http.js +8 -14
  219. package/lib/execution/builder/http.js.map +1 -1
  220. package/lib/execution/builder/index.js.map +1 -1
  221. package/lib/execution/engine/disabled.js +4 -2
  222. package/lib/execution/engine/disabled.js.map +1 -1
  223. package/lib/execution/engine/http.js +8 -23
  224. package/lib/execution/engine/http.js.map +1 -1
  225. package/lib/execution/engine/interface.js.map +1 -1
  226. package/lib/execution/engine/mock.d.ts +0 -1
  227. package/lib/execution/engine/mock.js +12 -16
  228. package/lib/execution/engine/mock.js.map +1 -1
  229. package/lib/execution/engine/payloadIdCache.js +3 -1
  230. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  231. package/lib/execution/engine/types.d.ts +1 -0
  232. package/lib/execution/engine/types.js.map +1 -1
  233. package/lib/execution/engine/utils.js +3 -3
  234. package/lib/execution/engine/utils.js.map +1 -1
  235. package/lib/execution/index.d.ts +2 -2
  236. package/lib/execution/index.js +2 -2
  237. package/lib/execution/index.js.map +1 -1
  238. package/lib/index.d.ts +6 -6
  239. package/lib/index.js +5 -5
  240. package/lib/index.js.map +1 -1
  241. package/lib/metrics/index.d.ts +1 -1
  242. package/lib/metrics/index.js +1 -1
  243. package/lib/metrics/index.js.map +1 -1
  244. package/lib/metrics/metrics/lodestar.d.ts +2 -7
  245. package/lib/metrics/metrics/lodestar.js +4 -13
  246. package/lib/metrics/metrics/lodestar.js.map +1 -1
  247. package/lib/metrics/metrics.d.ts +1 -1
  248. package/lib/metrics/metrics.js.map +1 -1
  249. package/lib/metrics/nodeJsMetrics.js +1 -1
  250. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  251. package/lib/metrics/server/http.d.ts +1 -1
  252. package/lib/metrics/utils/avgMinMax.d.ts +1 -1
  253. package/lib/metrics/utils/avgMinMax.js +6 -10
  254. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  255. package/lib/metrics/utils/gauge.d.ts +1 -1
  256. package/lib/metrics/utils/gauge.js +4 -1
  257. package/lib/metrics/utils/gauge.js.map +1 -1
  258. package/lib/metrics/utils/registryMetricCreator.d.ts +1 -1
  259. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  260. package/lib/monitoring/properties.js +0 -4
  261. package/lib/monitoring/properties.js.map +1 -1
  262. package/lib/monitoring/service.js +1 -13
  263. package/lib/monitoring/service.js.map +1 -1
  264. package/lib/monitoring/system.js +27 -25
  265. package/lib/monitoring/system.js.map +1 -1
  266. package/lib/network/core/networkCore.d.ts +2 -2
  267. package/lib/network/core/networkCore.js +50 -67
  268. package/lib/network/core/networkCore.js.map +1 -1
  269. package/lib/network/core/networkCoreWorker.js +1 -1
  270. package/lib/network/core/networkCoreWorker.js.map +1 -1
  271. package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -2
  272. package/lib/network/core/networkCoreWorkerHandler.js +5 -14
  273. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  274. package/lib/network/discv5/index.d.ts +2 -2
  275. package/lib/network/discv5/index.js +3 -9
  276. package/lib/network/discv5/index.js.map +1 -1
  277. package/lib/network/discv5/worker.js +3 -3
  278. package/lib/network/discv5/worker.js.map +1 -1
  279. package/lib/network/gossip/encoding.d.ts +1 -1
  280. package/lib/network/gossip/encoding.js +2 -4
  281. package/lib/network/gossip/encoding.js.map +1 -1
  282. package/lib/network/gossip/errors.js +0 -1
  283. package/lib/network/gossip/errors.js.map +1 -1
  284. package/lib/network/gossip/gossipsub.d.ts +1 -2
  285. package/lib/network/gossip/gossipsub.js +17 -43
  286. package/lib/network/gossip/gossipsub.js.map +1 -1
  287. package/lib/network/gossip/index.d.ts +2 -2
  288. package/lib/network/gossip/index.js +2 -2
  289. package/lib/network/gossip/index.js.map +1 -1
  290. package/lib/network/gossip/interface.d.ts +2 -2
  291. package/lib/network/gossip/metrics.d.ts +7 -15
  292. package/lib/network/gossip/metrics.js +6 -16
  293. package/lib/network/gossip/metrics.js.map +1 -1
  294. package/lib/network/gossip/topic.d.ts +105 -125
  295. package/lib/network/gossip/topic.js +1 -2
  296. package/lib/network/gossip/topic.js.map +1 -1
  297. package/lib/network/index.d.ts +3 -3
  298. package/lib/network/index.js +3 -3
  299. package/lib/network/index.js.map +1 -1
  300. package/lib/network/interface.d.ts +1 -1
  301. package/lib/network/libp2p/index.js +3 -11
  302. package/lib/network/libp2p/index.js.map +1 -1
  303. package/lib/network/metadata.js +1 -6
  304. package/lib/network/metadata.js.map +1 -1
  305. package/lib/network/network.d.ts +2 -2
  306. package/lib/network/network.js +77 -89
  307. package/lib/network/network.js.map +1 -1
  308. package/lib/network/peers/datastore.d.ts +2 -2
  309. package/lib/network/peers/datastore.js +4 -10
  310. package/lib/network/peers/datastore.js.map +1 -1
  311. package/lib/network/peers/discover.js +66 -75
  312. package/lib/network/peers/discover.js.map +1 -1
  313. package/lib/network/peers/peerManager.js +125 -145
  314. package/lib/network/peers/peerManager.js.map +1 -1
  315. package/lib/network/peers/peersData.js +3 -1
  316. package/lib/network/peers/peersData.js.map +1 -1
  317. package/lib/network/peers/score/index.d.ts +1 -1
  318. package/lib/network/peers/score/index.js +1 -1
  319. package/lib/network/peers/score/index.js.map +1 -1
  320. package/lib/network/peers/score/score.js +0 -6
  321. package/lib/network/peers/score/score.js.map +1 -1
  322. package/lib/network/peers/score/store.js +0 -3
  323. package/lib/network/peers/score/store.js.map +1 -1
  324. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  325. package/lib/network/peers/utils/subnetMap.js +4 -2
  326. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  327. package/lib/network/processor/aggregatorTracker.js +3 -1
  328. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  329. package/lib/network/processor/gossipHandlers.js +7 -3
  330. package/lib/network/processor/gossipHandlers.js.map +1 -1
  331. package/lib/network/processor/gossipQueues/indexed.js +9 -11
  332. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  333. package/lib/network/processor/gossipQueues/linear.js +8 -9
  334. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  335. package/lib/network/processor/index.d.ts +1 -1
  336. package/lib/network/processor/index.js +8 -18
  337. package/lib/network/processor/index.js.map +1 -1
  338. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +1 -1
  339. package/lib/network/reqresp/ReqRespBeaconNode.js +2 -11
  340. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  341. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  342. package/lib/network/reqresp/index.d.ts +1 -1
  343. package/lib/network/reqresp/index.js +1 -1
  344. package/lib/network/reqresp/index.js.map +1 -1
  345. package/lib/network/reqresp/rateLimit.js +2 -2
  346. package/lib/network/reqresp/rateLimit.js.map +1 -1
  347. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  348. package/lib/network/statusCache.js +0 -1
  349. package/lib/network/statusCache.js.map +1 -1
  350. package/lib/network/subnets/attnetsService.js +65 -73
  351. package/lib/network/subnets/attnetsService.js.map +1 -1
  352. package/lib/network/subnets/interface.js +1 -1
  353. package/lib/network/subnets/interface.js.map +1 -1
  354. package/lib/network/subnets/syncnetsService.js +22 -29
  355. package/lib/network/subnets/syncnetsService.js.map +1 -1
  356. package/lib/network/subnets/util.js +2 -1
  357. package/lib/network/subnets/util.js.map +1 -1
  358. package/lib/node/nodejs.d.ts +1 -1
  359. package/lib/node/nodejs.js +0 -15
  360. package/lib/node/nodejs.js.map +1 -1
  361. package/lib/node/notifier.js +2 -1
  362. package/lib/node/notifier.js.map +1 -1
  363. package/lib/node/options.js.map +1 -1
  364. package/lib/node/utils/interop/state.js +2 -1
  365. package/lib/node/utils/interop/state.js.map +1 -1
  366. package/lib/sync/backfill/backfill.d.ts +1 -1
  367. package/lib/sync/backfill/backfill.js +16 -58
  368. package/lib/sync/backfill/backfill.js.map +1 -1
  369. package/lib/sync/range/batch.d.ts +2 -2
  370. package/lib/sync/range/batch.js +11 -20
  371. package/lib/sync/range/batch.js.map +1 -1
  372. package/lib/sync/range/chain.d.ts +1 -1
  373. package/lib/sync/range/chain.js +8 -33
  374. package/lib/sync/range/chain.js.map +1 -1
  375. package/lib/sync/range/range.d.ts +1 -1
  376. package/lib/sync/range/range.js +70 -76
  377. package/lib/sync/range/range.js.map +1 -1
  378. package/lib/sync/range/utils/peerBalancer.js +1 -5
  379. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  380. package/lib/sync/sync.d.ts +2 -1
  381. package/lib/sync/sync.js +85 -93
  382. package/lib/sync/sync.js.map +1 -1
  383. package/lib/sync/types.d.ts +1 -0
  384. package/lib/sync/types.js.map +1 -1
  385. package/lib/sync/unknownBlock.d.ts +1 -0
  386. package/lib/sync/unknownBlock.js +172 -181
  387. package/lib/sync/unknownBlock.js.map +1 -1
  388. package/lib/sync/utils/downloadByRange.d.ts +1 -1
  389. package/lib/sync/utils/downloadByRoot.d.ts +2 -4
  390. package/lib/sync/utils/downloadByRoot.js +9 -36
  391. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  392. package/lib/util/array.js +3 -7
  393. package/lib/util/array.js.map +1 -1
  394. package/lib/util/asyncIterableToEvents.js +3 -6
  395. package/lib/util/asyncIterableToEvents.js.map +1 -1
  396. package/lib/util/binarySearch.js +0 -2
  397. package/lib/util/binarySearch.js.map +1 -1
  398. package/lib/util/blobs.js +3 -5
  399. package/lib/util/blobs.js.map +1 -1
  400. package/lib/util/bufferPool.js +2 -7
  401. package/lib/util/bufferPool.js.map +1 -1
  402. package/lib/util/clock.d.ts +1 -6
  403. package/lib/util/clock.js +18 -26
  404. package/lib/util/clock.js.map +1 -1
  405. package/lib/util/dataColumns.d.ts +15 -9
  406. package/lib/util/dataColumns.js +29 -50
  407. package/lib/util/dataColumns.js.map +1 -1
  408. package/lib/util/execution.d.ts +3 -12
  409. package/lib/util/execution.js +13 -47
  410. package/lib/util/execution.js.map +1 -1
  411. package/lib/util/itTrigger.js +4 -4
  412. package/lib/util/itTrigger.js.map +1 -1
  413. package/lib/util/map.js +0 -2
  414. package/lib/util/map.js.map +1 -1
  415. package/lib/util/queue/index.d.ts +1 -1
  416. package/lib/util/queue/index.js +1 -1
  417. package/lib/util/queue/index.js.map +1 -1
  418. package/lib/util/queue/itemQueue.js +49 -52
  419. package/lib/util/queue/itemQueue.js.map +1 -1
  420. package/lib/util/serializedCache.js +3 -1
  421. package/lib/util/serializedCache.js.map +1 -1
  422. package/lib/util/set.js +0 -2
  423. package/lib/util/set.js.map +1 -1
  424. package/lib/util/timeSeries.js +1 -3
  425. package/lib/util/timeSeries.js.map +1 -1
  426. package/lib/util/types.d.ts +1 -1
  427. package/package.json +23 -39
  428. package/lib/api/impl/api.d.ts.map +0 -1
  429. package/lib/api/impl/beacon/blocks/index.d.ts.map +0 -1
  430. package/lib/api/impl/beacon/blocks/utils.d.ts.map +0 -1
  431. package/lib/api/impl/beacon/index.d.ts.map +0 -1
  432. package/lib/api/impl/beacon/pool/index.d.ts.map +0 -1
  433. package/lib/api/impl/beacon/rewards/index.d.ts.map +0 -1
  434. package/lib/api/impl/beacon/state/index.d.ts.map +0 -1
  435. package/lib/api/impl/beacon/state/utils.d.ts.map +0 -1
  436. package/lib/api/impl/config/constants.d.ts.map +0 -1
  437. package/lib/api/impl/config/index.d.ts.map +0 -1
  438. package/lib/api/impl/debug/index.d.ts.map +0 -1
  439. package/lib/api/impl/errors.d.ts.map +0 -1
  440. package/lib/api/impl/events/index.d.ts.map +0 -1
  441. package/lib/api/impl/index.d.ts.map +0 -1
  442. package/lib/api/impl/lightclient/index.d.ts.map +0 -1
  443. package/lib/api/impl/lodestar/index.d.ts.map +0 -1
  444. package/lib/api/impl/node/index.d.ts.map +0 -1
  445. package/lib/api/impl/node/utils.d.ts.map +0 -1
  446. package/lib/api/impl/proof/index.d.ts.map +0 -1
  447. package/lib/api/impl/types.d.ts.map +0 -1
  448. package/lib/api/impl/utils.d.ts.map +0 -1
  449. package/lib/api/impl/validator/index.d.ts.map +0 -1
  450. package/lib/api/impl/validator/utils.d.ts.map +0 -1
  451. package/lib/api/index.d.ts.map +0 -1
  452. package/lib/api/options.d.ts.map +0 -1
  453. package/lib/api/rest/activeSockets.d.ts.map +0 -1
  454. package/lib/api/rest/base.d.ts.map +0 -1
  455. package/lib/api/rest/index.d.ts.map +0 -1
  456. package/lib/api/rest/swaggerUI.d.ts.map +0 -1
  457. package/lib/bun-wrappers/prometheus-gc-stats.d.ts +0 -2
  458. package/lib/bun-wrappers/prometheus-gc-stats.d.ts.map +0 -1
  459. package/lib/bun-wrappers/prometheus-gc-stats.js +0 -8
  460. package/lib/bun-wrappers/prometheus-gc-stats.js.map +0 -1
  461. package/lib/chain/ColumnReconstructionTracker.d.ts.map +0 -1
  462. package/lib/chain/GetBlobsTracker.d.ts.map +0 -1
  463. package/lib/chain/archiveStore/archiveStore.d.ts.map +0 -1
  464. package/lib/chain/archiveStore/constants.d.ts.map +0 -1
  465. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +0 -1
  466. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +0 -1
  467. package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +0 -1
  468. package/lib/chain/archiveStore/historicalState/types.d.ts.map +0 -1
  469. package/lib/chain/archiveStore/historicalState/worker.d.ts.map +0 -1
  470. package/lib/chain/archiveStore/index.d.ts.map +0 -1
  471. package/lib/chain/archiveStore/interface.d.ts.map +0 -1
  472. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +0 -1
  473. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +0 -1
  474. package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +0 -1
  475. package/lib/chain/archiveStore/utils/updateBackfillRange.d.ts.map +0 -1
  476. package/lib/chain/balancesCache.d.ts.map +0 -1
  477. package/lib/chain/beaconProposerCache.d.ts.map +0 -1
  478. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +0 -1
  479. package/lib/chain/blocks/blockInput/errors.d.ts.map +0 -1
  480. package/lib/chain/blocks/blockInput/index.d.ts.map +0 -1
  481. package/lib/chain/blocks/blockInput/types.d.ts.map +0 -1
  482. package/lib/chain/blocks/blockInput/utils.d.ts.map +0 -1
  483. package/lib/chain/blocks/importBlock.d.ts.map +0 -1
  484. package/lib/chain/blocks/index.d.ts.map +0 -1
  485. package/lib/chain/blocks/types.d.ts.map +0 -1
  486. package/lib/chain/blocks/utils/blowfishBanner.d.ts.map +0 -1
  487. package/lib/chain/blocks/utils/chainSegment.d.ts.map +0 -1
  488. package/lib/chain/blocks/utils/checkpoint.d.ts.map +0 -1
  489. package/lib/chain/blocks/utils/giraffeBanner.d.ts.map +0 -1
  490. package/lib/chain/blocks/utils/ownBanner.d.ts.map +0 -1
  491. package/lib/chain/blocks/utils/pandaMergeTransitionBanner.d.ts.map +0 -1
  492. package/lib/chain/blocks/utils/zebraBanner.d.ts.map +0 -1
  493. package/lib/chain/blocks/verifyBlock.d.ts.map +0 -1
  494. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +0 -1
  495. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +0 -1
  496. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +0 -1
  497. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +0 -1
  498. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +0 -1
  499. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +0 -1
  500. package/lib/chain/bls/index.d.ts.map +0 -1
  501. package/lib/chain/bls/interface.d.ts.map +0 -1
  502. package/lib/chain/bls/maybeBatch.d.ts.map +0 -1
  503. package/lib/chain/bls/multithread/index.d.ts.map +0 -1
  504. package/lib/chain/bls/multithread/jobItem.d.ts.map +0 -1
  505. package/lib/chain/bls/multithread/poolSize.d.ts.map +0 -1
  506. package/lib/chain/bls/multithread/types.d.ts.map +0 -1
  507. package/lib/chain/bls/multithread/utils.d.ts.map +0 -1
  508. package/lib/chain/bls/multithread/worker.d.ts.map +0 -1
  509. package/lib/chain/bls/singleThread.d.ts.map +0 -1
  510. package/lib/chain/bls/utils.d.ts.map +0 -1
  511. package/lib/chain/chain.d.ts.map +0 -1
  512. package/lib/chain/emitter.d.ts.map +0 -1
  513. package/lib/chain/errors/attestationError.d.ts.map +0 -1
  514. package/lib/chain/errors/attesterSlashingError.d.ts.map +0 -1
  515. package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
  516. package/lib/chain/errors/blockError.d.ts.map +0 -1
  517. package/lib/chain/errors/blsToExecutionChangeError.d.ts.map +0 -1
  518. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +0 -1
  519. package/lib/chain/errors/gossipValidation.d.ts.map +0 -1
  520. package/lib/chain/errors/index.d.ts.map +0 -1
  521. package/lib/chain/errors/lightClientError.d.ts.map +0 -1
  522. package/lib/chain/errors/proposerSlashingError.d.ts.map +0 -1
  523. package/lib/chain/errors/syncCommitteeError.d.ts.map +0 -1
  524. package/lib/chain/errors/voluntaryExitError.d.ts.map +0 -1
  525. package/lib/chain/forkChoice/index.d.ts.map +0 -1
  526. package/lib/chain/genesis/genesis.d.ts.map +0 -1
  527. package/lib/chain/genesis/interface.d.ts.map +0 -1
  528. package/lib/chain/index.d.ts.map +0 -1
  529. package/lib/chain/initState.d.ts.map +0 -1
  530. package/lib/chain/interface.d.ts.map +0 -1
  531. package/lib/chain/lightClient/index.d.ts.map +0 -1
  532. package/lib/chain/lightClient/proofs.d.ts.map +0 -1
  533. package/lib/chain/lightClient/types.d.ts.map +0 -1
  534. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +0 -1
  535. package/lib/chain/opPools/attestationPool.d.ts.map +0 -1
  536. package/lib/chain/opPools/index.d.ts.map +0 -1
  537. package/lib/chain/opPools/opPool.d.ts.map +0 -1
  538. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +0 -1
  539. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +0 -1
  540. package/lib/chain/opPools/types.d.ts.map +0 -1
  541. package/lib/chain/opPools/utils.d.ts.map +0 -1
  542. package/lib/chain/options.d.ts.map +0 -1
  543. package/lib/chain/prepareNextSlot.d.ts.map +0 -1
  544. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +0 -1
  545. package/lib/chain/produceBlock/index.d.ts.map +0 -1
  546. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +0 -1
  547. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts.map +0 -1
  548. package/lib/chain/regen/errors.d.ts.map +0 -1
  549. package/lib/chain/regen/index.d.ts.map +0 -1
  550. package/lib/chain/regen/interface.d.ts.map +0 -1
  551. package/lib/chain/regen/queued.d.ts.map +0 -1
  552. package/lib/chain/regen/regen.d.ts.map +0 -1
  553. package/lib/chain/reprocess.d.ts.map +0 -1
  554. package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
  555. package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
  556. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
  557. package/lib/chain/seenCache/index.d.ts.map +0 -1
  558. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +0 -1
  559. package/lib/chain/seenCache/seenAttestationData.d.ts.map +0 -1
  560. package/lib/chain/seenCache/seenAttesters.d.ts.map +0 -1
  561. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +0 -1
  562. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +0 -1
  563. package/lib/chain/seenCache/seenCommittee.d.ts.map +0 -1
  564. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +0 -1
  565. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +0 -1
  566. package/lib/chain/serializeState.d.ts.map +0 -1
  567. package/lib/chain/shufflingCache.d.ts.map +0 -1
  568. package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +0 -1
  569. package/lib/chain/stateCache/datastore/db.d.ts.map +0 -1
  570. package/lib/chain/stateCache/datastore/file.d.ts.map +0 -1
  571. package/lib/chain/stateCache/datastore/index.d.ts.map +0 -1
  572. package/lib/chain/stateCache/datastore/types.d.ts.map +0 -1
  573. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +0 -1
  574. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +0 -1
  575. package/lib/chain/stateCache/index.d.ts.map +0 -1
  576. package/lib/chain/stateCache/mapMetrics.d.ts.map +0 -1
  577. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +0 -1
  578. package/lib/chain/stateCache/types.d.ts.map +0 -1
  579. package/lib/chain/validation/aggregateAndProof.d.ts.map +0 -1
  580. package/lib/chain/validation/attestation.d.ts.map +0 -1
  581. package/lib/chain/validation/attesterSlashing.d.ts.map +0 -1
  582. package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
  583. package/lib/chain/validation/block.d.ts.map +0 -1
  584. package/lib/chain/validation/blsToExecutionChange.d.ts.map +0 -1
  585. package/lib/chain/validation/dataColumnSidecar.d.ts.map +0 -1
  586. package/lib/chain/validation/index.d.ts.map +0 -1
  587. package/lib/chain/validation/lightClientFinalityUpdate.d.ts.map +0 -1
  588. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +0 -1
  589. package/lib/chain/validation/proposerSlashing.d.ts.map +0 -1
  590. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +0 -1
  591. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +0 -1
  592. package/lib/chain/validation/signatureSets/index.d.ts.map +0 -1
  593. package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +0 -1
  594. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +0 -1
  595. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +0 -1
  596. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +0 -1
  597. package/lib/chain/validation/syncCommittee.d.ts.map +0 -1
  598. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +0 -1
  599. package/lib/chain/validation/voluntaryExit.d.ts.map +0 -1
  600. package/lib/chain/validatorMonitor.d.ts.map +0 -1
  601. package/lib/constants/constants.d.ts.map +0 -1
  602. package/lib/constants/index.d.ts.map +0 -1
  603. package/lib/constants/network.d.ts.map +0 -1
  604. package/lib/db/beacon.d.ts.map +0 -1
  605. package/lib/db/buckets.d.ts.map +0 -1
  606. package/lib/db/index.d.ts.map +0 -1
  607. package/lib/db/interface.d.ts.map +0 -1
  608. package/lib/db/options.d.ts.map +0 -1
  609. package/lib/db/repositories/attesterSlashing.d.ts.map +0 -1
  610. package/lib/db/repositories/backfilledRanges.d.ts.map +0 -1
  611. package/lib/db/repositories/blobSidecars.d.ts.map +0 -1
  612. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +0 -1
  613. package/lib/db/repositories/block.d.ts.map +0 -1
  614. package/lib/db/repositories/blockArchive.d.ts.map +0 -1
  615. package/lib/db/repositories/blockArchiveIndex.d.ts.map +0 -1
  616. package/lib/db/repositories/blsToExecutionChange.d.ts.map +0 -1
  617. package/lib/db/repositories/checkpointState.d.ts.map +0 -1
  618. package/lib/db/repositories/dataColumnSidecar.d.ts.map +0 -1
  619. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +0 -1
  620. package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
  621. package/lib/db/repositories/depositEvent.d.ts.map +0 -1
  622. package/lib/db/repositories/eth1Data.d.ts.map +0 -1
  623. package/lib/db/repositories/index.d.ts.map +0 -1
  624. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +0 -1
  625. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +0 -1
  626. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +0 -1
  627. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +0 -1
  628. package/lib/db/repositories/proposerSlashing.d.ts.map +0 -1
  629. package/lib/db/repositories/stateArchive.d.ts.map +0 -1
  630. package/lib/db/repositories/stateArchiveIndex.d.ts.map +0 -1
  631. package/lib/db/repositories/voluntaryExit.d.ts.map +0 -1
  632. package/lib/db/single/index.d.ts.map +0 -1
  633. package/lib/db/single/preGenesisState.d.ts.map +0 -1
  634. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
  635. package/lib/eth1/errors.d.ts.map +0 -1
  636. package/lib/eth1/eth1DataCache.d.ts.map +0 -1
  637. package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
  638. package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
  639. package/lib/eth1/eth1MergeBlockTracker.d.ts.map +0 -1
  640. package/lib/eth1/index.d.ts.map +0 -1
  641. package/lib/eth1/interface.d.ts.map +0 -1
  642. package/lib/eth1/options.d.ts.map +0 -1
  643. package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
  644. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
  645. package/lib/eth1/provider/jwt.d.ts.map +0 -1
  646. package/lib/eth1/provider/utils.d.ts.map +0 -1
  647. package/lib/eth1/stream.d.ts.map +0 -1
  648. package/lib/eth1/utils/depositContract.d.ts.map +0 -1
  649. package/lib/eth1/utils/deposits.d.ts.map +0 -1
  650. package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
  651. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
  652. package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
  653. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
  654. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
  655. package/lib/execution/builder/cache.d.ts.map +0 -1
  656. package/lib/execution/builder/http.d.ts.map +0 -1
  657. package/lib/execution/builder/index.d.ts.map +0 -1
  658. package/lib/execution/builder/interface.d.ts.map +0 -1
  659. package/lib/execution/builder/utils.d.ts.map +0 -1
  660. package/lib/execution/engine/disabled.d.ts.map +0 -1
  661. package/lib/execution/engine/http.d.ts.map +0 -1
  662. package/lib/execution/engine/index.d.ts.map +0 -1
  663. package/lib/execution/engine/interface.d.ts.map +0 -1
  664. package/lib/execution/engine/mock.d.ts.map +0 -1
  665. package/lib/execution/engine/payloadIdCache.d.ts.map +0 -1
  666. package/lib/execution/engine/types.d.ts.map +0 -1
  667. package/lib/execution/engine/utils.d.ts.map +0 -1
  668. package/lib/execution/index.d.ts.map +0 -1
  669. package/lib/index.d.ts.map +0 -1
  670. package/lib/metrics/index.d.ts.map +0 -1
  671. package/lib/metrics/metrics/beacon.d.ts.map +0 -1
  672. package/lib/metrics/metrics/lodestar.d.ts.map +0 -1
  673. package/lib/metrics/metrics.d.ts.map +0 -1
  674. package/lib/metrics/nodeJsMetrics.d.ts.map +0 -1
  675. package/lib/metrics/options.d.ts.map +0 -1
  676. package/lib/metrics/server/http.d.ts.map +0 -1
  677. package/lib/metrics/server/index.d.ts.map +0 -1
  678. package/lib/metrics/utils/avgMinMax.d.ts.map +0 -1
  679. package/lib/metrics/utils/gauge.d.ts.map +0 -1
  680. package/lib/metrics/utils/registryMetricCreator.d.ts.map +0 -1
  681. package/lib/monitoring/clientStats.d.ts.map +0 -1
  682. package/lib/monitoring/index.d.ts.map +0 -1
  683. package/lib/monitoring/options.d.ts.map +0 -1
  684. package/lib/monitoring/properties.d.ts.map +0 -1
  685. package/lib/monitoring/service.d.ts.map +0 -1
  686. package/lib/monitoring/system.d.ts.map +0 -1
  687. package/lib/monitoring/types.d.ts.map +0 -1
  688. package/lib/network/core/events.d.ts.map +0 -1
  689. package/lib/network/core/index.d.ts.map +0 -1
  690. package/lib/network/core/metrics.d.ts.map +0 -1
  691. package/lib/network/core/networkCore.d.ts.map +0 -1
  692. package/lib/network/core/networkCoreWorker.d.ts.map +0 -1
  693. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +0 -1
  694. package/lib/network/core/types.d.ts.map +0 -1
  695. package/lib/network/discv5/index.d.ts.map +0 -1
  696. package/lib/network/discv5/types.d.ts.map +0 -1
  697. package/lib/network/discv5/utils.d.ts.map +0 -1
  698. package/lib/network/discv5/worker.d.ts.map +0 -1
  699. package/lib/network/events.d.ts.map +0 -1
  700. package/lib/network/forks.d.ts.map +0 -1
  701. package/lib/network/gossip/constants.d.ts.map +0 -1
  702. package/lib/network/gossip/encoding.d.ts.map +0 -1
  703. package/lib/network/gossip/errors.d.ts.map +0 -1
  704. package/lib/network/gossip/gossipsub.d.ts.map +0 -1
  705. package/lib/network/gossip/index.d.ts.map +0 -1
  706. package/lib/network/gossip/interface.d.ts.map +0 -1
  707. package/lib/network/gossip/metrics.d.ts.map +0 -1
  708. package/lib/network/gossip/scoringParameters.d.ts.map +0 -1
  709. package/lib/network/gossip/topic.d.ts.map +0 -1
  710. package/lib/network/index.d.ts.map +0 -1
  711. package/lib/network/interface.d.ts.map +0 -1
  712. package/lib/network/libp2p/error.d.ts.map +0 -1
  713. package/lib/network/libp2p/index.d.ts.map +0 -1
  714. package/lib/network/metadata.d.ts.map +0 -1
  715. package/lib/network/network.d.ts.map +0 -1
  716. package/lib/network/networkConfig.d.ts.map +0 -1
  717. package/lib/network/options.d.ts.map +0 -1
  718. package/lib/network/peers/client.d.ts.map +0 -1
  719. package/lib/network/peers/datastore.d.ts.map +0 -1
  720. package/lib/network/peers/discover.d.ts.map +0 -1
  721. package/lib/network/peers/index.d.ts.map +0 -1
  722. package/lib/network/peers/peerManager.d.ts.map +0 -1
  723. package/lib/network/peers/peersData.d.ts.map +0 -1
  724. package/lib/network/peers/score/constants.d.ts.map +0 -1
  725. package/lib/network/peers/score/index.d.ts.map +0 -1
  726. package/lib/network/peers/score/interface.d.ts.map +0 -1
  727. package/lib/network/peers/score/score.d.ts.map +0 -1
  728. package/lib/network/peers/score/store.d.ts.map +0 -1
  729. package/lib/network/peers/score/utils.d.ts.map +0 -1
  730. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +0 -1
  731. package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +0 -1
  732. package/lib/network/peers/utils/getConnectedPeerIds.d.ts.map +0 -1
  733. package/lib/network/peers/utils/index.d.ts.map +0 -1
  734. package/lib/network/peers/utils/prioritizePeers.d.ts.map +0 -1
  735. package/lib/network/peers/utils/subnetMap.d.ts.map +0 -1
  736. package/lib/network/processor/aggregatorTracker.d.ts.map +0 -1
  737. package/lib/network/processor/extractSlotRootFns.d.ts.map +0 -1
  738. package/lib/network/processor/gossipHandlers.d.ts.map +0 -1
  739. package/lib/network/processor/gossipQueues/index.d.ts.map +0 -1
  740. package/lib/network/processor/gossipQueues/indexed.d.ts.map +0 -1
  741. package/lib/network/processor/gossipQueues/linear.d.ts.map +0 -1
  742. package/lib/network/processor/gossipQueues/types.d.ts.map +0 -1
  743. package/lib/network/processor/gossipValidatorFn.d.ts.map +0 -1
  744. package/lib/network/processor/index.d.ts.map +0 -1
  745. package/lib/network/processor/types.d.ts.map +0 -1
  746. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +0 -1
  747. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +0 -1
  748. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +0 -1
  749. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
  750. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
  751. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +0 -1
  752. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +0 -1
  753. package/lib/network/reqresp/handlers/index.d.ts.map +0 -1
  754. package/lib/network/reqresp/handlers/lightClientBootstrap.d.ts.map +0 -1
  755. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.d.ts.map +0 -1
  756. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.d.ts.map +0 -1
  757. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +0 -1
  758. package/lib/network/reqresp/index.d.ts.map +0 -1
  759. package/lib/network/reqresp/interface.d.ts.map +0 -1
  760. package/lib/network/reqresp/protocols.d.ts.map +0 -1
  761. package/lib/network/reqresp/rateLimit.d.ts.map +0 -1
  762. package/lib/network/reqresp/score.d.ts.map +0 -1
  763. package/lib/network/reqresp/types.d.ts.map +0 -1
  764. package/lib/network/reqresp/utils/collect.d.ts.map +0 -1
  765. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts.map +0 -1
  766. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +0 -1
  767. package/lib/network/statusCache.d.ts.map +0 -1
  768. package/lib/network/subnets/attnetsService.d.ts.map +0 -1
  769. package/lib/network/subnets/index.d.ts.map +0 -1
  770. package/lib/network/subnets/interface.d.ts.map +0 -1
  771. package/lib/network/subnets/syncnetsService.d.ts.map +0 -1
  772. package/lib/network/subnets/util.d.ts.map +0 -1
  773. package/lib/network/util.d.ts.map +0 -1
  774. package/lib/node/index.d.ts.map +0 -1
  775. package/lib/node/nodejs.d.ts.map +0 -1
  776. package/lib/node/notifier.d.ts.map +0 -1
  777. package/lib/node/options.d.ts.map +0 -1
  778. package/lib/node/utils/interop/deposits.d.ts.map +0 -1
  779. package/lib/node/utils/interop/state.d.ts.map +0 -1
  780. package/lib/node/utils/lightclient.d.ts.map +0 -1
  781. package/lib/node/utils/state.d.ts.map +0 -1
  782. package/lib/sync/backfill/backfill.d.ts.map +0 -1
  783. package/lib/sync/backfill/errors.d.ts.map +0 -1
  784. package/lib/sync/backfill/index.d.ts.map +0 -1
  785. package/lib/sync/backfill/verify.d.ts.map +0 -1
  786. package/lib/sync/constants.d.ts.map +0 -1
  787. package/lib/sync/index.d.ts.map +0 -1
  788. package/lib/sync/interface.d.ts.map +0 -1
  789. package/lib/sync/options.d.ts.map +0 -1
  790. package/lib/sync/range/batch.d.ts.map +0 -1
  791. package/lib/sync/range/chain.d.ts.map +0 -1
  792. package/lib/sync/range/range.d.ts.map +0 -1
  793. package/lib/sync/range/utils/batches.d.ts.map +0 -1
  794. package/lib/sync/range/utils/chainTarget.d.ts.map +0 -1
  795. package/lib/sync/range/utils/hashBlocks.d.ts.map +0 -1
  796. package/lib/sync/range/utils/index.d.ts.map +0 -1
  797. package/lib/sync/range/utils/peerBalancer.d.ts.map +0 -1
  798. package/lib/sync/range/utils/updateChains.d.ts.map +0 -1
  799. package/lib/sync/sync.d.ts.map +0 -1
  800. package/lib/sync/types.d.ts.map +0 -1
  801. package/lib/sync/unknownBlock.d.ts.map +0 -1
  802. package/lib/sync/utils/downloadByRange.d.ts.map +0 -1
  803. package/lib/sync/utils/downloadByRoot.d.ts.map +0 -1
  804. package/lib/sync/utils/pendingBlocksTree.d.ts.map +0 -1
  805. package/lib/sync/utils/remoteSyncType.d.ts.map +0 -1
  806. package/lib/util/address.d.ts.map +0 -1
  807. package/lib/util/array.d.ts.map +0 -1
  808. package/lib/util/asyncIterableToEvents.d.ts.map +0 -1
  809. package/lib/util/binarySearch.d.ts.map +0 -1
  810. package/lib/util/bitArray.d.ts.map +0 -1
  811. package/lib/util/blobs.d.ts.map +0 -1
  812. package/lib/util/bufferPool.d.ts.map +0 -1
  813. package/lib/util/bytes.d.ts.map +0 -1
  814. package/lib/util/chunkify.d.ts.map +0 -1
  815. package/lib/util/clock.d.ts.map +0 -1
  816. package/lib/util/dataColumns.d.ts.map +0 -1
  817. package/lib/util/dependentRoot.d.ts.map +0 -1
  818. package/lib/util/enum.d.ts.map +0 -1
  819. package/lib/util/error.d.ts.map +0 -1
  820. package/lib/util/eventLoop.d.ts.map +0 -1
  821. package/lib/util/execution.d.ts.map +0 -1
  822. package/lib/util/file.d.ts.map +0 -1
  823. package/lib/util/forkChoice.d.ts.map +0 -1
  824. package/lib/util/forkName.d.ts.map +0 -1
  825. package/lib/util/graffiti.d.ts.map +0 -1
  826. package/lib/util/hex.d.ts.map +0 -1
  827. package/lib/util/index.d.ts.map +0 -1
  828. package/lib/util/ip.d.ts.map +0 -1
  829. package/lib/util/itTrigger.d.ts.map +0 -1
  830. package/lib/util/kzg.d.ts.map +0 -1
  831. package/lib/util/map.d.ts.map +0 -1
  832. package/lib/util/metadata.d.ts.map +0 -1
  833. package/lib/util/multifork.d.ts.map +0 -1
  834. package/lib/util/numpy.d.ts.map +0 -1
  835. package/lib/util/peerId.d.ts.map +0 -1
  836. package/lib/util/profile.d.ts.map +0 -1
  837. package/lib/util/promises.d.ts.map +0 -1
  838. package/lib/util/queue/errors.d.ts.map +0 -1
  839. package/lib/util/queue/fnQueue.d.ts.map +0 -1
  840. package/lib/util/queue/index.d.ts.map +0 -1
  841. package/lib/util/queue/itemQueue.d.ts.map +0 -1
  842. package/lib/util/queue/options.d.ts.map +0 -1
  843. package/lib/util/serializedCache.d.ts.map +0 -1
  844. package/lib/util/set.d.ts.map +0 -1
  845. package/lib/util/shuffle.d.ts.map +0 -1
  846. package/lib/util/sortBy.d.ts.map +0 -1
  847. package/lib/util/sszBytes.d.ts.map +0 -1
  848. package/lib/util/strictEvents.d.ts.map +0 -1
  849. package/lib/util/time.d.ts.map +0 -1
  850. package/lib/util/timeSeries.d.ts.map +0 -1
  851. package/lib/util/types.d.ts.map +0 -1
  852. package/lib/util/workerEvents.d.ts.map +0 -1
  853. package/lib/util/wrapError.d.ts.map +0 -1
  854. package/src/api/impl/api.ts +0 -26
  855. package/src/api/impl/beacon/blocks/index.ts +0 -744
  856. package/src/api/impl/beacon/blocks/utils.ts +0 -75
  857. package/src/api/impl/beacon/index.ts +0 -35
  858. package/src/api/impl/beacon/pool/index.ts +0 -314
  859. package/src/api/impl/beacon/rewards/index.ts +0 -30
  860. package/src/api/impl/beacon/state/index.ts +0 -406
  861. package/src/api/impl/beacon/state/utils.ts +0 -189
  862. package/src/api/impl/config/constants.ts +0 -127
  863. package/src/api/impl/config/index.ts +0 -59
  864. package/src/api/impl/debug/index.ts +0 -131
  865. package/src/api/impl/errors.ts +0 -50
  866. package/src/api/impl/events/index.ts +0 -33
  867. package/src/api/impl/index.ts +0 -6
  868. package/src/api/impl/lightclient/index.ts +0 -64
  869. package/src/api/impl/lodestar/index.ts +0 -257
  870. package/src/api/impl/node/index.ts +0 -88
  871. package/src/api/impl/node/utils.ts +0 -51
  872. package/src/api/impl/proof/index.ts +0 -60
  873. package/src/api/impl/types.ts +0 -17
  874. package/src/api/impl/utils.ts +0 -25
  875. package/src/api/impl/validator/index.ts +0 -1540
  876. package/src/api/impl/validator/utils.ts +0 -85
  877. package/src/api/index.ts +0 -2
  878. package/src/api/options.ts +0 -16
  879. package/src/api/rest/activeSockets.ts +0 -109
  880. package/src/api/rest/base.ts +0 -216
  881. package/src/api/rest/index.ts +0 -63
  882. package/src/api/rest/swaggerUI.ts +0 -80
  883. package/src/bun-wrappers/prometheus-gc-stats.ts +0 -7
  884. package/src/chain/ColumnReconstructionTracker.ts +0 -90
  885. package/src/chain/GetBlobsTracker.ts +0 -115
  886. package/src/chain/archiveStore/archiveStore.ts +0 -222
  887. package/src/chain/archiveStore/constants.ts +0 -5
  888. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +0 -116
  889. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +0 -68
  890. package/src/chain/archiveStore/historicalState/metrics.ts +0 -214
  891. package/src/chain/archiveStore/historicalState/types.ts +0 -41
  892. package/src/chain/archiveStore/historicalState/worker.ts +0 -77
  893. package/src/chain/archiveStore/index.ts +0 -3
  894. package/src/chain/archiveStore/interface.ts +0 -75
  895. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +0 -138
  896. package/src/chain/archiveStore/utils/archiveBlocks.ts +0 -437
  897. package/src/chain/archiveStore/utils/pruneHistory.ts +0 -56
  898. package/src/chain/archiveStore/utils/updateBackfillRange.ts +0 -50
  899. package/src/chain/balancesCache.ts +0 -52
  900. package/src/chain/beaconProposerCache.ts +0 -43
  901. package/src/chain/blocks/blockInput/blockInput.ts +0 -852
  902. package/src/chain/blocks/blockInput/errors.ts +0 -48
  903. package/src/chain/blocks/blockInput/index.ts +0 -4
  904. package/src/chain/blocks/blockInput/types.ts +0 -145
  905. package/src/chain/blocks/blockInput/utils.ts +0 -21
  906. package/src/chain/blocks/importBlock.ts +0 -597
  907. package/src/chain/blocks/index.ts +0 -179
  908. package/src/chain/blocks/types.ts +0 -101
  909. package/src/chain/blocks/utils/blowfishBanner.ts +0 -28
  910. package/src/chain/blocks/utils/chainSegment.ts +0 -29
  911. package/src/chain/blocks/utils/checkpoint.ts +0 -25
  912. package/src/chain/blocks/utils/giraffeBanner.ts +0 -30
  913. package/src/chain/blocks/utils/ownBanner.ts +0 -20
  914. package/src/chain/blocks/utils/pandaMergeTransitionBanner.ts +0 -43
  915. package/src/chain/blocks/utils/zebraBanner.ts +0 -45
  916. package/src/chain/blocks/verifyBlock.ts +0 -242
  917. package/src/chain/blocks/verifyBlocksDataAvailability.ts +0 -42
  918. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +0 -438
  919. package/src/chain/blocks/verifyBlocksSanityChecks.ts +0 -129
  920. package/src/chain/blocks/verifyBlocksSignatures.ts +0 -105
  921. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +0 -114
  922. package/src/chain/blocks/writeBlockInputToDb.ts +0 -128
  923. package/src/chain/bls/index.ts +0 -4
  924. package/src/chain/bls/interface.ts +0 -68
  925. package/src/chain/bls/maybeBatch.ts +0 -45
  926. package/src/chain/bls/multithread/index.ts +0 -582
  927. package/src/chain/bls/multithread/jobItem.ts +0 -119
  928. package/src/chain/bls/multithread/poolSize.ts +0 -16
  929. package/src/chain/bls/multithread/types.ts +0 -38
  930. package/src/chain/bls/multithread/utils.ts +0 -19
  931. package/src/chain/bls/multithread/worker.ts +0 -114
  932. package/src/chain/bls/singleThread.ts +0 -87
  933. package/src/chain/bls/utils.ts +0 -30
  934. package/src/chain/chain.ts +0 -1354
  935. package/src/chain/emitter.ts +0 -113
  936. package/src/chain/errors/attestationError.ts +0 -194
  937. package/src/chain/errors/attesterSlashingError.ts +0 -11
  938. package/src/chain/errors/blobSidecarError.ts +0 -60
  939. package/src/chain/errors/blockError.ts +0 -166
  940. package/src/chain/errors/blsToExecutionChangeError.ts +0 -13
  941. package/src/chain/errors/dataColumnSidecarError.ts +0 -80
  942. package/src/chain/errors/gossipValidation.ts +0 -20
  943. package/src/chain/errors/index.ts +0 -10
  944. package/src/chain/errors/lightClientError.ts +0 -30
  945. package/src/chain/errors/proposerSlashingError.ts +0 -11
  946. package/src/chain/errors/syncCommitteeError.ts +0 -36
  947. package/src/chain/errors/voluntaryExitError.ts +0 -13
  948. package/src/chain/forkChoice/index.ts +0 -112
  949. package/src/chain/genesis/genesis.ts +0 -190
  950. package/src/chain/genesis/interface.ts +0 -14
  951. package/src/chain/index.ts +0 -6
  952. package/src/chain/initState.ts +0 -221
  953. package/src/chain/interface.ts +0 -280
  954. package/src/chain/lightClient/index.ts +0 -764
  955. package/src/chain/lightClient/proofs.ts +0 -85
  956. package/src/chain/lightClient/types.ts +0 -33
  957. package/src/chain/opPools/aggregatedAttestationPool.ts +0 -1063
  958. package/src/chain/opPools/attestationPool.ts +0 -282
  959. package/src/chain/opPools/index.ts +0 -5
  960. package/src/chain/opPools/opPool.ts +0 -462
  961. package/src/chain/opPools/syncCommitteeMessagePool.ts +0 -169
  962. package/src/chain/opPools/syncContributionAndProofPool.ts +0 -240
  963. package/src/chain/opPools/types.ts +0 -35
  964. package/src/chain/opPools/utils.ts +0 -65
  965. package/src/chain/options.ts +0 -138
  966. package/src/chain/prepareNextSlot.ts +0 -277
  967. package/src/chain/produceBlock/computeNewStateRoot.ts +0 -55
  968. package/src/chain/produceBlock/index.ts +0 -2
  969. package/src/chain/produceBlock/produceBlockBody.ts +0 -797
  970. package/src/chain/produceBlock/validateBlobsAndKzgCommitments.ts +0 -54
  971. package/src/chain/regen/errors.ts +0 -30
  972. package/src/chain/regen/index.ts +0 -4
  973. package/src/chain/regen/interface.ts +0 -93
  974. package/src/chain/regen/queued.ts +0 -317
  975. package/src/chain/regen/regen.ts +0 -424
  976. package/src/chain/reprocess.ts +0 -161
  977. package/src/chain/rewards/attestationsRewards.ts +0 -196
  978. package/src/chain/rewards/blockRewards.ts +0 -150
  979. package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
  980. package/src/chain/seenCache/index.ts +0 -5
  981. package/src/chain/seenCache/seenAggregateAndProof.ts +0 -120
  982. package/src/chain/seenCache/seenAttestationData.ts +0 -145
  983. package/src/chain/seenCache/seenAttesters.ts +0 -58
  984. package/src/chain/seenCache/seenBlockAttesters.ts +0 -18
  985. package/src/chain/seenCache/seenBlockProposers.ts +0 -48
  986. package/src/chain/seenCache/seenCommittee.ts +0 -43
  987. package/src/chain/seenCache/seenCommitteeContribution.ts +0 -104
  988. package/src/chain/seenCache/seenGossipBlockInput.ts +0 -373
  989. package/src/chain/serializeState.ts +0 -32
  990. package/src/chain/shufflingCache.ts +0 -238
  991. package/src/chain/stateCache/blockStateCacheImpl.ts +0 -150
  992. package/src/chain/stateCache/datastore/db.ts +0 -36
  993. package/src/chain/stateCache/datastore/file.ts +0 -53
  994. package/src/chain/stateCache/datastore/index.ts +0 -2
  995. package/src/chain/stateCache/datastore/types.ts +0 -13
  996. package/src/chain/stateCache/fifoBlockStateCache.ts +0 -208
  997. package/src/chain/stateCache/inMemoryCheckpointsCache.ts +0 -198
  998. package/src/chain/stateCache/index.ts +0 -3
  999. package/src/chain/stateCache/mapMetrics.ts +0 -52
  1000. package/src/chain/stateCache/persistentCheckpointsCache.ts +0 -837
  1001. package/src/chain/stateCache/types.ts +0 -86
  1002. package/src/chain/validation/aggregateAndProof.ts +0 -258
  1003. package/src/chain/validation/attestation.ts +0 -885
  1004. package/src/chain/validation/attesterSlashing.ts +0 -61
  1005. package/src/chain/validation/blobSidecar.ts +0 -301
  1006. package/src/chain/validation/block.ts +0 -188
  1007. package/src/chain/validation/blsToExecutionChange.ts +0 -61
  1008. package/src/chain/validation/dataColumnSidecar.ts +0 -381
  1009. package/src/chain/validation/index.ts +0 -9
  1010. package/src/chain/validation/lightClientFinalityUpdate.ts +0 -46
  1011. package/src/chain/validation/lightClientOptimisticUpdate.ts +0 -68
  1012. package/src/chain/validation/proposerSlashing.ts +0 -54
  1013. package/src/chain/validation/signatureSets/aggregateAndProof.ts +0 -38
  1014. package/src/chain/validation/signatureSets/contributionAndProof.ts +0 -27
  1015. package/src/chain/validation/signatureSets/index.ts +0 -6
  1016. package/src/chain/validation/signatureSets/selectionProof.ts +0 -27
  1017. package/src/chain/validation/signatureSets/syncCommittee.ts +0 -22
  1018. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +0 -18
  1019. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +0 -27
  1020. package/src/chain/validation/syncCommittee.ts +0 -165
  1021. package/src/chain/validation/syncCommitteeContributionAndProof.ts +0 -122
  1022. package/src/chain/validation/voluntaryExit.ts +0 -58
  1023. package/src/chain/validatorMonitor.ts +0 -1309
  1024. package/src/constants/constants.ts +0 -15
  1025. package/src/constants/index.ts +0 -2
  1026. package/src/constants/network.ts +0 -52
  1027. package/src/db/beacon.ts +0 -113
  1028. package/src/db/buckets.ts +0 -80
  1029. package/src/db/index.ts +0 -2
  1030. package/src/db/interface.ts +0 -76
  1031. package/src/db/options.ts +0 -7
  1032. package/src/db/repositories/attesterSlashing.ts +0 -38
  1033. package/src/db/repositories/backfilledRanges.ts +0 -29
  1034. package/src/db/repositories/blobSidecars.ts +0 -37
  1035. package/src/db/repositories/blobSidecarsArchive.ts +0 -28
  1036. package/src/db/repositories/block.ts +0 -33
  1037. package/src/db/repositories/blockArchive.ts +0 -170
  1038. package/src/db/repositories/blockArchiveIndex.ts +0 -45
  1039. package/src/db/repositories/blsToExecutionChange.ts +0 -16
  1040. package/src/db/repositories/checkpointState.ts +0 -31
  1041. package/src/db/repositories/dataColumnSidecar.ts +0 -49
  1042. package/src/db/repositories/dataColumnSidecarArchive.ts +0 -56
  1043. package/src/db/repositories/depositDataRoot.ts +0 -80
  1044. package/src/db/repositories/depositEvent.ts +0 -32
  1045. package/src/db/repositories/eth1Data.ts +0 -33
  1046. package/src/db/repositories/index.ts +0 -20
  1047. package/src/db/repositories/lightclientBestUpdate.ts +0 -41
  1048. package/src/db/repositories/lightclientCheckpointHeader.ts +0 -32
  1049. package/src/db/repositories/lightclientSyncCommittee.ts +0 -16
  1050. package/src/db/repositories/lightclientSyncCommitteeWitness.ts +0 -77
  1051. package/src/db/repositories/proposerSlashing.ts +0 -15
  1052. package/src/db/repositories/stateArchive.ts +0 -69
  1053. package/src/db/repositories/stateArchiveIndex.ts +0 -18
  1054. package/src/db/repositories/voluntaryExit.ts +0 -15
  1055. package/src/db/single/index.ts +0 -2
  1056. package/src/db/single/preGenesisState.ts +0 -37
  1057. package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
  1058. package/src/eth1/errors.ts +0 -40
  1059. package/src/eth1/eth1DataCache.ts +0 -26
  1060. package/src/eth1/eth1DepositDataTracker.ts +0 -410
  1061. package/src/eth1/eth1DepositsCache.ts +0 -141
  1062. package/src/eth1/eth1MergeBlockTracker.ts +0 -328
  1063. package/src/eth1/index.ts +0 -157
  1064. package/src/eth1/interface.ts +0 -131
  1065. package/src/eth1/options.ts +0 -28
  1066. package/src/eth1/provider/eth1Provider.ts +0 -229
  1067. package/src/eth1/provider/jsonRpcHttpClient.ts +0 -390
  1068. package/src/eth1/provider/jwt.ts +0 -36
  1069. package/src/eth1/provider/utils.ts +0 -136
  1070. package/src/eth1/stream.ts +0 -75
  1071. package/src/eth1/utils/depositContract.ts +0 -37
  1072. package/src/eth1/utils/deposits.ts +0 -70
  1073. package/src/eth1/utils/eth1Data.ts +0 -100
  1074. package/src/eth1/utils/eth1DepositEvent.ts +0 -12
  1075. package/src/eth1/utils/eth1Vote.ts +0 -142
  1076. package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
  1077. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
  1078. package/src/execution/builder/cache.ts +0 -39
  1079. package/src/execution/builder/http.ts +0 -229
  1080. package/src/execution/builder/index.ts +0 -27
  1081. package/src/execution/builder/interface.ts +0 -49
  1082. package/src/execution/builder/utils.ts +0 -19
  1083. package/src/execution/engine/disabled.ts +0 -35
  1084. package/src/execution/engine/http.ts +0 -644
  1085. package/src/execution/engine/index.ts +0 -63
  1086. package/src/execution/engine/interface.ts +0 -199
  1087. package/src/execution/engine/mock.ts +0 -493
  1088. package/src/execution/engine/payloadIdCache.ts +0 -54
  1089. package/src/execution/engine/types.ts +0 -640
  1090. package/src/execution/engine/utils.ts +0 -136
  1091. package/src/execution/index.ts +0 -4
  1092. package/src/index.ts +0 -20
  1093. package/src/metrics/index.ts +0 -4
  1094. package/src/metrics/metrics/beacon.ts +0 -390
  1095. package/src/metrics/metrics/lodestar.ts +0 -1870
  1096. package/src/metrics/metrics.ts +0 -43
  1097. package/src/metrics/nodeJsMetrics.ts +0 -19
  1098. package/src/metrics/options.ts +0 -22
  1099. package/src/metrics/server/http.ts +0 -114
  1100. package/src/metrics/server/index.ts +0 -1
  1101. package/src/metrics/utils/avgMinMax.ts +0 -87
  1102. package/src/metrics/utils/gauge.ts +0 -22
  1103. package/src/metrics/utils/registryMetricCreator.ts +0 -41
  1104. package/src/monitoring/clientStats.ts +0 -297
  1105. package/src/monitoring/index.ts +0 -2
  1106. package/src/monitoring/options.ts +0 -19
  1107. package/src/monitoring/properties.ts +0 -152
  1108. package/src/monitoring/service.ts +0 -235
  1109. package/src/monitoring/system.ts +0 -146
  1110. package/src/monitoring/types.ts +0 -21
  1111. package/src/network/core/events.ts +0 -59
  1112. package/src/network/core/index.ts +0 -3
  1113. package/src/network/core/metrics.ts +0 -304
  1114. package/src/network/core/networkCore.ts +0 -599
  1115. package/src/network/core/networkCoreWorker.ts +0 -176
  1116. package/src/network/core/networkCoreWorkerHandler.ts +0 -284
  1117. package/src/network/core/types.ts +0 -119
  1118. package/src/network/discv5/index.ts +0 -132
  1119. package/src/network/discv5/types.ts +0 -74
  1120. package/src/network/discv5/utils.ts +0 -50
  1121. package/src/network/discv5/worker.ts +0 -137
  1122. package/src/network/events.ts +0 -51
  1123. package/src/network/forks.ts +0 -94
  1124. package/src/network/gossip/constants.ts +0 -15
  1125. package/src/network/gossip/encoding.ts +0 -111
  1126. package/src/network/gossip/errors.ts +0 -7
  1127. package/src/network/gossip/gossipsub.ts +0 -384
  1128. package/src/network/gossip/index.ts +0 -4
  1129. package/src/network/gossip/interface.ts +0 -215
  1130. package/src/network/gossip/metrics.ts +0 -71
  1131. package/src/network/gossip/scoringParameters.ts +0 -333
  1132. package/src/network/gossip/topic.ts +0 -332
  1133. package/src/network/index.ts +0 -8
  1134. package/src/network/interface.ts +0 -134
  1135. package/src/network/libp2p/error.ts +0 -55
  1136. package/src/network/libp2p/index.ts +0 -153
  1137. package/src/network/metadata.ts +0 -162
  1138. package/src/network/network.ts +0 -767
  1139. package/src/network/networkConfig.ts +0 -12
  1140. package/src/network/options.ts +0 -70
  1141. package/src/network/peers/client.ts +0 -29
  1142. package/src/network/peers/datastore.ts +0 -188
  1143. package/src/network/peers/discover.ts +0 -647
  1144. package/src/network/peers/index.ts +0 -2
  1145. package/src/network/peers/peerManager.ts +0 -899
  1146. package/src/network/peers/peersData.ts +0 -65
  1147. package/src/network/peers/score/constants.ts +0 -34
  1148. package/src/network/peers/score/index.ts +0 -4
  1149. package/src/network/peers/score/interface.ts +0 -74
  1150. package/src/network/peers/score/score.ts +0 -200
  1151. package/src/network/peers/score/store.ts +0 -95
  1152. package/src/network/peers/score/utils.ts +0 -37
  1153. package/src/network/peers/utils/assertPeerRelevance.ts +0 -99
  1154. package/src/network/peers/utils/enrSubnetsDeserialize.ts +0 -27
  1155. package/src/network/peers/utils/getConnectedPeerIds.ts +0 -33
  1156. package/src/network/peers/utils/index.ts +0 -4
  1157. package/src/network/peers/utils/prioritizePeers.ts +0 -627
  1158. package/src/network/peers/utils/subnetMap.ts +0 -88
  1159. package/src/network/processor/aggregatorTracker.ts +0 -38
  1160. package/src/network/processor/extractSlotRootFns.ts +0 -64
  1161. package/src/network/processor/gossipHandlers.ts +0 -951
  1162. package/src/network/processor/gossipQueues/index.ts +0 -114
  1163. package/src/network/processor/gossipQueues/indexed.ts +0 -219
  1164. package/src/network/processor/gossipQueues/linear.ts +0 -162
  1165. package/src/network/processor/gossipQueues/types.ts +0 -57
  1166. package/src/network/processor/gossipValidatorFn.ts +0 -142
  1167. package/src/network/processor/index.ts +0 -496
  1168. package/src/network/processor/types.ts +0 -27
  1169. package/src/network/reqresp/ReqRespBeaconNode.ts +0 -373
  1170. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +0 -101
  1171. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +0 -49
  1172. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -114
  1173. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -62
  1174. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +0 -144
  1175. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +0 -88
  1176. package/src/network/reqresp/handlers/index.ts +0 -78
  1177. package/src/network/reqresp/handlers/lightClientBootstrap.ts +0 -31
  1178. package/src/network/reqresp/handlers/lightClientFinalityUpdate.ts +0 -21
  1179. package/src/network/reqresp/handlers/lightClientOptimisticUpdate.ts +0 -21
  1180. package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +0 -39
  1181. package/src/network/reqresp/index.ts +0 -2
  1182. package/src/network/reqresp/interface.ts +0 -45
  1183. package/src/network/reqresp/protocols.ts +0 -146
  1184. package/src/network/reqresp/rateLimit.ts +0 -112
  1185. package/src/network/reqresp/score.ts +0 -70
  1186. package/src/network/reqresp/types.ts +0 -174
  1187. package/src/network/reqresp/utils/collect.ts +0 -84
  1188. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +0 -57
  1189. package/src/network/reqresp/utils/dataColumnResponseValidation.ts +0 -99
  1190. package/src/network/statusCache.ts +0 -17
  1191. package/src/network/subnets/attnetsService.ts +0 -385
  1192. package/src/network/subnets/index.ts +0 -2
  1193. package/src/network/subnets/interface.ts +0 -66
  1194. package/src/network/subnets/syncnetsService.ts +0 -147
  1195. package/src/network/subnets/util.ts +0 -63
  1196. package/src/network/util.ts +0 -29
  1197. package/src/node/index.ts +0 -2
  1198. package/src/node/nodejs.ts +0 -349
  1199. package/src/node/notifier.ts +0 -206
  1200. package/src/node/options.ts +0 -51
  1201. package/src/node/utils/interop/deposits.ts +0 -53
  1202. package/src/node/utils/interop/state.ts +0 -59
  1203. package/src/node/utils/lightclient.ts +0 -7
  1204. package/src/node/utils/state.ts +0 -37
  1205. package/src/sync/backfill/backfill.ts +0 -893
  1206. package/src/sync/backfill/errors.ts +0 -23
  1207. package/src/sync/backfill/index.ts +0 -1
  1208. package/src/sync/backfill/verify.ts +0 -58
  1209. package/src/sync/constants.ts +0 -71
  1210. package/src/sync/index.ts +0 -2
  1211. package/src/sync/interface.ts +0 -55
  1212. package/src/sync/options.ts +0 -45
  1213. package/src/sync/range/batch.ts +0 -455
  1214. package/src/sync/range/chain.ts +0 -715
  1215. package/src/sync/range/range.ts +0 -354
  1216. package/src/sync/range/utils/batches.ts +0 -119
  1217. package/src/sync/range/utils/chainTarget.ts +0 -62
  1218. package/src/sync/range/utils/hashBlocks.ts +0 -27
  1219. package/src/sync/range/utils/index.ts +0 -5
  1220. package/src/sync/range/utils/peerBalancer.ts +0 -184
  1221. package/src/sync/range/utils/updateChains.ts +0 -66
  1222. package/src/sync/sync.ts +0 -290
  1223. package/src/sync/types.ts +0 -57
  1224. package/src/sync/unknownBlock.ts +0 -859
  1225. package/src/sync/utils/downloadByRange.ts +0 -808
  1226. package/src/sync/utils/downloadByRoot.ts +0 -560
  1227. package/src/sync/utils/pendingBlocksTree.ts +0 -97
  1228. package/src/sync/utils/remoteSyncType.ts +0 -144
  1229. package/src/util/address.ts +0 -3
  1230. package/src/util/array.ts +0 -311
  1231. package/src/util/asyncIterableToEvents.ts +0 -164
  1232. package/src/util/binarySearch.ts +0 -48
  1233. package/src/util/bitArray.ts +0 -84
  1234. package/src/util/blobs.ts +0 -210
  1235. package/src/util/bufferPool.ts +0 -95
  1236. package/src/util/bytes.ts +0 -11
  1237. package/src/util/chunkify.ts +0 -27
  1238. package/src/util/clock.ts +0 -212
  1239. package/src/util/dataColumns.ts +0 -415
  1240. package/src/util/dependentRoot.ts +0 -47
  1241. package/src/util/enum.ts +0 -17
  1242. package/src/util/error.ts +0 -56
  1243. package/src/util/eventLoop.ts +0 -22
  1244. package/src/util/execution.ts +0 -223
  1245. package/src/util/file.ts +0 -52
  1246. package/src/util/forkChoice.ts +0 -5
  1247. package/src/util/forkName.ts +0 -20
  1248. package/src/util/graffiti.ts +0 -39
  1249. package/src/util/hex.ts +0 -9
  1250. package/src/util/index.ts +0 -2
  1251. package/src/util/ip.ts +0 -6
  1252. package/src/util/itTrigger.ts +0 -49
  1253. package/src/util/kzg.ts +0 -3
  1254. package/src/util/map.ts +0 -77
  1255. package/src/util/metadata.ts +0 -22
  1256. package/src/util/multifork.ts +0 -69
  1257. package/src/util/numpy.ts +0 -8
  1258. package/src/util/peerId.ts +0 -16
  1259. package/src/util/profile.ts +0 -54
  1260. package/src/util/promises.ts +0 -14
  1261. package/src/util/queue/errors.ts +0 -14
  1262. package/src/util/queue/fnQueue.ts +0 -16
  1263. package/src/util/queue/index.ts +0 -4
  1264. package/src/util/queue/itemQueue.ts +0 -128
  1265. package/src/util/queue/options.ts +0 -37
  1266. package/src/util/serializedCache.ts +0 -20
  1267. package/src/util/set.ts +0 -62
  1268. package/src/util/shuffle.ts +0 -21
  1269. package/src/util/sortBy.ts +0 -19
  1270. package/src/util/sszBytes.ts +0 -481
  1271. package/src/util/strictEvents.ts +0 -8
  1272. package/src/util/time.ts +0 -13
  1273. package/src/util/timeSeries.ts +0 -118
  1274. package/src/util/types.ts +0 -31
  1275. package/src/util/workerEvents.ts +0 -142
  1276. package/src/util/wrapError.ts +0 -27
@@ -1,893 +0,0 @@
1
- import {EventEmitter} from "node:events";
2
- import {StrictEventEmitter} from "strict-event-emitter-types";
3
- import {BeaconConfig, ChainForkConfig} from "@lodestar/config";
4
- import {SLOTS_PER_EPOCH} from "@lodestar/params";
5
- import {BeaconStateAllForks, blockToHeader, computeAnchorCheckpoint} from "@lodestar/state-transition";
6
- import {Root, SignedBeaconBlock, Slot, phase0, ssz} from "@lodestar/types";
7
- import {ErrorAborted, Logger, sleep, toRootHex} from "@lodestar/utils";
8
- import {IBeaconChain} from "../../chain/index.js";
9
- import {GENESIS_SLOT, ZERO_HASH} from "../../constants/index.js";
10
- import {IBeaconDb} from "../../db/index.js";
11
- import {Metrics} from "../../metrics/metrics.js";
12
- import {INetwork, NetworkEvent, NetworkEventData, PeerAction} from "../../network/index.js";
13
- import {byteArrayEquals} from "../../util/bytes.js";
14
- import {ItTrigger} from "../../util/itTrigger.js";
15
- import {PeerIdStr} from "../../util/peerId.js";
16
- import {shuffleOne} from "../../util/shuffle.js";
17
- import {BackfillSyncError, BackfillSyncErrorCode} from "./errors.js";
18
- import {BackfillBlock, BackfillBlockHeader, verifyBlockProposerSignature, verifyBlockSequence} from "./verify.js";
19
-
20
- /**
21
- * Timeout in ms to take a break from reading a backfillBatchSize from db, as just yielding
22
- * to sync loop gives hardly any.
23
- */
24
- const DB_READ_BREATHER_TIMEOUT = 1000;
25
-
26
- export type BackfillSyncModules = {
27
- chain: IBeaconChain;
28
- db: IBeaconDb;
29
- network: INetwork;
30
- config: BeaconConfig;
31
- logger: Logger;
32
- metrics: Metrics | null;
33
- anchorState: BeaconStateAllForks;
34
- wsCheckpoint?: phase0.Checkpoint;
35
- signal: AbortSignal;
36
- };
37
-
38
- type BackfillModules = BackfillSyncModules & {
39
- syncAnchor: BackFillSyncAnchor;
40
- backfillStartFromSlot: Slot;
41
- prevFinalizedCheckpointBlock: BackfillBlockHeader;
42
- wsCheckpointHeader: BackfillBlockHeader | null;
43
- backfillRangeWrittenSlot: Slot | null;
44
- };
45
-
46
- export type BackfillSyncOpts = {
47
- backfillBatchSize: number;
48
- };
49
-
50
- export enum BackfillSyncEvent {
51
- completed = "BackfillSync-completed",
52
- }
53
-
54
- export enum BackfillSyncMethod {
55
- database = "database",
56
- backfilled_ranges = "backfilled_ranges",
57
- rangesync = "rangesync",
58
- blockbyroot = "blockbyroot",
59
- }
60
-
61
- export enum BackfillSyncStatus {
62
- pending = "pending",
63
- syncing = "syncing",
64
- completed = "completed",
65
- aborted = "aborted",
66
- }
67
-
68
- /** Map a SyncState to an integer for rendering in Grafana */
69
- const syncStatus: {[K in BackfillSyncStatus]: number} = {
70
- [BackfillSyncStatus.aborted]: 0,
71
- [BackfillSyncStatus.pending]: 1,
72
- [BackfillSyncStatus.syncing]: 2,
73
- [BackfillSyncStatus.completed]: 3,
74
- };
75
-
76
- type BackfillSyncEvents = {
77
- [BackfillSyncEvent.completed]: (
78
- /** Oldest slot synced */
79
- oldestSlotSynced: Slot
80
- ) => void;
81
- };
82
-
83
- type BackfillSyncEmitter = StrictEventEmitter<EventEmitter, BackfillSyncEvents>;
84
-
85
- /**
86
- * At any given point, we should have
87
- * 1. anchorBlock (with its root anchorBlockRoot at anchorSlot) for next round of sync
88
- * which is the same as the lastBackSyncedBlock
89
- * 2. We know the anchorBlockRoot but don't have its anchorBlock and anchorSlot yet, and its
90
- * parent of lastBackSyncedBlock we synced in a previous successfull round
91
- * 3. We just started with only anchorBlockRoot, but we know (and will validate) its anchorSlot
92
- */
93
- type BackFillSyncAnchor =
94
- | {
95
- anchorBlock: SignedBeaconBlock;
96
- anchorBlockRoot: Root;
97
- anchorSlot: Slot;
98
- lastBackSyncedBlock: BackfillBlock;
99
- }
100
- | {anchorBlock: null; anchorBlockRoot: Root; anchorSlot: null; lastBackSyncedBlock: BackfillBlock}
101
- | {anchorBlock: null; anchorBlockRoot: Root; anchorSlot: Slot; lastBackSyncedBlock: null};
102
-
103
- export class BackfillSync extends (EventEmitter as {new (): BackfillSyncEmitter}) {
104
- /** Lowest slot that we have backfilled to */
105
- syncAnchor: BackFillSyncAnchor;
106
-
107
- private readonly chain: IBeaconChain;
108
- private readonly network: INetwork;
109
- private readonly db: IBeaconDb;
110
- private readonly config: BeaconConfig;
111
- private readonly logger: Logger;
112
- private readonly metrics: Metrics | null;
113
-
114
- /**
115
- * Process in blocks of at max batchSize
116
- */
117
- private opts: BackfillSyncOpts;
118
- /**
119
- * If wsCheckpoint provided was in past then the (db) state from which beacon node started,
120
- * needs to be validated as per spec.
121
- *
122
- * 1. This could lie in between of the previous backfilled range, in which case it would be
123
- * sufficient to check if its DB, once the linkage to that range has been verified.
124
- * 2. Else if it lies outside the backfilled range, the linkage to this checkpoint in
125
- * backfill needs to be verified.
126
- */
127
- private wsCheckpointHeader: BackfillBlockHeader | null;
128
- private wsValidated = false;
129
-
130
- /**
131
- * From https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/weak-subjectivity.md
132
- *
133
- *
134
- * If
135
- * 1. The wsCheckpoint provided was ahead of the db's finalized checkpoint or
136
- * 2. There were gaps in the backfill - keys to backfillRanges are always (by construction)
137
- * a) Finalized Checkpoint or b) previous wsCheckpoint
138
- *
139
- * the linkage to the previous finalized/wss checkpoint(s) needs to be verfied. If there is
140
- * no such checkpoint remaining, the linkage to genesis needs to be validated
141
- *
142
- * Initialize with the blockArchive's last block, and on verification update to the next
143
- * preceding backfillRange key's checkpoint.
144
- */
145
- private prevFinalizedCheckpointBlock: BackfillBlockHeader;
146
- /** Starting point that this specific backfill sync "session" started from */
147
- private backfillStartFromSlot: Slot;
148
- private backfillRangeWrittenSlot: Slot | null;
149
-
150
- private processor = new ItTrigger();
151
- private peers = new Set<PeerIdStr>();
152
- private status: BackfillSyncStatus = BackfillSyncStatus.pending;
153
- private signal: AbortSignal;
154
-
155
- constructor(opts: BackfillSyncOpts, modules: BackfillModules) {
156
- super();
157
-
158
- this.syncAnchor = modules.syncAnchor;
159
- this.backfillStartFromSlot = modules.backfillStartFromSlot;
160
- this.backfillRangeWrittenSlot = modules.backfillRangeWrittenSlot;
161
- this.prevFinalizedCheckpointBlock = modules.prevFinalizedCheckpointBlock;
162
- this.wsCheckpointHeader = modules.wsCheckpointHeader;
163
-
164
- this.chain = modules.chain;
165
- this.network = modules.network;
166
- this.db = modules.db;
167
- this.config = modules.config;
168
- this.logger = modules.logger;
169
- this.metrics = modules.metrics;
170
-
171
- this.opts = opts;
172
- this.network.events.on(NetworkEvent.peerConnected, this.addPeer);
173
- this.network.events.on(NetworkEvent.peerDisconnected, this.removePeer);
174
- this.signal = modules.signal;
175
-
176
- this.sync()
177
- .then((oldestSlotSynced) => {
178
- if (this.status !== BackfillSyncStatus.completed) {
179
- throw new ErrorAborted(`Invalid BackfillSyncStatus at the completion of sync loop status=${this.status}`);
180
- }
181
- this.emit(BackfillSyncEvent.completed, oldestSlotSynced);
182
- this.logger.info("BackfillSync completed", {oldestSlotSynced});
183
- // Sync completed, unsubscribe listeners and don't run the processor again.
184
- // Backfill is never necessary again until the node shuts down
185
- this.close();
186
- })
187
- .catch((e) => {
188
- this.logger.error("BackfillSync processor error", e);
189
- this.status = BackfillSyncStatus.aborted;
190
- this.close();
191
- });
192
-
193
- const metrics = this.metrics;
194
- if (metrics) {
195
- metrics.backfillSync.status.addCollect(() => metrics.backfillSync.status.set(syncStatus[this.status]));
196
- metrics.backfillSync.backfilledTillSlot.addCollect(() =>
197
- metrics.backfillSync.backfilledTillSlot.set(
198
- this.syncAnchor.lastBackSyncedBlock?.slot ?? this.backfillStartFromSlot
199
- )
200
- );
201
- metrics.backfillSync.prevFinOrWsSlot.addCollect(() =>
202
- metrics.backfillSync.prevFinOrWsSlot.set(Math.max(this.prevFinalizedCheckpointBlock.slot, GENESIS_SLOT))
203
- );
204
- }
205
- }
206
-
207
- /**
208
- * Use the root of the anchorState of the beacon node as the starting point of the
209
- * backfill sync with its expected slot to be anchorState.slot, which will be
210
- * validated once the block is resolved in the backfill sync.
211
- *
212
- * NOTE: init here is quite light involving couple of
213
- *
214
- * 1. db keys lookup in stateArchive/backfilledRanges
215
- * 2. computing root(s) for anchorBlockRoot and prevFinalizedCheckpointBlock
216
- *
217
- * The way we initialize beacon node, wsCheckpoint's slot is always <= anchorSlot
218
- * If:
219
- * the root belonging to wsCheckpoint is in the DB, we need to verify linkage to it
220
- * i.e. it becomes our first prevFinalizedCheckpointBlock
221
- * Else
222
- * we initialize prevFinalizedCheckpointBlock from the last stored db finalized state
223
- * for verification and when we go below its epoch we just check if a correct block
224
- * corresponding to wsCheckpoint root was stored.
225
- *
226
- * and then we continue going back and verifying the next unconnected previous finalized
227
- * or wsCheckpoints identifiable as the keys of backfill sync.
228
- */
229
- static async init<T extends BackfillSync = BackfillSync>(
230
- opts: BackfillSyncOpts,
231
- modules: BackfillSyncModules
232
- ): Promise<T> {
233
- const {config, anchorState, db, wsCheckpoint, logger} = modules;
234
-
235
- const {checkpoint: anchorCp} = computeAnchorCheckpoint(config, anchorState);
236
- const anchorSlot = anchorState.latestBlockHeader.slot;
237
- const syncAnchor = {
238
- anchorBlock: null,
239
- anchorBlockRoot: anchorCp.root,
240
- anchorSlot,
241
- lastBackSyncedBlock: null,
242
- };
243
-
244
- // Load the previous written to slot for the key backfillStartFromSlot
245
- // in backfilledRanges
246
- const backfillStartFromSlot = anchorSlot;
247
- const backfillRangeWrittenSlot = await db.backfilledRanges.get(backfillStartFromSlot);
248
- const previousBackfilledRanges = await db.backfilledRanges.entries({
249
- lte: backfillStartFromSlot,
250
- });
251
- modules.logger.info("Initializing from Checkpoint", {
252
- root: toRootHex(anchorCp.root),
253
- epoch: anchorCp.epoch,
254
- backfillStartFromSlot,
255
- previousBackfilledRanges: JSON.stringify(previousBackfilledRanges),
256
- });
257
-
258
- // wsCheckpointHeader is where the checkpoint can actually be validated
259
- const wsCheckpointHeader: BackfillBlockHeader | null = wsCheckpoint
260
- ? {root: wsCheckpoint.root, slot: wsCheckpoint.epoch * SLOTS_PER_EPOCH}
261
- : null;
262
- // Load a previous finalized or wsCheckpoint slot from DB below anchorSlot
263
- const prevFinalizedCheckpointBlock = await extractPreviousFinOrWsCheckpoint(config, db, anchorSlot, logger);
264
-
265
- return new BackfillSync(opts, {
266
- syncAnchor,
267
- backfillStartFromSlot,
268
- backfillRangeWrittenSlot,
269
- wsCheckpointHeader,
270
- prevFinalizedCheckpointBlock,
271
- ...modules,
272
- }) as T;
273
- }
274
-
275
- /** Throw / return all AsyncGenerators */
276
- close(): void {
277
- this.network.events.off(NetworkEvent.peerConnected, this.addPeer);
278
- this.network.events.off(NetworkEvent.peerDisconnected, this.removePeer);
279
- this.processor.end(new ErrorAborted("BackfillSync"));
280
- }
281
-
282
- /**
283
- * @returns Returns oldestSlotSynced
284
- */
285
- private async sync(): Promise<Slot> {
286
- this.processor.trigger();
287
-
288
- for await (const _ of this.processor) {
289
- if (this.status === BackfillSyncStatus.aborted) {
290
- /** Break out of sync loop and throw error */
291
- break;
292
- }
293
- this.status = BackfillSyncStatus.syncing;
294
-
295
- // 1. We should always have either anchorBlock or anchorBlockRoot, they are the
296
- // anchor points for this round of the sync
297
- // 2. Check and validate if we have reached prevFinalizedCheckpointBlock
298
- // On success Update prevFinalizedCheckpointBlock to check the *next* previous
299
- // 3. Validate Checkpoint as part of DB block tree if we have backfilled
300
- // before the checkpoint
301
- // 4. Exit the sync if backfilled till genesis
302
- //
303
- // 5. Check if we can jump back from available backfill sequence, if found yield and
304
- // recontinue from top making checks
305
- // 7. Check and read batchSize from DB, if found yield and recontinue from top
306
- // 8. If not in DB, and if peer available
307
- // a) Either fetch blockByRoot if only anchorBlockRoot is set, which could be because
308
- // i) its the unavailable root of the very first block to start off sync
309
- // ii) its parent of lastBackSyncedBlock and there was an issue in establishing
310
- // linear sequence in syncRange as there could be one or more
311
- // skipped/orphaned slots
312
- // between the parent we want to fetch and lastBackSyncedBlock
313
- // b) read previous batchSize blocks from network assuming most likely those blocks
314
- // form a linear anchored chain with anchorBlock. If not, try fetching the
315
- // parent of
316
- // the anchorBlock via strategy a) as it could be multiple skipped/orphaned slots
317
- // behind
318
- if (this.syncAnchor.lastBackSyncedBlock != null) {
319
- // If after a previous sync round:
320
- // lastBackSyncedBlock.slot < prevFinalizedCheckpointBlock.slot
321
- // then it means the prevFinalizedCheckpoint block has been missed because in each
322
- // round we backfill new blocks till (if the batchSize allows):
323
- // lastBackSyncedBlock.slot <= prevFinalizedCheckpointBlock.slot
324
- if (this.syncAnchor.lastBackSyncedBlock.slot < this.prevFinalizedCheckpointBlock.slot) {
325
- this.logger.error(
326
- `Backfilled till ${
327
- this.syncAnchor.lastBackSyncedBlock.slot
328
- } but not found previous saved finalized or wsCheckpoint with root=${toRootHex(
329
- this.prevFinalizedCheckpointBlock.root
330
- )}, slot=${this.prevFinalizedCheckpointBlock.slot}`
331
- );
332
- // Break sync loop and throw error
333
- break;
334
- }
335
-
336
- if (this.syncAnchor.lastBackSyncedBlock.slot === this.prevFinalizedCheckpointBlock.slot) {
337
- // Okay! we backfilled successfully till prevFinalizedCheckpointBlock
338
- if (!byteArrayEquals(this.syncAnchor.lastBackSyncedBlock.root, this.prevFinalizedCheckpointBlock.root)) {
339
- this.logger.error(
340
- `Invalid root synced at a previous finalized or wsCheckpoint, slot=${
341
- this.prevFinalizedCheckpointBlock.slot
342
- }: expected=${toRootHex(this.prevFinalizedCheckpointBlock.root)}, actual=${toRootHex(
343
- this.syncAnchor.lastBackSyncedBlock.root
344
- )}`
345
- );
346
- // Break sync loop and throw error
347
- break;
348
- }
349
- this.logger.verbose("Validated current prevFinalizedCheckpointBlock", {
350
- root: toRootHex(this.prevFinalizedCheckpointBlock.root),
351
- slot: this.prevFinalizedCheckpointBlock.slot,
352
- });
353
-
354
- // 1. If this is not a genesis block save this block in DB as this wasn't saved
355
- // earlier pending validation. Genesis block will be saved with extra validation
356
- // before returning from the sync.
357
- //
358
- // 2. Load another previous saved finalized or wsCheckpoint which has not
359
- // been validated yet. These are the keys of backfill ranges as each
360
- // range denotes
361
- // a validated connected segment having the slots of previous wsCheckpoint
362
- // or finalized as keys
363
- if (this.syncAnchor.lastBackSyncedBlock.slot !== GENESIS_SLOT) {
364
- await this.db.blockArchive.put(
365
- this.syncAnchor.lastBackSyncedBlock.slot,
366
- this.syncAnchor.lastBackSyncedBlock.block
367
- );
368
- }
369
- this.prevFinalizedCheckpointBlock = await extractPreviousFinOrWsCheckpoint(
370
- this.config,
371
- this.db,
372
- this.syncAnchor.lastBackSyncedBlock.slot,
373
- this.logger
374
- );
375
- }
376
-
377
- if (this.syncAnchor.lastBackSyncedBlock.slot === GENESIS_SLOT) {
378
- if (!byteArrayEquals(this.syncAnchor.lastBackSyncedBlock.block.message.parentRoot, ZERO_HASH)) {
379
- Error(
380
- `Invalid Gensis Block with non zero parentRoot=${toRootHex(
381
- this.syncAnchor.lastBackSyncedBlock.block.message.parentRoot
382
- )}`
383
- );
384
- }
385
- await this.db.blockArchive.put(GENESIS_SLOT, this.syncAnchor.lastBackSyncedBlock.block);
386
- }
387
-
388
- if (this.wsCheckpointHeader && !this.wsValidated) {
389
- await this.checkIfCheckpointSyncedAndValidate();
390
- }
391
-
392
- if (
393
- this.backfillRangeWrittenSlot === null ||
394
- this.syncAnchor.lastBackSyncedBlock.slot < this.backfillRangeWrittenSlot
395
- ) {
396
- this.backfillRangeWrittenSlot = this.syncAnchor.lastBackSyncedBlock.slot;
397
- await this.db.backfilledRanges.put(this.backfillStartFromSlot, this.backfillRangeWrittenSlot);
398
- this.logger.debug(
399
- `Updated the backfill range from=${this.backfillStartFromSlot} till=${this.backfillRangeWrittenSlot}`
400
- );
401
- }
402
-
403
- if (this.syncAnchor.lastBackSyncedBlock.slot === GENESIS_SLOT) {
404
- this.logger.verbose("Successfully synced to genesis.");
405
- this.status = BackfillSyncStatus.completed;
406
- return GENESIS_SLOT;
407
- }
408
-
409
- const foundValidSeq = await this.checkUpdateFromBackfillSequences();
410
- if (foundValidSeq) {
411
- // Go back to top and do checks till
412
- this.processor.trigger();
413
- continue;
414
- }
415
- }
416
-
417
- try {
418
- const foundBlocks = await this.fastBackfillDb();
419
- if (foundBlocks) {
420
- this.processor.trigger();
421
- continue;
422
- }
423
- } catch (e) {
424
- this.logger.error("Error while reading from DB", {}, e as Error);
425
- // Break sync loop and throw error
426
- break;
427
- }
428
-
429
- // Try the network if nothing found in DB
430
- const peer = shuffleOne(Array.from(this.peers.values()));
431
- if (!peer) {
432
- this.status = BackfillSyncStatus.pending;
433
- this.logger.debug("No peers yet");
434
- continue;
435
- }
436
-
437
- try {
438
- if (!this.syncAnchor.anchorBlock) {
439
- await this.syncBlockByRoot(peer, this.syncAnchor.anchorBlockRoot);
440
-
441
- // Go back and make the checks in case this block could be at or
442
- // behind prevFinalizedCheckpointBlock
443
- } else {
444
- await this.syncRange(peer);
445
-
446
- // Go back and make the checks in case the lastbackSyncedBlock could be at or
447
- // behind prevFinalizedCheckpointBlock
448
- }
449
- } catch (e) {
450
- this.metrics?.backfillSync.errors.inc();
451
- this.logger.error("Sync error", {}, e as Error);
452
-
453
- if (e instanceof BackfillSyncError) {
454
- switch (e.type.code) {
455
- case BackfillSyncErrorCode.INTERNAL_ERROR:
456
- // Break it out of the loop and throw error
457
- this.status = BackfillSyncStatus.aborted;
458
- break;
459
- case BackfillSyncErrorCode.NOT_ANCHORED:
460
- // biome-ignore lint/suspicious/noFallthroughSwitchClause: We need fall-through behavior here
461
- case BackfillSyncErrorCode.NOT_LINEAR:
462
- // Lets try to jump directly to the parent of this anchorBlock as previous
463
- // (segment) of blocks could be orphaned/missed
464
- if (this.syncAnchor.anchorBlock) {
465
- this.syncAnchor = {
466
- anchorBlock: null,
467
- anchorBlockRoot: this.syncAnchor.anchorBlock.message.parentRoot,
468
- anchorSlot: null,
469
- lastBackSyncedBlock: this.syncAnchor.lastBackSyncedBlock,
470
- };
471
- }
472
-
473
- // falls through
474
- case BackfillSyncErrorCode.INVALID_SIGNATURE:
475
- this.network.reportPeer(peer, PeerAction.LowToleranceError, "BadSyncBlocks");
476
- }
477
- }
478
- } finally {
479
- if (this.status !== BackfillSyncStatus.aborted) this.processor.trigger();
480
- }
481
- }
482
-
483
- throw new ErrorAborted("BackfillSync");
484
- }
485
-
486
- private addPeer = (data: NetworkEventData[NetworkEvent.peerConnected]): void => {
487
- const requiredSlot = this.syncAnchor.lastBackSyncedBlock?.slot ?? this.backfillStartFromSlot;
488
- this.logger.debug("Add peer", {peerhead: data.status.headSlot, requiredSlot});
489
- if (data.status.headSlot >= requiredSlot) {
490
- this.peers.add(data.peer);
491
- this.processor.trigger();
492
- }
493
- };
494
-
495
- private removePeer = (data: NetworkEventData[NetworkEvent.peerDisconnected]): void => {
496
- this.peers.delete(data.peer);
497
- };
498
-
499
- /**
500
- * Ensure that any weak subjectivity checkpoint provided in past with respect
501
- * the initialization point is the same block tree as the DB once backfill
502
- */
503
- private async checkIfCheckpointSyncedAndValidate(): Promise<void> {
504
- if (this.syncAnchor.lastBackSyncedBlock == null) {
505
- throw Error("Invalid lastBackSyncedBlock for checkpoint validation");
506
- }
507
- if (this.wsCheckpointHeader == null) {
508
- throw Error("Invalid null checkpoint for validation");
509
- }
510
- if (this.wsValidated) return;
511
-
512
- if (this.wsCheckpointHeader.slot >= this.syncAnchor.lastBackSyncedBlock.slot) {
513
- // Checkpoint root should be in db now , in case there are string of orphaned/missed
514
- // slots before/leading up to checkpoint, the block just backsynced before the
515
- // wsCheckpointHeader.slot will have the checkpoint root
516
- const wsDbCheckpointBlock = await this.db.blockArchive.getByRoot(this.wsCheckpointHeader.root);
517
- if (
518
- !wsDbCheckpointBlock ||
519
- // The only validation we can do here is that wsDbCheckpointBlock is found at/before
520
- // wsCheckpoint's epoch as there could be orphaned/missed slots all the way
521
- // from wsDbCheckpointBlock's slot to the wsCheckpoint's epoch
522
-
523
- // TODO: one can verify the child of wsDbCheckpointBlock is at
524
- // slot > wsCheckpointHeader
525
- // Note: next epoch is at wsCheckpointHeader.slot + SLOTS_PER_EPOCH
526
- wsDbCheckpointBlock.message.slot >= this.wsCheckpointHeader.slot + SLOTS_PER_EPOCH
527
- )
528
- // TODO: explode and stop the entire node
529
- throw new Error(
530
- `InvalidWsCheckpoint root=${toRootHex(this.wsCheckpointHeader.root)}, epoch=${
531
- this.wsCheckpointHeader.slot / SLOTS_PER_EPOCH
532
- }, ${
533
- wsDbCheckpointBlock
534
- ? "found at epoch=" + Math.floor(wsDbCheckpointBlock?.message.slot / SLOTS_PER_EPOCH)
535
- : "not found"
536
- }`
537
- );
538
- this.logger.info("wsCheckpoint validated!", {
539
- root: toRootHex(this.wsCheckpointHeader.root),
540
- epoch: this.wsCheckpointHeader.slot / SLOTS_PER_EPOCH,
541
- });
542
- this.wsValidated = true;
543
- }
544
- }
545
-
546
- private async checkUpdateFromBackfillSequences(): Promise<boolean> {
547
- if (this.syncAnchor.lastBackSyncedBlock === null) {
548
- throw Error("Backfill ranges can only be used once we have a valid lastBackSyncedBlock as a pivot point");
549
- }
550
-
551
- let validSequence = false;
552
- if (this.syncAnchor.lastBackSyncedBlock.slot === null) return validSequence;
553
- const lastBackSyncedSlot = this.syncAnchor.lastBackSyncedBlock.slot;
554
-
555
- const filteredSeqs = await this.db.backfilledRanges.entries({
556
- gte: lastBackSyncedSlot,
557
- });
558
-
559
- if (filteredSeqs.length > 0) {
560
- const jumpBackTo = Math.min(...filteredSeqs.map(({value: justToSlot}) => justToSlot));
561
-
562
- if (jumpBackTo < lastBackSyncedSlot) {
563
- validSequence = true;
564
- const anchorBlock = await this.db.blockArchive.get(jumpBackTo);
565
- if (!anchorBlock) {
566
- validSequence = false;
567
- this.logger.warn(
568
- `Invalid backfill sequence: expected a block at ${jumpBackTo} in blockArchive, ignoring the sequence`
569
- );
570
- }
571
- if (anchorBlock && validSequence && this.prevFinalizedCheckpointBlock.slot >= jumpBackTo) {
572
- this.logger.debug(
573
- `Found a sequence going back to ${jumpBackTo} before the previous finalized or wsCheckpoint`,
574
- {slot: this.prevFinalizedCheckpointBlock.slot}
575
- );
576
-
577
- // Everything saved in db between a backfilled range is a connected sequence
578
- // we only need to check if prevFinalizedCheckpointBlock is in db
579
- const prevBackfillCpBlock = await this.db.blockArchive.getByRoot(this.prevFinalizedCheckpointBlock.root);
580
- if (
581
- prevBackfillCpBlock != null &&
582
- this.prevFinalizedCheckpointBlock.slot === prevBackfillCpBlock.message.slot
583
- ) {
584
- this.logger.verbose("Validated current prevFinalizedCheckpointBlock", {
585
- root: toRootHex(this.prevFinalizedCheckpointBlock.root),
586
- slot: prevBackfillCpBlock.message.slot,
587
- });
588
- } else {
589
- validSequence = false;
590
- this.logger.warn(
591
- `Invalid backfill sequence: previous finalized or checkpoint block root=${toRootHex(
592
- this.prevFinalizedCheckpointBlock.root
593
- )}, slot=${this.prevFinalizedCheckpointBlock.slot} ${
594
- prevBackfillCpBlock ? "found at slot=" + prevBackfillCpBlock.message.slot : "not found"
595
- }, ignoring the sequence`
596
- );
597
- }
598
- }
599
-
600
- if (anchorBlock && validSequence) {
601
- // Update the current sequence in DB as we will be cleaning up previous sequences
602
- await this.db.backfilledRanges.put(this.backfillStartFromSlot, jumpBackTo);
603
- this.backfillRangeWrittenSlot = jumpBackTo;
604
- this.logger.verbose(
605
- `Jumped and updated the backfilled range ${this.backfillStartFromSlot}, ${this.backfillRangeWrittenSlot}`,
606
- {jumpBackTo}
607
- );
608
-
609
- const anchorBlockHeader = blockToHeader(this.config, anchorBlock.message);
610
- const anchorBlockRoot = ssz.phase0.BeaconBlockHeader.hashTreeRoot(anchorBlockHeader);
611
-
612
- this.syncAnchor = {
613
- anchorBlock,
614
- anchorBlockRoot,
615
- anchorSlot: jumpBackTo,
616
- lastBackSyncedBlock: {root: anchorBlockRoot, slot: jumpBackTo, block: anchorBlock},
617
- };
618
- if (this.prevFinalizedCheckpointBlock.slot >= jumpBackTo) {
619
- // prevFinalizedCheckpointBlock must have been validated, update to a
620
- // new unverified
621
- // finalized or wsCheckpoint behind the new lastBackSyncedBlock
622
- this.prevFinalizedCheckpointBlock = await extractPreviousFinOrWsCheckpoint(
623
- this.config,
624
- this.db,
625
- jumpBackTo,
626
- this.logger
627
- );
628
- }
629
-
630
- this.metrics?.backfillSync.totalBlocks.inc(
631
- {method: BackfillSyncMethod.backfilled_ranges},
632
- lastBackSyncedSlot - jumpBackTo
633
- );
634
- }
635
- }
636
- }
637
-
638
- // Only delete < backfillStartFromSlot, the keys greater than this would be cleaned
639
- // up by the archival process of forward sync
640
- const cleanupSeqs = filteredSeqs.filter((entry) => entry.key < this.backfillStartFromSlot);
641
- if (cleanupSeqs.length > 0) {
642
- await this.db.backfilledRanges.batchDelete(cleanupSeqs.map((entry) => entry.key));
643
- this.logger.debug(
644
- `Cleaned up the old sequences between ${this.backfillStartFromSlot},${toRootHex(
645
- this.syncAnchor.lastBackSyncedBlock.root
646
- )}`,
647
- {cleanupSeqs: JSON.stringify(cleanupSeqs)}
648
- );
649
- }
650
-
651
- return validSequence;
652
- }
653
-
654
- private async fastBackfillDb(): Promise<boolean> {
655
- // Block of this anchorBlockRoot can't be behind the prevFinalizedCheckpointBlock
656
- // as prevFinalizedCheckpointBlock can't be skipped
657
- let anchorBlockRoot: Root;
658
- let expectedSlot: Slot | null = null;
659
- if (this.syncAnchor.anchorBlock) {
660
- anchorBlockRoot = this.syncAnchor.anchorBlock.message.parentRoot;
661
- } else {
662
- anchorBlockRoot = this.syncAnchor.anchorBlockRoot;
663
- expectedSlot = this.syncAnchor.anchorSlot;
664
- }
665
- let anchorBlock = await this.db.blockArchive.getByRoot(anchorBlockRoot);
666
- if (!anchorBlock) return false;
667
-
668
- if (expectedSlot !== null && anchorBlock.message.slot !== expectedSlot)
669
- throw Error(
670
- `Invalid slot of anchorBlock read from DB with root=${toRootHex(
671
- anchorBlockRoot
672
- )}, expected=${expectedSlot}, actual=${anchorBlock.message.slot}`
673
- );
674
-
675
- // If possible, read back till anchorBlock > this.prevFinalizedCheckpointBlock
676
- let parentBlock: SignedBeaconBlock | null,
677
- backCount = 1;
678
-
679
- let isPrevFinWsConfirmedAnchorParent = false;
680
- while (
681
- backCount !== this.opts.backfillBatchSize &&
682
- // biome-ignore lint/suspicious/noAssignInExpressions: May be refactored later
683
- (parentBlock = await this.db.blockArchive.getByRoot(anchorBlock.message.parentRoot))
684
- ) {
685
- // Before moving anchorBlock back, we need check for prevFinalizedCheckpointBlock
686
- if (anchorBlock.message.slot < this.prevFinalizedCheckpointBlock.slot) {
687
- throw Error(
688
- `Skipped a prevFinalizedCheckpointBlock with slot=${toRootHex(
689
- this.prevFinalizedCheckpointBlock.root
690
- )}, root=${toRootHex(this.prevFinalizedCheckpointBlock.root)}`
691
- );
692
- }
693
- if (anchorBlock.message.slot === this.prevFinalizedCheckpointBlock.slot) {
694
- if (
695
- !isPrevFinWsConfirmedAnchorParent &&
696
- !byteArrayEquals(anchorBlockRoot, this.prevFinalizedCheckpointBlock.root)
697
- ) {
698
- throw Error(
699
- `Invalid root for prevFinalizedCheckpointBlock at slot=${
700
- this.prevFinalizedCheckpointBlock.slot
701
- }, expected=${toRootHex(this.prevFinalizedCheckpointBlock.root)}, found=${toRootHex(anchorBlockRoot)}`
702
- );
703
- }
704
-
705
- // If the new parentBlock is just one slot back, we can safely assign
706
- // prevFinalizedCheckpointBlock with the parentBlock and skip root
707
- // validation in next iteration. Else we need to extract
708
- // prevFinalizedCheckpointBlock
709
- if (parentBlock.message.slot === anchorBlock.message.slot - 1) {
710
- this.prevFinalizedCheckpointBlock = {root: anchorBlock.message.parentRoot, slot: parentBlock.message.slot};
711
- isPrevFinWsConfirmedAnchorParent = true;
712
- } else {
713
- // Extract new prevFinalizedCheckpointBlock below anchorBlock
714
- this.prevFinalizedCheckpointBlock = await extractPreviousFinOrWsCheckpoint(
715
- this.config,
716
- this.db,
717
- anchorBlock.message.slot,
718
- this.logger
719
- );
720
- isPrevFinWsConfirmedAnchorParent = false;
721
- }
722
- }
723
- anchorBlockRoot = anchorBlock.message.parentRoot;
724
- anchorBlock = parentBlock;
725
- backCount++;
726
- }
727
-
728
- this.syncAnchor = {
729
- anchorBlock,
730
- anchorBlockRoot,
731
- anchorSlot: anchorBlock.message.slot,
732
- lastBackSyncedBlock: {root: anchorBlockRoot, slot: anchorBlock.message.slot, block: anchorBlock},
733
- };
734
- this.metrics?.backfillSync.totalBlocks.inc({method: BackfillSyncMethod.database}, backCount);
735
- this.logger.verbose(`Read ${backCount} blocks from DB till `, {
736
- slot: anchorBlock.message.slot,
737
- });
738
- if (backCount >= this.opts.backfillBatchSize) {
739
- // We should sleep as there seems to be more that can be read from db but yielding to
740
- // the sync loop hardly gives any breather to the beacon node
741
- await sleep(DB_READ_BREATHER_TIMEOUT, this.signal);
742
- }
743
- return true;
744
- }
745
-
746
- private async syncBlockByRoot(peer: PeerIdStr, anchorBlockRoot: Root): Promise<void> {
747
- const res = await this.network.sendBeaconBlocksByRoot(peer, [anchorBlockRoot]);
748
- if (res.length < 1) throw new Error("InvalidBlockSyncedFromPeer");
749
- const anchorBlock = res[0];
750
-
751
- // GENESIS_SLOT doesn't has valid signature
752
- if (anchorBlock.data.message.slot === GENESIS_SLOT) return;
753
- await verifyBlockProposerSignature(this.chain.bls, this.chain.getHeadState(), [anchorBlock]);
754
-
755
- // We can write to the disk if this is ahead of prevFinalizedCheckpointBlock otherwise
756
- // we will need to go make checks on the top of sync loop before writing as it might
757
- // override prevFinalizedCheckpointBlock
758
- if (this.prevFinalizedCheckpointBlock.slot < anchorBlock.data.message.slot)
759
- await this.db.blockArchive.putBinary(anchorBlock.data.message.slot, anchorBlock.bytes);
760
-
761
- this.syncAnchor = {
762
- anchorBlock: anchorBlock.data,
763
- anchorBlockRoot,
764
- anchorSlot: anchorBlock.data.message.slot,
765
- lastBackSyncedBlock: {root: anchorBlockRoot, slot: anchorBlock.data.message.slot, block: anchorBlock.data},
766
- };
767
-
768
- this.metrics?.backfillSync.totalBlocks.inc({method: BackfillSyncMethod.blockbyroot});
769
-
770
- this.logger.verbose("Fetched new anchorBlock", {
771
- root: toRootHex(anchorBlockRoot),
772
- slot: anchorBlock.data.message.slot,
773
- });
774
-
775
- return;
776
- }
777
-
778
- private async syncRange(peer: PeerIdStr): Promise<void> {
779
- if (!this.syncAnchor.anchorBlock) {
780
- throw Error("Invalid anchorBlock null for syncRange");
781
- }
782
-
783
- const toSlot = this.syncAnchor.anchorBlock.message.slot;
784
- const fromSlot = Math.max(
785
- toSlot - this.opts.backfillBatchSize,
786
- this.prevFinalizedCheckpointBlock.slot,
787
- GENESIS_SLOT
788
- );
789
- const blocks = await this.network.sendBeaconBlocksByRange(peer, {
790
- startSlot: fromSlot,
791
- count: toSlot - fromSlot,
792
- step: 1,
793
- });
794
-
795
- const anchorParentRoot = this.syncAnchor.anchorBlock.message.parentRoot;
796
-
797
- if (blocks.length === 0) {
798
- // Lets just directly try to jump to anchorParentRoot
799
- this.syncAnchor = {
800
- anchorBlock: null,
801
- anchorBlockRoot: anchorParentRoot,
802
- anchorSlot: null,
803
- lastBackSyncedBlock: this.syncAnchor.lastBackSyncedBlock,
804
- };
805
- return;
806
- }
807
-
808
- const {nextAnchor, verifiedBlocks, error} = verifyBlockSequence(this.config, blocks, anchorParentRoot);
809
-
810
- // If any of the block's proposer signature fail, we can't trust this peer at all
811
- if (verifiedBlocks.length > 0) {
812
- await verifyBlockProposerSignature(this.chain.bls, this.chain.getHeadState(), verifiedBlocks);
813
-
814
- // This is bad, like super bad. Abort the backfill
815
- if (!nextAnchor)
816
- throw new BackfillSyncError({
817
- code: BackfillSyncErrorCode.INTERNAL_ERROR,
818
- reason: "Invalid verifyBlockSequence result",
819
- });
820
-
821
- // Verified blocks are in reverse order with the nextAnchor being the smallest slot
822
- // if nextAnchor is on the same slot as prevFinalizedCheckpointBlock, we can't save
823
- // it before returning to top of sync loop for validation
824
- const blocksToPut =
825
- nextAnchor.slot > this.prevFinalizedCheckpointBlock.slot
826
- ? verifiedBlocks
827
- : verifiedBlocks.slice(0, verifiedBlocks.length - 1);
828
- await this.db.blockArchive.batchPutBinary(
829
- blocksToPut.map((block) => ({
830
- key: block.data.message.slot,
831
- value: block.bytes,
832
- slot: block.data.message.slot,
833
- blockRoot: this.config.getForkTypes(block.data.message.slot).BeaconBlock.hashTreeRoot(block.data.message),
834
- parentRoot: block.data.message.parentRoot,
835
- }))
836
- );
837
- this.metrics?.backfillSync.totalBlocks.inc({method: BackfillSyncMethod.rangesync}, verifiedBlocks.length);
838
- }
839
-
840
- // If nextAnchor provided, found some linear anchored blocks
841
- if (nextAnchor !== null) {
842
- this.syncAnchor = {
843
- anchorBlock: nextAnchor.block,
844
- anchorBlockRoot: nextAnchor.root,
845
- anchorSlot: nextAnchor.slot,
846
- lastBackSyncedBlock: nextAnchor,
847
- };
848
- this.logger.verbose(`syncRange discovered ${verifiedBlocks.length} valid blocks`, {
849
- backfilled: this.syncAnchor.lastBackSyncedBlock.slot,
850
- });
851
- }
852
- if (error != null) throw new BackfillSyncError({code: error});
853
- }
854
- }
855
-
856
- async function extractPreviousFinOrWsCheckpoint(
857
- config: ChainForkConfig,
858
- db: IBeaconDb,
859
- belowSlot: Slot,
860
- logger?: Logger
861
- ): Promise<BackfillBlockHeader> {
862
- // Anything below genesis block is just zero hash
863
- if (belowSlot <= GENESIS_SLOT) return {root: ZERO_HASH, slot: belowSlot - 1};
864
-
865
- // To extract the next prevFinalizedCheckpointBlock, we just need to look back in DB
866
- // Any saved previous finalized or ws checkpoint, will also have a corresponding block
867
- // saved in DB, as we make sure of that
868
- // 1. When we archive new finalized state and blocks
869
- // 2. When we backfill from a wsCheckpoint
870
- const nextPrevFinOrWsBlock = (
871
- await db.blockArchive.values({
872
- lt: belowSlot,
873
- reverse: true,
874
- limit: 1,
875
- })
876
- )[0];
877
-
878
- let prevFinalizedCheckpointBlock: BackfillBlockHeader;
879
- if (nextPrevFinOrWsBlock != null) {
880
- const header = blockToHeader(config, nextPrevFinOrWsBlock.message);
881
- const root = ssz.phase0.BeaconBlockHeader.hashTreeRoot(header);
882
- prevFinalizedCheckpointBlock = {root, slot: nextPrevFinOrWsBlock.message.slot};
883
- logger?.debug("Extracted new prevFinalizedCheckpointBlock as potential previous finalized or wsCheckpoint", {
884
- root: toRootHex(prevFinalizedCheckpointBlock.root),
885
- slot: prevFinalizedCheckpointBlock.slot,
886
- });
887
- } else {
888
- // GENESIS_SLOT -1 is the placeholder for parentHash of the genesis block
889
- // which should always be ZERO_HASH.
890
- prevFinalizedCheckpointBlock = {root: ZERO_HASH, slot: GENESIS_SLOT - 1};
891
- }
892
- return prevFinalizedCheckpointBlock;
893
- }