@lodestar/beacon-node 1.35.0-dev.fcf8d024ea → 1.35.0-dev.feed916580

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 (945) 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/validator/index.js +3 -5
  5. package/lib/api/impl/validator/index.js.map +1 -1
  6. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +0 -1
  7. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  8. package/lib/chain/archiveStore/historicalState/worker.js +1 -1
  9. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  10. package/lib/chain/blocks/blockInput/blockInput.js +1 -1
  11. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  12. package/lib/chain/blocks/importBlock.js +3 -4
  13. package/lib/chain/blocks/importBlock.js.map +1 -1
  14. package/lib/chain/blocks/verifyBlocksDataAvailability.js +1 -8
  15. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  16. package/lib/chain/blocks/writeBlockInputToDb.js +7 -1
  17. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  18. package/lib/chain/bls/multithread/index.js +0 -1
  19. package/lib/chain/bls/multithread/index.js.map +1 -1
  20. package/lib/chain/chain.js +3 -2
  21. package/lib/chain/chain.js.map +1 -1
  22. package/lib/chain/emitter.d.ts +2 -2
  23. package/lib/chain/opPools/attestationPool.d.ts +3 -2
  24. package/lib/chain/opPools/attestationPool.js +5 -3
  25. package/lib/chain/opPools/attestationPool.js.map +1 -1
  26. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts +2 -3
  27. package/lib/chain/opPools/syncCommitteeMessagePool.js +5 -6
  28. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  29. package/lib/chain/opPools/types.d.ts +1 -1
  30. package/lib/chain/opPools/types.js +1 -1
  31. package/lib/chain/opPools/types.js.map +1 -1
  32. package/lib/chain/prepareNextSlot.d.ts +3 -3
  33. package/lib/chain/prepareNextSlot.js +8 -8
  34. package/lib/chain/prepareNextSlot.js.map +1 -1
  35. package/lib/chain/stateCache/persistentCheckpointsCache.js +8 -9
  36. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  37. package/lib/chain/validation/lightClientFinalityUpdate.js +3 -4
  38. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  39. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts +4 -6
  40. package/lib/chain/validation/lightClientOptimisticUpdate.js +11 -11
  41. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  42. package/lib/chain/validatorMonitor.js +14 -20
  43. package/lib/chain/validatorMonitor.js.map +1 -1
  44. package/lib/db/buckets.d.ts +4 -4
  45. package/lib/db/buckets.js +4 -4
  46. package/lib/db/buckets.js.map +1 -1
  47. package/lib/db/repositories/blobSidecars.js +1 -1
  48. package/lib/db/repositories/blobSidecars.js.map +1 -1
  49. package/lib/db/repositories/blobSidecarsArchive.js +1 -1
  50. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  51. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  52. package/lib/db/repositories/dataColumnSidecar.js +1 -1
  53. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  54. package/lib/db/repositories/dataColumnSidecarArchive.js +1 -1
  55. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  56. package/lib/metrics/metrics/lodestar.d.ts +1 -1
  57. package/lib/metrics/metrics/lodestar.js +3 -3
  58. package/lib/metrics/metrics/lodestar.js.map +1 -1
  59. package/lib/network/core/networkCoreWorkerHandler.js +3 -9
  60. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  61. package/lib/network/discv5/index.js +1 -4
  62. package/lib/network/discv5/index.js.map +1 -1
  63. package/lib/network/gossip/gossipsub.d.ts +0 -1
  64. package/lib/network/gossip/gossipsub.js +16 -35
  65. package/lib/network/gossip/gossipsub.js.map +1 -1
  66. package/lib/network/gossip/metrics.d.ts +7 -15
  67. package/lib/network/gossip/metrics.js +6 -16
  68. package/lib/network/gossip/metrics.js.map +1 -1
  69. package/lib/network/libp2p/index.js +1 -9
  70. package/lib/network/libp2p/index.js.map +1 -1
  71. package/lib/network/metadata.js +1 -2
  72. package/lib/network/metadata.js.map +1 -1
  73. package/lib/network/network.d.ts +1 -1
  74. package/lib/network/network.js +13 -11
  75. package/lib/network/network.js.map +1 -1
  76. package/lib/network/peers/datastore.d.ts +2 -2
  77. package/lib/network/peers/datastore.js +2 -2
  78. package/lib/network/peers/datastore.js.map +1 -1
  79. package/lib/network/processor/index.d.ts +1 -1
  80. package/lib/network/processor/index.js +3 -2
  81. package/lib/network/processor/index.js.map +1 -1
  82. package/lib/sync/types.d.ts +1 -0
  83. package/lib/sync/types.js.map +1 -1
  84. package/lib/sync/unknownBlock.d.ts +1 -0
  85. package/lib/sync/unknownBlock.js +19 -17
  86. package/lib/sync/unknownBlock.js.map +1 -1
  87. package/lib/sync/utils/downloadByRoot.d.ts +1 -3
  88. package/lib/sync/utils/downloadByRoot.js +9 -36
  89. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  90. package/lib/util/blobs.js +3 -5
  91. package/lib/util/blobs.js.map +1 -1
  92. package/lib/util/clock.d.ts +0 -5
  93. package/lib/util/clock.js +0 -3
  94. package/lib/util/clock.js.map +1 -1
  95. package/lib/util/dataColumns.js +1 -1
  96. package/lib/util/dataColumns.js.map +1 -1
  97. package/lib/util/execution.js +2 -19
  98. package/lib/util/execution.js.map +1 -1
  99. package/package.json +22 -32
  100. package/lib/api/impl/api.d.ts.map +0 -1
  101. package/lib/api/impl/beacon/blocks/index.d.ts.map +0 -1
  102. package/lib/api/impl/beacon/blocks/utils.d.ts.map +0 -1
  103. package/lib/api/impl/beacon/index.d.ts.map +0 -1
  104. package/lib/api/impl/beacon/pool/index.d.ts.map +0 -1
  105. package/lib/api/impl/beacon/rewards/index.d.ts.map +0 -1
  106. package/lib/api/impl/beacon/state/index.d.ts.map +0 -1
  107. package/lib/api/impl/beacon/state/utils.d.ts.map +0 -1
  108. package/lib/api/impl/config/constants.d.ts.map +0 -1
  109. package/lib/api/impl/config/index.d.ts.map +0 -1
  110. package/lib/api/impl/debug/index.d.ts.map +0 -1
  111. package/lib/api/impl/errors.d.ts.map +0 -1
  112. package/lib/api/impl/events/index.d.ts.map +0 -1
  113. package/lib/api/impl/index.d.ts.map +0 -1
  114. package/lib/api/impl/lightclient/index.d.ts.map +0 -1
  115. package/lib/api/impl/lodestar/index.d.ts.map +0 -1
  116. package/lib/api/impl/node/index.d.ts.map +0 -1
  117. package/lib/api/impl/node/utils.d.ts.map +0 -1
  118. package/lib/api/impl/proof/index.d.ts.map +0 -1
  119. package/lib/api/impl/types.d.ts.map +0 -1
  120. package/lib/api/impl/utils.d.ts.map +0 -1
  121. package/lib/api/impl/validator/index.d.ts.map +0 -1
  122. package/lib/api/impl/validator/utils.d.ts.map +0 -1
  123. package/lib/api/index.d.ts.map +0 -1
  124. package/lib/api/options.d.ts.map +0 -1
  125. package/lib/api/rest/activeSockets.d.ts.map +0 -1
  126. package/lib/api/rest/base.d.ts.map +0 -1
  127. package/lib/api/rest/index.d.ts.map +0 -1
  128. package/lib/api/rest/swaggerUI.d.ts.map +0 -1
  129. package/lib/bun-wrappers/prometheus-gc-stats.d.ts.map +0 -1
  130. package/lib/chain/ColumnReconstructionTracker.d.ts.map +0 -1
  131. package/lib/chain/GetBlobsTracker.d.ts.map +0 -1
  132. package/lib/chain/archiveStore/archiveStore.d.ts.map +0 -1
  133. package/lib/chain/archiveStore/constants.d.ts.map +0 -1
  134. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +0 -1
  135. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +0 -1
  136. package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +0 -1
  137. package/lib/chain/archiveStore/historicalState/types.d.ts.map +0 -1
  138. package/lib/chain/archiveStore/historicalState/worker.d.ts.map +0 -1
  139. package/lib/chain/archiveStore/index.d.ts.map +0 -1
  140. package/lib/chain/archiveStore/interface.d.ts.map +0 -1
  141. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +0 -1
  142. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +0 -1
  143. package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +0 -1
  144. package/lib/chain/archiveStore/utils/updateBackfillRange.d.ts.map +0 -1
  145. package/lib/chain/balancesCache.d.ts.map +0 -1
  146. package/lib/chain/beaconProposerCache.d.ts.map +0 -1
  147. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +0 -1
  148. package/lib/chain/blocks/blockInput/errors.d.ts.map +0 -1
  149. package/lib/chain/blocks/blockInput/index.d.ts.map +0 -1
  150. package/lib/chain/blocks/blockInput/types.d.ts.map +0 -1
  151. package/lib/chain/blocks/blockInput/utils.d.ts.map +0 -1
  152. package/lib/chain/blocks/importBlock.d.ts.map +0 -1
  153. package/lib/chain/blocks/index.d.ts.map +0 -1
  154. package/lib/chain/blocks/types.d.ts.map +0 -1
  155. package/lib/chain/blocks/utils/blowfishBanner.d.ts.map +0 -1
  156. package/lib/chain/blocks/utils/chainSegment.d.ts.map +0 -1
  157. package/lib/chain/blocks/utils/checkpoint.d.ts.map +0 -1
  158. package/lib/chain/blocks/utils/giraffeBanner.d.ts.map +0 -1
  159. package/lib/chain/blocks/utils/ownBanner.d.ts.map +0 -1
  160. package/lib/chain/blocks/utils/pandaMergeTransitionBanner.d.ts.map +0 -1
  161. package/lib/chain/blocks/utils/zebraBanner.d.ts.map +0 -1
  162. package/lib/chain/blocks/verifyBlock.d.ts.map +0 -1
  163. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +0 -1
  164. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +0 -1
  165. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +0 -1
  166. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +0 -1
  167. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +0 -1
  168. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +0 -1
  169. package/lib/chain/bls/index.d.ts.map +0 -1
  170. package/lib/chain/bls/interface.d.ts.map +0 -1
  171. package/lib/chain/bls/maybeBatch.d.ts.map +0 -1
  172. package/lib/chain/bls/multithread/index.d.ts.map +0 -1
  173. package/lib/chain/bls/multithread/jobItem.d.ts.map +0 -1
  174. package/lib/chain/bls/multithread/poolSize.d.ts.map +0 -1
  175. package/lib/chain/bls/multithread/types.d.ts.map +0 -1
  176. package/lib/chain/bls/multithread/utils.d.ts.map +0 -1
  177. package/lib/chain/bls/multithread/worker.d.ts.map +0 -1
  178. package/lib/chain/bls/singleThread.d.ts.map +0 -1
  179. package/lib/chain/bls/utils.d.ts.map +0 -1
  180. package/lib/chain/chain.d.ts.map +0 -1
  181. package/lib/chain/emitter.d.ts.map +0 -1
  182. package/lib/chain/errors/attestationError.d.ts.map +0 -1
  183. package/lib/chain/errors/attesterSlashingError.d.ts.map +0 -1
  184. package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
  185. package/lib/chain/errors/blockError.d.ts.map +0 -1
  186. package/lib/chain/errors/blsToExecutionChangeError.d.ts.map +0 -1
  187. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +0 -1
  188. package/lib/chain/errors/gossipValidation.d.ts.map +0 -1
  189. package/lib/chain/errors/index.d.ts.map +0 -1
  190. package/lib/chain/errors/lightClientError.d.ts.map +0 -1
  191. package/lib/chain/errors/proposerSlashingError.d.ts.map +0 -1
  192. package/lib/chain/errors/syncCommitteeError.d.ts.map +0 -1
  193. package/lib/chain/errors/voluntaryExitError.d.ts.map +0 -1
  194. package/lib/chain/forkChoice/index.d.ts.map +0 -1
  195. package/lib/chain/genesis/genesis.d.ts.map +0 -1
  196. package/lib/chain/genesis/interface.d.ts.map +0 -1
  197. package/lib/chain/index.d.ts.map +0 -1
  198. package/lib/chain/initState.d.ts.map +0 -1
  199. package/lib/chain/interface.d.ts.map +0 -1
  200. package/lib/chain/lightClient/index.d.ts.map +0 -1
  201. package/lib/chain/lightClient/proofs.d.ts.map +0 -1
  202. package/lib/chain/lightClient/types.d.ts.map +0 -1
  203. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +0 -1
  204. package/lib/chain/opPools/attestationPool.d.ts.map +0 -1
  205. package/lib/chain/opPools/index.d.ts.map +0 -1
  206. package/lib/chain/opPools/opPool.d.ts.map +0 -1
  207. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +0 -1
  208. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +0 -1
  209. package/lib/chain/opPools/types.d.ts.map +0 -1
  210. package/lib/chain/opPools/utils.d.ts.map +0 -1
  211. package/lib/chain/options.d.ts.map +0 -1
  212. package/lib/chain/prepareNextSlot.d.ts.map +0 -1
  213. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +0 -1
  214. package/lib/chain/produceBlock/index.d.ts.map +0 -1
  215. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +0 -1
  216. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts.map +0 -1
  217. package/lib/chain/regen/errors.d.ts.map +0 -1
  218. package/lib/chain/regen/index.d.ts.map +0 -1
  219. package/lib/chain/regen/interface.d.ts.map +0 -1
  220. package/lib/chain/regen/queued.d.ts.map +0 -1
  221. package/lib/chain/regen/regen.d.ts.map +0 -1
  222. package/lib/chain/reprocess.d.ts.map +0 -1
  223. package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
  224. package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
  225. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
  226. package/lib/chain/seenCache/index.d.ts.map +0 -1
  227. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +0 -1
  228. package/lib/chain/seenCache/seenAttestationData.d.ts.map +0 -1
  229. package/lib/chain/seenCache/seenAttesters.d.ts.map +0 -1
  230. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +0 -1
  231. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +0 -1
  232. package/lib/chain/seenCache/seenCommittee.d.ts.map +0 -1
  233. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +0 -1
  234. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +0 -1
  235. package/lib/chain/serializeState.d.ts.map +0 -1
  236. package/lib/chain/shufflingCache.d.ts.map +0 -1
  237. package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +0 -1
  238. package/lib/chain/stateCache/datastore/db.d.ts.map +0 -1
  239. package/lib/chain/stateCache/datastore/file.d.ts.map +0 -1
  240. package/lib/chain/stateCache/datastore/index.d.ts.map +0 -1
  241. package/lib/chain/stateCache/datastore/types.d.ts.map +0 -1
  242. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +0 -1
  243. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +0 -1
  244. package/lib/chain/stateCache/index.d.ts.map +0 -1
  245. package/lib/chain/stateCache/mapMetrics.d.ts.map +0 -1
  246. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +0 -1
  247. package/lib/chain/stateCache/types.d.ts.map +0 -1
  248. package/lib/chain/validation/aggregateAndProof.d.ts.map +0 -1
  249. package/lib/chain/validation/attestation.d.ts.map +0 -1
  250. package/lib/chain/validation/attesterSlashing.d.ts.map +0 -1
  251. package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
  252. package/lib/chain/validation/block.d.ts.map +0 -1
  253. package/lib/chain/validation/blsToExecutionChange.d.ts.map +0 -1
  254. package/lib/chain/validation/dataColumnSidecar.d.ts.map +0 -1
  255. package/lib/chain/validation/index.d.ts.map +0 -1
  256. package/lib/chain/validation/lightClientFinalityUpdate.d.ts.map +0 -1
  257. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +0 -1
  258. package/lib/chain/validation/proposerSlashing.d.ts.map +0 -1
  259. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +0 -1
  260. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +0 -1
  261. package/lib/chain/validation/signatureSets/index.d.ts.map +0 -1
  262. package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +0 -1
  263. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +0 -1
  264. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +0 -1
  265. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +0 -1
  266. package/lib/chain/validation/syncCommittee.d.ts.map +0 -1
  267. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +0 -1
  268. package/lib/chain/validation/voluntaryExit.d.ts.map +0 -1
  269. package/lib/chain/validatorMonitor.d.ts.map +0 -1
  270. package/lib/constants/constants.d.ts.map +0 -1
  271. package/lib/constants/index.d.ts.map +0 -1
  272. package/lib/constants/network.d.ts.map +0 -1
  273. package/lib/db/beacon.d.ts.map +0 -1
  274. package/lib/db/buckets.d.ts.map +0 -1
  275. package/lib/db/index.d.ts.map +0 -1
  276. package/lib/db/interface.d.ts.map +0 -1
  277. package/lib/db/options.d.ts.map +0 -1
  278. package/lib/db/repositories/attesterSlashing.d.ts.map +0 -1
  279. package/lib/db/repositories/backfilledRanges.d.ts.map +0 -1
  280. package/lib/db/repositories/blobSidecars.d.ts.map +0 -1
  281. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +0 -1
  282. package/lib/db/repositories/block.d.ts.map +0 -1
  283. package/lib/db/repositories/blockArchive.d.ts.map +0 -1
  284. package/lib/db/repositories/blockArchiveIndex.d.ts.map +0 -1
  285. package/lib/db/repositories/blsToExecutionChange.d.ts.map +0 -1
  286. package/lib/db/repositories/checkpointState.d.ts.map +0 -1
  287. package/lib/db/repositories/dataColumnSidecar.d.ts.map +0 -1
  288. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +0 -1
  289. package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
  290. package/lib/db/repositories/depositEvent.d.ts.map +0 -1
  291. package/lib/db/repositories/eth1Data.d.ts.map +0 -1
  292. package/lib/db/repositories/index.d.ts.map +0 -1
  293. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +0 -1
  294. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +0 -1
  295. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +0 -1
  296. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +0 -1
  297. package/lib/db/repositories/proposerSlashing.d.ts.map +0 -1
  298. package/lib/db/repositories/stateArchive.d.ts.map +0 -1
  299. package/lib/db/repositories/stateArchiveIndex.d.ts.map +0 -1
  300. package/lib/db/repositories/voluntaryExit.d.ts.map +0 -1
  301. package/lib/db/single/index.d.ts.map +0 -1
  302. package/lib/db/single/preGenesisState.d.ts.map +0 -1
  303. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
  304. package/lib/eth1/errors.d.ts.map +0 -1
  305. package/lib/eth1/eth1DataCache.d.ts.map +0 -1
  306. package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
  307. package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
  308. package/lib/eth1/eth1MergeBlockTracker.d.ts.map +0 -1
  309. package/lib/eth1/index.d.ts.map +0 -1
  310. package/lib/eth1/interface.d.ts.map +0 -1
  311. package/lib/eth1/options.d.ts.map +0 -1
  312. package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
  313. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
  314. package/lib/eth1/provider/jwt.d.ts.map +0 -1
  315. package/lib/eth1/provider/utils.d.ts.map +0 -1
  316. package/lib/eth1/stream.d.ts.map +0 -1
  317. package/lib/eth1/utils/depositContract.d.ts.map +0 -1
  318. package/lib/eth1/utils/deposits.d.ts.map +0 -1
  319. package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
  320. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
  321. package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
  322. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
  323. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
  324. package/lib/execution/builder/cache.d.ts.map +0 -1
  325. package/lib/execution/builder/http.d.ts.map +0 -1
  326. package/lib/execution/builder/index.d.ts.map +0 -1
  327. package/lib/execution/builder/interface.d.ts.map +0 -1
  328. package/lib/execution/builder/utils.d.ts.map +0 -1
  329. package/lib/execution/engine/disabled.d.ts.map +0 -1
  330. package/lib/execution/engine/http.d.ts.map +0 -1
  331. package/lib/execution/engine/index.d.ts.map +0 -1
  332. package/lib/execution/engine/interface.d.ts.map +0 -1
  333. package/lib/execution/engine/mock.d.ts.map +0 -1
  334. package/lib/execution/engine/payloadIdCache.d.ts.map +0 -1
  335. package/lib/execution/engine/types.d.ts.map +0 -1
  336. package/lib/execution/engine/utils.d.ts.map +0 -1
  337. package/lib/execution/index.d.ts.map +0 -1
  338. package/lib/index.d.ts.map +0 -1
  339. package/lib/metrics/index.d.ts.map +0 -1
  340. package/lib/metrics/metrics/beacon.d.ts.map +0 -1
  341. package/lib/metrics/metrics/lodestar.d.ts.map +0 -1
  342. package/lib/metrics/metrics.d.ts.map +0 -1
  343. package/lib/metrics/nodeJsMetrics.d.ts.map +0 -1
  344. package/lib/metrics/options.d.ts.map +0 -1
  345. package/lib/metrics/server/http.d.ts.map +0 -1
  346. package/lib/metrics/server/index.d.ts.map +0 -1
  347. package/lib/metrics/utils/avgMinMax.d.ts.map +0 -1
  348. package/lib/metrics/utils/gauge.d.ts.map +0 -1
  349. package/lib/metrics/utils/registryMetricCreator.d.ts.map +0 -1
  350. package/lib/monitoring/clientStats.d.ts.map +0 -1
  351. package/lib/monitoring/index.d.ts.map +0 -1
  352. package/lib/monitoring/options.d.ts.map +0 -1
  353. package/lib/monitoring/properties.d.ts.map +0 -1
  354. package/lib/monitoring/service.d.ts.map +0 -1
  355. package/lib/monitoring/system.d.ts.map +0 -1
  356. package/lib/monitoring/types.d.ts.map +0 -1
  357. package/lib/network/core/events.d.ts.map +0 -1
  358. package/lib/network/core/index.d.ts.map +0 -1
  359. package/lib/network/core/metrics.d.ts.map +0 -1
  360. package/lib/network/core/networkCore.d.ts.map +0 -1
  361. package/lib/network/core/networkCoreWorker.d.ts.map +0 -1
  362. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +0 -1
  363. package/lib/network/core/types.d.ts.map +0 -1
  364. package/lib/network/discv5/index.d.ts.map +0 -1
  365. package/lib/network/discv5/types.d.ts.map +0 -1
  366. package/lib/network/discv5/utils.d.ts.map +0 -1
  367. package/lib/network/discv5/worker.d.ts.map +0 -1
  368. package/lib/network/events.d.ts.map +0 -1
  369. package/lib/network/forks.d.ts.map +0 -1
  370. package/lib/network/gossip/constants.d.ts.map +0 -1
  371. package/lib/network/gossip/encoding.d.ts.map +0 -1
  372. package/lib/network/gossip/errors.d.ts.map +0 -1
  373. package/lib/network/gossip/gossipsub.d.ts.map +0 -1
  374. package/lib/network/gossip/index.d.ts.map +0 -1
  375. package/lib/network/gossip/interface.d.ts.map +0 -1
  376. package/lib/network/gossip/metrics.d.ts.map +0 -1
  377. package/lib/network/gossip/scoringParameters.d.ts.map +0 -1
  378. package/lib/network/gossip/topic.d.ts.map +0 -1
  379. package/lib/network/index.d.ts.map +0 -1
  380. package/lib/network/interface.d.ts.map +0 -1
  381. package/lib/network/libp2p/error.d.ts.map +0 -1
  382. package/lib/network/libp2p/index.d.ts.map +0 -1
  383. package/lib/network/metadata.d.ts.map +0 -1
  384. package/lib/network/network.d.ts.map +0 -1
  385. package/lib/network/networkConfig.d.ts.map +0 -1
  386. package/lib/network/options.d.ts.map +0 -1
  387. package/lib/network/peers/client.d.ts.map +0 -1
  388. package/lib/network/peers/datastore.d.ts.map +0 -1
  389. package/lib/network/peers/discover.d.ts.map +0 -1
  390. package/lib/network/peers/index.d.ts.map +0 -1
  391. package/lib/network/peers/peerManager.d.ts.map +0 -1
  392. package/lib/network/peers/peersData.d.ts.map +0 -1
  393. package/lib/network/peers/score/constants.d.ts.map +0 -1
  394. package/lib/network/peers/score/index.d.ts.map +0 -1
  395. package/lib/network/peers/score/interface.d.ts.map +0 -1
  396. package/lib/network/peers/score/score.d.ts.map +0 -1
  397. package/lib/network/peers/score/store.d.ts.map +0 -1
  398. package/lib/network/peers/score/utils.d.ts.map +0 -1
  399. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +0 -1
  400. package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +0 -1
  401. package/lib/network/peers/utils/getConnectedPeerIds.d.ts.map +0 -1
  402. package/lib/network/peers/utils/index.d.ts.map +0 -1
  403. package/lib/network/peers/utils/prioritizePeers.d.ts.map +0 -1
  404. package/lib/network/peers/utils/subnetMap.d.ts.map +0 -1
  405. package/lib/network/processor/aggregatorTracker.d.ts.map +0 -1
  406. package/lib/network/processor/extractSlotRootFns.d.ts.map +0 -1
  407. package/lib/network/processor/gossipHandlers.d.ts.map +0 -1
  408. package/lib/network/processor/gossipQueues/index.d.ts.map +0 -1
  409. package/lib/network/processor/gossipQueues/indexed.d.ts.map +0 -1
  410. package/lib/network/processor/gossipQueues/linear.d.ts.map +0 -1
  411. package/lib/network/processor/gossipQueues/types.d.ts.map +0 -1
  412. package/lib/network/processor/gossipValidatorFn.d.ts.map +0 -1
  413. package/lib/network/processor/index.d.ts.map +0 -1
  414. package/lib/network/processor/types.d.ts.map +0 -1
  415. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +0 -1
  416. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +0 -1
  417. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +0 -1
  418. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
  419. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
  420. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +0 -1
  421. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +0 -1
  422. package/lib/network/reqresp/handlers/index.d.ts.map +0 -1
  423. package/lib/network/reqresp/handlers/lightClientBootstrap.d.ts.map +0 -1
  424. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.d.ts.map +0 -1
  425. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.d.ts.map +0 -1
  426. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +0 -1
  427. package/lib/network/reqresp/index.d.ts.map +0 -1
  428. package/lib/network/reqresp/interface.d.ts.map +0 -1
  429. package/lib/network/reqresp/protocols.d.ts.map +0 -1
  430. package/lib/network/reqresp/rateLimit.d.ts.map +0 -1
  431. package/lib/network/reqresp/score.d.ts.map +0 -1
  432. package/lib/network/reqresp/types.d.ts.map +0 -1
  433. package/lib/network/reqresp/utils/collect.d.ts.map +0 -1
  434. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts.map +0 -1
  435. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +0 -1
  436. package/lib/network/statusCache.d.ts.map +0 -1
  437. package/lib/network/subnets/attnetsService.d.ts.map +0 -1
  438. package/lib/network/subnets/index.d.ts.map +0 -1
  439. package/lib/network/subnets/interface.d.ts.map +0 -1
  440. package/lib/network/subnets/syncnetsService.d.ts.map +0 -1
  441. package/lib/network/subnets/util.d.ts.map +0 -1
  442. package/lib/network/util.d.ts.map +0 -1
  443. package/lib/node/index.d.ts.map +0 -1
  444. package/lib/node/nodejs.d.ts.map +0 -1
  445. package/lib/node/notifier.d.ts.map +0 -1
  446. package/lib/node/options.d.ts.map +0 -1
  447. package/lib/node/utils/interop/deposits.d.ts.map +0 -1
  448. package/lib/node/utils/interop/state.d.ts.map +0 -1
  449. package/lib/node/utils/lightclient.d.ts.map +0 -1
  450. package/lib/node/utils/state.d.ts.map +0 -1
  451. package/lib/sync/backfill/backfill.d.ts.map +0 -1
  452. package/lib/sync/backfill/errors.d.ts.map +0 -1
  453. package/lib/sync/backfill/index.d.ts.map +0 -1
  454. package/lib/sync/backfill/verify.d.ts.map +0 -1
  455. package/lib/sync/constants.d.ts.map +0 -1
  456. package/lib/sync/index.d.ts.map +0 -1
  457. package/lib/sync/interface.d.ts.map +0 -1
  458. package/lib/sync/options.d.ts.map +0 -1
  459. package/lib/sync/range/batch.d.ts.map +0 -1
  460. package/lib/sync/range/chain.d.ts.map +0 -1
  461. package/lib/sync/range/range.d.ts.map +0 -1
  462. package/lib/sync/range/utils/batches.d.ts.map +0 -1
  463. package/lib/sync/range/utils/chainTarget.d.ts.map +0 -1
  464. package/lib/sync/range/utils/hashBlocks.d.ts.map +0 -1
  465. package/lib/sync/range/utils/index.d.ts.map +0 -1
  466. package/lib/sync/range/utils/peerBalancer.d.ts.map +0 -1
  467. package/lib/sync/range/utils/updateChains.d.ts.map +0 -1
  468. package/lib/sync/sync.d.ts.map +0 -1
  469. package/lib/sync/types.d.ts.map +0 -1
  470. package/lib/sync/unknownBlock.d.ts.map +0 -1
  471. package/lib/sync/utils/downloadByRange.d.ts.map +0 -1
  472. package/lib/sync/utils/downloadByRoot.d.ts.map +0 -1
  473. package/lib/sync/utils/pendingBlocksTree.d.ts.map +0 -1
  474. package/lib/sync/utils/remoteSyncType.d.ts.map +0 -1
  475. package/lib/util/address.d.ts.map +0 -1
  476. package/lib/util/array.d.ts.map +0 -1
  477. package/lib/util/asyncIterableToEvents.d.ts.map +0 -1
  478. package/lib/util/binarySearch.d.ts.map +0 -1
  479. package/lib/util/bitArray.d.ts.map +0 -1
  480. package/lib/util/blobs.d.ts.map +0 -1
  481. package/lib/util/bufferPool.d.ts.map +0 -1
  482. package/lib/util/bytes.d.ts.map +0 -1
  483. package/lib/util/chunkify.d.ts.map +0 -1
  484. package/lib/util/clock.d.ts.map +0 -1
  485. package/lib/util/dataColumns.d.ts.map +0 -1
  486. package/lib/util/dependentRoot.d.ts.map +0 -1
  487. package/lib/util/enum.d.ts.map +0 -1
  488. package/lib/util/error.d.ts.map +0 -1
  489. package/lib/util/eventLoop.d.ts.map +0 -1
  490. package/lib/util/execution.d.ts.map +0 -1
  491. package/lib/util/file.d.ts.map +0 -1
  492. package/lib/util/forkChoice.d.ts.map +0 -1
  493. package/lib/util/forkName.d.ts.map +0 -1
  494. package/lib/util/graffiti.d.ts.map +0 -1
  495. package/lib/util/hex.d.ts.map +0 -1
  496. package/lib/util/index.d.ts.map +0 -1
  497. package/lib/util/ip.d.ts.map +0 -1
  498. package/lib/util/itTrigger.d.ts.map +0 -1
  499. package/lib/util/kzg.d.ts.map +0 -1
  500. package/lib/util/map.d.ts.map +0 -1
  501. package/lib/util/metadata.d.ts.map +0 -1
  502. package/lib/util/multifork.d.ts.map +0 -1
  503. package/lib/util/numpy.d.ts.map +0 -1
  504. package/lib/util/peerId.d.ts.map +0 -1
  505. package/lib/util/profile.d.ts.map +0 -1
  506. package/lib/util/promises.d.ts.map +0 -1
  507. package/lib/util/queue/errors.d.ts.map +0 -1
  508. package/lib/util/queue/fnQueue.d.ts.map +0 -1
  509. package/lib/util/queue/index.d.ts.map +0 -1
  510. package/lib/util/queue/itemQueue.d.ts.map +0 -1
  511. package/lib/util/queue/options.d.ts.map +0 -1
  512. package/lib/util/serializedCache.d.ts.map +0 -1
  513. package/lib/util/set.d.ts.map +0 -1
  514. package/lib/util/shuffle.d.ts.map +0 -1
  515. package/lib/util/sortBy.d.ts.map +0 -1
  516. package/lib/util/sszBytes.d.ts.map +0 -1
  517. package/lib/util/strictEvents.d.ts.map +0 -1
  518. package/lib/util/time.d.ts.map +0 -1
  519. package/lib/util/timeSeries.d.ts.map +0 -1
  520. package/lib/util/types.d.ts.map +0 -1
  521. package/lib/util/workerEvents.d.ts.map +0 -1
  522. package/lib/util/wrapError.d.ts.map +0 -1
  523. package/src/api/impl/api.ts +0 -26
  524. package/src/api/impl/beacon/blocks/index.ts +0 -744
  525. package/src/api/impl/beacon/blocks/utils.ts +0 -75
  526. package/src/api/impl/beacon/index.ts +0 -35
  527. package/src/api/impl/beacon/pool/index.ts +0 -314
  528. package/src/api/impl/beacon/rewards/index.ts +0 -30
  529. package/src/api/impl/beacon/state/index.ts +0 -406
  530. package/src/api/impl/beacon/state/utils.ts +0 -189
  531. package/src/api/impl/config/constants.ts +0 -127
  532. package/src/api/impl/config/index.ts +0 -59
  533. package/src/api/impl/debug/index.ts +0 -131
  534. package/src/api/impl/errors.ts +0 -50
  535. package/src/api/impl/events/index.ts +0 -33
  536. package/src/api/impl/index.ts +0 -6
  537. package/src/api/impl/lightclient/index.ts +0 -64
  538. package/src/api/impl/lodestar/index.ts +0 -257
  539. package/src/api/impl/node/index.ts +0 -88
  540. package/src/api/impl/node/utils.ts +0 -51
  541. package/src/api/impl/proof/index.ts +0 -60
  542. package/src/api/impl/types.ts +0 -17
  543. package/src/api/impl/utils.ts +0 -25
  544. package/src/api/impl/validator/index.ts +0 -1540
  545. package/src/api/impl/validator/utils.ts +0 -85
  546. package/src/api/index.ts +0 -2
  547. package/src/api/options.ts +0 -16
  548. package/src/api/rest/activeSockets.ts +0 -109
  549. package/src/api/rest/base.ts +0 -216
  550. package/src/api/rest/index.ts +0 -63
  551. package/src/api/rest/swaggerUI.ts +0 -80
  552. package/src/bun-wrappers/prometheus-gc-stats.ts +0 -7
  553. package/src/chain/ColumnReconstructionTracker.ts +0 -90
  554. package/src/chain/GetBlobsTracker.ts +0 -115
  555. package/src/chain/archiveStore/archiveStore.ts +0 -222
  556. package/src/chain/archiveStore/constants.ts +0 -5
  557. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +0 -116
  558. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +0 -68
  559. package/src/chain/archiveStore/historicalState/metrics.ts +0 -214
  560. package/src/chain/archiveStore/historicalState/types.ts +0 -41
  561. package/src/chain/archiveStore/historicalState/worker.ts +0 -77
  562. package/src/chain/archiveStore/index.ts +0 -3
  563. package/src/chain/archiveStore/interface.ts +0 -75
  564. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +0 -138
  565. package/src/chain/archiveStore/utils/archiveBlocks.ts +0 -437
  566. package/src/chain/archiveStore/utils/pruneHistory.ts +0 -56
  567. package/src/chain/archiveStore/utils/updateBackfillRange.ts +0 -50
  568. package/src/chain/balancesCache.ts +0 -52
  569. package/src/chain/beaconProposerCache.ts +0 -43
  570. package/src/chain/blocks/blockInput/blockInput.ts +0 -852
  571. package/src/chain/blocks/blockInput/errors.ts +0 -48
  572. package/src/chain/blocks/blockInput/index.ts +0 -4
  573. package/src/chain/blocks/blockInput/types.ts +0 -145
  574. package/src/chain/blocks/blockInput/utils.ts +0 -21
  575. package/src/chain/blocks/importBlock.ts +0 -597
  576. package/src/chain/blocks/index.ts +0 -179
  577. package/src/chain/blocks/types.ts +0 -101
  578. package/src/chain/blocks/utils/blowfishBanner.ts +0 -28
  579. package/src/chain/blocks/utils/chainSegment.ts +0 -29
  580. package/src/chain/blocks/utils/checkpoint.ts +0 -25
  581. package/src/chain/blocks/utils/giraffeBanner.ts +0 -30
  582. package/src/chain/blocks/utils/ownBanner.ts +0 -20
  583. package/src/chain/blocks/utils/pandaMergeTransitionBanner.ts +0 -43
  584. package/src/chain/blocks/utils/zebraBanner.ts +0 -45
  585. package/src/chain/blocks/verifyBlock.ts +0 -242
  586. package/src/chain/blocks/verifyBlocksDataAvailability.ts +0 -42
  587. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +0 -438
  588. package/src/chain/blocks/verifyBlocksSanityChecks.ts +0 -129
  589. package/src/chain/blocks/verifyBlocksSignatures.ts +0 -105
  590. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +0 -114
  591. package/src/chain/blocks/writeBlockInputToDb.ts +0 -120
  592. package/src/chain/bls/index.ts +0 -4
  593. package/src/chain/bls/interface.ts +0 -68
  594. package/src/chain/bls/maybeBatch.ts +0 -45
  595. package/src/chain/bls/multithread/index.ts +0 -582
  596. package/src/chain/bls/multithread/jobItem.ts +0 -119
  597. package/src/chain/bls/multithread/poolSize.ts +0 -16
  598. package/src/chain/bls/multithread/types.ts +0 -38
  599. package/src/chain/bls/multithread/utils.ts +0 -19
  600. package/src/chain/bls/multithread/worker.ts +0 -114
  601. package/src/chain/bls/singleThread.ts +0 -87
  602. package/src/chain/bls/utils.ts +0 -30
  603. package/src/chain/chain.ts +0 -1354
  604. package/src/chain/emitter.ts +0 -113
  605. package/src/chain/errors/attestationError.ts +0 -194
  606. package/src/chain/errors/attesterSlashingError.ts +0 -11
  607. package/src/chain/errors/blobSidecarError.ts +0 -60
  608. package/src/chain/errors/blockError.ts +0 -166
  609. package/src/chain/errors/blsToExecutionChangeError.ts +0 -13
  610. package/src/chain/errors/dataColumnSidecarError.ts +0 -80
  611. package/src/chain/errors/gossipValidation.ts +0 -20
  612. package/src/chain/errors/index.ts +0 -10
  613. package/src/chain/errors/lightClientError.ts +0 -30
  614. package/src/chain/errors/proposerSlashingError.ts +0 -11
  615. package/src/chain/errors/syncCommitteeError.ts +0 -36
  616. package/src/chain/errors/voluntaryExitError.ts +0 -13
  617. package/src/chain/forkChoice/index.ts +0 -112
  618. package/src/chain/genesis/genesis.ts +0 -190
  619. package/src/chain/genesis/interface.ts +0 -14
  620. package/src/chain/index.ts +0 -6
  621. package/src/chain/initState.ts +0 -221
  622. package/src/chain/interface.ts +0 -280
  623. package/src/chain/lightClient/index.ts +0 -764
  624. package/src/chain/lightClient/proofs.ts +0 -85
  625. package/src/chain/lightClient/types.ts +0 -33
  626. package/src/chain/opPools/aggregatedAttestationPool.ts +0 -1063
  627. package/src/chain/opPools/attestationPool.ts +0 -282
  628. package/src/chain/opPools/index.ts +0 -5
  629. package/src/chain/opPools/opPool.ts +0 -462
  630. package/src/chain/opPools/syncCommitteeMessagePool.ts +0 -169
  631. package/src/chain/opPools/syncContributionAndProofPool.ts +0 -240
  632. package/src/chain/opPools/types.ts +0 -35
  633. package/src/chain/opPools/utils.ts +0 -65
  634. package/src/chain/options.ts +0 -138
  635. package/src/chain/prepareNextSlot.ts +0 -277
  636. package/src/chain/produceBlock/computeNewStateRoot.ts +0 -55
  637. package/src/chain/produceBlock/index.ts +0 -2
  638. package/src/chain/produceBlock/produceBlockBody.ts +0 -797
  639. package/src/chain/produceBlock/validateBlobsAndKzgCommitments.ts +0 -54
  640. package/src/chain/regen/errors.ts +0 -30
  641. package/src/chain/regen/index.ts +0 -4
  642. package/src/chain/regen/interface.ts +0 -93
  643. package/src/chain/regen/queued.ts +0 -317
  644. package/src/chain/regen/regen.ts +0 -424
  645. package/src/chain/reprocess.ts +0 -161
  646. package/src/chain/rewards/attestationsRewards.ts +0 -196
  647. package/src/chain/rewards/blockRewards.ts +0 -150
  648. package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
  649. package/src/chain/seenCache/index.ts +0 -5
  650. package/src/chain/seenCache/seenAggregateAndProof.ts +0 -120
  651. package/src/chain/seenCache/seenAttestationData.ts +0 -145
  652. package/src/chain/seenCache/seenAttesters.ts +0 -58
  653. package/src/chain/seenCache/seenBlockAttesters.ts +0 -18
  654. package/src/chain/seenCache/seenBlockProposers.ts +0 -48
  655. package/src/chain/seenCache/seenCommittee.ts +0 -43
  656. package/src/chain/seenCache/seenCommitteeContribution.ts +0 -104
  657. package/src/chain/seenCache/seenGossipBlockInput.ts +0 -373
  658. package/src/chain/serializeState.ts +0 -32
  659. package/src/chain/shufflingCache.ts +0 -238
  660. package/src/chain/stateCache/blockStateCacheImpl.ts +0 -150
  661. package/src/chain/stateCache/datastore/db.ts +0 -36
  662. package/src/chain/stateCache/datastore/file.ts +0 -53
  663. package/src/chain/stateCache/datastore/index.ts +0 -2
  664. package/src/chain/stateCache/datastore/types.ts +0 -13
  665. package/src/chain/stateCache/fifoBlockStateCache.ts +0 -208
  666. package/src/chain/stateCache/inMemoryCheckpointsCache.ts +0 -198
  667. package/src/chain/stateCache/index.ts +0 -3
  668. package/src/chain/stateCache/mapMetrics.ts +0 -52
  669. package/src/chain/stateCache/persistentCheckpointsCache.ts +0 -837
  670. package/src/chain/stateCache/types.ts +0 -86
  671. package/src/chain/validation/aggregateAndProof.ts +0 -258
  672. package/src/chain/validation/attestation.ts +0 -885
  673. package/src/chain/validation/attesterSlashing.ts +0 -61
  674. package/src/chain/validation/blobSidecar.ts +0 -301
  675. package/src/chain/validation/block.ts +0 -188
  676. package/src/chain/validation/blsToExecutionChange.ts +0 -61
  677. package/src/chain/validation/dataColumnSidecar.ts +0 -381
  678. package/src/chain/validation/index.ts +0 -9
  679. package/src/chain/validation/lightClientFinalityUpdate.ts +0 -46
  680. package/src/chain/validation/lightClientOptimisticUpdate.ts +0 -68
  681. package/src/chain/validation/proposerSlashing.ts +0 -54
  682. package/src/chain/validation/signatureSets/aggregateAndProof.ts +0 -38
  683. package/src/chain/validation/signatureSets/contributionAndProof.ts +0 -27
  684. package/src/chain/validation/signatureSets/index.ts +0 -6
  685. package/src/chain/validation/signatureSets/selectionProof.ts +0 -27
  686. package/src/chain/validation/signatureSets/syncCommittee.ts +0 -22
  687. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +0 -18
  688. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +0 -27
  689. package/src/chain/validation/syncCommittee.ts +0 -165
  690. package/src/chain/validation/syncCommitteeContributionAndProof.ts +0 -122
  691. package/src/chain/validation/voluntaryExit.ts +0 -58
  692. package/src/chain/validatorMonitor.ts +0 -1309
  693. package/src/constants/constants.ts +0 -15
  694. package/src/constants/index.ts +0 -2
  695. package/src/constants/network.ts +0 -52
  696. package/src/db/beacon.ts +0 -113
  697. package/src/db/buckets.ts +0 -80
  698. package/src/db/index.ts +0 -2
  699. package/src/db/interface.ts +0 -76
  700. package/src/db/options.ts +0 -7
  701. package/src/db/repositories/attesterSlashing.ts +0 -38
  702. package/src/db/repositories/backfilledRanges.ts +0 -29
  703. package/src/db/repositories/blobSidecars.ts +0 -37
  704. package/src/db/repositories/blobSidecarsArchive.ts +0 -28
  705. package/src/db/repositories/block.ts +0 -33
  706. package/src/db/repositories/blockArchive.ts +0 -170
  707. package/src/db/repositories/blockArchiveIndex.ts +0 -45
  708. package/src/db/repositories/blsToExecutionChange.ts +0 -16
  709. package/src/db/repositories/checkpointState.ts +0 -31
  710. package/src/db/repositories/dataColumnSidecar.ts +0 -49
  711. package/src/db/repositories/dataColumnSidecarArchive.ts +0 -56
  712. package/src/db/repositories/depositDataRoot.ts +0 -80
  713. package/src/db/repositories/depositEvent.ts +0 -32
  714. package/src/db/repositories/eth1Data.ts +0 -33
  715. package/src/db/repositories/index.ts +0 -20
  716. package/src/db/repositories/lightclientBestUpdate.ts +0 -41
  717. package/src/db/repositories/lightclientCheckpointHeader.ts +0 -32
  718. package/src/db/repositories/lightclientSyncCommittee.ts +0 -16
  719. package/src/db/repositories/lightclientSyncCommitteeWitness.ts +0 -77
  720. package/src/db/repositories/proposerSlashing.ts +0 -15
  721. package/src/db/repositories/stateArchive.ts +0 -69
  722. package/src/db/repositories/stateArchiveIndex.ts +0 -18
  723. package/src/db/repositories/voluntaryExit.ts +0 -15
  724. package/src/db/single/index.ts +0 -2
  725. package/src/db/single/preGenesisState.ts +0 -37
  726. package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
  727. package/src/eth1/errors.ts +0 -40
  728. package/src/eth1/eth1DataCache.ts +0 -26
  729. package/src/eth1/eth1DepositDataTracker.ts +0 -410
  730. package/src/eth1/eth1DepositsCache.ts +0 -141
  731. package/src/eth1/eth1MergeBlockTracker.ts +0 -328
  732. package/src/eth1/index.ts +0 -157
  733. package/src/eth1/interface.ts +0 -131
  734. package/src/eth1/options.ts +0 -28
  735. package/src/eth1/provider/eth1Provider.ts +0 -229
  736. package/src/eth1/provider/jsonRpcHttpClient.ts +0 -390
  737. package/src/eth1/provider/jwt.ts +0 -36
  738. package/src/eth1/provider/utils.ts +0 -136
  739. package/src/eth1/stream.ts +0 -75
  740. package/src/eth1/utils/depositContract.ts +0 -37
  741. package/src/eth1/utils/deposits.ts +0 -70
  742. package/src/eth1/utils/eth1Data.ts +0 -100
  743. package/src/eth1/utils/eth1DepositEvent.ts +0 -12
  744. package/src/eth1/utils/eth1Vote.ts +0 -142
  745. package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
  746. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
  747. package/src/execution/builder/cache.ts +0 -39
  748. package/src/execution/builder/http.ts +0 -229
  749. package/src/execution/builder/index.ts +0 -27
  750. package/src/execution/builder/interface.ts +0 -49
  751. package/src/execution/builder/utils.ts +0 -19
  752. package/src/execution/engine/disabled.ts +0 -35
  753. package/src/execution/engine/http.ts +0 -644
  754. package/src/execution/engine/index.ts +0 -63
  755. package/src/execution/engine/interface.ts +0 -199
  756. package/src/execution/engine/mock.ts +0 -493
  757. package/src/execution/engine/payloadIdCache.ts +0 -54
  758. package/src/execution/engine/types.ts +0 -640
  759. package/src/execution/engine/utils.ts +0 -136
  760. package/src/execution/index.ts +0 -4
  761. package/src/index.ts +0 -20
  762. package/src/metrics/index.ts +0 -4
  763. package/src/metrics/metrics/beacon.ts +0 -390
  764. package/src/metrics/metrics/lodestar.ts +0 -1870
  765. package/src/metrics/metrics.ts +0 -43
  766. package/src/metrics/nodeJsMetrics.ts +0 -19
  767. package/src/metrics/options.ts +0 -22
  768. package/src/metrics/server/http.ts +0 -114
  769. package/src/metrics/server/index.ts +0 -1
  770. package/src/metrics/utils/avgMinMax.ts +0 -87
  771. package/src/metrics/utils/gauge.ts +0 -22
  772. package/src/metrics/utils/registryMetricCreator.ts +0 -41
  773. package/src/monitoring/clientStats.ts +0 -297
  774. package/src/monitoring/index.ts +0 -2
  775. package/src/monitoring/options.ts +0 -19
  776. package/src/monitoring/properties.ts +0 -152
  777. package/src/monitoring/service.ts +0 -235
  778. package/src/monitoring/system.ts +0 -146
  779. package/src/monitoring/types.ts +0 -21
  780. package/src/network/core/events.ts +0 -59
  781. package/src/network/core/index.ts +0 -3
  782. package/src/network/core/metrics.ts +0 -304
  783. package/src/network/core/networkCore.ts +0 -599
  784. package/src/network/core/networkCoreWorker.ts +0 -176
  785. package/src/network/core/networkCoreWorkerHandler.ts +0 -284
  786. package/src/network/core/types.ts +0 -119
  787. package/src/network/discv5/index.ts +0 -132
  788. package/src/network/discv5/types.ts +0 -74
  789. package/src/network/discv5/utils.ts +0 -50
  790. package/src/network/discv5/worker.ts +0 -137
  791. package/src/network/events.ts +0 -51
  792. package/src/network/forks.ts +0 -94
  793. package/src/network/gossip/constants.ts +0 -15
  794. package/src/network/gossip/encoding.ts +0 -111
  795. package/src/network/gossip/errors.ts +0 -7
  796. package/src/network/gossip/gossipsub.ts +0 -384
  797. package/src/network/gossip/index.ts +0 -4
  798. package/src/network/gossip/interface.ts +0 -215
  799. package/src/network/gossip/metrics.ts +0 -71
  800. package/src/network/gossip/scoringParameters.ts +0 -333
  801. package/src/network/gossip/topic.ts +0 -332
  802. package/src/network/index.ts +0 -8
  803. package/src/network/interface.ts +0 -134
  804. package/src/network/libp2p/error.ts +0 -55
  805. package/src/network/libp2p/index.ts +0 -153
  806. package/src/network/metadata.ts +0 -162
  807. package/src/network/network.ts +0 -767
  808. package/src/network/networkConfig.ts +0 -12
  809. package/src/network/options.ts +0 -70
  810. package/src/network/peers/client.ts +0 -29
  811. package/src/network/peers/datastore.ts +0 -188
  812. package/src/network/peers/discover.ts +0 -647
  813. package/src/network/peers/index.ts +0 -2
  814. package/src/network/peers/peerManager.ts +0 -899
  815. package/src/network/peers/peersData.ts +0 -65
  816. package/src/network/peers/score/constants.ts +0 -34
  817. package/src/network/peers/score/index.ts +0 -4
  818. package/src/network/peers/score/interface.ts +0 -74
  819. package/src/network/peers/score/score.ts +0 -200
  820. package/src/network/peers/score/store.ts +0 -95
  821. package/src/network/peers/score/utils.ts +0 -37
  822. package/src/network/peers/utils/assertPeerRelevance.ts +0 -99
  823. package/src/network/peers/utils/enrSubnetsDeserialize.ts +0 -27
  824. package/src/network/peers/utils/getConnectedPeerIds.ts +0 -33
  825. package/src/network/peers/utils/index.ts +0 -4
  826. package/src/network/peers/utils/prioritizePeers.ts +0 -627
  827. package/src/network/peers/utils/subnetMap.ts +0 -88
  828. package/src/network/processor/aggregatorTracker.ts +0 -38
  829. package/src/network/processor/extractSlotRootFns.ts +0 -64
  830. package/src/network/processor/gossipHandlers.ts +0 -951
  831. package/src/network/processor/gossipQueues/index.ts +0 -114
  832. package/src/network/processor/gossipQueues/indexed.ts +0 -219
  833. package/src/network/processor/gossipQueues/linear.ts +0 -162
  834. package/src/network/processor/gossipQueues/types.ts +0 -57
  835. package/src/network/processor/gossipValidatorFn.ts +0 -142
  836. package/src/network/processor/index.ts +0 -496
  837. package/src/network/processor/types.ts +0 -27
  838. package/src/network/reqresp/ReqRespBeaconNode.ts +0 -373
  839. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +0 -101
  840. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +0 -49
  841. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -114
  842. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -62
  843. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +0 -144
  844. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +0 -88
  845. package/src/network/reqresp/handlers/index.ts +0 -78
  846. package/src/network/reqresp/handlers/lightClientBootstrap.ts +0 -31
  847. package/src/network/reqresp/handlers/lightClientFinalityUpdate.ts +0 -21
  848. package/src/network/reqresp/handlers/lightClientOptimisticUpdate.ts +0 -21
  849. package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +0 -39
  850. package/src/network/reqresp/index.ts +0 -2
  851. package/src/network/reqresp/interface.ts +0 -45
  852. package/src/network/reqresp/protocols.ts +0 -146
  853. package/src/network/reqresp/rateLimit.ts +0 -112
  854. package/src/network/reqresp/score.ts +0 -70
  855. package/src/network/reqresp/types.ts +0 -174
  856. package/src/network/reqresp/utils/collect.ts +0 -84
  857. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +0 -57
  858. package/src/network/reqresp/utils/dataColumnResponseValidation.ts +0 -99
  859. package/src/network/statusCache.ts +0 -17
  860. package/src/network/subnets/attnetsService.ts +0 -385
  861. package/src/network/subnets/index.ts +0 -2
  862. package/src/network/subnets/interface.ts +0 -66
  863. package/src/network/subnets/syncnetsService.ts +0 -147
  864. package/src/network/subnets/util.ts +0 -63
  865. package/src/network/util.ts +0 -29
  866. package/src/node/index.ts +0 -2
  867. package/src/node/nodejs.ts +0 -349
  868. package/src/node/notifier.ts +0 -206
  869. package/src/node/options.ts +0 -51
  870. package/src/node/utils/interop/deposits.ts +0 -53
  871. package/src/node/utils/interop/state.ts +0 -59
  872. package/src/node/utils/lightclient.ts +0 -7
  873. package/src/node/utils/state.ts +0 -37
  874. package/src/sync/backfill/backfill.ts +0 -893
  875. package/src/sync/backfill/errors.ts +0 -23
  876. package/src/sync/backfill/index.ts +0 -1
  877. package/src/sync/backfill/verify.ts +0 -58
  878. package/src/sync/constants.ts +0 -71
  879. package/src/sync/index.ts +0 -2
  880. package/src/sync/interface.ts +0 -55
  881. package/src/sync/options.ts +0 -45
  882. package/src/sync/range/batch.ts +0 -455
  883. package/src/sync/range/chain.ts +0 -715
  884. package/src/sync/range/range.ts +0 -354
  885. package/src/sync/range/utils/batches.ts +0 -119
  886. package/src/sync/range/utils/chainTarget.ts +0 -62
  887. package/src/sync/range/utils/hashBlocks.ts +0 -27
  888. package/src/sync/range/utils/index.ts +0 -5
  889. package/src/sync/range/utils/peerBalancer.ts +0 -184
  890. package/src/sync/range/utils/updateChains.ts +0 -66
  891. package/src/sync/sync.ts +0 -290
  892. package/src/sync/types.ts +0 -57
  893. package/src/sync/unknownBlock.ts +0 -859
  894. package/src/sync/utils/downloadByRange.ts +0 -808
  895. package/src/sync/utils/downloadByRoot.ts +0 -560
  896. package/src/sync/utils/pendingBlocksTree.ts +0 -97
  897. package/src/sync/utils/remoteSyncType.ts +0 -144
  898. package/src/util/address.ts +0 -3
  899. package/src/util/array.ts +0 -311
  900. package/src/util/asyncIterableToEvents.ts +0 -164
  901. package/src/util/binarySearch.ts +0 -48
  902. package/src/util/bitArray.ts +0 -84
  903. package/src/util/blobs.ts +0 -210
  904. package/src/util/bufferPool.ts +0 -95
  905. package/src/util/bytes.ts +0 -11
  906. package/src/util/chunkify.ts +0 -27
  907. package/src/util/clock.ts +0 -212
  908. package/src/util/dataColumns.ts +0 -415
  909. package/src/util/dependentRoot.ts +0 -47
  910. package/src/util/enum.ts +0 -17
  911. package/src/util/error.ts +0 -56
  912. package/src/util/eventLoop.ts +0 -22
  913. package/src/util/execution.ts +0 -223
  914. package/src/util/file.ts +0 -52
  915. package/src/util/forkChoice.ts +0 -5
  916. package/src/util/forkName.ts +0 -20
  917. package/src/util/graffiti.ts +0 -39
  918. package/src/util/hex.ts +0 -9
  919. package/src/util/index.ts +0 -2
  920. package/src/util/ip.ts +0 -6
  921. package/src/util/itTrigger.ts +0 -49
  922. package/src/util/kzg.ts +0 -3
  923. package/src/util/map.ts +0 -77
  924. package/src/util/metadata.ts +0 -22
  925. package/src/util/multifork.ts +0 -69
  926. package/src/util/numpy.ts +0 -8
  927. package/src/util/peerId.ts +0 -16
  928. package/src/util/profile.ts +0 -54
  929. package/src/util/promises.ts +0 -14
  930. package/src/util/queue/errors.ts +0 -14
  931. package/src/util/queue/fnQueue.ts +0 -16
  932. package/src/util/queue/index.ts +0 -4
  933. package/src/util/queue/itemQueue.ts +0 -128
  934. package/src/util/queue/options.ts +0 -37
  935. package/src/util/serializedCache.ts +0 -20
  936. package/src/util/set.ts +0 -62
  937. package/src/util/shuffle.ts +0 -21
  938. package/src/util/sortBy.ts +0 -19
  939. package/src/util/sszBytes.ts +0 -481
  940. package/src/util/strictEvents.ts +0 -8
  941. package/src/util/time.ts +0 -13
  942. package/src/util/timeSeries.ts +0 -118
  943. package/src/util/types.ts +0 -31
  944. package/src/util/workerEvents.ts +0 -142
  945. 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
- }