@lodestar/beacon-node 1.35.0-dev.c88a6ed255 → 1.35.0-dev.cec9bef1db

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 (499) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +58 -46
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/config/constants.d.ts +5 -0
  4. package/lib/api/impl/config/constants.js +6 -1
  5. package/lib/api/impl/config/constants.js.map +1 -1
  6. package/lib/api/impl/debug/index.js +1 -1
  7. package/lib/api/impl/debug/index.js.map +1 -1
  8. package/lib/api/impl/errors.js +2 -0
  9. package/lib/api/impl/errors.js.map +1 -1
  10. package/lib/api/impl/index.d.ts +3 -3
  11. package/lib/api/impl/index.js +3 -3
  12. package/lib/api/impl/index.js.map +1 -1
  13. package/lib/api/impl/lodestar/index.js +1 -1
  14. package/lib/api/impl/lodestar/index.js.map +1 -1
  15. package/lib/api/impl/validator/index.js +2 -1
  16. package/lib/api/impl/validator/index.js.map +1 -1
  17. package/lib/api/rest/activeSockets.js +3 -2
  18. package/lib/api/rest/activeSockets.js.map +1 -1
  19. package/lib/api/rest/base.d.ts +1 -1
  20. package/lib/api/rest/base.js +6 -2
  21. package/lib/api/rest/base.js.map +1 -1
  22. package/lib/api/rest/index.js +2 -0
  23. package/lib/api/rest/index.js.map +1 -1
  24. package/lib/api/rest/swaggerUI.js +4 -2
  25. package/lib/api/rest/swaggerUI.js.map +1 -1
  26. package/lib/bun-wrappers/prometheus-gc-stats.d.ts +2 -0
  27. package/lib/bun-wrappers/prometheus-gc-stats.js +8 -0
  28. package/lib/bun-wrappers/prometheus-gc-stats.js.map +1 -0
  29. package/lib/chain/ColumnReconstructionTracker.d.ts +32 -0
  30. package/lib/chain/ColumnReconstructionTracker.js +71 -0
  31. package/lib/chain/ColumnReconstructionTracker.js.map +1 -0
  32. package/lib/chain/GetBlobsTracker.d.ts +31 -0
  33. package/lib/chain/GetBlobsTracker.js +82 -0
  34. package/lib/chain/GetBlobsTracker.js.map +1 -0
  35. package/lib/chain/archiveStore/archiveStore.js +49 -38
  36. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  37. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +3 -0
  38. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  39. package/lib/chain/archiveStore/index.d.ts +1 -1
  40. package/lib/chain/archiveStore/index.js +1 -1
  41. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +5 -0
  42. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  43. package/lib/chain/balancesCache.js +1 -3
  44. package/lib/chain/balancesCache.js.map +1 -1
  45. package/lib/chain/beaconProposerCache.js +1 -0
  46. package/lib/chain/beaconProposerCache.js.map +1 -1
  47. package/lib/chain/blocks/blockInput/blockInput.d.ts +19 -7
  48. package/lib/chain/blocks/blockInput/blockInput.js +132 -88
  49. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  50. package/lib/chain/blocks/blockInput/index.d.ts +1 -1
  51. package/lib/chain/blocks/blockInput/index.js +1 -1
  52. package/lib/chain/blocks/blockInput/types.d.ts +19 -10
  53. package/lib/chain/blocks/blockInput/types.js +1 -0
  54. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  55. package/lib/chain/blocks/blockInput/utils.d.ts +0 -4
  56. package/lib/chain/blocks/blockInput/utils.js +6 -29
  57. package/lib/chain/blocks/blockInput/utils.js.map +1 -1
  58. package/lib/chain/blocks/importBlock.js +16 -12
  59. package/lib/chain/blocks/importBlock.js.map +1 -1
  60. package/lib/chain/blocks/index.d.ts +6 -5
  61. package/lib/chain/blocks/index.js +5 -4
  62. package/lib/chain/blocks/index.js.map +1 -1
  63. package/lib/chain/blocks/types.d.ts +3 -106
  64. package/lib/chain/blocks/types.js +0 -119
  65. package/lib/chain/blocks/types.js.map +1 -1
  66. package/lib/chain/blocks/utils/chainSegment.d.ts +2 -2
  67. package/lib/chain/blocks/utils/chainSegment.js +2 -2
  68. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  69. package/lib/chain/blocks/verifyBlock.d.ts +3 -3
  70. package/lib/chain/blocks/verifyBlock.js +15 -14
  71. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  72. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts +7 -22
  73. package/lib/chain/blocks/verifyBlocksDataAvailability.js +18 -110
  74. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  75. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +4 -3
  76. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +24 -22
  77. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  78. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts +4 -3
  79. package/lib/chain/blocks/verifyBlocksSanityChecks.js +2 -2
  80. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  81. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +3 -2
  82. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +2 -2
  83. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  84. package/lib/chain/blocks/writeBlockInputToDb.d.ts +3 -3
  85. package/lib/chain/blocks/writeBlockInputToDb.js +61 -66
  86. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  87. package/lib/chain/bls/multithread/index.js +168 -163
  88. package/lib/chain/bls/multithread/index.js.map +1 -1
  89. package/lib/chain/bls/singleThread.js +1 -0
  90. package/lib/chain/bls/singleThread.js.map +1 -1
  91. package/lib/chain/chain.d.ts +13 -11
  92. package/lib/chain/chain.js +79 -20
  93. package/lib/chain/chain.js.map +1 -1
  94. package/lib/chain/emitter.d.ts +43 -2
  95. package/lib/chain/emitter.js +18 -0
  96. package/lib/chain/emitter.js.map +1 -1
  97. package/lib/chain/errors/blobSidecarError.d.ts +24 -0
  98. package/lib/chain/errors/blobSidecarError.js +10 -0
  99. package/lib/chain/errors/blobSidecarError.js.map +1 -1
  100. package/lib/chain/errors/blockError.js +1 -0
  101. package/lib/chain/errors/blockError.js.map +1 -1
  102. package/lib/chain/errors/dataColumnSidecarError.d.ts +42 -0
  103. package/lib/chain/errors/dataColumnSidecarError.js +14 -0
  104. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  105. package/lib/chain/errors/gossipValidation.js +1 -0
  106. package/lib/chain/errors/gossipValidation.js.map +1 -1
  107. package/lib/chain/errors/index.d.ts +2 -2
  108. package/lib/chain/errors/index.js +2 -2
  109. package/lib/chain/errors/index.js.map +1 -1
  110. package/lib/chain/forkChoice/index.js.map +1 -1
  111. package/lib/chain/genesis/genesis.js +16 -5
  112. package/lib/chain/genesis/genesis.js.map +1 -1
  113. package/lib/chain/index.d.ts +2 -2
  114. package/lib/chain/index.js +2 -2
  115. package/lib/chain/index.js.map +1 -1
  116. package/lib/chain/interface.d.ts +12 -9
  117. package/lib/chain/interface.js.map +1 -1
  118. package/lib/chain/lightClient/index.js +16 -9
  119. package/lib/chain/lightClient/index.js.map +1 -1
  120. package/lib/chain/lightClient/proofs.js.map +1 -1
  121. package/lib/chain/opPools/aggregatedAttestationPool.js +14 -9
  122. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  123. package/lib/chain/opPools/attestationPool.js +8 -3
  124. package/lib/chain/opPools/attestationPool.js.map +1 -1
  125. package/lib/chain/opPools/index.d.ts +1 -1
  126. package/lib/chain/opPools/index.js +1 -1
  127. package/lib/chain/opPools/index.js.map +1 -1
  128. package/lib/chain/opPools/opPool.js +10 -12
  129. package/lib/chain/opPools/opPool.js.map +1 -1
  130. package/lib/chain/opPools/syncCommitteeMessagePool.js +9 -6
  131. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  132. package/lib/chain/opPools/syncContributionAndProofPool.js +5 -2
  133. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  134. package/lib/chain/options.js +1 -1
  135. package/lib/chain/options.js.map +1 -1
  136. package/lib/chain/prepareNextSlot.js +141 -136
  137. package/lib/chain/prepareNextSlot.js.map +1 -1
  138. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  139. package/lib/chain/produceBlock/produceBlockBody.js +3 -10
  140. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  141. package/lib/chain/regen/errors.js +1 -0
  142. package/lib/chain/regen/errors.js.map +1 -1
  143. package/lib/chain/regen/index.d.ts +1 -1
  144. package/lib/chain/regen/index.js +1 -1
  145. package/lib/chain/regen/index.js.map +1 -1
  146. package/lib/chain/regen/queued.js +35 -28
  147. package/lib/chain/regen/queued.js.map +1 -1
  148. package/lib/chain/regen/regen.js +1 -0
  149. package/lib/chain/regen/regen.js.map +1 -1
  150. package/lib/chain/reprocess.js +3 -1
  151. package/lib/chain/reprocess.js.map +1 -1
  152. package/lib/chain/seenCache/index.d.ts +1 -1
  153. package/lib/chain/seenCache/index.js +1 -1
  154. package/lib/chain/seenCache/index.js.map +1 -1
  155. package/lib/chain/seenCache/seenAggregateAndProof.js +7 -6
  156. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  157. package/lib/chain/seenCache/seenAttestationData.js +5 -2
  158. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  159. package/lib/chain/seenCache/seenAttesters.js +2 -4
  160. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  161. package/lib/chain/seenCache/seenBlockProposers.js +2 -4
  162. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  163. package/lib/chain/seenCache/seenCommittee.js +1 -3
  164. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  165. package/lib/chain/seenCache/seenCommitteeContribution.js +3 -2
  166. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  167. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +74 -78
  168. package/lib/chain/seenCache/seenGossipBlockInput.js +235 -369
  169. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  170. package/lib/chain/shufflingCache.js +5 -2
  171. package/lib/chain/shufflingCache.js.map +1 -1
  172. package/lib/chain/stateCache/blockStateCacheImpl.js +13 -7
  173. package/lib/chain/stateCache/blockStateCacheImpl.js.map +1 -1
  174. package/lib/chain/stateCache/datastore/db.js +1 -0
  175. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  176. package/lib/chain/stateCache/datastore/file.js +1 -0
  177. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  178. package/lib/chain/stateCache/datastore/index.d.ts +1 -1
  179. package/lib/chain/stateCache/datastore/index.js +1 -1
  180. package/lib/chain/stateCache/datastore/index.js.map +1 -1
  181. package/lib/chain/stateCache/fifoBlockStateCache.js +10 -0
  182. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  183. package/lib/chain/stateCache/inMemoryCheckpointsCache.js +10 -4
  184. package/lib/chain/stateCache/inMemoryCheckpointsCache.js.map +1 -1
  185. package/lib/chain/stateCache/index.d.ts +1 -1
  186. package/lib/chain/stateCache/index.js +1 -1
  187. package/lib/chain/stateCache/index.js.map +1 -1
  188. package/lib/chain/stateCache/mapMetrics.js +4 -4
  189. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  190. package/lib/chain/stateCache/persistentCheckpointsCache.js +14 -6
  191. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  192. package/lib/chain/validation/blobSidecar.d.ts +8 -3
  193. package/lib/chain/validation/blobSidecar.js +73 -31
  194. package/lib/chain/validation/blobSidecar.js.map +1 -1
  195. package/lib/chain/validation/dataColumnSidecar.d.ts +7 -9
  196. package/lib/chain/validation/dataColumnSidecar.js +95 -57
  197. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  198. package/lib/chain/validation/index.d.ts +1 -1
  199. package/lib/chain/validation/index.js +1 -1
  200. package/lib/chain/validation/index.js.map +1 -1
  201. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +1 -2
  202. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  203. package/lib/chain/validatorMonitor.d.ts +1 -3
  204. package/lib/chain/validatorMonitor.js +2 -1
  205. package/lib/chain/validatorMonitor.js.map +1 -1
  206. package/lib/db/beacon.js +24 -0
  207. package/lib/db/beacon.js.map +1 -1
  208. package/lib/db/index.d.ts +1 -1
  209. package/lib/db/index.js.map +1 -1
  210. package/lib/db/repositories/blobSidecars.js.map +1 -1
  211. package/lib/db/repositories/blockArchive.js +2 -3
  212. package/lib/db/repositories/blockArchive.js.map +1 -1
  213. package/lib/db/repositories/dataColumnSidecar.js +1 -1
  214. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  215. package/lib/db/repositories/dataColumnSidecarArchive.js +1 -1
  216. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  217. package/lib/db/repositories/depositDataRoot.js +1 -0
  218. package/lib/db/repositories/depositDataRoot.js.map +1 -1
  219. package/lib/db/repositories/index.d.ts +10 -10
  220. package/lib/db/repositories/index.js +9 -9
  221. package/lib/db/repositories/index.js.map +1 -1
  222. package/lib/db/single/preGenesisState.js +6 -0
  223. package/lib/db/single/preGenesisState.js.map +1 -1
  224. package/lib/db/single/preGenesisStateLastProcessedBlock.js +5 -0
  225. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +1 -1
  226. package/lib/eth1/eth1DataCache.js +2 -0
  227. package/lib/eth1/eth1DataCache.js.map +1 -1
  228. package/lib/eth1/eth1DepositDataTracker.js +18 -5
  229. package/lib/eth1/eth1DepositDataTracker.js.map +1 -1
  230. package/lib/eth1/eth1DepositsCache.js +3 -0
  231. package/lib/eth1/eth1DepositsCache.js.map +1 -1
  232. package/lib/eth1/eth1MergeBlockTracker.js +10 -4
  233. package/lib/eth1/eth1MergeBlockTracker.js.map +1 -1
  234. package/lib/eth1/index.js +2 -0
  235. package/lib/eth1/index.js.map +1 -1
  236. package/lib/eth1/provider/eth1Provider.d.ts +1 -2
  237. package/lib/eth1/provider/eth1Provider.js +6 -2
  238. package/lib/eth1/provider/eth1Provider.js.map +1 -1
  239. package/lib/eth1/provider/jsonRpcHttpClient.d.ts +1 -1
  240. package/lib/eth1/provider/jsonRpcHttpClient.js +16 -2
  241. package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -1
  242. package/lib/eth1/provider/jwt.js.map +1 -1
  243. package/lib/eth1/provider/utils.d.ts +5 -0
  244. package/lib/eth1/provider/utils.js +9 -1
  245. package/lib/eth1/provider/utils.js.map +1 -1
  246. package/lib/eth1/utils/deposits.js.map +1 -1
  247. package/lib/execution/builder/cache.js +6 -0
  248. package/lib/execution/builder/cache.js.map +1 -1
  249. package/lib/execution/builder/http.js +14 -8
  250. package/lib/execution/builder/http.js.map +1 -1
  251. package/lib/execution/builder/index.js.map +1 -1
  252. package/lib/execution/engine/disabled.js +2 -4
  253. package/lib/execution/engine/disabled.js.map +1 -1
  254. package/lib/execution/engine/http.d.ts +2 -2
  255. package/lib/execution/engine/http.js +43 -11
  256. package/lib/execution/engine/http.js.map +1 -1
  257. package/lib/execution/engine/interface.d.ts +2 -2
  258. package/lib/execution/engine/interface.js.map +1 -1
  259. package/lib/execution/engine/mock.d.ts +1 -0
  260. package/lib/execution/engine/mock.js +16 -12
  261. package/lib/execution/engine/mock.js.map +1 -1
  262. package/lib/execution/engine/payloadIdCache.js +1 -3
  263. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  264. package/lib/execution/engine/types.d.ts +5 -1
  265. package/lib/execution/engine/types.js +37 -8
  266. package/lib/execution/engine/types.js.map +1 -1
  267. package/lib/execution/engine/utils.js +3 -3
  268. package/lib/execution/engine/utils.js.map +1 -1
  269. package/lib/execution/index.d.ts +2 -2
  270. package/lib/execution/index.js +2 -2
  271. package/lib/execution/index.js.map +1 -1
  272. package/lib/index.d.ts +6 -6
  273. package/lib/index.js +5 -5
  274. package/lib/index.js.map +1 -1
  275. package/lib/metrics/index.d.ts +1 -1
  276. package/lib/metrics/index.js +1 -1
  277. package/lib/metrics/index.js.map +1 -1
  278. package/lib/metrics/metrics/beacon.d.ts +11 -5
  279. package/lib/metrics/metrics/beacon.js +40 -20
  280. package/lib/metrics/metrics/beacon.js.map +1 -1
  281. package/lib/metrics/metrics/lodestar.d.ts +55 -13
  282. package/lib/metrics/metrics/lodestar.js +84 -7
  283. package/lib/metrics/metrics/lodestar.js.map +1 -1
  284. package/lib/metrics/metrics.d.ts +1 -1
  285. package/lib/metrics/metrics.js.map +1 -1
  286. package/lib/metrics/nodeJsMetrics.js +1 -1
  287. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  288. package/lib/metrics/server/http.d.ts +1 -1
  289. package/lib/metrics/utils/avgMinMax.d.ts +1 -1
  290. package/lib/metrics/utils/avgMinMax.js +10 -6
  291. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  292. package/lib/metrics/utils/gauge.d.ts +1 -1
  293. package/lib/metrics/utils/gauge.js +1 -4
  294. package/lib/metrics/utils/gauge.js.map +1 -1
  295. package/lib/metrics/utils/registryMetricCreator.d.ts +1 -1
  296. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  297. package/lib/monitoring/properties.js +4 -0
  298. package/lib/monitoring/properties.js.map +1 -1
  299. package/lib/monitoring/service.js +13 -1
  300. package/lib/monitoring/service.js.map +1 -1
  301. package/lib/monitoring/system.js +25 -27
  302. package/lib/monitoring/system.js.map +1 -1
  303. package/lib/network/core/networkCore.d.ts +2 -2
  304. package/lib/network/core/networkCore.js +67 -50
  305. package/lib/network/core/networkCore.js.map +1 -1
  306. package/lib/network/core/networkCoreWorker.js +1 -1
  307. package/lib/network/core/networkCoreWorker.js.map +1 -1
  308. package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -2
  309. package/lib/network/core/networkCoreWorkerHandler.js +14 -5
  310. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  311. package/lib/network/discv5/index.d.ts +2 -2
  312. package/lib/network/discv5/index.js +9 -3
  313. package/lib/network/discv5/index.js.map +1 -1
  314. package/lib/network/discv5/worker.js +3 -3
  315. package/lib/network/discv5/worker.js.map +1 -1
  316. package/lib/network/events.d.ts +2 -18
  317. package/lib/network/events.js +0 -7
  318. package/lib/network/events.js.map +1 -1
  319. package/lib/network/gossip/encoding.d.ts +1 -1
  320. package/lib/network/gossip/encoding.js +4 -2
  321. package/lib/network/gossip/encoding.js.map +1 -1
  322. package/lib/network/gossip/errors.js +1 -0
  323. package/lib/network/gossip/errors.js.map +1 -1
  324. package/lib/network/gossip/gossipsub.d.ts +1 -1
  325. package/lib/network/gossip/gossipsub.js +8 -1
  326. package/lib/network/gossip/gossipsub.js.map +1 -1
  327. package/lib/network/gossip/index.d.ts +2 -2
  328. package/lib/network/gossip/index.js +2 -2
  329. package/lib/network/gossip/index.js.map +1 -1
  330. package/lib/network/gossip/interface.d.ts +2 -2
  331. package/lib/network/gossip/topic.d.ts +125 -105
  332. package/lib/network/gossip/topic.js +2 -1
  333. package/lib/network/gossip/topic.js.map +1 -1
  334. package/lib/network/index.d.ts +3 -3
  335. package/lib/network/index.js +3 -3
  336. package/lib/network/index.js.map +1 -1
  337. package/lib/network/interface.d.ts +3 -2
  338. package/lib/network/libp2p/index.js +11 -3
  339. package/lib/network/libp2p/index.js.map +1 -1
  340. package/lib/network/metadata.js +4 -0
  341. package/lib/network/metadata.js.map +1 -1
  342. package/lib/network/network.d.ts +4 -2
  343. package/lib/network/network.js +89 -71
  344. package/lib/network/network.js.map +1 -1
  345. package/lib/network/options.js +1 -1
  346. package/lib/network/options.js.map +1 -1
  347. package/lib/network/peers/datastore.d.ts +2 -2
  348. package/lib/network/peers/datastore.js +10 -4
  349. package/lib/network/peers/datastore.js.map +1 -1
  350. package/lib/network/peers/discover.js +75 -66
  351. package/lib/network/peers/discover.js.map +1 -1
  352. package/lib/network/peers/peerManager.js +154 -130
  353. package/lib/network/peers/peerManager.js.map +1 -1
  354. package/lib/network/peers/peersData.d.ts +1 -1
  355. package/lib/network/peers/peersData.js +1 -3
  356. package/lib/network/peers/peersData.js.map +1 -1
  357. package/lib/network/peers/score/index.d.ts +1 -1
  358. package/lib/network/peers/score/index.js +1 -1
  359. package/lib/network/peers/score/index.js.map +1 -1
  360. package/lib/network/peers/score/score.js +6 -0
  361. package/lib/network/peers/score/score.js.map +1 -1
  362. package/lib/network/peers/score/store.js +3 -0
  363. package/lib/network/peers/score/store.js.map +1 -1
  364. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  365. package/lib/network/peers/utils/subnetMap.js +2 -4
  366. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  367. package/lib/network/processor/aggregatorTracker.js +1 -3
  368. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  369. package/lib/network/processor/gossipHandlers.js +145 -164
  370. package/lib/network/processor/gossipHandlers.js.map +1 -1
  371. package/lib/network/processor/gossipQueues/indexed.js +11 -9
  372. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  373. package/lib/network/processor/gossipQueues/linear.js +9 -8
  374. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  375. package/lib/network/processor/index.d.ts +2 -1
  376. package/lib/network/processor/index.js +22 -8
  377. package/lib/network/processor/index.js.map +1 -1
  378. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +1 -1
  379. package/lib/network/reqresp/ReqRespBeaconNode.js +11 -2
  380. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  381. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  382. package/lib/network/reqresp/index.d.ts +1 -3
  383. package/lib/network/reqresp/index.js +1 -3
  384. package/lib/network/reqresp/index.js.map +1 -1
  385. package/lib/network/reqresp/rateLimit.js +11 -5
  386. package/lib/network/reqresp/rateLimit.js.map +1 -1
  387. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  388. package/lib/network/statusCache.js +1 -0
  389. package/lib/network/statusCache.js.map +1 -1
  390. package/lib/network/subnets/attnetsService.js +73 -65
  391. package/lib/network/subnets/attnetsService.js.map +1 -1
  392. package/lib/network/subnets/interface.js +1 -1
  393. package/lib/network/subnets/interface.js.map +1 -1
  394. package/lib/network/subnets/syncnetsService.js +29 -22
  395. package/lib/network/subnets/syncnetsService.js.map +1 -1
  396. package/lib/network/subnets/util.js +1 -2
  397. package/lib/network/subnets/util.js.map +1 -1
  398. package/lib/node/nodejs.d.ts +1 -1
  399. package/lib/node/nodejs.js +15 -0
  400. package/lib/node/nodejs.js.map +1 -1
  401. package/lib/node/notifier.js +1 -2
  402. package/lib/node/notifier.js.map +1 -1
  403. package/lib/node/options.js.map +1 -1
  404. package/lib/node/utils/interop/state.js +1 -2
  405. package/lib/node/utils/interop/state.js.map +1 -1
  406. package/lib/sync/backfill/backfill.d.ts +1 -1
  407. package/lib/sync/backfill/backfill.js +58 -16
  408. package/lib/sync/backfill/backfill.js.map +1 -1
  409. package/lib/sync/constants.d.ts +2 -1
  410. package/lib/sync/constants.js +2 -1
  411. package/lib/sync/constants.js.map +1 -1
  412. package/lib/sync/interface.d.ts +1 -59
  413. package/lib/sync/interface.js +0 -20
  414. package/lib/sync/interface.js.map +1 -1
  415. package/lib/sync/options.d.ts +1 -1
  416. package/lib/sync/range/batch.d.ts +48 -32
  417. package/lib/sync/range/batch.js +201 -55
  418. package/lib/sync/range/batch.js.map +1 -1
  419. package/lib/sync/range/chain.d.ts +15 -10
  420. package/lib/sync/range/chain.js +141 -70
  421. package/lib/sync/range/chain.js.map +1 -1
  422. package/lib/sync/range/range.d.ts +3 -3
  423. package/lib/sync/range/range.js +86 -54
  424. package/lib/sync/range/range.js.map +1 -1
  425. package/lib/sync/range/utils/hashBlocks.d.ts +2 -2
  426. package/lib/sync/range/utils/hashBlocks.js +6 -4
  427. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  428. package/lib/sync/range/utils/peerBalancer.js +18 -13
  429. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  430. package/lib/sync/sync.d.ts +1 -2
  431. package/lib/sync/sync.js +95 -87
  432. package/lib/sync/sync.js.map +1 -1
  433. package/lib/sync/types.d.ts +44 -0
  434. package/lib/sync/types.js +34 -0
  435. package/lib/sync/types.js.map +1 -0
  436. package/lib/sync/unknownBlock.d.ts +42 -28
  437. package/lib/sync/unknownBlock.js +404 -458
  438. package/lib/sync/unknownBlock.js.map +1 -1
  439. package/lib/sync/utils/downloadByRange.d.ts +186 -0
  440. package/lib/sync/utils/downloadByRange.js +457 -0
  441. package/lib/sync/utils/downloadByRange.js.map +1 -0
  442. package/lib/sync/utils/downloadByRoot.d.ts +119 -0
  443. package/lib/sync/utils/downloadByRoot.js +319 -0
  444. package/lib/sync/utils/downloadByRoot.js.map +1 -0
  445. package/lib/sync/utils/pendingBlocksTree.d.ts +14 -6
  446. package/lib/sync/utils/pendingBlocksTree.js +24 -18
  447. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  448. package/lib/util/array.js +7 -3
  449. package/lib/util/array.js.map +1 -1
  450. package/lib/util/asyncIterableToEvents.js +6 -3
  451. package/lib/util/asyncIterableToEvents.js.map +1 -1
  452. package/lib/util/binarySearch.js +2 -0
  453. package/lib/util/binarySearch.js.map +1 -1
  454. package/lib/util/blobs.d.ts +2 -2
  455. package/lib/util/blobs.js +4 -4
  456. package/lib/util/blobs.js.map +1 -1
  457. package/lib/util/bufferPool.js +7 -2
  458. package/lib/util/bufferPool.js.map +1 -1
  459. package/lib/util/clock.d.ts +1 -1
  460. package/lib/util/clock.js +23 -18
  461. package/lib/util/clock.js.map +1 -1
  462. package/lib/util/dataColumns.d.ts +13 -10
  463. package/lib/util/dataColumns.js +92 -134
  464. package/lib/util/dataColumns.js.map +1 -1
  465. package/lib/util/execution.d.ts +20 -0
  466. package/lib/util/execution.js +148 -0
  467. package/lib/util/execution.js.map +1 -0
  468. package/lib/util/itTrigger.js +4 -4
  469. package/lib/util/itTrigger.js.map +1 -1
  470. package/lib/util/map.js +2 -0
  471. package/lib/util/map.js.map +1 -1
  472. package/lib/util/queue/index.d.ts +1 -1
  473. package/lib/util/queue/index.js +1 -1
  474. package/lib/util/queue/index.js.map +1 -1
  475. package/lib/util/queue/itemQueue.js +52 -49
  476. package/lib/util/queue/itemQueue.js.map +1 -1
  477. package/lib/util/serializedCache.js +1 -3
  478. package/lib/util/serializedCache.js.map +1 -1
  479. package/lib/util/set.js +2 -0
  480. package/lib/util/set.js.map +1 -1
  481. package/lib/util/sszBytes.d.ts +1 -0
  482. package/lib/util/sszBytes.js +1 -1
  483. package/lib/util/sszBytes.js.map +1 -1
  484. package/lib/util/timeSeries.js +3 -1
  485. package/lib/util/timeSeries.js.map +1 -1
  486. package/lib/util/types.d.ts +1 -1
  487. package/lib/util/types.js +2 -2
  488. package/lib/util/types.js.map +1 -1
  489. package/lib/util/wrapError.d.ts +7 -0
  490. package/package.json +36 -18
  491. package/lib/chain/seenCache/seenBlockInput.d.ts +0 -84
  492. package/lib/chain/seenCache/seenBlockInput.js +0 -225
  493. package/lib/chain/seenCache/seenBlockInput.js.map +0 -1
  494. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +0 -28
  495. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +0 -328
  496. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +0 -1
  497. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +0 -49
  498. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +0 -499
  499. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +0 -1
package/package.json CHANGED
@@ -11,46 +11,64 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.35.0-dev.c88a6ed255",
14
+ "version": "1.35.0-dev.cec9bef1db",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
18
+ "bun": "./src/index.ts",
18
19
  "import": "./lib/index.js"
19
20
  },
20
21
  "./api": {
22
+ "bun": "./src/api/index.ts",
21
23
  "import": "./lib/api/index.js"
22
24
  },
23
25
  "./chain": {
26
+ "bun": "./src/chain/index.ts",
24
27
  "import": "./lib/chain/index.js"
25
28
  },
26
29
  "./constants": {
30
+ "bun": "./src/constants/index.ts",
27
31
  "import": "./lib/constants/index.js"
28
32
  },
29
33
  "./db": {
34
+ "bun": "./src/db/index.ts",
30
35
  "import": "./lib/db/index.js"
31
36
  },
32
37
  "./eth1": {
38
+ "bun": "./src/eth1/index.ts",
33
39
  "import": "./lib/eth1/index.js"
34
40
  },
35
41
  "./metrics": {
42
+ "bun": "./src/metrics/index.ts",
36
43
  "import": "./lib/metrics/index.js"
37
44
  },
38
45
  "./monitoring": {
46
+ "bun": "./src/monitoring/index.ts",
39
47
  "import": "./lib/monitoring/index.js"
40
48
  },
41
49
  "./network": {
50
+ "bun": "./src/network/index.ts",
42
51
  "import": "./lib/network/index.js"
43
52
  },
44
53
  "./node": {
54
+ "bun": "./src/node/index.ts",
45
55
  "import": "./lib/node/index.js"
46
56
  },
47
57
  "./sync": {
58
+ "bun": "./src/sync/index.ts",
48
59
  "import": "./lib/sync/index.js"
49
60
  },
50
61
  "./util": {
62
+ "bun": "./src/util/index.ts",
51
63
  "import": "./lib/util/index.js"
52
64
  }
53
65
  },
66
+ "imports": {
67
+ "#prometheus-gc-stats-wrapper": {
68
+ "bun": "./lib/bun-wrappers/prometheus-gc-stats.js",
69
+ "default": "@chainsafe/prometheus-gc-stats"
70
+ }
71
+ },
54
72
  "typesVersions": {
55
73
  "*": {
56
74
  "*": [
@@ -96,13 +114,13 @@
96
114
  "@chainsafe/blst": "^2.2.0",
97
115
  "@chainsafe/discv5": "^11.0.4",
98
116
  "@chainsafe/enr": "^5.0.1",
99
- "@chainsafe/libp2p-gossipsub": "^14.1.1",
100
- "@chainsafe/libp2p-noise": "^16.1.0",
117
+ "@chainsafe/libp2p-gossipsub": "^14.1.2",
118
+ "@chainsafe/libp2p-noise": "^16.1.5",
101
119
  "@chainsafe/persistent-merkle-tree": "^1.2.1",
102
120
  "@chainsafe/prometheus-gc-stats": "^1.0.0",
103
121
  "@chainsafe/pubkey-index-map": "^3.0.0",
104
122
  "@chainsafe/ssz": "^1.2.2",
105
- "@chainsafe/threads": "^1.11.2",
123
+ "@chainsafe/threads": "^1.11.3",
106
124
  "@crate-crypto/node-eth-kzg": "0.8.0",
107
125
  "@ethersproject/abi": "^5.7.0",
108
126
  "@fastify/bearer-auth": "^10.0.1",
@@ -118,21 +136,21 @@
118
136
  "@libp2p/peer-id": "^5.1.0",
119
137
  "@libp2p/prometheus-metrics": "^4.3.15",
120
138
  "@libp2p/tcp": "^10.1.8",
121
- "@lodestar/api": "1.35.0-dev.c88a6ed255",
122
- "@lodestar/config": "1.35.0-dev.c88a6ed255",
123
- "@lodestar/db": "1.35.0-dev.c88a6ed255",
124
- "@lodestar/fork-choice": "1.35.0-dev.c88a6ed255",
125
- "@lodestar/light-client": "1.35.0-dev.c88a6ed255",
126
- "@lodestar/logger": "1.35.0-dev.c88a6ed255",
127
- "@lodestar/params": "1.35.0-dev.c88a6ed255",
128
- "@lodestar/reqresp": "1.35.0-dev.c88a6ed255",
129
- "@lodestar/state-transition": "1.35.0-dev.c88a6ed255",
130
- "@lodestar/types": "1.35.0-dev.c88a6ed255",
131
- "@lodestar/utils": "1.35.0-dev.c88a6ed255",
132
- "@lodestar/validator": "1.35.0-dev.c88a6ed255",
139
+ "@lodestar/api": "1.35.0-dev.cec9bef1db",
140
+ "@lodestar/config": "1.35.0-dev.cec9bef1db",
141
+ "@lodestar/db": "1.35.0-dev.cec9bef1db",
142
+ "@lodestar/fork-choice": "1.35.0-dev.cec9bef1db",
143
+ "@lodestar/light-client": "1.35.0-dev.cec9bef1db",
144
+ "@lodestar/logger": "1.35.0-dev.cec9bef1db",
145
+ "@lodestar/params": "1.35.0-dev.cec9bef1db",
146
+ "@lodestar/reqresp": "1.35.0-dev.cec9bef1db",
147
+ "@lodestar/state-transition": "1.35.0-dev.cec9bef1db",
148
+ "@lodestar/types": "1.35.0-dev.cec9bef1db",
149
+ "@lodestar/utils": "1.35.0-dev.cec9bef1db",
150
+ "@lodestar/validator": "1.35.0-dev.cec9bef1db",
133
151
  "@multiformats/multiaddr": "^12.1.3",
134
152
  "datastore-core": "^10.0.2",
135
- "datastore-level": "^11.0.3",
153
+ "datastore-fs": "^10.0.6",
136
154
  "deepmerge": "^4.3.1",
137
155
  "fastify": "^5.2.1",
138
156
  "interface-datastore": "^8.3.0",
@@ -164,5 +182,5 @@
164
182
  "beacon",
165
183
  "blockchain"
166
184
  ],
167
- "gitHead": "1673f2958aae9dcc91c5ef1c243d92e8609da498"
185
+ "gitHead": "52849554c15d9a90b9cf073812c291df4a098265"
168
186
  }
@@ -1,84 +0,0 @@
1
- import { ChainForkConfig } from "@lodestar/config";
2
- import { CheckpointWithHex } from "@lodestar/fork-choice";
3
- import { RootHex, SignedBeaconBlock, deneb } from "@lodestar/types";
4
- import { Logger } from "@lodestar/utils";
5
- import { Metrics } from "../../metrics/metrics.js";
6
- import { IClock } from "../../util/clock.js";
7
- import { BlockInputBlobs, IBlockInput, SourceMeta } from "../blocks/blockInput/index.js";
8
- import { ChainEventEmitter } from "../emitter.js";
9
- export type SeenBlockInputCacheModules = {
10
- config: ChainForkConfig;
11
- clock: IClock;
12
- chainEvents: ChainEventEmitter;
13
- signal: AbortSignal;
14
- metrics: Metrics | null;
15
- logger?: Logger;
16
- };
17
- export type GetByBlobOptions = {
18
- throwErrorIfAlreadyKnown?: boolean;
19
- };
20
- /**
21
- * Consumers that create BlockInputs or change types of old BlockInputs
22
- *
23
- * - gossipHandlers (block and blob)
24
- * - beaconBlocksMaybeBlobsByRange
25
- * - unavailableBeaconBlobsByRoot (beaconBlocksMaybeBlobsByRoot)
26
- * - publishBlock in the beacon/blocks/index.ts API
27
- * https://github.com/ChainSafe/lodestar/blob/unstable/packages/beacon-node/src/api/impl/beacon/blocks/index.ts#L62
28
- * - maybeValidateBlobs in verifyBlocksDataAvailability (is_data_available spec function)
29
- * https://github.com/ChainSafe/lodestar/blob/unstable/packages/beacon-node/src/chain/blocks/verifyBlocksDataAvailability.ts#L111
30
- *
31
- *
32
- * Pruning management for SeenBlockInputCache
33
- * ------------------------------------------
34
- * There are four cases for how pruning needs to be handled
35
- * - Normal operation following head via gossip (and/or reqresp). For this situation the consumer (process pipeline or
36
- * caller of processBlock) will call the `prune` method to remove any processed BlockInputs from the cache. This will
37
- * also remove any ancestors of the processed BlockInput as that will also need to have been successfully processed
38
- * for import to work correctly
39
- * - onFinalized event handler will help to prune any non-canonical forks once the chain finalizes. Any block-slots that
40
- * are before the finalized checkpoint will be pruned.
41
- * - Range-sync periods. The range process uses this cache to store and sync blocks with DA data as the chain is pulled
42
- * from peers. We pull batches, by epoch, so 32 slots are pulled at a time and several batches are pulled concurrently.
43
- * It is important to set the MAX_BLOCK_INPUT_CACHE_SIZE high enough to support range sync activities. Currently the
44
- * value is set for 5 batches of 32 slots. As process block is called (similar to following head) the BlockInput and
45
- * its ancestors will be pruned.
46
- * - Non-Finality times. This is a bit more tricky. There can be long periods of non-finality and storing everything
47
- * will cause OOM. The pruneToMax will help ensure a hard limit on the number of stored blocks (with DA) that are held
48
- * in memory at any one time. The value for MAX_BLOCK_INPUT_CACHE_SIZE is set to accommodate range-sync but in
49
- * practice this value may need to be massaged in the future if we find issues when debugging non-finality
50
- */
51
- export declare class SeenBlockInputCache {
52
- private readonly config;
53
- private readonly clock;
54
- private readonly chainEvents;
55
- private readonly signal;
56
- private readonly metrics;
57
- private readonly logger?;
58
- private blockInputs;
59
- constructor({ config, clock, chainEvents, signal, metrics, logger }: SeenBlockInputCacheModules);
60
- has(rootHex: RootHex): boolean;
61
- get(rootHex: RootHex): IBlockInput | undefined;
62
- /**
63
- * Removes the single BlockInput from the cache
64
- */
65
- remove(rootHex: RootHex): void;
66
- /**
67
- * Removes a processed BlockInput from the cache and also removes any ancestors of processed blocks
68
- */
69
- prune(rootHex: RootHex): void;
70
- onFinalized: (checkpoint: CheckpointWithHex) => void;
71
- getByBlock({ block, source, seenTimestampSec, peerIdStr }: SourceMeta & {
72
- block: SignedBeaconBlock;
73
- }): IBlockInput;
74
- getByBlob({ blobSidecar, source, seenTimestampSec, peerIdStr }: SourceMeta & {
75
- blobSidecar: deneb.BlobSidecar;
76
- }, opts?: GetByBlobOptions): BlockInputBlobs;
77
- private buildCommonProps;
78
- /**
79
- * Use custom implementation of pruneSetToMax to allow for sorting by slot
80
- * and deleting via key/rootHex
81
- */
82
- private pruneToMaxSize;
83
- }
84
- //# sourceMappingURL=seenBlockInput.d.ts.map
@@ -1,225 +0,0 @@
1
- import { isForkPostDeneb } from "@lodestar/params";
2
- import { computeStartSlotAtEpoch } from "@lodestar/state-transition";
3
- import { LodestarError, toRootHex } from "@lodestar/utils";
4
- import { BlockInputBlobs, BlockInputPreData, DAType, isBlockInputBlobs, isDaOutOfRange, } from "../blocks/blockInput/index.js";
5
- import { ChainEvent } from "../emitter.js";
6
- const MAX_BLOCK_INPUT_CACHE_SIZE = 5;
7
- /**
8
- * Consumers that create BlockInputs or change types of old BlockInputs
9
- *
10
- * - gossipHandlers (block and blob)
11
- * - beaconBlocksMaybeBlobsByRange
12
- * - unavailableBeaconBlobsByRoot (beaconBlocksMaybeBlobsByRoot)
13
- * - publishBlock in the beacon/blocks/index.ts API
14
- * https://github.com/ChainSafe/lodestar/blob/unstable/packages/beacon-node/src/api/impl/beacon/blocks/index.ts#L62
15
- * - maybeValidateBlobs in verifyBlocksDataAvailability (is_data_available spec function)
16
- * https://github.com/ChainSafe/lodestar/blob/unstable/packages/beacon-node/src/chain/blocks/verifyBlocksDataAvailability.ts#L111
17
- *
18
- *
19
- * Pruning management for SeenBlockInputCache
20
- * ------------------------------------------
21
- * There are four cases for how pruning needs to be handled
22
- * - Normal operation following head via gossip (and/or reqresp). For this situation the consumer (process pipeline or
23
- * caller of processBlock) will call the `prune` method to remove any processed BlockInputs from the cache. This will
24
- * also remove any ancestors of the processed BlockInput as that will also need to have been successfully processed
25
- * for import to work correctly
26
- * - onFinalized event handler will help to prune any non-canonical forks once the chain finalizes. Any block-slots that
27
- * are before the finalized checkpoint will be pruned.
28
- * - Range-sync periods. The range process uses this cache to store and sync blocks with DA data as the chain is pulled
29
- * from peers. We pull batches, by epoch, so 32 slots are pulled at a time and several batches are pulled concurrently.
30
- * It is important to set the MAX_BLOCK_INPUT_CACHE_SIZE high enough to support range sync activities. Currently the
31
- * value is set for 5 batches of 32 slots. As process block is called (similar to following head) the BlockInput and
32
- * its ancestors will be pruned.
33
- * - Non-Finality times. This is a bit more tricky. There can be long periods of non-finality and storing everything
34
- * will cause OOM. The pruneToMax will help ensure a hard limit on the number of stored blocks (with DA) that are held
35
- * in memory at any one time. The value for MAX_BLOCK_INPUT_CACHE_SIZE is set to accommodate range-sync but in
36
- * practice this value may need to be massaged in the future if we find issues when debugging non-finality
37
- */
38
- export class SeenBlockInputCache {
39
- constructor({ config, clock, chainEvents, signal, metrics, logger }) {
40
- this.blockInputs = new Map();
41
- this.onFinalized = (checkpoint) => {
42
- const cutoffSlot = computeStartSlotAtEpoch(checkpoint.epoch);
43
- for (const [rootHex, blockInput] of this.blockInputs) {
44
- if (blockInput.slot < cutoffSlot) {
45
- this.blockInputs.delete(rootHex);
46
- }
47
- }
48
- this.pruneToMaxSize();
49
- };
50
- this.config = config;
51
- this.clock = clock;
52
- this.chainEvents = chainEvents;
53
- this.signal = signal;
54
- this.metrics = metrics;
55
- this.logger = logger;
56
- if (metrics) {
57
- metrics.seenCache.blockInput.blockInputCount.addCollect(() => metrics.seenCache.blockInput.blockInputCount.set(this.blockInputs.size));
58
- }
59
- this.chainEvents.on(ChainEvent.forkChoiceFinalized, this.onFinalized);
60
- this.signal.addEventListener("abort", () => {
61
- this.chainEvents.off(ChainEvent.forkChoiceFinalized, this.onFinalized);
62
- });
63
- }
64
- has(rootHex) {
65
- return this.blockInputs.has(rootHex);
66
- }
67
- get(rootHex) {
68
- return this.blockInputs.get(rootHex);
69
- }
70
- /**
71
- * Removes the single BlockInput from the cache
72
- */
73
- remove(rootHex) {
74
- this.blockInputs.delete(rootHex);
75
- }
76
- /**
77
- * Removes a processed BlockInput from the cache and also removes any ancestors of processed blocks
78
- */
79
- prune(rootHex) {
80
- let blockInput = this.blockInputs.get(rootHex);
81
- let parentRootHex = blockInput?.parentRootHex;
82
- while (blockInput) {
83
- this.blockInputs.delete(blockInput.blockRootHex);
84
- blockInput = this.blockInputs.get(parentRootHex ?? "");
85
- parentRootHex = blockInput?.parentRootHex;
86
- }
87
- this.pruneToMaxSize();
88
- }
89
- getByBlock({ block, source, seenTimestampSec, peerIdStr }) {
90
- const blockRoot = this.config.getForkTypes(block.message.slot).BeaconBlock.hashTreeRoot(block.message);
91
- const blockRootHex = toRootHex(blockRoot);
92
- // TODO(peerDAS): Why is it necessary to static cast this here. All conditional paths result in a valid value so should be defined correctly below
93
- let blockInput = this.blockInputs.get(blockRootHex);
94
- if (!blockInput) {
95
- const { forkName, daOutOfRange } = this.buildCommonProps(block.message.slot);
96
- if (!isForkPostDeneb(forkName)) {
97
- blockInput = BlockInputPreData.createFromBlock({
98
- block,
99
- blockRootHex,
100
- daOutOfRange,
101
- forkName,
102
- source: {
103
- source,
104
- seenTimestampSec,
105
- peerIdStr,
106
- },
107
- });
108
- }
109
- // else if (isForkPostFulu(forkName)) {
110
- // blockInput = new BlockInputColumns.createFromBlock({
111
- // block,
112
- // blockRootHex,
113
- // daOutOfRange,
114
- // forkName,
115
- // custodyColumns: this.custodyConfig.custodyColumns,
116
- // sampledColumns: this.custodyConfig.sampledColumns,
117
- // source: {
118
- // source,
119
- // seenTimestampSec,
120
- // peerIdStr
121
- // }
122
- // })
123
- // }
124
- else {
125
- blockInput = BlockInputBlobs.createFromBlock({
126
- block: block,
127
- blockRootHex,
128
- daOutOfRange,
129
- forkName,
130
- source: {
131
- source,
132
- seenTimestampSec,
133
- peerIdStr,
134
- },
135
- });
136
- }
137
- this.blockInputs.set(blockInput.blockRootHex, blockInput);
138
- }
139
- if (!blockInput.hasBlock()) {
140
- blockInput.addBlock({ block, blockRootHex, source: { source, seenTimestampSec, peerIdStr } });
141
- }
142
- else {
143
- this.logger?.debug("Attempt to cache block but is already cached on BlockInput", blockInput.getLogMeta());
144
- this.metrics?.seenCache.blockInput.duplicateBlockCount.inc({ source });
145
- }
146
- return blockInput;
147
- }
148
- getByBlob({ blobSidecar, source, seenTimestampSec, peerIdStr }, opts = {}) {
149
- const blockRoot = this.config
150
- .getForkTypes(blobSidecar.signedBlockHeader.message.slot)
151
- .BeaconBlockHeader.hashTreeRoot(blobSidecar.signedBlockHeader.message);
152
- const blockRootHex = toRootHex(blockRoot);
153
- // TODO(peerDAS): Why is it necessary to static cast this here. All conditional paths result in a valid value so should be defined correctly below
154
- let blockInput = this.blockInputs.get(blockRootHex);
155
- let created = false;
156
- if (!blockInput) {
157
- created = true;
158
- const { forkName, daOutOfRange } = this.buildCommonProps(blobSidecar.signedBlockHeader.message.slot);
159
- blockInput = BlockInputBlobs.createFromBlob({
160
- blobSidecar,
161
- blockRootHex,
162
- daOutOfRange,
163
- forkName,
164
- source,
165
- seenTimestampSec,
166
- peerIdStr,
167
- });
168
- this.metrics?.seenCache.blockInput.createdByBlob.inc();
169
- this.blockInputs.set(blockRootHex, blockInput);
170
- }
171
- if (!isBlockInputBlobs(blockInput)) {
172
- throw new SeenBlockInputCacheError({
173
- code: SeenBlockInputCacheErrorCode.WRONG_BLOCK_INPUT_TYPE,
174
- cachedType: blockInput.type,
175
- requestedType: DAType.Blobs,
176
- ...blockInput.getLogMeta(),
177
- }, `BlockInputType mismatch adding blobIndex=${blobSidecar.index}`);
178
- }
179
- if (!blockInput.hasBlob(blobSidecar.index)) {
180
- blockInput.addBlob({ blobSidecar, blockRootHex, source, seenTimestampSec, peerIdStr });
181
- }
182
- else if (!created) {
183
- this.logger?.debug(`Attempt to cache blob index #${blobSidecar.index} but is already cached on BlockInput`, blockInput.getLogMeta());
184
- this.metrics?.seenCache.blockInput.duplicateBlobCount.inc({ source });
185
- if (opts.throwErrorIfAlreadyKnown) {
186
- throw new SeenBlockInputCacheError({
187
- code: SeenBlockInputCacheErrorCode.GOSSIP_BLOB_ALREADY_KNOWN,
188
- ...blockInput.getLogMeta(),
189
- });
190
- }
191
- }
192
- return blockInput;
193
- }
194
- buildCommonProps(slot) {
195
- const forkName = this.config.getForkName(slot);
196
- return {
197
- forkName,
198
- daOutOfRange: isDaOutOfRange(this.config, forkName, slot, this.clock.currentEpoch),
199
- };
200
- }
201
- /**
202
- * Use custom implementation of pruneSetToMax to allow for sorting by slot
203
- * and deleting via key/rootHex
204
- */
205
- pruneToMaxSize() {
206
- let itemsToDelete = this.blockInputs.size - MAX_BLOCK_INPUT_CACHE_SIZE;
207
- if (itemsToDelete > 0) {
208
- const sorted = [...this.blockInputs.entries()].sort((a, b) => b[1].slot - a[1].slot);
209
- for (const [rootHex] of sorted) {
210
- this.blockInputs.delete(rootHex);
211
- itemsToDelete--;
212
- if (itemsToDelete <= 0)
213
- return;
214
- }
215
- }
216
- }
217
- }
218
- var SeenBlockInputCacheErrorCode;
219
- (function (SeenBlockInputCacheErrorCode) {
220
- SeenBlockInputCacheErrorCode["WRONG_BLOCK_INPUT_TYPE"] = "BLOCK_INPUT_CACHE_ERROR_WRONG_BLOCK_INPUT_TYPE";
221
- SeenBlockInputCacheErrorCode["GOSSIP_BLOB_ALREADY_KNOWN"] = "BLOCK_INPUT_CACHE_ERROR_GOSSIP_BLOB_ALREADY_KNOWN";
222
- })(SeenBlockInputCacheErrorCode || (SeenBlockInputCacheErrorCode = {}));
223
- class SeenBlockInputCacheError extends LodestarError {
224
- }
225
- //# sourceMappingURL=seenBlockInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"seenBlockInput.js","sourceRoot":"","sources":["../../../src/chain/seenCache/seenBlockInput.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import { ChainForkConfig } from "@lodestar/config";
2
- import { ColumnIndex, Epoch, SignedBeaconBlock, Slot, WithOptionalBytes, deneb, fulu, phase0 } from "@lodestar/types";
3
- import { Logger } from "@lodestar/utils";
4
- import { BlobsSource, BlockInput, BlockSource, DataColumnsSource } from "../../chain/blocks/types.js";
5
- import { Metrics } from "../../metrics/index.js";
6
- import { RangeSyncType } from "../../sync/utils/remoteSyncType.js";
7
- import { PeerIdStr } from "../../util/peerId.js";
8
- import { INetwork } from "../interface.js";
9
- import { PeerSyncMeta } from "../peers/peersData.js";
10
- export type PartialDownload = null | {
11
- blocks: BlockInput[];
12
- pendingDataColumns: number[];
13
- };
14
- export declare const SyncSourceByRoot: "ByRoot";
15
- export type SyncSource = RangeSyncType | typeof SyncSourceByRoot;
16
- /**
17
- * Download blocks and blobs (prefulu) or data columns (fulu) by range.
18
- * returns:
19
- * - array of blocks with blobs or data columns
20
- * - pendingDataColumns: null if all data columns are present, or array of column indexes that are missing. Also null for prefulu
21
- */
22
- export declare function beaconBlocksMaybeBlobsByRange(config: ChainForkConfig, network: INetwork, peer: PeerSyncMeta, request: phase0.BeaconBlocksByRangeRequest, currentEpoch: Epoch, partialDownload: PartialDownload, syncSource: SyncSource, metrics: Metrics | null, logger?: Logger): Promise<{
23
- blocks: BlockInput[];
24
- pendingDataColumns: null | number[];
25
- }>;
26
- export declare function matchBlockWithBlobs(config: ChainForkConfig, allBlocks: WithOptionalBytes<SignedBeaconBlock>[], allBlobSidecars: deneb.BlobSidecar[], endSlot: Slot, blockSource: BlockSource, blobsSource: BlobsSource, syncSource: SyncSource): BlockInput[];
27
- export declare function matchBlockWithDataColumns(network: INetwork, peerId: PeerIdStr, config: ChainForkConfig, sampledColumns: ColumnIndex[], requestedColumns: number[], allBlocks: WithOptionalBytes<SignedBeaconBlock>[], allDataColumnSidecars: fulu.DataColumnSidecar[], endSlot: Slot, blockSource: BlockSource, dataColumnsSource: DataColumnsSource, prevPartialDownload: null | PartialDownload, peerClient: string, syncSource: SyncSource, metrics: Metrics | null, logger?: Logger): BlockInput[];
28
- //# sourceMappingURL=beaconBlocksMaybeBlobsByRange.d.ts.map