@lodestar/beacon-node 1.41.0-dev.253ed58dd1 → 1.41.0-dev.274a9918a8

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 (881) hide show
  1. package/lib/api/impl/api.js.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.d.ts +1 -1
  3. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  4. package/lib/api/impl/beacon/blocks/index.js +12 -2
  5. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  6. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  7. package/lib/api/impl/beacon/index.js.map +1 -1
  8. package/lib/api/impl/beacon/pool/index.d.ts +1 -1
  9. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  10. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  11. package/lib/api/impl/beacon/rewards/index.d.ts +1 -1
  12. package/lib/api/impl/beacon/rewards/index.d.ts.map +1 -1
  13. package/lib/api/impl/beacon/rewards/index.js.map +1 -1
  14. package/lib/api/impl/beacon/state/index.d.ts +1 -1
  15. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  16. package/lib/api/impl/beacon/state/index.js +8 -8
  17. package/lib/api/impl/beacon/state/index.js.map +1 -1
  18. package/lib/api/impl/beacon/state/utils.d.ts +5 -6
  19. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  20. package/lib/api/impl/beacon/state/utils.js +5 -24
  21. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  22. package/lib/api/impl/config/constants.js.map +1 -1
  23. package/lib/api/impl/config/index.js.map +1 -1
  24. package/lib/api/impl/debug/index.d.ts +1 -1
  25. package/lib/api/impl/debug/index.d.ts.map +1 -1
  26. package/lib/api/impl/debug/index.js +1 -0
  27. package/lib/api/impl/debug/index.js.map +1 -1
  28. package/lib/api/impl/errors.d.ts.map +1 -1
  29. package/lib/api/impl/errors.js.map +1 -1
  30. package/lib/api/impl/events/index.d.ts +1 -1
  31. package/lib/api/impl/events/index.d.ts.map +1 -1
  32. package/lib/api/impl/events/index.js.map +1 -1
  33. package/lib/api/impl/lightclient/index.d.ts +1 -1
  34. package/lib/api/impl/lightclient/index.d.ts.map +1 -1
  35. package/lib/api/impl/lightclient/index.js.map +1 -1
  36. package/lib/api/impl/lodestar/index.d.ts +1 -1
  37. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  38. package/lib/api/impl/lodestar/index.js.map +1 -1
  39. package/lib/api/impl/node/index.js.map +1 -1
  40. package/lib/api/impl/node/utils.d.ts +1 -1
  41. package/lib/api/impl/node/utils.d.ts.map +1 -1
  42. package/lib/api/impl/node/utils.js.map +1 -1
  43. package/lib/api/impl/proof/index.js.map +1 -1
  44. package/lib/api/impl/utils.js.map +1 -1
  45. package/lib/api/impl/validator/index.d.ts.map +1 -1
  46. package/lib/api/impl/validator/index.js +38 -18
  47. package/lib/api/impl/validator/index.js.map +1 -1
  48. package/lib/api/impl/validator/utils.d.ts +1 -1
  49. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  50. package/lib/api/impl/validator/utils.js.map +1 -1
  51. package/lib/api/rest/activeSockets.d.ts.map +1 -1
  52. package/lib/api/rest/activeSockets.js.map +1 -1
  53. package/lib/api/rest/base.d.ts.map +1 -1
  54. package/lib/api/rest/base.js.map +1 -1
  55. package/lib/api/rest/index.d.ts.map +1 -1
  56. package/lib/api/rest/index.js.map +1 -1
  57. package/lib/api/rest/swaggerUI.js.map +1 -1
  58. package/lib/bun-wrappers/prometheus-gc-stats.js.map +1 -1
  59. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
  60. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  61. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  62. package/lib/chain/GetBlobsTracker.js.map +1 -1
  63. package/lib/chain/archiveStore/archiveStore.d.ts +0 -1
  64. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  65. package/lib/chain/archiveStore/archiveStore.js +2 -10
  66. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  67. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +5 -6
  68. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  69. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +9 -10
  70. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  71. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
  72. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  73. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  74. package/lib/chain/archiveStore/historicalState/types.js +2 -1
  75. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  76. package/lib/chain/archiveStore/historicalState/worker.js +3 -3
  77. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  78. package/lib/chain/archiveStore/interface.d.ts +4 -4
  79. package/lib/chain/archiveStore/interface.d.ts.map +1 -1
  80. package/lib/chain/archiveStore/interface.js +2 -1
  81. package/lib/chain/archiveStore/interface.js.map +1 -1
  82. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +5 -5
  83. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  84. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +6 -2
  85. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  86. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +3 -8
  87. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  88. package/lib/chain/archiveStore/utils/archiveBlocks.js +39 -1
  89. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  90. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  91. package/lib/chain/archiveStore/utils/updateBackfillRange.js +1 -1
  92. package/lib/chain/archiveStore/utils/updateBackfillRange.js.map +1 -1
  93. package/lib/chain/balancesCache.d.ts.map +1 -1
  94. package/lib/chain/balancesCache.js.map +1 -1
  95. package/lib/chain/beaconProposerCache.d.ts.map +1 -1
  96. package/lib/chain/beaconProposerCache.js.map +1 -1
  97. package/lib/chain/blocks/blockInput/blockInput.d.ts +25 -2
  98. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  99. package/lib/chain/blocks/blockInput/blockInput.js +71 -0
  100. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  101. package/lib/chain/blocks/blockInput/errors.js +2 -1
  102. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  103. package/lib/chain/blocks/blockInput/types.d.ts +18 -1
  104. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  105. package/lib/chain/blocks/blockInput/types.js +5 -2
  106. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  107. package/lib/chain/blocks/blockInput/utils.js.map +1 -1
  108. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  109. package/lib/chain/blocks/importBlock.js +39 -12
  110. package/lib/chain/blocks/importBlock.js.map +1 -1
  111. package/lib/chain/blocks/index.d.ts.map +1 -1
  112. package/lib/chain/blocks/index.js.map +1 -1
  113. package/lib/chain/blocks/types.js +6 -3
  114. package/lib/chain/blocks/types.js.map +1 -1
  115. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  116. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  117. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  118. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  119. package/lib/chain/blocks/verifyBlocksDataAvailability.js +3 -0
  120. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  121. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +4 -0
  122. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  123. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -1
  124. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  125. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  126. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -1
  127. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  128. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  129. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  130. package/lib/chain/blocks/writeBlockInputToDb.d.ts +12 -3
  131. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  132. package/lib/chain/blocks/writeBlockInputToDb.js +92 -98
  133. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  134. package/lib/chain/bls/maybeBatch.js.map +1 -1
  135. package/lib/chain/bls/multithread/index.d.ts +3 -3
  136. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  137. package/lib/chain/bls/multithread/index.js +5 -5
  138. package/lib/chain/bls/multithread/index.js.map +1 -1
  139. package/lib/chain/bls/multithread/jobItem.d.ts +2 -2
  140. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
  141. package/lib/chain/bls/multithread/jobItem.js +4 -3
  142. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  143. package/lib/chain/bls/multithread/types.js +2 -1
  144. package/lib/chain/bls/multithread/types.js.map +1 -1
  145. package/lib/chain/bls/multithread/utils.js.map +1 -1
  146. package/lib/chain/bls/multithread/worker.js.map +1 -1
  147. package/lib/chain/bls/singleThread.d.ts +4 -4
  148. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  149. package/lib/chain/bls/singleThread.js +4 -4
  150. package/lib/chain/bls/singleThread.js.map +1 -1
  151. package/lib/chain/bls/utils.d.ts +2 -2
  152. package/lib/chain/bls/utils.d.ts.map +1 -1
  153. package/lib/chain/bls/utils.js +7 -4
  154. package/lib/chain/bls/utils.js.map +1 -1
  155. package/lib/chain/chain.d.ts +10 -13
  156. package/lib/chain/chain.d.ts.map +1 -1
  157. package/lib/chain/chain.js +40 -30
  158. package/lib/chain/chain.js.map +1 -1
  159. package/lib/chain/emitter.d.ts +4 -6
  160. package/lib/chain/emitter.d.ts.map +1 -1
  161. package/lib/chain/emitter.js +2 -1
  162. package/lib/chain/emitter.js.map +1 -1
  163. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  164. package/lib/chain/errors/attestationError.js +2 -1
  165. package/lib/chain/errors/attestationError.js.map +1 -1
  166. package/lib/chain/errors/attesterSlashingError.js +2 -1
  167. package/lib/chain/errors/attesterSlashingError.js.map +1 -1
  168. package/lib/chain/errors/blobSidecarError.js +2 -1
  169. package/lib/chain/errors/blobSidecarError.js.map +1 -1
  170. package/lib/chain/errors/blockError.d.ts.map +1 -1
  171. package/lib/chain/errors/blockError.js +2 -1
  172. package/lib/chain/errors/blockError.js.map +1 -1
  173. package/lib/chain/errors/blsToExecutionChangeError.js +2 -1
  174. package/lib/chain/errors/blsToExecutionChangeError.js.map +1 -1
  175. package/lib/chain/errors/dataColumnSidecarError.js +2 -1
  176. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  177. package/lib/chain/errors/executionPayloadBid.d.ts +1 -1
  178. package/lib/chain/errors/executionPayloadBid.js +2 -1
  179. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  180. package/lib/chain/errors/executionPayloadEnvelope.d.ts +2 -2
  181. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  182. package/lib/chain/errors/executionPayloadEnvelope.js +2 -1
  183. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  184. package/lib/chain/errors/gossipValidation.d.ts.map +1 -1
  185. package/lib/chain/errors/gossipValidation.js +4 -2
  186. package/lib/chain/errors/gossipValidation.js.map +1 -1
  187. package/lib/chain/errors/lightClientError.js +4 -2
  188. package/lib/chain/errors/lightClientError.js.map +1 -1
  189. package/lib/chain/errors/payloadAttestation.d.ts +1 -1
  190. package/lib/chain/errors/payloadAttestation.js +2 -1
  191. package/lib/chain/errors/payloadAttestation.js.map +1 -1
  192. package/lib/chain/errors/proposerSlashingError.js +2 -1
  193. package/lib/chain/errors/proposerSlashingError.js.map +1 -1
  194. package/lib/chain/errors/syncCommitteeError.js +2 -1
  195. package/lib/chain/errors/syncCommitteeError.js.map +1 -1
  196. package/lib/chain/errors/voluntaryExitError.js +2 -1
  197. package/lib/chain/errors/voluntaryExitError.js.map +1 -1
  198. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  199. package/lib/chain/forkChoice/index.js +32 -25
  200. package/lib/chain/forkChoice/index.js.map +1 -1
  201. package/lib/chain/initState.d.ts +1 -1
  202. package/lib/chain/initState.d.ts.map +1 -1
  203. package/lib/chain/initState.js.map +1 -1
  204. package/lib/chain/interface.d.ts +4 -6
  205. package/lib/chain/interface.d.ts.map +1 -1
  206. package/lib/chain/interface.js +2 -1
  207. package/lib/chain/interface.js.map +1 -1
  208. package/lib/chain/lightClient/index.d.ts +0 -29
  209. package/lib/chain/lightClient/index.d.ts.map +1 -1
  210. package/lib/chain/lightClient/index.js.map +1 -1
  211. package/lib/chain/lightClient/proofs.js.map +1 -1
  212. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  213. package/lib/chain/opPools/aggregatedAttestationPool.js +5 -3
  214. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  215. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  216. package/lib/chain/opPools/attestationPool.js.map +1 -1
  217. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
  218. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  219. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  220. package/lib/chain/opPools/opPool.js.map +1 -1
  221. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  222. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  223. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  224. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  225. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  226. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  227. package/lib/chain/opPools/types.js +4 -2
  228. package/lib/chain/opPools/types.js.map +1 -1
  229. package/lib/chain/opPools/utils.js.map +1 -1
  230. package/lib/chain/prepareNextSlot.d.ts +1 -2
  231. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  232. package/lib/chain/prepareNextSlot.js +6 -2
  233. package/lib/chain/prepareNextSlot.js.map +1 -1
  234. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +0 -1
  235. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  236. package/lib/chain/produceBlock/computeNewStateRoot.js +4 -3
  237. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  238. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  239. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  240. package/lib/chain/produceBlock/produceBlockBody.js +24 -7
  241. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  242. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  243. package/lib/chain/regen/errors.d.ts +11 -1
  244. package/lib/chain/regen/errors.d.ts.map +1 -1
  245. package/lib/chain/regen/errors.js +4 -1
  246. package/lib/chain/regen/errors.js.map +1 -1
  247. package/lib/chain/regen/interface.d.ts +12 -6
  248. package/lib/chain/regen/interface.d.ts.map +1 -1
  249. package/lib/chain/regen/interface.js +4 -2
  250. package/lib/chain/regen/interface.js.map +1 -1
  251. package/lib/chain/regen/queued.d.ts +11 -6
  252. package/lib/chain/regen/queued.d.ts.map +1 -1
  253. package/lib/chain/regen/queued.js +44 -9
  254. package/lib/chain/regen/queued.js.map +1 -1
  255. package/lib/chain/regen/regen.d.ts +5 -0
  256. package/lib/chain/regen/regen.d.ts.map +1 -1
  257. package/lib/chain/regen/regen.js +39 -8
  258. package/lib/chain/regen/regen.js.map +1 -1
  259. package/lib/chain/reprocess.d.ts.map +1 -1
  260. package/lib/chain/reprocess.js +2 -1
  261. package/lib/chain/reprocess.js.map +1 -1
  262. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -1
  263. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  264. package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -1
  265. package/lib/chain/seenCache/seenAttestationData.js +2 -1
  266. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  267. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  268. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  269. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -1
  270. package/lib/chain/seenCache/seenBlockAttesters.js.map +1 -1
  271. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -1
  272. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  273. package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -1
  274. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  275. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -1
  276. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  277. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -1
  278. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -1
  279. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -1
  280. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -1
  281. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -3
  282. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  283. package/lib/chain/seenCache/seenGossipBlockInput.js +38 -16
  284. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  285. package/lib/chain/serializeState.js +1 -0
  286. package/lib/chain/serializeState.js.map +1 -1
  287. package/lib/chain/shufflingCache.d.ts.map +1 -1
  288. package/lib/chain/shufflingCache.js +2 -1
  289. package/lib/chain/shufflingCache.js.map +1 -1
  290. package/lib/chain/stateCache/datastore/db.d.ts +4 -5
  291. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  292. package/lib/chain/stateCache/datastore/db.js +32 -10
  293. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  294. package/lib/chain/stateCache/datastore/file.d.ts +1 -1
  295. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  296. package/lib/chain/stateCache/datastore/file.js +5 -5
  297. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  298. package/lib/chain/stateCache/datastore/types.d.ts +1 -1
  299. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -1
  300. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +7 -4
  301. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  302. package/lib/chain/stateCache/fifoBlockStateCache.js +8 -3
  303. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  304. package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -1
  305. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  306. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +34 -55
  307. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  308. package/lib/chain/stateCache/persistentCheckpointsCache.js +217 -119
  309. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  310. package/lib/chain/stateCache/types.d.ts +15 -8
  311. package/lib/chain/stateCache/types.d.ts.map +1 -1
  312. package/lib/chain/stateCache/types.js +2 -1
  313. package/lib/chain/stateCache/types.js.map +1 -1
  314. package/lib/chain/validation/aggregateAndProof.js +1 -1
  315. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  316. package/lib/chain/validation/attestation.d.ts.map +1 -1
  317. package/lib/chain/validation/attestation.js +14 -7
  318. package/lib/chain/validation/attestation.js.map +1 -1
  319. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  320. package/lib/chain/validation/attesterSlashing.js +9 -2
  321. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  322. package/lib/chain/validation/blobSidecar.js +2 -2
  323. package/lib/chain/validation/blobSidecar.js.map +1 -1
  324. package/lib/chain/validation/block.d.ts.map +1 -1
  325. package/lib/chain/validation/block.js +6 -3
  326. package/lib/chain/validation/block.js.map +1 -1
  327. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  328. package/lib/chain/validation/dataColumnSidecar.d.ts +2 -1
  329. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  330. package/lib/chain/validation/dataColumnSidecar.js +125 -108
  331. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  332. package/lib/chain/validation/executionPayloadBid.js +1 -2
  333. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  334. package/lib/chain/validation/executionPayloadEnvelope.js +4 -4
  335. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  336. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  337. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  338. package/lib/chain/validation/payloadAttestationMessage.js +9 -3
  339. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  340. package/lib/chain/validation/proposerSlashing.js +1 -1
  341. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  342. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  343. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  344. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  345. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  346. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  347. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  348. package/lib/chain/validation/syncCommittee.js.map +1 -1
  349. package/lib/chain/validation/syncCommitteeContributionAndProof.js +1 -1
  350. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  351. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  352. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  353. package/lib/chain/validatorMonitor.js +2 -1
  354. package/lib/chain/validatorMonitor.js.map +1 -1
  355. package/lib/constants/network.js +4 -2
  356. package/lib/constants/network.js.map +1 -1
  357. package/lib/db/beacon.d.ts.map +1 -1
  358. package/lib/db/beacon.js.map +1 -1
  359. package/lib/db/buckets.d.ts +23 -23
  360. package/lib/db/buckets.d.ts.map +1 -1
  361. package/lib/db/buckets.js +2 -1
  362. package/lib/db/buckets.js.map +1 -1
  363. package/lib/db/index.d.ts +1 -0
  364. package/lib/db/index.d.ts.map +1 -1
  365. package/lib/db/index.js +1 -0
  366. package/lib/db/index.js.map +1 -1
  367. package/lib/db/repositories/attesterSlashing.d.ts.map +1 -1
  368. package/lib/db/repositories/attesterSlashing.js.map +1 -1
  369. package/lib/db/repositories/backfilledRanges.d.ts.map +1 -1
  370. package/lib/db/repositories/backfilledRanges.js.map +1 -1
  371. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  372. package/lib/db/repositories/blobSidecars.js.map +1 -1
  373. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -1
  374. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  375. package/lib/db/repositories/block.d.ts.map +1 -1
  376. package/lib/db/repositories/block.js.map +1 -1
  377. package/lib/db/repositories/blockArchive.d.ts.map +1 -1
  378. package/lib/db/repositories/blockArchive.js +1 -2
  379. package/lib/db/repositories/blockArchive.js.map +1 -1
  380. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  381. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  382. package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -1
  383. package/lib/db/repositories/blsToExecutionChange.js.map +1 -1
  384. package/lib/db/repositories/checkpointState.d.ts.map +1 -1
  385. package/lib/db/repositories/checkpointState.js.map +1 -1
  386. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
  387. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  388. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  389. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  390. package/lib/db/repositories/executionPayloadEnvelope.d.ts.map +1 -1
  391. package/lib/db/repositories/executionPayloadEnvelope.js.map +1 -1
  392. package/lib/db/repositories/executionPayloadEnvelopeArchive.d.ts.map +1 -1
  393. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -1
  394. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +1 -1
  395. package/lib/db/repositories/lightclientBestUpdate.js.map +1 -1
  396. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +1 -1
  397. package/lib/db/repositories/lightclientCheckpointHeader.js.map +1 -1
  398. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +1 -1
  399. package/lib/db/repositories/lightclientSyncCommittee.js.map +1 -1
  400. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -1
  401. package/lib/db/repositories/lightclientSyncCommitteeWitness.js.map +1 -1
  402. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -1
  403. package/lib/db/repositories/proposerSlashing.js.map +1 -1
  404. package/lib/db/repositories/stateArchive.d.ts.map +1 -1
  405. package/lib/db/repositories/stateArchive.js.map +1 -1
  406. package/lib/db/repositories/stateArchiveIndex.js.map +1 -1
  407. package/lib/db/repositories/voluntaryExit.d.ts.map +1 -1
  408. package/lib/db/repositories/voluntaryExit.js.map +1 -1
  409. package/lib/execution/builder/cache.d.ts.map +1 -1
  410. package/lib/execution/builder/cache.js.map +1 -1
  411. package/lib/execution/builder/http.d.ts.map +1 -1
  412. package/lib/execution/builder/http.js +2 -1
  413. package/lib/execution/builder/http.js.map +1 -1
  414. package/lib/execution/builder/index.js.map +1 -1
  415. package/lib/execution/builder/utils.js.map +1 -1
  416. package/lib/execution/engine/disabled.d.ts.map +1 -1
  417. package/lib/execution/engine/disabled.js.map +1 -1
  418. package/lib/execution/engine/http.d.ts +1 -0
  419. package/lib/execution/engine/http.d.ts.map +1 -1
  420. package/lib/execution/engine/http.js +3 -0
  421. package/lib/execution/engine/http.js.map +1 -1
  422. package/lib/execution/engine/index.js.map +1 -1
  423. package/lib/execution/engine/interface.js +4 -2
  424. package/lib/execution/engine/interface.js.map +1 -1
  425. package/lib/execution/engine/jsonRpcHttpClient.d.ts +10 -15
  426. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -1
  427. package/lib/execution/engine/jsonRpcHttpClient.js +2 -1
  428. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -1
  429. package/lib/execution/engine/jwt.js.map +1 -1
  430. package/lib/execution/engine/mock.d.ts.map +1 -1
  431. package/lib/execution/engine/mock.js.map +1 -1
  432. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  433. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  434. package/lib/execution/engine/types.js.map +1 -1
  435. package/lib/execution/engine/utils.d.ts +1 -1
  436. package/lib/execution/engine/utils.d.ts.map +1 -1
  437. package/lib/execution/engine/utils.js.map +1 -1
  438. package/lib/metrics/metrics/beacon.d.ts +2 -1
  439. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  440. package/lib/metrics/metrics/beacon.js +9 -3
  441. package/lib/metrics/metrics/beacon.js.map +1 -1
  442. package/lib/metrics/metrics/lodestar.d.ts +16 -11
  443. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  444. package/lib/metrics/metrics/lodestar.js +39 -24
  445. package/lib/metrics/metrics/lodestar.js.map +1 -1
  446. package/lib/metrics/metrics.js.map +1 -1
  447. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  448. package/lib/metrics/server/http.d.ts +1 -1
  449. package/lib/metrics/server/http.d.ts.map +1 -1
  450. package/lib/metrics/server/http.js.map +1 -1
  451. package/lib/metrics/utils/avgMinMax.d.ts.map +1 -1
  452. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  453. package/lib/metrics/utils/gauge.d.ts.map +1 -1
  454. package/lib/metrics/utils/gauge.js.map +1 -1
  455. package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -1
  456. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  457. package/lib/monitoring/clientStats.js.map +1 -1
  458. package/lib/monitoring/properties.d.ts.map +1 -1
  459. package/lib/monitoring/properties.js.map +1 -1
  460. package/lib/monitoring/service.d.ts +2 -2
  461. package/lib/monitoring/service.d.ts.map +1 -1
  462. package/lib/monitoring/service.js +3 -2
  463. package/lib/monitoring/service.js.map +1 -1
  464. package/lib/monitoring/system.d.ts.map +1 -1
  465. package/lib/monitoring/system.js.map +1 -1
  466. package/lib/monitoring/types.js +4 -2
  467. package/lib/monitoring/types.js.map +1 -1
  468. package/lib/network/core/events.d.ts +1 -3
  469. package/lib/network/core/events.d.ts.map +1 -1
  470. package/lib/network/core/events.js +4 -2
  471. package/lib/network/core/events.js.map +1 -1
  472. package/lib/network/core/metrics.d.ts +6 -7
  473. package/lib/network/core/metrics.d.ts.map +1 -1
  474. package/lib/network/core/metrics.js.map +1 -1
  475. package/lib/network/core/networkCore.d.ts +4 -4
  476. package/lib/network/core/networkCore.d.ts.map +1 -1
  477. package/lib/network/core/networkCore.js.map +1 -1
  478. package/lib/network/core/networkCoreWorker.js.map +1 -1
  479. package/lib/network/core/networkCoreWorkerHandler.d.ts +3 -3
  480. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  481. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  482. package/lib/network/core/types.d.ts +2 -2
  483. package/lib/network/core/types.d.ts.map +1 -1
  484. package/lib/network/discv5/index.d.ts +1 -3
  485. package/lib/network/discv5/index.d.ts.map +1 -1
  486. package/lib/network/discv5/index.js.map +1 -1
  487. package/lib/network/discv5/utils.d.ts +1 -1
  488. package/lib/network/discv5/utils.d.ts.map +1 -1
  489. package/lib/network/discv5/utils.js +7 -5
  490. package/lib/network/discv5/utils.js.map +1 -1
  491. package/lib/network/discv5/worker.js.map +1 -1
  492. package/lib/network/events.d.ts +3 -4
  493. package/lib/network/events.d.ts.map +1 -1
  494. package/lib/network/events.js +4 -2
  495. package/lib/network/events.js.map +1 -1
  496. package/lib/network/forks.js.map +1 -1
  497. package/lib/network/gossip/encoding.d.ts +3 -3
  498. package/lib/network/gossip/encoding.d.ts.map +1 -1
  499. package/lib/network/gossip/encoding.js.map +1 -1
  500. package/lib/network/gossip/errors.d.ts.map +1 -1
  501. package/lib/network/gossip/errors.js.map +1 -1
  502. package/lib/network/gossip/gossipsub.d.ts +13 -4
  503. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  504. package/lib/network/gossip/gossipsub.js +56 -26
  505. package/lib/network/gossip/gossipsub.js.map +1 -1
  506. package/lib/network/gossip/interface.d.ts +3 -3
  507. package/lib/network/gossip/interface.d.ts.map +1 -1
  508. package/lib/network/gossip/interface.js +4 -2
  509. package/lib/network/gossip/interface.js.map +1 -1
  510. package/lib/network/gossip/metrics.d.ts +12 -14
  511. package/lib/network/gossip/metrics.d.ts.map +1 -1
  512. package/lib/network/gossip/metrics.js.map +1 -1
  513. package/lib/network/gossip/scoringParameters.d.ts +2 -2
  514. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  515. package/lib/network/gossip/scoringParameters.js +1 -1
  516. package/lib/network/gossip/scoringParameters.js.map +1 -1
  517. package/lib/network/gossip/topic.d.ts +2867 -2920
  518. package/lib/network/gossip/topic.d.ts.map +1 -1
  519. package/lib/network/gossip/topic.js.map +1 -1
  520. package/lib/network/interface.d.ts +3 -3
  521. package/lib/network/interface.d.ts.map +1 -1
  522. package/lib/network/libp2p/error.js +2 -1
  523. package/lib/network/libp2p/error.js.map +1 -1
  524. package/lib/network/libp2p/index.d.ts +2 -2
  525. package/lib/network/libp2p/index.d.ts.map +1 -1
  526. package/lib/network/libp2p/index.js +42 -19
  527. package/lib/network/libp2p/index.js.map +1 -1
  528. package/lib/network/metadata.d.ts +1 -0
  529. package/lib/network/metadata.d.ts.map +1 -1
  530. package/lib/network/metadata.js +5 -2
  531. package/lib/network/metadata.js.map +1 -1
  532. package/lib/network/network.d.ts +3 -3
  533. package/lib/network/network.d.ts.map +1 -1
  534. package/lib/network/network.js +1 -1
  535. package/lib/network/network.js.map +1 -1
  536. package/lib/network/options.d.ts +2 -0
  537. package/lib/network/options.d.ts.map +1 -1
  538. package/lib/network/options.js +6 -0
  539. package/lib/network/options.js.map +1 -1
  540. package/lib/network/peers/client.js +2 -1
  541. package/lib/network/peers/client.js.map +1 -1
  542. package/lib/network/peers/datastore.d.ts +7 -8
  543. package/lib/network/peers/datastore.d.ts.map +1 -1
  544. package/lib/network/peers/datastore.js +10 -10
  545. package/lib/network/peers/datastore.js.map +1 -1
  546. package/lib/network/peers/discover.d.ts +2 -7
  547. package/lib/network/peers/discover.d.ts.map +1 -1
  548. package/lib/network/peers/discover.js +45 -12
  549. package/lib/network/peers/discover.js.map +1 -1
  550. package/lib/network/peers/peerManager.d.ts +3 -1
  551. package/lib/network/peers/peerManager.d.ts.map +1 -1
  552. package/lib/network/peers/peerManager.js +103 -53
  553. package/lib/network/peers/peerManager.js.map +1 -1
  554. package/lib/network/peers/peersData.d.ts.map +1 -1
  555. package/lib/network/peers/peersData.js +2 -1
  556. package/lib/network/peers/peersData.js.map +1 -1
  557. package/lib/network/peers/score/interface.js +4 -2
  558. package/lib/network/peers/score/interface.js.map +1 -1
  559. package/lib/network/peers/score/score.d.ts.map +1 -1
  560. package/lib/network/peers/score/score.js.map +1 -1
  561. package/lib/network/peers/score/store.d.ts.map +1 -1
  562. package/lib/network/peers/score/store.js.map +1 -1
  563. package/lib/network/peers/score/utils.js.map +1 -1
  564. package/lib/network/peers/utils/assertPeerRelevance.js +2 -1
  565. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  566. package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
  567. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  568. package/lib/network/peers/utils/prioritizePeers.d.ts +3 -3
  569. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  570. package/lib/network/peers/utils/prioritizePeers.js +2 -1
  571. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  572. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  573. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  574. package/lib/network/processor/aggregatorTracker.d.ts.map +1 -1
  575. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  576. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  577. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  578. package/lib/network/processor/gossipHandlers.js +4 -1
  579. package/lib/network/processor/gossipHandlers.js.map +1 -1
  580. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  581. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -1
  582. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  583. package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -1
  584. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  585. package/lib/network/processor/gossipQueues/types.js +4 -2
  586. package/lib/network/processor/gossipQueues/types.js.map +1 -1
  587. package/lib/network/processor/gossipValidatorFn.js +1 -1
  588. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  589. package/lib/network/processor/index.d.ts.map +1 -1
  590. package/lib/network/processor/index.js +4 -2
  591. package/lib/network/processor/index.js.map +1 -1
  592. package/lib/network/processor/types.d.ts +1 -1
  593. package/lib/network/processor/types.d.ts.map +1 -1
  594. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  595. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  596. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  597. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -2
  598. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  599. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  600. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  601. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +3 -2
  602. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  603. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +1 -1
  604. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  605. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  606. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +3 -2
  607. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  608. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -1
  609. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  610. package/lib/network/reqresp/handlers/index.js.map +1 -1
  611. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  612. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  613. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  614. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  615. package/lib/network/reqresp/interface.js +2 -1
  616. package/lib/network/reqresp/interface.js.map +1 -1
  617. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  618. package/lib/network/reqresp/protocols.js.map +1 -1
  619. package/lib/network/reqresp/rateLimit.js.map +1 -1
  620. package/lib/network/reqresp/score.d.ts.map +1 -1
  621. package/lib/network/reqresp/score.js +0 -1
  622. package/lib/network/reqresp/score.js.map +1 -1
  623. package/lib/network/reqresp/types.js +4 -2
  624. package/lib/network/reqresp/types.js.map +1 -1
  625. package/lib/network/reqresp/utils/collect.d.ts +1 -1
  626. package/lib/network/reqresp/utils/collect.js.map +1 -1
  627. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts +1 -1
  628. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js +2 -1
  629. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js.map +1 -1
  630. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts +1 -1
  631. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -1
  632. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  633. package/lib/network/statusCache.d.ts.map +1 -1
  634. package/lib/network/statusCache.js.map +1 -1
  635. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  636. package/lib/network/subnets/attnetsService.js +2 -1
  637. package/lib/network/subnets/attnetsService.js.map +1 -1
  638. package/lib/network/subnets/interface.js.map +1 -1
  639. package/lib/network/subnets/syncnetsService.d.ts.map +1 -1
  640. package/lib/network/subnets/syncnetsService.js.map +1 -1
  641. package/lib/network/subnets/util.js.map +1 -1
  642. package/lib/network/util.js +2 -2
  643. package/lib/network/util.js.map +1 -1
  644. package/lib/node/nodejs.d.ts +4 -6
  645. package/lib/node/nodejs.d.ts.map +1 -1
  646. package/lib/node/nodejs.js +8 -5
  647. package/lib/node/nodejs.js.map +1 -1
  648. package/lib/node/notifier.js.map +1 -1
  649. package/lib/node/utils/interop/deposits.js.map +1 -1
  650. package/lib/node/utils/interop/state.d.ts +1 -1
  651. package/lib/node/utils/interop/state.d.ts.map +1 -1
  652. package/lib/node/utils/interop/state.js.map +1 -1
  653. package/lib/node/utils/lightclient.js.map +1 -1
  654. package/lib/node/utils/state.js.map +1 -1
  655. package/lib/sync/backfill/backfill.d.ts +1 -10
  656. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  657. package/lib/sync/backfill/backfill.js +6 -3
  658. package/lib/sync/backfill/backfill.js.map +1 -1
  659. package/lib/sync/backfill/errors.js +2 -1
  660. package/lib/sync/backfill/errors.js.map +1 -1
  661. package/lib/sync/backfill/verify.js.map +1 -1
  662. package/lib/sync/interface.js +2 -1
  663. package/lib/sync/interface.js.map +1 -1
  664. package/lib/sync/range/batch.d.ts.map +1 -1
  665. package/lib/sync/range/batch.js +4 -2
  666. package/lib/sync/range/batch.js.map +1 -1
  667. package/lib/sync/range/chain.d.ts +0 -10
  668. package/lib/sync/range/chain.d.ts.map +1 -1
  669. package/lib/sync/range/chain.js +2 -1
  670. package/lib/sync/range/chain.js.map +1 -1
  671. package/lib/sync/range/range.d.ts +1 -3
  672. package/lib/sync/range/range.d.ts.map +1 -1
  673. package/lib/sync/range/range.js +5 -2
  674. package/lib/sync/range/range.js.map +1 -1
  675. package/lib/sync/range/utils/batches.js.map +1 -1
  676. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  677. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  678. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -1
  679. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  680. package/lib/sync/range/utils/updateChains.js.map +1 -1
  681. package/lib/sync/sync.d.ts.map +1 -1
  682. package/lib/sync/sync.js.map +1 -1
  683. package/lib/sync/types.js +4 -2
  684. package/lib/sync/types.js.map +1 -1
  685. package/lib/sync/unknownBlock.d.ts +0 -14
  686. package/lib/sync/unknownBlock.d.ts.map +1 -1
  687. package/lib/sync/unknownBlock.js.map +1 -1
  688. package/lib/sync/utils/downloadByRange.d.ts +8 -5
  689. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  690. package/lib/sync/utils/downloadByRange.js +8 -6
  691. package/lib/sync/utils/downloadByRange.js.map +1 -1
  692. package/lib/sync/utils/downloadByRoot.d.ts +8 -8
  693. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  694. package/lib/sync/utils/downloadByRoot.js +3 -2
  695. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  696. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  697. package/lib/sync/utils/remoteSyncType.d.ts +1 -1
  698. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -1
  699. package/lib/sync/utils/remoteSyncType.js +4 -2
  700. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  701. package/lib/util/address.js.map +1 -1
  702. package/lib/util/array.d.ts.map +1 -1
  703. package/lib/util/array.js.map +1 -1
  704. package/lib/util/asyncIterableToEvents.d.ts.map +1 -1
  705. package/lib/util/asyncIterableToEvents.js +2 -1
  706. package/lib/util/asyncIterableToEvents.js.map +1 -1
  707. package/lib/util/binarySearch.d.ts.map +1 -1
  708. package/lib/util/binarySearch.js.map +1 -1
  709. package/lib/util/bitArray.js +2 -1
  710. package/lib/util/bitArray.js.map +1 -1
  711. package/lib/util/blobs.js.map +1 -1
  712. package/lib/util/bufferPool.d.ts.map +1 -1
  713. package/lib/util/bufferPool.js +2 -1
  714. package/lib/util/bufferPool.js.map +1 -1
  715. package/lib/util/chunkify.js.map +1 -1
  716. package/lib/util/clock.d.ts +6 -0
  717. package/lib/util/clock.d.ts.map +1 -1
  718. package/lib/util/clock.js +11 -4
  719. package/lib/util/clock.js.map +1 -1
  720. package/lib/util/dataColumns.d.ts.map +1 -1
  721. package/lib/util/dataColumns.js +9 -3
  722. package/lib/util/dataColumns.js.map +1 -1
  723. package/lib/util/dependentRoot.js.map +1 -1
  724. package/lib/util/enum.js.map +1 -1
  725. package/lib/util/error.js.map +1 -1
  726. package/lib/util/eventLoop.js.map +1 -1
  727. package/lib/util/execution.d.ts.map +1 -1
  728. package/lib/util/execution.js +19 -9
  729. package/lib/util/execution.js.map +1 -1
  730. package/lib/util/file.js.map +1 -1
  731. package/lib/util/forkChoice.js.map +1 -1
  732. package/lib/util/forkName.js.map +1 -1
  733. package/lib/util/graffiti.js.map +1 -1
  734. package/lib/util/hex.js.map +1 -1
  735. package/lib/util/ip.js.map +1 -1
  736. package/lib/util/itTrigger.d.ts.map +1 -1
  737. package/lib/util/itTrigger.js.map +1 -1
  738. package/lib/util/map.d.ts.map +1 -1
  739. package/lib/util/map.js.map +1 -1
  740. package/lib/util/metadata.js.map +1 -1
  741. package/lib/util/multifork.js.map +1 -1
  742. package/lib/util/numpy.js.map +1 -1
  743. package/lib/util/peerId.js.map +1 -1
  744. package/lib/util/profile.js +2 -1
  745. package/lib/util/profile.js.map +1 -1
  746. package/lib/util/promises.js.map +1 -1
  747. package/lib/util/queue/errors.js +2 -1
  748. package/lib/util/queue/errors.js.map +1 -1
  749. package/lib/util/queue/fnQueue.d.ts.map +1 -1
  750. package/lib/util/queue/fnQueue.js.map +1 -1
  751. package/lib/util/queue/itemQueue.d.ts.map +1 -1
  752. package/lib/util/queue/itemQueue.js.map +1 -1
  753. package/lib/util/queue/options.js +2 -1
  754. package/lib/util/queue/options.js.map +1 -1
  755. package/lib/util/serializedCache.d.ts +4 -4
  756. package/lib/util/serializedCache.d.ts.map +1 -1
  757. package/lib/util/serializedCache.js +6 -4
  758. package/lib/util/serializedCache.js.map +1 -1
  759. package/lib/util/set.d.ts.map +1 -1
  760. package/lib/util/set.js.map +1 -1
  761. package/lib/util/shuffle.js.map +1 -1
  762. package/lib/util/sortBy.js.map +1 -1
  763. package/lib/util/sszBytes.js.map +1 -1
  764. package/lib/util/time.js.map +1 -1
  765. package/lib/util/timeSeries.d.ts.map +1 -1
  766. package/lib/util/timeSeries.js.map +1 -1
  767. package/lib/util/types.d.ts.map +1 -1
  768. package/lib/util/workerEvents.d.ts +1 -1
  769. package/lib/util/workerEvents.d.ts.map +1 -1
  770. package/lib/util/workerEvents.js.map +1 -1
  771. package/lib/util/wrapError.js.map +1 -1
  772. package/package.json +42 -44
  773. package/src/api/impl/beacon/blocks/index.ts +14 -2
  774. package/src/api/impl/beacon/state/index.ts +8 -8
  775. package/src/api/impl/beacon/state/utils.ts +17 -31
  776. package/src/api/impl/debug/index.ts +1 -0
  777. package/src/api/impl/node/utils.ts +3 -3
  778. package/src/api/impl/validator/index.ts +36 -19
  779. package/src/chain/archiveStore/archiveStore.ts +5 -15
  780. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +10 -11
  781. package/src/chain/archiveStore/historicalState/worker.ts +3 -3
  782. package/src/chain/archiveStore/interface.ts +4 -4
  783. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +8 -5
  784. package/src/chain/archiveStore/utils/archiveBlocks.ts +62 -5
  785. package/src/chain/archiveStore/utils/updateBackfillRange.ts +1 -1
  786. package/src/chain/blocks/blockInput/blockInput.ts +103 -3
  787. package/src/chain/blocks/blockInput/types.ts +18 -0
  788. package/src/chain/blocks/importBlock.ts +47 -11
  789. package/src/chain/blocks/verifyBlocksDataAvailability.ts +3 -0
  790. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -2
  791. package/src/chain/blocks/verifyBlocksSanityChecks.ts +7 -2
  792. package/src/chain/blocks/writeBlockInputToDb.ts +105 -104
  793. package/src/chain/bls/multithread/index.ts +7 -7
  794. package/src/chain/bls/multithread/jobItem.ts +3 -3
  795. package/src/chain/bls/singleThread.ts +5 -5
  796. package/src/chain/bls/utils.ts +8 -5
  797. package/src/chain/chain.ts +67 -47
  798. package/src/chain/emitter.ts +3 -3
  799. package/src/chain/errors/executionPayloadBid.ts +1 -1
  800. package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
  801. package/src/chain/errors/payloadAttestation.ts +1 -1
  802. package/src/chain/forkChoice/index.ts +39 -21
  803. package/src/chain/interface.ts +4 -11
  804. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  805. package/src/chain/prepareNextSlot.ts +6 -2
  806. package/src/chain/produceBlock/computeNewStateRoot.ts +4 -3
  807. package/src/chain/produceBlock/produceBlockBody.ts +18 -5
  808. package/src/chain/regen/errors.ts +6 -1
  809. package/src/chain/regen/interface.ts +12 -6
  810. package/src/chain/regen/queued.ts +55 -14
  811. package/src/chain/regen/regen.ts +46 -10
  812. package/src/chain/seenCache/seenGossipBlockInput.ts +56 -18
  813. package/src/chain/stateCache/datastore/db.ts +33 -10
  814. package/src/chain/stateCache/datastore/file.ts +6 -5
  815. package/src/chain/stateCache/datastore/types.ts +3 -2
  816. package/src/chain/stateCache/fifoBlockStateCache.ts +10 -4
  817. package/src/chain/stateCache/persistentCheckpointsCache.ts +248 -139
  818. package/src/chain/stateCache/types.ts +18 -8
  819. package/src/chain/validation/aggregateAndProof.ts +1 -1
  820. package/src/chain/validation/attestation.ts +14 -7
  821. package/src/chain/validation/attesterSlashing.ts +10 -1
  822. package/src/chain/validation/blobSidecar.ts +2 -2
  823. package/src/chain/validation/block.ts +9 -4
  824. package/src/chain/validation/dataColumnSidecar.ts +147 -127
  825. package/src/chain/validation/executionPayloadBid.ts +1 -2
  826. package/src/chain/validation/executionPayloadEnvelope.ts +4 -4
  827. package/src/chain/validation/payloadAttestationMessage.ts +10 -3
  828. package/src/chain/validation/proposerSlashing.ts +1 -1
  829. package/src/chain/validation/syncCommitteeContributionAndProof.ts +1 -1
  830. package/src/db/index.ts +1 -0
  831. package/src/db/repositories/blockArchive.ts +1 -2
  832. package/src/execution/engine/http.ts +3 -0
  833. package/src/metrics/metrics/beacon.ts +9 -3
  834. package/src/metrics/metrics/lodestar.ts +39 -24
  835. package/src/monitoring/service.ts +3 -2
  836. package/src/network/core/networkCore.ts +3 -3
  837. package/src/network/core/networkCoreWorkerHandler.ts +3 -3
  838. package/src/network/core/types.ts +2 -2
  839. package/src/network/discv5/utils.ts +5 -4
  840. package/src/network/events.ts +2 -1
  841. package/src/network/gossip/encoding.ts +3 -3
  842. package/src/network/gossip/gossipsub.ts +98 -32
  843. package/src/network/gossip/interface.ts +3 -3
  844. package/src/network/gossip/scoringParameters.ts +4 -4
  845. package/src/network/interface.ts +3 -3
  846. package/src/network/libp2p/index.ts +48 -21
  847. package/src/network/metadata.ts +1 -0
  848. package/src/network/network.ts +5 -4
  849. package/src/network/options.ts +8 -1
  850. package/src/network/peers/datastore.ts +13 -10
  851. package/src/network/peers/discover.ts +46 -11
  852. package/src/network/peers/peerManager.ts +118 -54
  853. package/src/network/peers/utils/prioritizePeers.ts +3 -3
  854. package/src/network/processor/gossipHandlers.ts +12 -3
  855. package/src/network/processor/gossipValidatorFn.ts +2 -2
  856. package/src/network/processor/types.ts +1 -1
  857. package/src/network/reqresp/ReqRespBeaconNode.ts +1 -1
  858. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +4 -3
  859. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +3 -2
  860. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +1 -1
  861. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +4 -3
  862. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +2 -2
  863. package/src/network/reqresp/score.ts +0 -1
  864. package/src/network/reqresp/utils/collect.ts +1 -1
  865. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +1 -1
  866. package/src/network/util.ts +2 -2
  867. package/src/node/nodejs.ts +8 -9
  868. package/src/sync/range/range.ts +1 -0
  869. package/src/sync/utils/downloadByRange.ts +12 -3
  870. package/src/sync/utils/downloadByRoot.ts +2 -2
  871. package/src/sync/utils/remoteSyncType.ts +1 -1
  872. package/src/util/clock.ts +9 -4
  873. package/src/util/dataColumns.ts +6 -2
  874. package/src/util/execution.ts +23 -12
  875. package/src/util/serializedCache.ts +7 -5
  876. package/src/util/workerEvents.ts +1 -1
  877. package/lib/chain/archiveStore/utils/archivePayloads.d.ts +0 -7
  878. package/lib/chain/archiveStore/utils/archivePayloads.d.ts.map +0 -1
  879. package/lib/chain/archiveStore/utils/archivePayloads.js +0 -10
  880. package/lib/chain/archiveStore/utils/archivePayloads.js.map +0 -1
  881. package/src/chain/archiveStore/utils/archivePayloads.ts +0 -15
@@ -128,6 +128,7 @@ const getClientVersionOpts: ReqOpts = {routeId: "getClientVersion"};
128
128
  */
129
129
  export class ExecutionEngineHttp implements IExecutionEngine {
130
130
  private logger: Logger;
131
+ private metrics: Metrics | null;
131
132
 
132
133
  // The default state is ONLINE, it will be updated to SYNCING once we receive the first payload
133
134
  // This assumption is better than the OFFLINE state, since we can't be sure if the EL is offline and being offline may trigger some notifications
@@ -167,6 +168,7 @@ export class ExecutionEngineHttp implements IExecutionEngine {
167
168
  metrics?.engineHttpProcessorQueue
168
169
  );
169
170
  this.logger = logger;
171
+ this.metrics = metrics ?? null;
170
172
 
171
173
  this.rpc.emitter.on(JsonRpcHttpClientEvent.ERROR, ({error}) => {
172
174
  this.updateEngineState(getExecutionEngineState({payloadError: error, oldState: this.state}));
@@ -369,6 +371,7 @@ export class ExecutionEngineHttp implements IExecutionEngine {
369
371
  } = await request;
370
372
 
371
373
  this.updateEngineState(getExecutionEngineState({payloadStatus: status, oldState: this.state}));
374
+ this.metrics?.engineNotifyForkchoiceUpdateResult.inc({result: status});
372
375
 
373
376
  switch (status) {
374
377
  case ExecutionPayloadStatus.VALID:
@@ -333,11 +333,13 @@ export function createBeaconMetrics(register: RegistryMetricCreator) {
333
333
  help: "Time taken to verify data_column sidecar inclusion proof",
334
334
  buckets: [0.002, 0.004, 0.006, 0.008, 0.01, 0.05, 1, 2],
335
335
  }),
336
+ // single verification
336
337
  dataColumnSidecarKzgProofsVerificationTime: register.histogram({
337
338
  name: "beacon_data_column_sidecar_kzg_proofs_verification_seconds",
338
- help: "Time taken to verify data_column sidecar kzg proofs",
339
+ help: "Time taken to verify single data_column sidecar kzg proofs",
339
340
  buckets: [0.01, 0.02, 0.03, 0.04, 0.05, 0.1, 0.2, 0.5, 1],
340
341
  }),
342
+ // batch verification
341
343
  kzgVerificationDataColumnBatchTime: register.histogram({
342
344
  name: "beacon_kzg_verification_data_column_batch_seconds",
343
345
  help: "Runtime of batched data column kzg verification",
@@ -361,10 +363,14 @@ export function createBeaconMetrics(register: RegistryMetricCreator) {
361
363
  help: "Duration of engine_getBlobsV2 requests",
362
364
  buckets: [0.01, 0.05, 0.1, 0.5, 1, 2.5, 5, 7.5],
363
365
  }),
364
- targetCustodyGroupCount: register.gauge({
365
- name: "beacon_target_custody_group_count",
366
+ custodyGroupCount: register.gauge({
367
+ name: "beacon_custody_groups",
366
368
  help: "Total number of custody groups within a node",
367
369
  }),
370
+ custodyGroupsBackfilled: register.gauge({
371
+ name: "beacon_custody_groups_backfilled",
372
+ help: "Total number of custody groups backfilled by a node",
373
+ }),
368
374
  reconstructedColumns: register.counter({
369
375
  name: "beacon_data_availability_reconstructed_columns_total",
370
376
  help: "Total count of reconstructed columns",
@@ -836,20 +836,23 @@ export function createLodestarMetrics(
836
836
  buckets: [0.5, 1, 2, 4, 6, 12],
837
837
  }),
838
838
  },
839
- recoverDataColumnSidecars: {
840
- recoverTime: register.histogram({
841
- name: "lodestar_recover_data_column_sidecar_recover_time_seconds",
842
- help: "Time elapsed to recover data column sidecar",
843
- buckets: [0.5, 1.0, 1.5, 2],
839
+ // recovery in the case of specific blob rows required
840
+ recoverBlobSidecars: {
841
+ blobsReconstructed: register.counter({
842
+ name: "lodestar_blobs_reconstructed_total",
843
+ help: "Total count of reconstructed blobs",
844
+ }),
845
+ reconstructionTime: register.histogram({
846
+ name: "lodestar_blob_reconstruction_seconds",
847
+ help: "Time taken to reconstruct blobs",
848
+ buckets: [0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 2, 5],
844
849
  }),
850
+ },
851
+ recoverDataColumnSidecars: {
845
852
  custodyBeforeReconstruction: register.gauge({
846
853
  name: "lodestar_data_columns_in_custody_before_reconstruction",
847
854
  help: "Number of data columns in custody before reconstruction",
848
855
  }),
849
- numberOfColumnsRecovered: register.gauge({
850
- name: "lodestar_recover_data_column_sidecar_recovered_columns_total",
851
- help: "Total number of columns that were recovered",
852
- }),
853
856
  reconstructionResult: register.counter<{result: DataColumnReconstructionCode}>({
854
857
  name: "lodestar_data_column_sidecars_reconstruction_result",
855
858
  help: "Data column sidecars reconstruction result",
@@ -857,6 +860,10 @@ export function createLodestarMetrics(
857
860
  }),
858
861
  },
859
862
  dataColumns: {
863
+ alreadyAdded: register.counter({
864
+ name: "lodestar_data_column_sidecar_already_added",
865
+ help: "Total number of columns that were already added by other sources while waiting",
866
+ }),
860
867
  bySource: register.gauge<{source: BlockInputSource}>({
861
868
  name: "lodestar_data_columns_by_source",
862
869
  help: "Number of received data columns by source",
@@ -912,11 +919,6 @@ export function createLodestarMetrics(
912
919
  help: "Total number of imported blobs by source",
913
920
  labelNames: ["blobsSource"],
914
921
  }),
915
- columnsBySource: register.gauge<{source: BlockInputSource}>({
916
- name: "lodestar_import_columns_by_source_total",
917
- help: "Total number of imported columns (sampled columns) by source",
918
- labelNames: ["source"],
919
- }),
920
922
  notOverrideFcuReason: register.counter<{reason: NotReorgedReason}>({
921
923
  name: "lodestar_import_block_not_override_fcu_reason_total",
922
924
  help: "Reason why the fcu call is not suppressed during block import",
@@ -928,6 +930,11 @@ export function createLodestarMetrics(
928
930
  help: "The total result of calling notifyNewPayload execution engine api",
929
931
  labelNames: ["result"],
930
932
  }),
933
+ engineNotifyForkchoiceUpdateResult: register.gauge<{result: ExecutionPayloadStatus}>({
934
+ name: "lodestar_execution_engine_notify_forkchoice_update_result_total",
935
+ help: "The total result of calling notifyForkchoiceUpdate execution engine api",
936
+ labelNames: ["result"],
937
+ }),
931
938
  backfillSync: {
932
939
  backfilledTillSlot: register.gauge({
933
940
  name: "lodestar_backfill_till_slot",
@@ -1456,29 +1463,37 @@ export function createLodestarMetrics(
1456
1463
  name: "lodestar_seen_block_input_cache_size",
1457
1464
  help: "Number of cached BlockInputs",
1458
1465
  }),
1459
- duplicateBlockCount: register.gauge<{source: BlockInputSource}>({
1460
- name: "lodestar_seen_block_input_cache_duplicate_block_count",
1466
+ serializedObjectRefs: register.gauge({
1467
+ name: "lodestar_seen_block_input_cache_serialized_object_refs",
1468
+ help: "Number of serialized-cache object refs retained by cached BlockInputs",
1469
+ }),
1470
+ duplicateBlockCount: register.counter<{source: BlockInputSource}>({
1471
+ name: "lodestar_seen_block_input_cache_duplicate_block_total",
1461
1472
  help: "Total number of duplicate blocks that pass validation and attempt to be cached but are known",
1462
1473
  labelNames: ["source"],
1463
1474
  }),
1464
- duplicateBlobCount: register.gauge<{source: BlockInputSource}>({
1465
- name: "lodestar_seen_block_input_cache_duplicate_blob_count",
1475
+ duplicateBlobCount: register.counter<{source: BlockInputSource}>({
1476
+ name: "lodestar_seen_block_input_cache_duplicate_blob_total",
1466
1477
  help: "Total number of duplicate blobs that pass validation and attempt to be cached but are known",
1467
1478
  labelNames: ["source"],
1468
1479
  }),
1469
- duplicateColumnCount: register.gauge<{source: BlockInputSource}>({
1470
- name: "lodestar_seen_block_input_cache_duplicate_column_count",
1480
+ duplicateColumnCount: register.counter<{source: BlockInputSource}>({
1481
+ name: "lodestar_seen_block_input_cache_duplicate_column_total",
1471
1482
  help: "Total number of duplicate columns that pass validation and attempt to be cached but are known",
1472
1483
  labelNames: ["source"],
1473
1484
  }),
1474
- createdByBlock: register.gauge({
1475
- name: "lodestar_seen_block_input_cache_items_created_by_block",
1485
+ createdByBlock: register.counter({
1486
+ name: "lodestar_seen_block_input_cache_items_created_by_block_total",
1476
1487
  help: "Number of BlockInputs created via a block being seen first",
1477
1488
  }),
1478
- createdByBlob: register.gauge({
1479
- name: "lodestar_seen_block_input_cache_items_created_by_blob",
1489
+ createdByBlob: register.counter({
1490
+ name: "lodestar_seen_block_input_cache_items_created_by_blob_total",
1480
1491
  help: "Number of BlockInputs created via a blob being seen first",
1481
1492
  }),
1493
+ createdByColumn: register.counter({
1494
+ name: "lodestar_seen_block_input_cache_items_created_by_column_total",
1495
+ help: "Number of BlockInputs created via a data column being seen first",
1496
+ }),
1482
1497
  },
1483
1498
  },
1484
1499
 
@@ -89,9 +89,9 @@ export class MonitoringService {
89
89
  }
90
90
 
91
91
  /**
92
- * Stop sending client stats
92
+ * Stop sending client stats and wait for any pending request to complete
93
93
  */
94
- close(): void {
94
+ async close(): Promise<void> {
95
95
  if (this.status === Status.Closed) return;
96
96
  this.status = Status.Closed;
97
97
 
@@ -103,6 +103,7 @@ export class MonitoringService {
103
103
  }
104
104
  if (this.pendingRequest) {
105
105
  this.fetchAbortController?.abort(FetchAbortReason.Close);
106
+ await this.pendingRequest;
106
107
  }
107
108
  }
108
109
 
@@ -1,8 +1,8 @@
1
- import {Connection, PrivateKey} from "@libp2p/interface";
1
+ import type {PeerScoreStatsDump} from "@libp2p/gossipsub/score";
2
+ import type {PublishOpts} from "@libp2p/gossipsub/types";
3
+ import type {Connection, PrivateKey} from "@libp2p/interface";
2
4
  import {peerIdFromPrivateKey} from "@libp2p/peer-id";
3
5
  import {multiaddr} from "@multiformats/multiaddr";
4
- import {PeerScoreStatsDump} from "@chainsafe/libp2p-gossipsub/score";
5
- import {PublishOpts} from "@chainsafe/libp2p-gossipsub/types";
6
6
  import {routes} from "@lodestar/api";
7
7
  import {BeaconConfig, ForkBoundary} from "@lodestar/config";
8
8
  import type {LoggerNode} from "@lodestar/logger/node";
@@ -1,9 +1,9 @@
1
1
  import path from "node:path";
2
2
  import workerThreads from "node:worker_threads";
3
3
  import {privateKeyToProtobuf} from "@libp2p/crypto/keys";
4
- import {PrivateKey} from "@libp2p/interface";
5
- import {PeerScoreStatsDump} from "@chainsafe/libp2p-gossipsub/score";
6
- import {PublishOpts} from "@chainsafe/libp2p-gossipsub/types";
4
+ import type {PeerScoreStatsDump} from "@libp2p/gossipsub/score";
5
+ import type {PublishOpts} from "@libp2p/gossipsub/types";
6
+ import type {PrivateKey} from "@libp2p/interface";
7
7
  import {ModuleThread, Thread, Worker, spawn} from "@chainsafe/threads";
8
8
  import {routes} from "@lodestar/api";
9
9
  import {BeaconConfig, chainConfigToJson} from "@lodestar/config";
@@ -1,5 +1,5 @@
1
- import {PeerScoreStatsDump} from "@chainsafe/libp2p-gossipsub/score";
2
- import {PublishOpts} from "@chainsafe/libp2p-gossipsub/types";
1
+ import type {PeerScoreStatsDump} from "@libp2p/gossipsub/score";
2
+ import type {PublishOpts} from "@libp2p/gossipsub/types";
3
3
  import {routes} from "@lodestar/api";
4
4
  import {SpecJson} from "@lodestar/config";
5
5
  import {LoggerNodeOpts} from "@lodestar/logger/node";
@@ -4,7 +4,7 @@ import {IClock} from "../../util/clock.js";
4
4
  import {ENRKey} from "../metadata.js";
5
5
 
6
6
  export enum ENRRelevance {
7
- no_tcp = "no_tcp",
7
+ no_transport = "no_transport",
8
8
  no_eth2 = "no_eth2",
9
9
  // biome-ignore lint/style/useNamingConvention: Need to use the this name for network convention
10
10
  unknown_forkDigest = "unknown_forkDigest",
@@ -13,10 +13,11 @@ export enum ENRRelevance {
13
13
  }
14
14
 
15
15
  export function enrRelevance(enr: ENR, config: BeaconConfig, clock: IClock): ENRRelevance {
16
- // We are not interested in peers that don't advertise their tcp addr
16
+ // We are not interested in peers that don't advertise at least one transport (tcp or quic)
17
17
  const multiaddrTCP = enr.getLocationMultiaddr(ENRKey.tcp);
18
- if (!multiaddrTCP) {
19
- return ENRRelevance.no_tcp;
18
+ const multiaddrQUIC = enr.getLocationMultiaddr(ENRKey.quic);
19
+ if (!multiaddrTCP && !multiaddrQUIC) {
20
+ return ENRRelevance.no_transport;
20
21
  }
21
22
 
22
23
  // Check if the ENR.eth2 field matches and is of interest
@@ -1,5 +1,6 @@
1
1
  import {EventEmitter} from "node:events";
2
- import {PeerId, TopicValidatorResult} from "@libp2p/interface";
2
+ import type {TopicValidatorResult} from "@libp2p/gossipsub";
3
+ import type {PeerId} from "@libp2p/interface";
3
4
  import {CustodyIndex, Status} from "@lodestar/types";
4
5
  import {PeerIdStr} from "../util/peerId.js";
5
6
  import {StrictEventEmitterSingleArg} from "../util/strictEvents.js";
@@ -1,9 +1,9 @@
1
- import {Message} from "@libp2p/interface";
1
+ import type {Message} from "@libp2p/gossipsub";
2
+ import type {RPC} from "@libp2p/gossipsub/message";
3
+ import type {DataTransform} from "@libp2p/gossipsub/types";
2
4
  // snappyjs is better for compression for smaller payloads
3
5
  import xxhashFactory from "xxhash-wasm";
4
6
  import {digest} from "@chainsafe/as-sha256";
5
- import {RPC} from "@chainsafe/libp2p-gossipsub/message";
6
- import {DataTransform} from "@chainsafe/libp2p-gossipsub/types";
7
7
  import snappyWasm from "@chainsafe/snappy-wasm";
8
8
  import {ForkName} from "@lodestar/params";
9
9
  import {intToBytes} from "@lodestar/utils";
@@ -1,10 +1,18 @@
1
+ import {
2
+ type GossipSub,
3
+ type GossipSubEvents,
4
+ type PublishResult,
5
+ StrictNoSign,
6
+ type TopicValidatorResult,
7
+ gossipsub,
8
+ } from "@libp2p/gossipsub";
9
+ import type {MetricsRegister, TopicLabel, TopicStrToLabel} from "@libp2p/gossipsub/metrics";
10
+ import type {PeerScoreParams, PeerScoreStatsDump} from "@libp2p/gossipsub/score";
11
+ import type {AddrInfo, PublishOpts, TopicStr} from "@libp2p/gossipsub/types";
12
+ import type {PeerId} from "@libp2p/interface";
1
13
  import {peerIdFromString} from "@libp2p/peer-id";
2
- import {multiaddr} from "@multiformats/multiaddr";
14
+ import {type Multiaddr, multiaddr} from "@multiformats/multiaddr";
3
15
  import {ENR} from "@chainsafe/enr";
4
- import {GossipSub, GossipsubEvents} from "@chainsafe/libp2p-gossipsub";
5
- import {MetricsRegister, TopicLabel, TopicStrToLabel} from "@chainsafe/libp2p-gossipsub/metrics";
6
- import {PeerScoreParams} from "@chainsafe/libp2p-gossipsub/score";
7
- import {AddrInfo, SignaturePolicy, TopicStr} from "@chainsafe/libp2p-gossipsub/types";
8
16
  import {routes} from "@lodestar/api";
9
17
  import {BeaconConfig, ForkBoundary} from "@lodestar/config";
10
18
  import {ATTESTATION_SUBNET_COUNT, SLOTS_PER_EPOCH, SYNC_COMMITTEE_SUBNET_COUNT} from "@lodestar/params";
@@ -69,6 +77,24 @@ export type Eth2GossipsubOpts = {
69
77
 
70
78
  export type ForkBoundaryLabel = string;
71
79
 
80
+ // Many of the internal properties we need are not available on the public interface,
81
+ // so we create an extended type here to avoid excessive type assertions throughout the codebase.
82
+ // Mind that any updates to the gossipsub package may require updates to this type.
83
+ type GossipSubInternal = GossipSub & {
84
+ mesh: Map<string, Set<string>>;
85
+ peers: Map<string, PeerId>;
86
+ score: {score: (peerIdStr: string) => number};
87
+ direct: Set<string>;
88
+ topics: Map<string, Set<string>>;
89
+ start: () => Promise<void>;
90
+ stop: () => Promise<void>;
91
+ publish: (topic: TopicStr, data: Uint8Array, opts?: PublishOpts) => Promise<PublishResult>;
92
+ getMeshPeers: (topic: TopicStr) => string[];
93
+ dumpPeerScoreStats: () => PeerScoreStatsDump;
94
+ getScore: (peerIdStr: string) => number;
95
+ reportMessageValidationResult: (msgId: string, propagationSource: string, acceptance: TopicValidatorResult) => void;
96
+ };
97
+
72
98
  /**
73
99
  * Wrapper around js-libp2p-gossipsub with the following extensions:
74
100
  * - Eth2 message id
@@ -82,13 +108,14 @@ export type ForkBoundaryLabel = string;
82
108
  *
83
109
  * See https://github.com/ethereum/consensus-specs/blob/v1.1.10/specs/phase0/p2p-interface.md#the-gossip-domain-gossipsub
84
110
  */
85
- export class Eth2Gossipsub extends GossipSub {
111
+ export class Eth2Gossipsub {
86
112
  readonly scoreParams: Partial<PeerScoreParams>;
87
113
  private readonly config: BeaconConfig;
88
114
  private readonly logger: Logger;
89
115
  private readonly peersData: PeersData;
90
116
  private readonly events: NetworkEventBus;
91
117
  private readonly libp2p: Libp2p;
118
+ private readonly gossipsub: GossipSubInternal;
92
119
 
93
120
  // Internal caches
94
121
  private readonly gossipTopicCache: GossipTopicCache;
@@ -103,9 +130,6 @@ export class Eth2Gossipsub extends GossipSub {
103
130
  let metrics: Eth2GossipsubMetrics | null = null;
104
131
  if (metricsRegister) {
105
132
  metrics = createEth2GossipsubMetrics(metricsRegister);
106
- metrics.gossipMesh.peersByType.addCollect(() =>
107
- this.onScrapeLodestarMetrics(metrics as Eth2GossipsubMetrics, networkConfig)
108
- );
109
133
  }
110
134
 
111
135
  // Parse direct peers from multiaddr strings to AddrInfo objects
@@ -113,8 +137,8 @@ export class Eth2Gossipsub extends GossipSub {
113
137
 
114
138
  // Gossipsub parameters defined here:
115
139
  // https://github.com/ethereum/consensus-specs/blob/v1.1.10/specs/phase0/p2p-interface.md#the-gossip-domain-gossipsub
116
- super(modules.libp2p.services.components, {
117
- globalSignaturePolicy: SignaturePolicy.StrictNoSign,
140
+ const gossipsubInstance = gossipsub({
141
+ globalSignaturePolicy: StrictNoSign,
118
142
  allowPublishToZeroTopicPeers: allowPublishToZeroPeers,
119
143
  D: gossipsubD ?? GOSSIP_D,
120
144
  Dlo: gossipsubDLow ?? GOSSIP_D_LOW,
@@ -155,7 +179,12 @@ export class Eth2Gossipsub extends GossipSub {
155
179
  // This should be large enough to not send IDONTWANT for "small" messages
156
180
  // See https://github.com/ChainSafe/lodestar/pull/7077#issuecomment-2383679472
157
181
  idontwantMinDataSize: 16829,
158
- });
182
+ })(modules.libp2p.services.components) as GossipSubInternal;
183
+
184
+ if (metrics) {
185
+ metrics.gossipMesh.peersByType.addCollect(() => this.onScrapeLodestarMetrics(metrics, networkConfig));
186
+ }
187
+ this.gossipsub = gossipsubInstance;
159
188
  this.scoreParams = scoreParams;
160
189
  this.config = config;
161
190
  this.logger = logger;
@@ -164,7 +193,7 @@ export class Eth2Gossipsub extends GossipSub {
164
193
  this.libp2p = modules.libp2p;
165
194
  this.gossipTopicCache = gossipTopicCache;
166
195
 
167
- this.addEventListener("gossipsub:message", this.onGossipsubMessage.bind(this));
196
+ this.gossipsub.addEventListener("gossipsub:message", this.onGossipsubMessage.bind(this));
168
197
  this.events.on(NetworkEvent.gossipMessageValidationResult, this.onValidationResult.bind(this));
169
198
 
170
199
  // Having access to this data is CRUCIAL for debugging. While this is a massive log, it must not be deleted.
@@ -174,6 +203,38 @@ export class Eth2Gossipsub extends GossipSub {
174
203
  }
175
204
  }
176
205
 
206
+ async start(): Promise<void> {
207
+ await this.gossipsub.start();
208
+ }
209
+
210
+ async stop(): Promise<void> {
211
+ await this.gossipsub.stop();
212
+ }
213
+
214
+ get mesh(): Map<string, Set<string>> {
215
+ return this.gossipsub.mesh;
216
+ }
217
+
218
+ getTopics(): TopicStr[] {
219
+ return this.gossipsub.getTopics();
220
+ }
221
+
222
+ getMeshPeers(topic: TopicStr): string[] {
223
+ return this.gossipsub.getMeshPeers(topic);
224
+ }
225
+
226
+ publish(topic: TopicStr, data: Uint8Array, opts?: PublishOpts): Promise<PublishResult> {
227
+ return this.gossipsub.publish(topic, data, opts);
228
+ }
229
+
230
+ dumpPeerScoreStats(): PeerScoreStatsDump {
231
+ return this.gossipsub.dumpPeerScoreStats();
232
+ }
233
+
234
+ getScore(peerIdStr: string): number {
235
+ return this.gossipsub.getScore(peerIdStr);
236
+ }
237
+
177
238
  /**
178
239
  * Subscribe to a `GossipTopic`
179
240
  */
@@ -183,7 +244,7 @@ export class Eth2Gossipsub extends GossipSub {
183
244
  this.gossipTopicCache.setTopic(topicStr, topic);
184
245
 
185
246
  this.logger.verbose("Subscribe to gossipsub topic", {topic: topicStr});
186
- this.subscribe(topicStr);
247
+ this.gossipsub.subscribe(topicStr);
187
248
  }
188
249
 
189
250
  /**
@@ -192,15 +253,14 @@ export class Eth2Gossipsub extends GossipSub {
192
253
  unsubscribeTopic(topic: GossipTopic): void {
193
254
  const topicStr = stringifyGossipTopic(this.config, topic);
194
255
  this.logger.verbose("Unsubscribe to gossipsub topic", {topic: topicStr});
195
- this.unsubscribe(topicStr);
256
+ this.gossipsub.unsubscribe(topicStr);
196
257
  }
197
258
 
198
259
  private onScrapeLodestarMetrics(metrics: Eth2GossipsubMetrics, networkConfig: NetworkConfig): void {
199
- const mesh = this.mesh;
200
- // biome-ignore lint/complexity/useLiteralKeys: `topics` is a private attribute
201
- const topics = this["topics"] as Map<string, Set<string>>;
202
- const peers = this.peers;
203
- const score = this.score;
260
+ const mesh = this.gossipsub.mesh;
261
+ const topics = this.gossipsub.topics;
262
+ const peers = this.gossipsub.peers;
263
+ const score = this.gossipsub.score;
204
264
  const meshPeersByClient = new Map<string, number>();
205
265
  const meshPeerIdStrs = new Set<string>();
206
266
 
@@ -305,7 +365,7 @@ export class Eth2Gossipsub extends GossipSub {
305
365
  metrics.gossipPeer.score.set(gossipScores);
306
366
  }
307
367
 
308
- private onGossipsubMessage(event: GossipsubEvents["gossipsub:message"]): void {
368
+ private onGossipsubMessage(event: GossipSubEvents["gossipsub:message"]): void {
309
369
  const {propagationSource, msgId, msg} = event.detail;
310
370
 
311
371
  // Also validates that the topicStr is known
@@ -341,7 +401,7 @@ export class Eth2Gossipsub extends GossipSub {
341
401
  // Without this we'll have huge event loop lag
342
402
  // See https://github.com/ChainSafe/lodestar/issues/5604
343
403
  callInNextEventLoop(() => {
344
- this.reportMessageValidationResult(data.msgId, data.propagationSource, data.acceptance);
404
+ this.gossipsub.reportMessageValidationResult(data.msgId, data.propagationSource, data.acceptance);
345
405
  });
346
406
  }
347
407
 
@@ -379,7 +439,7 @@ export class Eth2Gossipsub extends GossipSub {
379
439
  }
380
440
 
381
441
  // Add to direct peers set only after addresses are stored
382
- this.direct.add(peerIdStr);
442
+ this.gossipsub.direct.add(peerIdStr);
383
443
 
384
444
  this.logger.info("Added direct peer via API", {peerId: peerIdStr});
385
445
  return peerIdStr;
@@ -389,7 +449,7 @@ export class Eth2Gossipsub extends GossipSub {
389
449
  * Remove a peer from direct peers.
390
450
  */
391
451
  removeDirectPeer(peerIdStr: string): boolean {
392
- const removed = this.direct.delete(peerIdStr);
452
+ const removed = this.gossipsub.direct.delete(peerIdStr);
393
453
  if (removed) {
394
454
  this.logger.info("Removed direct peer via API", {peerId: peerIdStr});
395
455
  }
@@ -400,7 +460,7 @@ export class Eth2Gossipsub extends GossipSub {
400
460
  * Get list of current direct peer IDs.
401
461
  */
402
462
  getDirectPeers(): string[] {
403
- return Array.from(this.direct);
463
+ return Array.from(this.gossipsub.direct);
404
464
  }
405
465
  }
406
466
 
@@ -477,19 +537,24 @@ export function parseDirectPeers(directPeerStrs: routes.lodestar.DirectPeer[], l
477
537
  const enr = ENR.decodeTxt(peerStr);
478
538
  const peerId = enr.peerId;
479
539
 
480
- // Get TCP multiaddr from ENR
481
- const multiaddrTCP = enr.getLocationMultiaddr("tcp");
482
- if (!multiaddrTCP) {
483
- logger.warn("ENR does not contain TCP multiaddr", {enr: peerStr});
540
+ // Get all available transport multiaddrs from ENR
541
+ const addrs = [enr.getLocationMultiaddr("quic"), enr.getLocationMultiaddr("tcp")].filter(
542
+ (a): a is Multiaddr => a != null
543
+ );
544
+ if (addrs.length === 0) {
545
+ logger.warn("ENR does not contain any transport multiaddr", {enr: peerStr});
484
546
  continue;
485
547
  }
486
548
 
487
549
  directPeers.push({
488
550
  id: peerId,
489
- addrs: [multiaddrTCP],
551
+ addrs,
490
552
  });
491
553
 
492
- logger.info("Added direct peer from ENR", {peerId: peerId.toString(), addr: multiaddrTCP.toString()});
554
+ logger.info("Added direct peer from ENR", {
555
+ peerId: peerId.toString(),
556
+ addrs: addrs.map((a) => a.toString()).join(", "),
557
+ });
493
558
  } catch (e) {
494
559
  logger.warn("Failed to parse direct peer ENR", {enr: peerStr}, e as Error);
495
560
  }
@@ -498,7 +563,8 @@ export function parseDirectPeers(directPeerStrs: routes.lodestar.DirectPeer[], l
498
563
  try {
499
564
  const ma = multiaddr(peerStr);
500
565
 
501
- const peerIdStr = ma.getPeerId();
566
+ const peerIdComponent = ma.getComponents().findLast((component) => component.name === "p2p");
567
+ const peerIdStr = peerIdComponent?.value;
502
568
  if (!peerIdStr) {
503
569
  logger.warn("Direct peer multiaddr must contain /p2p/ component with peer ID", {multiaddr: peerStr});
504
570
  continue;
@@ -1,6 +1,6 @@
1
- import {Message, TopicValidatorResult} from "@libp2p/interface";
2
- import {Libp2p} from "libp2p";
3
- import {PeerIdStr} from "@chainsafe/libp2p-gossipsub/types";
1
+ import type {Message, TopicValidatorResult} from "@libp2p/gossipsub";
2
+ import type {PeerIdStr} from "@libp2p/gossipsub/types";
3
+ import type {Libp2p} from "libp2p";
4
4
  import {BeaconConfig, ForkBoundary} from "@lodestar/config";
5
5
  import {
6
6
  AttesterSlashing,
@@ -1,9 +1,9 @@
1
1
  import {
2
- PeerScoreParams,
3
- PeerScoreThresholds,
4
- TopicScoreParams,
2
+ type PeerScoreParams,
3
+ type PeerScoreThresholds,
4
+ type TopicScoreParams,
5
5
  defaultTopicScoreParams,
6
- } from "@chainsafe/libp2p-gossipsub/score";
6
+ } from "@libp2p/gossipsub/score";
7
7
  import {BeaconConfig} from "@lodestar/config";
8
8
  import {ATTESTATION_SUBNET_COUNT, PTC_SIZE, SLOTS_PER_EPOCH, TARGET_AGGREGATORS_PER_COMMITTEE} from "@lodestar/params";
9
9
  import {computeCommitteeCount} from "@lodestar/state-transition";
@@ -1,5 +1,5 @@
1
- import {Identify} from "@libp2p/identify";
2
- import {
1
+ import type {Identify} from "@libp2p/identify";
2
+ import type {
3
3
  ComponentLogger,
4
4
  ConnectionGater,
5
5
  ConnectionProtector,
@@ -16,7 +16,7 @@ import {
16
16
  } from "@libp2p/interface";
17
17
  import type {AddressManager, ConnectionManager, Registrar, TransportManager} from "@libp2p/interface-internal";
18
18
  import type {Datastore} from "interface-datastore";
19
- import {Libp2p as ILibp2p} from "libp2p";
19
+ import type {Libp2p as ILibp2p} from "libp2p";
20
20
  import {
21
21
  AttesterSlashing,
22
22
  DataColumnSidecar,