@lodestar/beacon-node 1.41.0-dev.a35cbde8b3 → 1.41.0-dev.aeab9f930d

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 (868) 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 +3 -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 +3 -4
  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 +6 -2
  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 +33 -17
  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 +1 -0
  64. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  65. package/lib/chain/archiveStore/archiveStore.js +11 -1
  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.js +2 -1
  79. package/lib/chain/archiveStore/interface.js.map +1 -1
  80. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +1 -1
  81. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  82. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +2 -1
  83. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  84. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +3 -8
  85. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  86. package/lib/chain/archiveStore/utils/archiveBlocks.js +1 -1
  87. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  88. package/lib/chain/archiveStore/utils/archivePayloads.d.ts +7 -0
  89. package/lib/chain/archiveStore/utils/archivePayloads.d.ts.map +1 -0
  90. package/lib/chain/archiveStore/utils/archivePayloads.js +10 -0
  91. package/lib/chain/archiveStore/utils/archivePayloads.js.map +1 -0
  92. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  93. package/lib/chain/archiveStore/utils/updateBackfillRange.js +1 -1
  94. package/lib/chain/archiveStore/utils/updateBackfillRange.js.map +1 -1
  95. package/lib/chain/balancesCache.d.ts.map +1 -1
  96. package/lib/chain/balancesCache.js.map +1 -1
  97. package/lib/chain/beaconProposerCache.d.ts.map +1 -1
  98. package/lib/chain/beaconProposerCache.js.map +1 -1
  99. package/lib/chain/blocks/blockInput/blockInput.d.ts +25 -2
  100. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  101. package/lib/chain/blocks/blockInput/blockInput.js +71 -0
  102. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  103. package/lib/chain/blocks/blockInput/errors.js +2 -1
  104. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  105. package/lib/chain/blocks/blockInput/types.d.ts +18 -1
  106. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  107. package/lib/chain/blocks/blockInput/types.js +5 -2
  108. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  109. package/lib/chain/blocks/blockInput/utils.js.map +1 -1
  110. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  111. package/lib/chain/blocks/importBlock.js +27 -4
  112. package/lib/chain/blocks/importBlock.js.map +1 -1
  113. package/lib/chain/blocks/index.d.ts.map +1 -1
  114. package/lib/chain/blocks/index.js.map +1 -1
  115. package/lib/chain/blocks/types.js +6 -3
  116. package/lib/chain/blocks/types.js.map +1 -1
  117. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  118. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  119. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  120. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  121. package/lib/chain/blocks/verifyBlocksDataAvailability.js +3 -0
  122. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  123. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +4 -0
  124. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  125. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -1
  126. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  127. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  128. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -1
  129. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  130. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  131. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  132. package/lib/chain/blocks/writeBlockInputToDb.d.ts +12 -3
  133. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  134. package/lib/chain/blocks/writeBlockInputToDb.js +92 -98
  135. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  136. package/lib/chain/bls/maybeBatch.js.map +1 -1
  137. package/lib/chain/bls/multithread/index.d.ts +3 -3
  138. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  139. package/lib/chain/bls/multithread/index.js +5 -5
  140. package/lib/chain/bls/multithread/index.js.map +1 -1
  141. package/lib/chain/bls/multithread/jobItem.d.ts +2 -2
  142. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
  143. package/lib/chain/bls/multithread/jobItem.js +4 -3
  144. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  145. package/lib/chain/bls/multithread/types.js +2 -1
  146. package/lib/chain/bls/multithread/types.js.map +1 -1
  147. package/lib/chain/bls/multithread/utils.js.map +1 -1
  148. package/lib/chain/bls/multithread/worker.js.map +1 -1
  149. package/lib/chain/bls/singleThread.d.ts +4 -4
  150. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  151. package/lib/chain/bls/singleThread.js +4 -4
  152. package/lib/chain/bls/singleThread.js.map +1 -1
  153. package/lib/chain/bls/utils.d.ts +2 -2
  154. package/lib/chain/bls/utils.d.ts.map +1 -1
  155. package/lib/chain/bls/utils.js +7 -4
  156. package/lib/chain/bls/utils.js.map +1 -1
  157. package/lib/chain/chain.d.ts +9 -12
  158. package/lib/chain/chain.d.ts.map +1 -1
  159. package/lib/chain/chain.js +22 -23
  160. package/lib/chain/chain.js.map +1 -1
  161. package/lib/chain/emitter.d.ts +6 -8
  162. package/lib/chain/emitter.d.ts.map +1 -1
  163. package/lib/chain/emitter.js +2 -1
  164. package/lib/chain/emitter.js.map +1 -1
  165. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  166. package/lib/chain/errors/attestationError.js +2 -1
  167. package/lib/chain/errors/attestationError.js.map +1 -1
  168. package/lib/chain/errors/attesterSlashingError.js +2 -1
  169. package/lib/chain/errors/attesterSlashingError.js.map +1 -1
  170. package/lib/chain/errors/blobSidecarError.js +2 -1
  171. package/lib/chain/errors/blobSidecarError.js.map +1 -1
  172. package/lib/chain/errors/blockError.d.ts.map +1 -1
  173. package/lib/chain/errors/blockError.js +2 -1
  174. package/lib/chain/errors/blockError.js.map +1 -1
  175. package/lib/chain/errors/blsToExecutionChangeError.js +2 -1
  176. package/lib/chain/errors/blsToExecutionChangeError.js.map +1 -1
  177. package/lib/chain/errors/dataColumnSidecarError.js +2 -1
  178. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  179. package/lib/chain/errors/executionPayloadBid.d.ts +1 -1
  180. package/lib/chain/errors/executionPayloadBid.js +2 -1
  181. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  182. package/lib/chain/errors/executionPayloadEnvelope.d.ts +2 -2
  183. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  184. package/lib/chain/errors/executionPayloadEnvelope.js +2 -1
  185. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  186. package/lib/chain/errors/gossipValidation.d.ts.map +1 -1
  187. package/lib/chain/errors/gossipValidation.js +4 -2
  188. package/lib/chain/errors/gossipValidation.js.map +1 -1
  189. package/lib/chain/errors/lightClientError.js +4 -2
  190. package/lib/chain/errors/lightClientError.js.map +1 -1
  191. package/lib/chain/errors/payloadAttestation.d.ts +1 -1
  192. package/lib/chain/errors/payloadAttestation.js +2 -1
  193. package/lib/chain/errors/payloadAttestation.js.map +1 -1
  194. package/lib/chain/errors/proposerSlashingError.js +2 -1
  195. package/lib/chain/errors/proposerSlashingError.js.map +1 -1
  196. package/lib/chain/errors/syncCommitteeError.js +2 -1
  197. package/lib/chain/errors/syncCommitteeError.js.map +1 -1
  198. package/lib/chain/errors/voluntaryExitError.js +2 -1
  199. package/lib/chain/errors/voluntaryExitError.js.map +1 -1
  200. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  201. package/lib/chain/forkChoice/index.js +32 -25
  202. package/lib/chain/forkChoice/index.js.map +1 -1
  203. package/lib/chain/initState.d.ts +1 -1
  204. package/lib/chain/initState.d.ts.map +1 -1
  205. package/lib/chain/initState.js.map +1 -1
  206. package/lib/chain/interface.d.ts +4 -6
  207. package/lib/chain/interface.d.ts.map +1 -1
  208. package/lib/chain/interface.js +2 -1
  209. package/lib/chain/interface.js.map +1 -1
  210. package/lib/chain/lightClient/index.d.ts +0 -29
  211. package/lib/chain/lightClient/index.d.ts.map +1 -1
  212. package/lib/chain/lightClient/index.js.map +1 -1
  213. package/lib/chain/lightClient/proofs.js.map +1 -1
  214. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  215. package/lib/chain/opPools/aggregatedAttestationPool.js +5 -3
  216. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  217. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  218. package/lib/chain/opPools/attestationPool.js.map +1 -1
  219. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
  220. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  221. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  222. package/lib/chain/opPools/opPool.js.map +1 -1
  223. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  224. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  225. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  226. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  227. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  228. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  229. package/lib/chain/opPools/types.js +4 -2
  230. package/lib/chain/opPools/types.js.map +1 -1
  231. package/lib/chain/opPools/utils.js.map +1 -1
  232. package/lib/chain/prepareNextSlot.d.ts +1 -2
  233. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  234. package/lib/chain/prepareNextSlot.js.map +1 -1
  235. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +0 -1
  236. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  237. package/lib/chain/produceBlock/computeNewStateRoot.js +4 -3
  238. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  239. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  240. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  241. package/lib/chain/produceBlock/produceBlockBody.js +15 -6
  242. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  243. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  244. package/lib/chain/regen/errors.d.ts.map +1 -1
  245. package/lib/chain/regen/errors.js +2 -1
  246. package/lib/chain/regen/errors.js.map +1 -1
  247. package/lib/chain/regen/interface.js +4 -2
  248. package/lib/chain/regen/interface.js.map +1 -1
  249. package/lib/chain/regen/queued.d.ts.map +1 -1
  250. package/lib/chain/regen/queued.js +4 -1
  251. package/lib/chain/regen/queued.js.map +1 -1
  252. package/lib/chain/regen/regen.d.ts.map +1 -1
  253. package/lib/chain/regen/regen.js +6 -2
  254. package/lib/chain/regen/regen.js.map +1 -1
  255. package/lib/chain/reprocess.d.ts.map +1 -1
  256. package/lib/chain/reprocess.js +2 -1
  257. package/lib/chain/reprocess.js.map +1 -1
  258. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -1
  259. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  260. package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -1
  261. package/lib/chain/seenCache/seenAttestationData.js +2 -1
  262. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  263. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  264. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  265. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -1
  266. package/lib/chain/seenCache/seenBlockAttesters.js.map +1 -1
  267. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -1
  268. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  269. package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -1
  270. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  271. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -1
  272. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  273. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -1
  274. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -1
  275. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -1
  276. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -1
  277. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -3
  278. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  279. package/lib/chain/seenCache/seenGossipBlockInput.js +38 -16
  280. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  281. package/lib/chain/serializeState.js +1 -0
  282. package/lib/chain/serializeState.js.map +1 -1
  283. package/lib/chain/shufflingCache.d.ts.map +1 -1
  284. package/lib/chain/shufflingCache.js +2 -1
  285. package/lib/chain/shufflingCache.js.map +1 -1
  286. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  287. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  288. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  289. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  290. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  291. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  292. package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -1
  293. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  294. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +1 -41
  295. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  296. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  297. package/lib/chain/stateCache/types.js +2 -1
  298. package/lib/chain/stateCache/types.js.map +1 -1
  299. package/lib/chain/validation/aggregateAndProof.js +1 -1
  300. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  301. package/lib/chain/validation/attestation.d.ts.map +1 -1
  302. package/lib/chain/validation/attestation.js +14 -7
  303. package/lib/chain/validation/attestation.js.map +1 -1
  304. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  305. package/lib/chain/validation/attesterSlashing.js +9 -2
  306. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  307. package/lib/chain/validation/blobSidecar.js +2 -2
  308. package/lib/chain/validation/blobSidecar.js.map +1 -1
  309. package/lib/chain/validation/block.d.ts.map +1 -1
  310. package/lib/chain/validation/block.js +6 -3
  311. package/lib/chain/validation/block.js.map +1 -1
  312. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  313. package/lib/chain/validation/dataColumnSidecar.js +1 -1
  314. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  315. package/lib/chain/validation/executionPayloadBid.js +1 -2
  316. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  317. package/lib/chain/validation/executionPayloadEnvelope.js +4 -4
  318. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  319. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  320. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  321. package/lib/chain/validation/payloadAttestationMessage.js +9 -3
  322. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  323. package/lib/chain/validation/proposerSlashing.js +1 -1
  324. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  325. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  326. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  327. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  328. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  329. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  330. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  331. package/lib/chain/validation/syncCommittee.js.map +1 -1
  332. package/lib/chain/validation/syncCommitteeContributionAndProof.js +1 -1
  333. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  334. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  335. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  336. package/lib/chain/validatorMonitor.js +2 -1
  337. package/lib/chain/validatorMonitor.js.map +1 -1
  338. package/lib/constants/network.js +4 -2
  339. package/lib/constants/network.js.map +1 -1
  340. package/lib/db/beacon.d.ts +3 -1
  341. package/lib/db/beacon.d.ts.map +1 -1
  342. package/lib/db/beacon.js +5 -1
  343. package/lib/db/beacon.js.map +1 -1
  344. package/lib/db/buckets.d.ts +24 -22
  345. package/lib/db/buckets.d.ts.map +1 -1
  346. package/lib/db/buckets.js +4 -1
  347. package/lib/db/buckets.js.map +1 -1
  348. package/lib/db/index.d.ts +1 -0
  349. package/lib/db/index.d.ts.map +1 -1
  350. package/lib/db/index.js +1 -0
  351. package/lib/db/index.js.map +1 -1
  352. package/lib/db/interface.d.ts +3 -1
  353. package/lib/db/interface.d.ts.map +1 -1
  354. package/lib/db/repositories/attesterSlashing.d.ts.map +1 -1
  355. package/lib/db/repositories/attesterSlashing.js.map +1 -1
  356. package/lib/db/repositories/backfilledRanges.d.ts.map +1 -1
  357. package/lib/db/repositories/backfilledRanges.js.map +1 -1
  358. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  359. package/lib/db/repositories/blobSidecars.js.map +1 -1
  360. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -1
  361. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  362. package/lib/db/repositories/block.d.ts.map +1 -1
  363. package/lib/db/repositories/block.js.map +1 -1
  364. package/lib/db/repositories/blockArchive.d.ts.map +1 -1
  365. package/lib/db/repositories/blockArchive.js +1 -2
  366. package/lib/db/repositories/blockArchive.js.map +1 -1
  367. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  368. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
  369. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  370. package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -1
  371. package/lib/db/repositories/blsToExecutionChange.js.map +1 -1
  372. package/lib/db/repositories/checkpointState.d.ts.map +1 -1
  373. package/lib/db/repositories/checkpointState.js.map +1 -1
  374. package/lib/db/repositories/dataColumnSidecar.d.ts +5 -3
  375. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
  376. package/lib/db/repositories/dataColumnSidecar.js +14 -1
  377. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  378. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +5 -3
  379. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  380. package/lib/db/repositories/dataColumnSidecarArchive.js +14 -1
  381. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  382. package/lib/db/repositories/executionPayloadEnvelope.d.ts +19 -0
  383. package/lib/db/repositories/executionPayloadEnvelope.d.ts.map +1 -0
  384. package/lib/db/repositories/executionPayloadEnvelope.js +22 -0
  385. package/lib/db/repositories/executionPayloadEnvelope.js.map +1 -0
  386. package/lib/db/repositories/executionPayloadEnvelopeArchive.d.ts +18 -0
  387. package/lib/db/repositories/executionPayloadEnvelopeArchive.d.ts.map +1 -0
  388. package/lib/db/repositories/executionPayloadEnvelopeArchive.js +28 -0
  389. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -0
  390. package/lib/db/repositories/index.d.ts +2 -0
  391. package/lib/db/repositories/index.d.ts.map +1 -1
  392. package/lib/db/repositories/index.js +2 -0
  393. package/lib/db/repositories/index.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.map +1 -1
  439. package/lib/metrics/metrics/beacon.js.map +1 -1
  440. package/lib/metrics/metrics/lodestar.d.ts +11 -6
  441. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  442. package/lib/metrics/metrics/lodestar.js +23 -10
  443. package/lib/metrics/metrics/lodestar.js.map +1 -1
  444. package/lib/metrics/metrics.js.map +1 -1
  445. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  446. package/lib/metrics/server/http.d.ts +1 -1
  447. package/lib/metrics/server/http.d.ts.map +1 -1
  448. package/lib/metrics/server/http.js.map +1 -1
  449. package/lib/metrics/utils/avgMinMax.d.ts.map +1 -1
  450. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  451. package/lib/metrics/utils/gauge.d.ts.map +1 -1
  452. package/lib/metrics/utils/gauge.js.map +1 -1
  453. package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -1
  454. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  455. package/lib/monitoring/clientStats.js.map +1 -1
  456. package/lib/monitoring/properties.d.ts.map +1 -1
  457. package/lib/monitoring/properties.js.map +1 -1
  458. package/lib/monitoring/service.d.ts +2 -2
  459. package/lib/monitoring/service.d.ts.map +1 -1
  460. package/lib/monitoring/service.js +3 -2
  461. package/lib/monitoring/service.js.map +1 -1
  462. package/lib/monitoring/system.d.ts.map +1 -1
  463. package/lib/monitoring/system.js.map +1 -1
  464. package/lib/monitoring/types.js +4 -2
  465. package/lib/monitoring/types.js.map +1 -1
  466. package/lib/network/core/events.d.ts +1 -3
  467. package/lib/network/core/events.d.ts.map +1 -1
  468. package/lib/network/core/events.js +4 -2
  469. package/lib/network/core/events.js.map +1 -1
  470. package/lib/network/core/metrics.d.ts +6 -7
  471. package/lib/network/core/metrics.d.ts.map +1 -1
  472. package/lib/network/core/metrics.js.map +1 -1
  473. package/lib/network/core/networkCore.d.ts +4 -4
  474. package/lib/network/core/networkCore.d.ts.map +1 -1
  475. package/lib/network/core/networkCore.js.map +1 -1
  476. package/lib/network/core/networkCoreWorker.js.map +1 -1
  477. package/lib/network/core/networkCoreWorkerHandler.d.ts +3 -3
  478. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  479. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  480. package/lib/network/core/types.d.ts +2 -2
  481. package/lib/network/core/types.d.ts.map +1 -1
  482. package/lib/network/discv5/index.d.ts +1 -3
  483. package/lib/network/discv5/index.d.ts.map +1 -1
  484. package/lib/network/discv5/index.js.map +1 -1
  485. package/lib/network/discv5/utils.js +2 -1
  486. package/lib/network/discv5/utils.js.map +1 -1
  487. package/lib/network/discv5/worker.js.map +1 -1
  488. package/lib/network/events.d.ts +3 -4
  489. package/lib/network/events.d.ts.map +1 -1
  490. package/lib/network/events.js +4 -2
  491. package/lib/network/events.js.map +1 -1
  492. package/lib/network/forks.js.map +1 -1
  493. package/lib/network/gossip/encoding.d.ts +3 -3
  494. package/lib/network/gossip/encoding.d.ts.map +1 -1
  495. package/lib/network/gossip/encoding.js.map +1 -1
  496. package/lib/network/gossip/errors.d.ts.map +1 -1
  497. package/lib/network/gossip/errors.js.map +1 -1
  498. package/lib/network/gossip/gossipsub.d.ts +13 -4
  499. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  500. package/lib/network/gossip/gossipsub.js +47 -20
  501. package/lib/network/gossip/gossipsub.js.map +1 -1
  502. package/lib/network/gossip/interface.d.ts +3 -3
  503. package/lib/network/gossip/interface.d.ts.map +1 -1
  504. package/lib/network/gossip/interface.js +4 -2
  505. package/lib/network/gossip/interface.js.map +1 -1
  506. package/lib/network/gossip/metrics.d.ts +12 -14
  507. package/lib/network/gossip/metrics.d.ts.map +1 -1
  508. package/lib/network/gossip/metrics.js.map +1 -1
  509. package/lib/network/gossip/scoringParameters.d.ts +2 -2
  510. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  511. package/lib/network/gossip/scoringParameters.js +1 -1
  512. package/lib/network/gossip/scoringParameters.js.map +1 -1
  513. package/lib/network/gossip/topic.d.ts +3121 -3174
  514. package/lib/network/gossip/topic.d.ts.map +1 -1
  515. package/lib/network/gossip/topic.js.map +1 -1
  516. package/lib/network/interface.d.ts +3 -3
  517. package/lib/network/interface.d.ts.map +1 -1
  518. package/lib/network/libp2p/error.js +2 -1
  519. package/lib/network/libp2p/error.js.map +1 -1
  520. package/lib/network/libp2p/index.d.ts +1 -1
  521. package/lib/network/libp2p/index.d.ts.map +1 -1
  522. package/lib/network/libp2p/index.js +7 -2
  523. package/lib/network/libp2p/index.js.map +1 -1
  524. package/lib/network/metadata.d.ts.map +1 -1
  525. package/lib/network/metadata.js +4 -2
  526. package/lib/network/metadata.js.map +1 -1
  527. package/lib/network/network.d.ts +3 -3
  528. package/lib/network/network.d.ts.map +1 -1
  529. package/lib/network/network.js +2 -2
  530. package/lib/network/network.js.map +1 -1
  531. package/lib/network/options.d.ts.map +1 -1
  532. package/lib/network/options.js +3 -0
  533. package/lib/network/options.js.map +1 -1
  534. package/lib/network/peers/client.js +2 -1
  535. package/lib/network/peers/client.js.map +1 -1
  536. package/lib/network/peers/datastore.d.ts +7 -8
  537. package/lib/network/peers/datastore.d.ts.map +1 -1
  538. package/lib/network/peers/datastore.js +10 -10
  539. package/lib/network/peers/datastore.js.map +1 -1
  540. package/lib/network/peers/discover.d.ts +0 -7
  541. package/lib/network/peers/discover.d.ts.map +1 -1
  542. package/lib/network/peers/discover.js +4 -2
  543. package/lib/network/peers/discover.js.map +1 -1
  544. package/lib/network/peers/peerManager.d.ts +3 -1
  545. package/lib/network/peers/peerManager.d.ts.map +1 -1
  546. package/lib/network/peers/peerManager.js +103 -53
  547. package/lib/network/peers/peerManager.js.map +1 -1
  548. package/lib/network/peers/peersData.d.ts.map +1 -1
  549. package/lib/network/peers/peersData.js +2 -1
  550. package/lib/network/peers/peersData.js.map +1 -1
  551. package/lib/network/peers/score/interface.js +4 -2
  552. package/lib/network/peers/score/interface.js.map +1 -1
  553. package/lib/network/peers/score/score.d.ts.map +1 -1
  554. package/lib/network/peers/score/score.js.map +1 -1
  555. package/lib/network/peers/score/store.d.ts.map +1 -1
  556. package/lib/network/peers/score/store.js.map +1 -1
  557. package/lib/network/peers/score/utils.js.map +1 -1
  558. package/lib/network/peers/utils/assertPeerRelevance.js +2 -1
  559. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  560. package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
  561. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  562. package/lib/network/peers/utils/prioritizePeers.d.ts +3 -3
  563. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  564. package/lib/network/peers/utils/prioritizePeers.js +2 -1
  565. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  566. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  567. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  568. package/lib/network/processor/aggregatorTracker.d.ts.map +1 -1
  569. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  570. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  571. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  572. package/lib/network/processor/gossipHandlers.js +4 -1
  573. package/lib/network/processor/gossipHandlers.js.map +1 -1
  574. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  575. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -1
  576. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  577. package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -1
  578. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  579. package/lib/network/processor/gossipQueues/types.js +4 -2
  580. package/lib/network/processor/gossipQueues/types.js.map +1 -1
  581. package/lib/network/processor/gossipValidatorFn.js +1 -1
  582. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  583. package/lib/network/processor/index.d.ts.map +1 -1
  584. package/lib/network/processor/index.js +4 -2
  585. package/lib/network/processor/index.js.map +1 -1
  586. package/lib/network/processor/types.d.ts +1 -1
  587. package/lib/network/processor/types.d.ts.map +1 -1
  588. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  589. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  590. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  591. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -2
  592. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  593. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  594. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  595. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +3 -2
  596. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  597. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +1 -1
  598. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  599. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  600. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +3 -2
  601. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  602. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -1
  603. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  604. package/lib/network/reqresp/handlers/index.js.map +1 -1
  605. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  606. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  607. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  608. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  609. package/lib/network/reqresp/interface.js +2 -1
  610. package/lib/network/reqresp/interface.js.map +1 -1
  611. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  612. package/lib/network/reqresp/protocols.js.map +1 -1
  613. package/lib/network/reqresp/rateLimit.js.map +1 -1
  614. package/lib/network/reqresp/score.d.ts.map +1 -1
  615. package/lib/network/reqresp/score.js +0 -1
  616. package/lib/network/reqresp/score.js.map +1 -1
  617. package/lib/network/reqresp/types.js +4 -2
  618. package/lib/network/reqresp/types.js.map +1 -1
  619. package/lib/network/reqresp/utils/collect.d.ts +1 -1
  620. package/lib/network/reqresp/utils/collect.js.map +1 -1
  621. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts +1 -1
  622. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js +2 -1
  623. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js.map +1 -1
  624. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts +1 -1
  625. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -1
  626. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  627. package/lib/network/statusCache.d.ts.map +1 -1
  628. package/lib/network/statusCache.js.map +1 -1
  629. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  630. package/lib/network/subnets/attnetsService.js +2 -1
  631. package/lib/network/subnets/attnetsService.js.map +1 -1
  632. package/lib/network/subnets/interface.js.map +1 -1
  633. package/lib/network/subnets/syncnetsService.d.ts.map +1 -1
  634. package/lib/network/subnets/syncnetsService.js.map +1 -1
  635. package/lib/network/subnets/util.js.map +1 -1
  636. package/lib/network/util.js +2 -2
  637. package/lib/network/util.js.map +1 -1
  638. package/lib/node/nodejs.d.ts +4 -6
  639. package/lib/node/nodejs.d.ts.map +1 -1
  640. package/lib/node/nodejs.js +8 -5
  641. package/lib/node/nodejs.js.map +1 -1
  642. package/lib/node/notifier.js.map +1 -1
  643. package/lib/node/utils/interop/deposits.js.map +1 -1
  644. package/lib/node/utils/interop/state.d.ts +1 -1
  645. package/lib/node/utils/interop/state.d.ts.map +1 -1
  646. package/lib/node/utils/interop/state.js.map +1 -1
  647. package/lib/node/utils/lightclient.js.map +1 -1
  648. package/lib/node/utils/state.js.map +1 -1
  649. package/lib/sync/backfill/backfill.d.ts +1 -10
  650. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  651. package/lib/sync/backfill/backfill.js +6 -3
  652. package/lib/sync/backfill/backfill.js.map +1 -1
  653. package/lib/sync/backfill/errors.js +2 -1
  654. package/lib/sync/backfill/errors.js.map +1 -1
  655. package/lib/sync/backfill/verify.js.map +1 -1
  656. package/lib/sync/interface.js +2 -1
  657. package/lib/sync/interface.js.map +1 -1
  658. package/lib/sync/range/batch.d.ts.map +1 -1
  659. package/lib/sync/range/batch.js +4 -2
  660. package/lib/sync/range/batch.js.map +1 -1
  661. package/lib/sync/range/chain.d.ts +0 -10
  662. package/lib/sync/range/chain.d.ts.map +1 -1
  663. package/lib/sync/range/chain.js +2 -1
  664. package/lib/sync/range/chain.js.map +1 -1
  665. package/lib/sync/range/range.d.ts +1 -3
  666. package/lib/sync/range/range.d.ts.map +1 -1
  667. package/lib/sync/range/range.js +4 -2
  668. package/lib/sync/range/range.js.map +1 -1
  669. package/lib/sync/range/utils/batches.js.map +1 -1
  670. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  671. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  672. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -1
  673. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  674. package/lib/sync/range/utils/updateChains.js.map +1 -1
  675. package/lib/sync/sync.d.ts.map +1 -1
  676. package/lib/sync/sync.js.map +1 -1
  677. package/lib/sync/types.js +4 -2
  678. package/lib/sync/types.js.map +1 -1
  679. package/lib/sync/unknownBlock.d.ts +0 -14
  680. package/lib/sync/unknownBlock.d.ts.map +1 -1
  681. package/lib/sync/unknownBlock.js.map +1 -1
  682. package/lib/sync/utils/downloadByRange.d.ts +4 -4
  683. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  684. package/lib/sync/utils/downloadByRange.js +2 -1
  685. package/lib/sync/utils/downloadByRange.js.map +1 -1
  686. package/lib/sync/utils/downloadByRoot.d.ts +8 -8
  687. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  688. package/lib/sync/utils/downloadByRoot.js +2 -1
  689. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  690. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  691. package/lib/sync/utils/remoteSyncType.d.ts +1 -1
  692. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -1
  693. package/lib/sync/utils/remoteSyncType.js +4 -2
  694. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  695. package/lib/util/address.js.map +1 -1
  696. package/lib/util/array.d.ts.map +1 -1
  697. package/lib/util/array.js.map +1 -1
  698. package/lib/util/asyncIterableToEvents.d.ts.map +1 -1
  699. package/lib/util/asyncIterableToEvents.js +2 -1
  700. package/lib/util/asyncIterableToEvents.js.map +1 -1
  701. package/lib/util/binarySearch.d.ts.map +1 -1
  702. package/lib/util/binarySearch.js.map +1 -1
  703. package/lib/util/bitArray.js +2 -1
  704. package/lib/util/bitArray.js.map +1 -1
  705. package/lib/util/blobs.d.ts +2 -2
  706. package/lib/util/blobs.d.ts.map +1 -1
  707. package/lib/util/blobs.js.map +1 -1
  708. package/lib/util/bufferPool.d.ts.map +1 -1
  709. package/lib/util/bufferPool.js +2 -1
  710. package/lib/util/bufferPool.js.map +1 -1
  711. package/lib/util/chunkify.js.map +1 -1
  712. package/lib/util/clock.d.ts +6 -0
  713. package/lib/util/clock.d.ts.map +1 -1
  714. package/lib/util/clock.js +11 -4
  715. package/lib/util/clock.js.map +1 -1
  716. package/lib/util/dataColumns.d.ts +3 -5
  717. package/lib/util/dataColumns.d.ts.map +1 -1
  718. package/lib/util/dataColumns.js +4 -6
  719. package/lib/util/dataColumns.js.map +1 -1
  720. package/lib/util/dependentRoot.js.map +1 -1
  721. package/lib/util/enum.js.map +1 -1
  722. package/lib/util/error.js.map +1 -1
  723. package/lib/util/eventLoop.js.map +1 -1
  724. package/lib/util/execution.js +2 -1
  725. package/lib/util/execution.js.map +1 -1
  726. package/lib/util/file.js.map +1 -1
  727. package/lib/util/forkChoice.js.map +1 -1
  728. package/lib/util/forkName.js.map +1 -1
  729. package/lib/util/graffiti.js.map +1 -1
  730. package/lib/util/hex.js.map +1 -1
  731. package/lib/util/ip.js.map +1 -1
  732. package/lib/util/itTrigger.d.ts.map +1 -1
  733. package/lib/util/itTrigger.js.map +1 -1
  734. package/lib/util/map.d.ts.map +1 -1
  735. package/lib/util/map.js.map +1 -1
  736. package/lib/util/metadata.js.map +1 -1
  737. package/lib/util/multifork.d.ts +8 -0
  738. package/lib/util/multifork.d.ts.map +1 -1
  739. package/lib/util/multifork.js +37 -0
  740. package/lib/util/multifork.js.map +1 -1
  741. package/lib/util/numpy.js.map +1 -1
  742. package/lib/util/peerId.js.map +1 -1
  743. package/lib/util/profile.js +2 -1
  744. package/lib/util/profile.js.map +1 -1
  745. package/lib/util/promises.js.map +1 -1
  746. package/lib/util/queue/errors.js +2 -1
  747. package/lib/util/queue/errors.js.map +1 -1
  748. package/lib/util/queue/fnQueue.d.ts.map +1 -1
  749. package/lib/util/queue/fnQueue.js.map +1 -1
  750. package/lib/util/queue/itemQueue.d.ts.map +1 -1
  751. package/lib/util/queue/itemQueue.js.map +1 -1
  752. package/lib/util/queue/options.js +2 -1
  753. package/lib/util/queue/options.js.map +1 -1
  754. package/lib/util/serializedCache.d.ts +4 -4
  755. package/lib/util/serializedCache.d.ts.map +1 -1
  756. package/lib/util/serializedCache.js +6 -4
  757. package/lib/util/serializedCache.js.map +1 -1
  758. package/lib/util/set.d.ts.map +1 -1
  759. package/lib/util/set.js.map +1 -1
  760. package/lib/util/shuffle.js.map +1 -1
  761. package/lib/util/sortBy.js.map +1 -1
  762. package/lib/util/sszBytes.js.map +1 -1
  763. package/lib/util/time.js.map +1 -1
  764. package/lib/util/timeSeries.d.ts.map +1 -1
  765. package/lib/util/timeSeries.js.map +1 -1
  766. package/lib/util/types.d.ts.map +1 -1
  767. package/lib/util/workerEvents.d.ts +1 -1
  768. package/lib/util/workerEvents.d.ts.map +1 -1
  769. package/lib/util/workerEvents.js.map +1 -1
  770. package/lib/util/wrapError.js.map +1 -1
  771. package/package.json +41 -44
  772. package/src/api/impl/beacon/blocks/index.ts +3 -2
  773. package/src/api/impl/beacon/state/index.ts +8 -8
  774. package/src/api/impl/beacon/state/utils.ts +15 -29
  775. package/src/api/impl/debug/index.ts +9 -5
  776. package/src/api/impl/node/utils.ts +3 -3
  777. package/src/api/impl/validator/index.ts +29 -16
  778. package/src/chain/archiveStore/archiveStore.ts +15 -5
  779. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +10 -11
  780. package/src/chain/archiveStore/historicalState/worker.ts +3 -3
  781. package/src/chain/archiveStore/utils/archiveBlocks.ts +4 -5
  782. package/src/chain/archiveStore/utils/archivePayloads.ts +15 -0
  783. package/src/chain/archiveStore/utils/updateBackfillRange.ts +1 -1
  784. package/src/chain/blocks/blockInput/blockInput.ts +103 -3
  785. package/src/chain/blocks/blockInput/types.ts +18 -0
  786. package/src/chain/blocks/importBlock.ts +35 -4
  787. package/src/chain/blocks/verifyBlocksDataAvailability.ts +3 -0
  788. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -2
  789. package/src/chain/blocks/verifyBlocksSanityChecks.ts +7 -2
  790. package/src/chain/blocks/writeBlockInputToDb.ts +105 -104
  791. package/src/chain/bls/multithread/index.ts +7 -7
  792. package/src/chain/bls/multithread/jobItem.ts +3 -3
  793. package/src/chain/bls/singleThread.ts +5 -5
  794. package/src/chain/bls/utils.ts +8 -5
  795. package/src/chain/chain.ts +47 -39
  796. package/src/chain/emitter.ts +5 -5
  797. package/src/chain/errors/executionPayloadBid.ts +1 -1
  798. package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
  799. package/src/chain/errors/payloadAttestation.ts +1 -1
  800. package/src/chain/forkChoice/index.ts +39 -21
  801. package/src/chain/interface.ts +4 -11
  802. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  803. package/src/chain/produceBlock/computeNewStateRoot.ts +4 -3
  804. package/src/chain/produceBlock/produceBlockBody.ts +10 -4
  805. package/src/chain/regen/queued.ts +7 -2
  806. package/src/chain/regen/regen.ts +9 -3
  807. package/src/chain/seenCache/seenGossipBlockInput.ts +56 -18
  808. package/src/chain/validation/aggregateAndProof.ts +1 -1
  809. package/src/chain/validation/attestation.ts +14 -7
  810. package/src/chain/validation/attesterSlashing.ts +10 -1
  811. package/src/chain/validation/blobSidecar.ts +2 -2
  812. package/src/chain/validation/block.ts +9 -4
  813. package/src/chain/validation/dataColumnSidecar.ts +1 -1
  814. package/src/chain/validation/executionPayloadBid.ts +1 -2
  815. package/src/chain/validation/executionPayloadEnvelope.ts +4 -4
  816. package/src/chain/validation/payloadAttestationMessage.ts +10 -3
  817. package/src/chain/validation/proposerSlashing.ts +1 -1
  818. package/src/chain/validation/syncCommitteeContributionAndProof.ts +1 -1
  819. package/src/db/beacon.ts +8 -0
  820. package/src/db/buckets.ts +3 -0
  821. package/src/db/index.ts +1 -0
  822. package/src/db/interface.ts +5 -0
  823. package/src/db/repositories/blockArchive.ts +1 -2
  824. package/src/db/repositories/dataColumnSidecar.ts +18 -3
  825. package/src/db/repositories/dataColumnSidecarArchive.ts +18 -3
  826. package/src/db/repositories/executionPayloadEnvelope.ts +26 -0
  827. package/src/db/repositories/executionPayloadEnvelopeArchive.ts +32 -0
  828. package/src/db/repositories/index.ts +2 -0
  829. package/src/execution/engine/http.ts +3 -0
  830. package/src/metrics/metrics/lodestar.ts +23 -10
  831. package/src/monitoring/service.ts +3 -2
  832. package/src/network/core/networkCore.ts +3 -3
  833. package/src/network/core/networkCoreWorkerHandler.ts +3 -3
  834. package/src/network/core/types.ts +2 -2
  835. package/src/network/events.ts +2 -1
  836. package/src/network/gossip/encoding.ts +3 -3
  837. package/src/network/gossip/gossipsub.ts +86 -25
  838. package/src/network/gossip/interface.ts +3 -3
  839. package/src/network/gossip/scoringParameters.ts +4 -4
  840. package/src/network/interface.ts +3 -3
  841. package/src/network/libp2p/index.ts +8 -3
  842. package/src/network/network.ts +9 -6
  843. package/src/network/options.ts +3 -0
  844. package/src/network/peers/datastore.ts +13 -10
  845. package/src/network/peers/peerManager.ts +118 -54
  846. package/src/network/peers/utils/prioritizePeers.ts +3 -3
  847. package/src/network/processor/gossipHandlers.ts +12 -3
  848. package/src/network/processor/gossipValidatorFn.ts +2 -2
  849. package/src/network/processor/types.ts +1 -1
  850. package/src/network/reqresp/ReqRespBeaconNode.ts +1 -1
  851. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +4 -3
  852. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +3 -2
  853. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +1 -1
  854. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +4 -3
  855. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +2 -2
  856. package/src/network/reqresp/score.ts +0 -1
  857. package/src/network/reqresp/utils/collect.ts +1 -1
  858. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +1 -1
  859. package/src/network/util.ts +2 -2
  860. package/src/node/nodejs.ts +8 -9
  861. package/src/sync/utils/downloadByRoot.ts +1 -1
  862. package/src/sync/utils/remoteSyncType.ts +1 -1
  863. package/src/util/blobs.ts +3 -3
  864. package/src/util/clock.ts +9 -4
  865. package/src/util/dataColumns.ts +2 -7
  866. package/src/util/multifork.ts +45 -0
  867. package/src/util/serializedCache.ts +7 -5
  868. package/src/util/workerEvents.ts +1 -1
@@ -1,6 +1,6 @@
1
1
  import {bootstrap} from "@libp2p/bootstrap";
2
2
  import {identify} from "@libp2p/identify";
3
- import {PrivateKey} from "@libp2p/interface";
3
+ import type {PrivateKey} from "@libp2p/interface";
4
4
  import {mdns} from "@libp2p/mdns";
5
5
  import {mplex} from "@libp2p/mplex";
6
6
  import {prometheusMetrics} from "@libp2p/prometheus-metrics";
@@ -39,6 +39,7 @@ export async function createNodeJsLibp2p(
39
39
  nodeJsLibp2pOpts: NodeJsLibp2pOpts = {}
40
40
  ): Promise<Libp2p> {
41
41
  const localMultiaddrs = networkOpts.localMultiaddrs || defaultNetworkOptions.localMultiaddrs;
42
+ const disconnectThreshold = networkOpts.disconnectThreshold ?? defaultNetworkOptions.disconnectThreshold;
42
43
  const {peerStoreDir, disablePeerDiscovery} = nodeJsLibp2pOpts;
43
44
 
44
45
  let datastore: undefined | Eth2PeerDataStore = undefined;
@@ -74,6 +75,11 @@ export async function createNodeJsLibp2p(
74
75
 
75
76
  return createLibp2p({
76
77
  privateKey,
78
+ nodeInfo: {
79
+ name: "lodestar",
80
+ version: networkOpts.version ?? "unknown",
81
+ userAgent: networkOpts.private ? "" : networkOpts.version ? `lodestar/${networkOpts.version}` : "lodestar",
82
+ },
77
83
  addresses: {
78
84
  listen: localMultiaddrs,
79
85
  announce: [],
@@ -93,7 +99,7 @@ export async function createNodeJsLibp2p(
93
99
  },
94
100
  }),
95
101
  ],
96
- streamMuxers: [mplex({maxInboundStreams: 256, disconnectThreshold: networkOpts.disconnectThreshold})],
102
+ streamMuxers: [mplex({disconnectThreshold})],
97
103
  peerDiscovery,
98
104
  metrics: nodeJsLibp2pOpts.metrics
99
105
  ? prometheusMetrics({
@@ -124,7 +130,6 @@ export async function createNodeJsLibp2p(
124
130
  datastore,
125
131
  services: {
126
132
  identify: identify({
127
- agentVersion: networkOpts.private ? "" : networkOpts.version ? `lodestar/${networkOpts.version}` : "lodestar",
128
133
  runOnConnectionOpen: false,
129
134
  }),
130
135
  // individual components are specified because the components object is a Proxy
@@ -1,7 +1,7 @@
1
- import {PeerId, PrivateKey} from "@libp2p/interface";
1
+ import type {PeerScoreStatsDump} from "@libp2p/gossipsub/score";
2
+ import type {PublishOpts} from "@libp2p/gossipsub/types";
3
+ import type {PeerId, PrivateKey} from "@libp2p/interface";
2
4
  import {peerIdFromPrivateKey} from "@libp2p/peer-id";
3
- import {PeerScoreStatsDump} from "@chainsafe/libp2p-gossipsub/score";
4
- import {PublishOpts} from "@chainsafe/libp2p-gossipsub/types";
5
5
  import {routes} from "@lodestar/api";
6
6
  import {BeaconConfig} from "@lodestar/config";
7
7
  import {LoggerNode} from "@lodestar/logger/node";
@@ -11,6 +11,7 @@ import {computeEpochAtSlot} from "@lodestar/state-transition";
11
11
  import {
12
12
  AttesterSlashing,
13
13
  DataColumnSidecar,
14
+ DataColumnSidecars,
14
15
  LightClientBootstrap,
15
16
  LightClientFinalityUpdate,
16
17
  LightClientOptimisticUpdate,
@@ -26,6 +27,7 @@ import {
26
27
  deneb,
27
28
  fulu,
28
29
  gloas,
30
+ isGloasDataColumnSidecar,
29
31
  phase0,
30
32
  } from "@lodestar/types";
31
33
  import {prettyPrintIndices, sleep} from "@lodestar/utils";
@@ -35,7 +37,7 @@ import {computeSubnetForDataColumnSidecar} from "../chain/validation/dataColumnS
35
37
  import {IBeaconDb} from "../db/interface.js";
36
38
  import {Metrics, RegistryMetricCreator} from "../metrics/index.js";
37
39
  import {IClock} from "../util/clock.js";
38
- import {CustodyConfig, isGloasDataColumnSidecar} from "../util/dataColumns.js";
40
+ import {CustodyConfig} from "../util/dataColumns.js";
39
41
  import {PeerIdStr, peerIdToString} from "../util/peerId.js";
40
42
  import {promiseAllMaybeAsync} from "../util/promises.js";
41
43
  import {BeaconBlocksByRootRequest, BlobSidecarsByRootRequest, DataColumnSidecarsByRootRequest} from "../util/types.js";
@@ -537,7 +539,8 @@ export class Network implements INetwork {
537
539
  this.config.getForkSeq(this.clock.currentSlot) >= ForkSeq.altair ? [Version.V2] : [Version.V2, Version.V1],
538
540
  request
539
541
  ),
540
- request
542
+ request,
543
+ this.chain.serializedCache
541
544
  );
542
545
  }
543
546
 
@@ -781,7 +784,7 @@ export class Network implements INetwork {
781
784
  this.core.setTargetGroupCount(count);
782
785
  };
783
786
 
784
- private onPublishDataColumns = (sidecars: DataColumnSidecar[]): Promise<number[]> => {
787
+ private onPublishDataColumns = (sidecars: DataColumnSidecars): Promise<number[]> => {
785
788
  return promiseAllMaybeAsync(sidecars.map((sidecar) => () => this.publishDataColumnSidecar(sidecar)));
786
789
  };
787
790
 
@@ -72,4 +72,7 @@ export const defaultNetworkOptions: NetworkOptions = {
72
72
  // - for fusaka-devnets, we have 25-30 peers per subnet
73
73
  // - for public testnets or mainnet, average number of peers per group is SAMPLES_PER_SLOT * targetPeers / NUMBER_OF_CUSTODY_GROUPS = 6.25 so this should not be an issue
74
74
  targetGroupPeers: 6,
75
+ // Keep this high enough for normal req/resp bursts on stable connections.
76
+ // libp2p-mplex default (5) is too low and can cause frequent connection resets.
77
+ disconnectThreshold: 50,
75
78
  };
@@ -8,6 +8,9 @@ type MemoryItem = {
8
8
  data: Uint8Array;
9
9
  };
10
10
 
11
+ // biome-ignore lint/suspicious/noExplicitAny: used below (copied from upstream)
12
+ type AwaitGenerator<T, TReturn = any, TNext = any> = Generator<T, TReturn, TNext> | AsyncGenerator<T, TReturn, TNext>;
13
+
11
14
  /**
12
15
  * Before libp2p 0.35, peerstore stays in memory and periodically write to db after n dirty items
13
16
  * This has a memory issue because all peer data stays in memory and loaded at startup time
@@ -93,7 +96,7 @@ export class Eth2PeerDataStore extends BaseDatastore {
93
96
  * This throws error if not found
94
97
  * see https://github.com/ipfs/js-datastore-level/blob/38f44058dd6be858e757a1c90b8edb31590ec0bc/src/index.js#L102
95
98
  */
96
- async get(key: Key): Promise<Uint8Array> {
99
+ async get(key: Key, options?: AbortOptions): Promise<Uint8Array> {
97
100
  const keyStr = key.toString();
98
101
  const memoryItem = this._memoryDatastore.get(keyStr);
99
102
  if (memoryItem) {
@@ -102,16 +105,16 @@ export class Eth2PeerDataStore extends BaseDatastore {
102
105
  }
103
106
 
104
107
  // this throws error if not found
105
- const dbValue = await this._dbDatastore.get(key);
108
+ const dbValue = await this._dbDatastore.get(key, options);
106
109
  // don't call this._memoryDatastore.set directly
107
110
  // we want to get through prune() logic with fromDb as true
108
111
  await this._put(key, dbValue, true);
109
112
  return dbValue;
110
113
  }
111
114
 
112
- async has(key: Key): Promise<boolean> {
115
+ async has(key: Key, options?: AbortOptions): Promise<boolean> {
113
116
  try {
114
- await this.get(key);
117
+ await this.get(key, options);
115
118
  } catch (err) {
116
119
  // this is the same to how js-datastore-level handles notFound error
117
120
  // https://github.com/ipfs/js-datastore-level/blob/38f44058dd6be858e757a1c90b8edb31590ec0bc/src/index.js#L121
@@ -121,26 +124,26 @@ export class Eth2PeerDataStore extends BaseDatastore {
121
124
  return true;
122
125
  }
123
126
 
124
- async delete(key: Key): Promise<void> {
127
+ async delete(key: Key, options?: AbortOptions): Promise<void> {
125
128
  this._memoryDatastore.delete(key.toString());
126
- await this._dbDatastore.delete(key);
129
+ await this._dbDatastore.delete(key, options);
127
130
  }
128
131
 
129
- async *_all(q: Query): AsyncIterable<Pair> {
132
+ async *_all(q: Query, options?: AbortOptions): AwaitGenerator<Pair> {
130
133
  for (const [key, value] of this._memoryDatastore.entries()) {
131
134
  yield {
132
135
  key: new Key(key),
133
136
  value: value.data,
134
137
  };
135
138
  }
136
- yield* this._dbDatastore.query(q);
139
+ yield* this._dbDatastore.query(q, options);
137
140
  }
138
141
 
139
- async *_allKeys(q: KeyQuery): AsyncIterable<Key> {
142
+ async *_allKeys(q: KeyQuery, options?: AbortOptions): AwaitGenerator<Key> {
140
143
  for (const key of this._memoryDatastore.keys()) {
141
144
  yield new Key(key);
142
145
  }
143
- yield* this._dbDatastore.queryKeys(q);
146
+ yield* this._dbDatastore.queryKeys(q, options);
144
147
  }
145
148
 
146
149
  private async _addDirtyItem(keyStr: string): Promise<void> {
@@ -9,6 +9,7 @@ import {prettyPrintIndices, toHex, withTimeout} from "@lodestar/utils";
9
9
  import {GOODBYE_KNOWN_CODES, GoodByeReasonCode, Libp2pEvent} from "../../constants/index.js";
10
10
  import {IClock} from "../../util/clock.js";
11
11
  import {computeColumnsForCustodyGroup, getCustodyGroups} from "../../util/dataColumns.js";
12
+ import {callInNextEventLoop} from "../../util/eventLoop.js";
12
13
  import {NetworkCoreMetrics} from "../core/metrics.js";
13
14
  import {LodestarDiscv5Opts} from "../discv5/types.js";
14
15
  import {INetworkEventBus, NetworkEvent, NetworkEventData} from "../events.js";
@@ -161,7 +162,6 @@ export class PeerManager {
161
162
 
162
163
  // A single map of connected peers with all necessary data to handle PINGs, STATUS, and metrics
163
164
  private connectedPeers: Map<PeerIdStr, PeerData>;
164
-
165
165
  private opts: PeerManagerOpts;
166
166
  private intervals: NodeJS.Timeout[] = [];
167
167
 
@@ -196,6 +196,13 @@ export class PeerManager {
196
196
 
197
197
  this.lastStatus = this.statusCache.get();
198
198
 
199
+ // A connection may already be open before listeners are attached.
200
+ // Seed those peers so they are tracked in connectedPeers immediately.
201
+ this.bootstrapAlreadyOpenConnections();
202
+ // Defer status/ping to the next event loop tick so the heartbeat interval and
203
+ // event listeners are fully registered before we begin handshakes.
204
+ callInNextEventLoop(() => this.pingAndStatusTimeouts());
205
+
199
206
  // On start-up will connected to existing peers in libp2p.peerStore, same as autoDial behaviour
200
207
  this.heartbeat();
201
208
  this.intervals = [
@@ -472,6 +479,14 @@ export class PeerManager {
472
479
  clientAgent,
473
480
  custodyColumns,
474
481
  });
482
+
483
+ // Identify peer after status proves the connection is usable.
484
+ // This is the only place we trigger identify — avoids wasted streams on
485
+ // peers that close identify right after connection open or turn out to be
486
+ // irrelevant.
487
+ if (peerData?.agentVersion === null) {
488
+ void this.identifyPeer(peer.toString(), prettyPrintPeerId(peer), getConnection(this.libp2p, peer.toString()));
489
+ }
475
490
  }
476
491
  }
477
492
 
@@ -692,36 +707,39 @@ export class PeerManager {
692
707
  }
693
708
  }
694
709
 
695
- /**
696
- * The libp2p Upgrader has successfully upgraded a peer connection on a particular multiaddress
697
- * This event is routed through the connectionManager
698
- *
699
- * Registers a peer as connected. The `direction` parameter determines if the peer is being
700
- * dialed or connecting to us.
701
- */
702
- private onLibp2pPeerConnect = async (evt: CustomEvent<Connection>): Promise<void> => {
703
- const {direction, status, remotePeer} = evt.detail;
710
+ private bootstrapAlreadyOpenConnections(): void {
711
+ let bootstrapped = 0;
712
+
713
+ for (const {value: connections} of getConnectionsMap(this.libp2p).values()) {
714
+ for (const connection of connections) {
715
+ // trackLibp2pConnection handles deduplication via overwriteExisting: false
716
+ if (this.trackLibp2pConnection(connection, {overwriteExisting: false, triggerHandshakeNow: false})) {
717
+ bootstrapped++;
718
+ }
719
+ }
720
+ }
721
+
722
+ if (bootstrapped > 0) {
723
+ this.logger.verbose("Bootstrapped already-open libp2p peers", {bootstrapped});
724
+ }
725
+ }
726
+
727
+ private trackLibp2pConnection(
728
+ connection: Connection,
729
+ opts: {overwriteExisting: boolean; triggerHandshakeNow: boolean}
730
+ ): boolean {
731
+ const {direction, status, remotePeer} = connection;
704
732
  const remotePeerStr = remotePeer.toString();
705
733
  const remotePeerPrettyStr = prettyPrintPeerId(remotePeer);
706
- this.logger.verbose("peer connected", {peer: remotePeerPrettyStr, direction, status});
707
- // NOTE: The peerConnect event is not emitted here here, but after asserting peer relevance
708
- this.metrics?.peerConnectedEvent.inc({direction, status});
709
734
 
710
- if (evt.detail.status !== "open") {
735
+ if (status !== "open") {
711
736
  this.logger.debug("Peer disconnected before identify protocol initiated", {
712
737
  peerId: remotePeerPrettyStr,
713
- status: evt.detail.status,
738
+ status,
714
739
  });
715
- return;
740
+ return false;
716
741
  }
717
742
 
718
- // On connection:
719
- // - Outbound connections: send a STATUS and PING request
720
- // - Inbound connections: expect to be STATUS'd, schedule STATUS and PING for latter
721
- // NOTE: libp2p may emit two "peer:connect" events: One for inbound, one for outbound
722
- // If that happens, it's okay. Only the "outbound" connection triggers immediate action
723
- const now = Date.now();
724
-
725
743
  // Ethereum uses secp256k1 for node IDs, reject peers with other key types
726
744
  if (remotePeer.type !== "secp256k1") {
727
745
  this.logger.debug("Peer does not have secp256k1 key, disconnecting", {
@@ -729,52 +747,64 @@ export class PeerManager {
729
747
  type: remotePeer.type,
730
748
  });
731
749
  void this.goodbyeAndDisconnect(remotePeer, GoodByeReasonCode.IRRELEVANT_NETWORK);
732
- return;
750
+ return false;
733
751
  }
734
752
 
753
+ if (!opts.overwriteExisting && this.connectedPeers.has(remotePeerStr)) {
754
+ return false;
755
+ }
756
+
757
+ // On connection:
758
+ // - Outbound connections: send a STATUS and PING request
759
+ // - Inbound connections: expect to be STATUS'd, schedule STATUS and PING for later
760
+ // NOTE: libp2p may emit two "peer:connect" events: One for inbound, one for outbound
761
+ // If that happens, it's okay. Only the "outbound" connection triggers immediate action
762
+ const now = Date.now();
763
+ const existingPeerData = this.connectedPeers.get(remotePeerStr);
735
764
  const nodeId = computeNodeId(remotePeer);
736
765
  const peerData: PeerData = {
737
- lastReceivedMsgUnixTsMs: direction === "outbound" ? 0 : now,
766
+ // Keep existing timestamps if this peer already had another open connection.
767
+ // libp2p may emit multiple connection:open events per peer.
768
+ lastReceivedMsgUnixTsMs: existingPeerData?.lastReceivedMsgUnixTsMs ?? (direction === "outbound" ? 0 : now),
738
769
  // If inbound, request after STATUS_INBOUND_GRACE_PERIOD
739
- lastStatusUnixTsMs: direction === "outbound" ? 0 : now - STATUS_INTERVAL_MS + STATUS_INBOUND_GRACE_PERIOD,
740
- connectedUnixTsMs: now,
741
- relevantStatus: RelevantPeerStatus.Unknown,
770
+ lastStatusUnixTsMs:
771
+ existingPeerData?.lastStatusUnixTsMs ??
772
+ (direction === "outbound" ? 0 : now - STATUS_INTERVAL_MS + STATUS_INBOUND_GRACE_PERIOD),
773
+ connectedUnixTsMs: existingPeerData?.connectedUnixTsMs ?? now,
774
+ relevantStatus: existingPeerData?.relevantStatus ?? RelevantPeerStatus.Unknown,
742
775
  direction,
743
776
  nodeId,
744
777
  peerId: remotePeer,
745
- status: null,
746
- metadata: null,
747
- agentVersion: null,
748
- agentClient: null,
749
- encodingPreference: null,
778
+ status: existingPeerData?.status ?? null,
779
+ metadata: existingPeerData?.metadata ?? null,
780
+ agentVersion: existingPeerData?.agentVersion ?? null,
781
+ agentClient: existingPeerData?.agentClient ?? null,
782
+ encodingPreference: existingPeerData?.encodingPreference ?? null,
750
783
  };
751
784
  this.connectedPeers.set(remotePeerStr, peerData);
752
785
 
753
- if (direction === "outbound") {
754
- // this.pingAndStatusTimeouts();
786
+ if (direction === "outbound" && opts.triggerHandshakeNow) {
755
787
  void this.requestPing(remotePeer);
756
788
  void this.requestStatus(remotePeer, this.statusCache.get());
757
789
  }
758
790
 
759
- this.libp2p.services.identify
760
- .identify(evt.detail)
761
- .then((result) => {
762
- const agentVersion = result.agentVersion;
763
- if (agentVersion) {
764
- peerData.agentVersion = agentVersion;
765
- peerData.agentClient = getKnownClientFromAgentVersion(agentVersion);
766
- }
767
- })
768
- .catch((err) => {
769
- if (evt.detail.status !== "open") {
770
- this.logger.debug("Peer disconnected during identify protocol", {
771
- peerId: remotePeerPrettyStr,
772
- error: (err as Error).message,
773
- });
774
- } else {
775
- this.logger.debug("Error setting agentVersion for the peer", {peerId: remotePeerPrettyStr}, err);
776
- }
777
- });
791
+ return true;
792
+ }
793
+
794
+ /**
795
+ * The libp2p Upgrader has successfully upgraded a peer connection on a particular multiaddress
796
+ * This event is routed through the connectionManager
797
+ *
798
+ * Registers a peer as connected. The `direction` parameter determines if the peer is being
799
+ * dialed or connecting to us.
800
+ */
801
+ private onLibp2pPeerConnect = (evt: CustomEvent<Connection>): void => {
802
+ const {direction, status, remotePeer} = evt.detail;
803
+ this.logger.verbose("peer connected", {peer: prettyPrintPeerId(remotePeer), direction, status});
804
+ // NOTE: The peerConnect event is not emitted here here, but after asserting peer relevance
805
+ this.metrics?.peerConnectedEvent.inc({direction, status});
806
+
807
+ this.trackLibp2pConnection(evt.detail, {overwriteExisting: true, triggerHandshakeNow: true});
778
808
  };
779
809
 
780
810
  /**
@@ -784,6 +814,19 @@ export class PeerManager {
784
814
  const {direction, status, remotePeer} = evt.detail;
785
815
  const peerIdStr = remotePeer.toString();
786
816
 
817
+ const openConnections =
818
+ getConnectionsMap(this.libp2p)
819
+ .get(peerIdStr)
820
+ ?.value.filter((connection) => connection.status === "open") ?? [];
821
+ if (openConnections.length > 0) {
822
+ this.logger.debug("Ignoring peer disconnect event while another connection is still open", {
823
+ peerId: prettyPrintPeerIdStr(peerIdStr),
824
+ direction,
825
+ status,
826
+ });
827
+ return;
828
+ }
829
+
787
830
  let logMessage = "onLibp2pPeerDisconnect";
788
831
  const logContext: Record<string, string | number> = {
789
832
  peerId: prettyPrintPeerIdStr(peerIdStr),
@@ -818,6 +861,27 @@ export class PeerManager {
818
861
  }
819
862
  }
820
863
 
864
+ private async identifyPeer(peerIdStr: string, peerIdPretty: string, connection?: Connection): Promise<void> {
865
+ if (!connection || connection.status !== "open") {
866
+ this.logger.debug("Peer has no open connection for identify", {peerId: peerIdPretty});
867
+ return;
868
+ }
869
+
870
+ try {
871
+ const result = await this.libp2p.services.identify.identify(connection);
872
+ const agentVersion = result.agentVersion;
873
+ if (agentVersion) {
874
+ const connectedPeerData = this.connectedPeers.get(peerIdStr);
875
+ if (connectedPeerData) {
876
+ connectedPeerData.agentVersion = agentVersion;
877
+ connectedPeerData.agentClient = getKnownClientFromAgentVersion(agentVersion);
878
+ }
879
+ }
880
+ } catch (e) {
881
+ this.logger.debug("Error setting agentVersion for the peer", {peerId: peerIdPretty}, e as Error);
882
+ }
883
+ }
884
+
821
885
  private async goodbyeAndDisconnect(peer: PeerId, goodbye: GoodByeReasonCode): Promise<void> {
822
886
  const reason = GOODBYE_KNOWN_CODES[goodbye.toString()] || "";
823
887
  const peerIdStr = peer.toString();
@@ -1,4 +1,4 @@
1
- import {Direction, PeerId} from "@libp2p/interface";
1
+ import type {MessageStreamDirection, PeerId} from "@libp2p/interface";
2
2
  import {BitArray} from "@chainsafe/ssz";
3
3
  import {ChainConfig} from "@lodestar/config";
4
4
  import {ATTESTATION_SUBNET_COUNT, SYNC_COMMITTEE_SUBNET_COUNT} from "@lodestar/params";
@@ -95,7 +95,7 @@ function computeStatusScore(ours: Status, theirs: Status | null, opts: Prioritiz
95
95
 
96
96
  type PeerInfo = {
97
97
  id: PeerId;
98
- direction: Direction | null;
98
+ direction: MessageStreamDirection | null;
99
99
  statusScore: StatusScore;
100
100
  attnets: phase0.AttestationSubnets;
101
101
  syncnets: altair.SyncSubnets;
@@ -137,7 +137,7 @@ export enum ExcessPeerDisconnectReason {
137
137
  export function prioritizePeers(
138
138
  connectedPeersInfo: {
139
139
  id: PeerId;
140
- direction: Direction | null;
140
+ direction: MessageStreamDirection | null;
141
141
  status: Status | null;
142
142
  attnets: phase0.AttestationSubnets | null;
143
143
  syncnets: altair.SyncSubnets | null;
@@ -2,6 +2,7 @@ import {routes} from "@lodestar/api";
2
2
  import {BeaconConfig, ChainForkConfig} from "@lodestar/config";
3
3
  import {
4
4
  ForkName,
5
+ ForkPostDeneb,
5
6
  ForkPostElectra,
6
7
  ForkPreElectra,
7
8
  ForkSeq,
@@ -70,6 +71,7 @@ import {validateGossipPayloadAttestationMessage} from "../../chain/validation/pa
70
71
  import {OpSource} from "../../chain/validatorMonitor.js";
71
72
  import {Metrics} from "../../metrics/index.js";
72
73
  import {kzgCommitmentToVersionedHash} from "../../util/blobs.js";
74
+ import {getBlobKzgCommitments} from "../../util/dataColumns.js";
73
75
  import {INetworkCore} from "../core/index.js";
74
76
  import {NetworkEventBus} from "../events.js";
75
77
  import {
@@ -417,9 +419,11 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
417
419
  chain.getBlobsTracker.triggerGetBlobs(blockInput);
418
420
  } else {
419
421
  metrics?.blockInputFetchStats.totalDataAvailableBlockInputs.inc();
420
- metrics?.blockInputFetchStats.totalDataAvailableBlockInputBlobs.inc(
421
- (signedBlock.message as deneb.BeaconBlock).body.blobKzgCommitments.length
422
- );
422
+ const blobCount = getBlobKzgCommitments(
423
+ blockInput.forkName,
424
+ signedBlock as SignedBeaconBlock<ForkPostDeneb>
425
+ ).length;
426
+ metrics?.blockInputFetchStats.totalDataAvailableBlockInputBlobs.inc(blobCount);
423
427
  }
424
428
 
425
429
  chain
@@ -852,6 +856,11 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
852
856
  } catch (e) {
853
857
  logger.error("Error adding to payloadAttestation pool", {}, e as Error);
854
858
  }
859
+ chain.forkChoice.notifyPtcMessages(
860
+ toRootHex(payloadAttestationMessage.data.beaconBlockRoot),
861
+ [validationResult.validatorCommitteeIndex],
862
+ payloadAttestationMessage.data.payloadPresent
863
+ );
855
864
  },
856
865
  [GossipType.execution_payload_bid]: async ({
857
866
  gossipData,
@@ -1,4 +1,4 @@
1
- import {TopicValidatorResult} from "@libp2p/interface";
1
+ import {TopicValidatorResult} from "@libp2p/gossipsub";
2
2
  import {ChainForkConfig} from "@lodestar/config";
3
3
  import {Logger} from "@lodestar/utils";
4
4
  import {AttestationError, GossipAction, GossipActionError} from "../../chain/errors/index.js";
@@ -11,7 +11,7 @@ import {
11
11
  GossipValidatorBatchFn,
12
12
  GossipValidatorFn,
13
13
  } from "../gossip/interface.js";
14
- import {prettyPrintPeerIdStr} from "../util.ts";
14
+ import {prettyPrintPeerIdStr} from "../util.js";
15
15
 
16
16
  export type ValidatorFnModules = {
17
17
  config: ChainForkConfig;
@@ -1,4 +1,4 @@
1
- import {Message} from "@libp2p/interface";
1
+ import type {Message} from "@libp2p/gossipsub";
2
2
  import {ForkName} from "@lodestar/params";
3
3
  import {Slot, SlotOptionalRoot} from "@lodestar/types";
4
4
  import {PeerIdStr} from "../../util/peerId.js";
@@ -19,7 +19,7 @@ import {callInNextEventLoop} from "../../util/eventLoop.js";
19
19
  import {NetworkCoreMetrics} from "../core/metrics.js";
20
20
  import {INetworkEventBus, NetworkEvent} from "../events.js";
21
21
  import {MetadataController} from "../metadata.js";
22
- import {ClientKind} from "../peers/client.ts";
22
+ import {ClientKind} from "../peers/client.js";
23
23
  import {PeersData} from "../peers/peersData.js";
24
24
  import {IPeerRpcScoreStore, PeerAction} from "../peers/score/index.js";
25
25
  import {StatusCache} from "../statusCache.js";
@@ -6,7 +6,7 @@ import {computeEpochAtSlot} from "@lodestar/state-transition";
6
6
  import {deneb, phase0} from "@lodestar/types";
7
7
  import {IBeaconChain} from "../../../chain/index.js";
8
8
  import {IBeaconDb} from "../../../db/index.js";
9
- import {prettyPrintPeerId} from "../../util.ts";
9
+ import {prettyPrintPeerId} from "../../util.js";
10
10
 
11
11
  // TODO: Unit test
12
12
 
@@ -47,9 +47,10 @@ export async function* onBeaconBlocksByRange(
47
47
 
48
48
  // Non-finalized range of blocks
49
49
  if (endSlot > finalizedSlot) {
50
- const headRoot = chain.forkChoice.getHeadRoot();
50
+ const headBlock = chain.forkChoice.getHead();
51
+ const headRoot = headBlock.blockRoot;
51
52
  // TODO DENEB: forkChoice should mantain an array of canonical blocks, and change only on reorg
52
- const headChain = chain.forkChoice.getAllAncestorBlocks(headRoot);
53
+ const headChain = chain.forkChoice.getAllAncestorBlocks(headRoot, headBlock.payloadStatus);
53
54
  // getAllAncestorBlocks response includes the head node, so it's the full chain.
54
55
 
55
56
  // Iterate head chain with ascending block numbers
@@ -34,9 +34,10 @@ export async function* onBlobSidecarsByRange(
34
34
 
35
35
  // Non-finalized range of blobs
36
36
  if (endSlot > finalizedSlot) {
37
- const headRoot = chain.forkChoice.getHeadRoot();
37
+ const headBlock = chain.forkChoice.getHead();
38
+ const headRoot = headBlock.blockRoot;
38
39
  // TODO DENEB: forkChoice should mantain an array of canonical blocks, and change only on reorg
39
- const headChain = chain.forkChoice.getAllAncestorBlocks(headRoot);
40
+ const headChain = chain.forkChoice.getAllAncestorBlocks(headRoot, headBlock.payloadStatus);
40
41
 
41
42
  // Iterate head chain with ascending block numbers
42
43
  for (let i = headChain.length - 1; i >= 0; i--) {
@@ -20,7 +20,7 @@ export async function* onBlobSidecarsByRoot(
20
20
  for (const blobIdentifier of requestBody) {
21
21
  const {blockRoot, index} = blobIdentifier;
22
22
  const blockRootHex = toRootHex(blockRoot);
23
- const block = chain.forkChoice.getBlockHex(blockRootHex);
23
+ const block = chain.forkChoice.getBlockHexDefaultStatus(blockRootHex);
24
24
 
25
25
  // NOTE: Only support non-finalized blocks.
26
26
  // SPEC: Clients MUST support requesting blocks and sidecars since the latest finalized epoch.
@@ -7,7 +7,7 @@ import {ColumnIndex, fulu} from "@lodestar/types";
7
7
  import {fromHex} from "@lodestar/utils";
8
8
  import {IBeaconChain} from "../../../chain/index.js";
9
9
  import {IBeaconDb} from "../../../db/index.js";
10
- import {prettyPrintPeerId} from "../../util.ts";
10
+ import {prettyPrintPeerId} from "../../util.js";
11
11
  import {
12
12
  handleColumnSidecarUnavailability,
13
13
  validateRequestedDataColumns,
@@ -78,8 +78,9 @@ export async function* onDataColumnSidecarsByRange(
78
78
 
79
79
  // Non-finalized range of columns
80
80
  if (endSlot > finalizedSlot) {
81
- const headRoot = chain.forkChoice.getHeadRoot();
82
- const headChain = chain.forkChoice.getAllAncestorBlocks(headRoot);
81
+ const headBlock = chain.forkChoice.getHead();
82
+ const headRoot = headBlock.blockRoot;
83
+ const headChain = chain.forkChoice.getAllAncestorBlocks(headRoot, headBlock.payloadStatus);
83
84
 
84
85
  // Iterate head chain with ascending block numbers
85
86
  for (let i = headChain.length - 1; i >= 0; i--) {
@@ -6,7 +6,7 @@ import {toRootHex} from "@lodestar/utils";
6
6
  import {IBeaconChain} from "../../../chain/index.js";
7
7
  import {IBeaconDb} from "../../../db/index.js";
8
8
  import {DataColumnSidecarsByRootRequest} from "../../../util/types.js";
9
- import {prettyPrintPeerId} from "../../util.ts";
9
+ import {prettyPrintPeerId} from "../../util.js";
10
10
  import {
11
11
  handleColumnSidecarUnavailability,
12
12
  validateRequestedDataColumns,
@@ -34,7 +34,7 @@ export async function* onDataColumnSidecarsByRoot(
34
34
  }
35
35
 
36
36
  const blockRootHex = toRootHex(blockRoot);
37
- const block = chain.forkChoice.getBlockHex(blockRootHex);
37
+ const block = chain.forkChoice.getBlockHexDefaultStatus(blockRootHex);
38
38
  // If the block is not in fork choice, it may be finalized. Attempt to find its slot in block archive
39
39
  const slot = block ? block.slot : await db.blockArchive.getSlotByRoot(blockRoot);
40
40
 
@@ -38,7 +38,6 @@ export function onOutgoingReqRespError(e: RequestError, method: ReqRespMethod):
38
38
  : PeerAction.LowToleranceError;
39
39
  // TODO: Detect SSZDecodeError and return PeerAction.Fatal
40
40
 
41
- case RequestErrorCode.TTFB_TIMEOUT:
42
41
  case RequestErrorCode.RESP_TIMEOUT:
43
42
  switch (method) {
44
43
  case ReqRespMethod.Ping:
@@ -1,6 +1,6 @@
1
1
  import {Type} from "@chainsafe/ssz";
2
2
  import {RequestError, RequestErrorCode, ResponseIncoming} from "@lodestar/reqresp";
3
- import {SerializedCache} from "../../../util/serializedCache.ts";
3
+ import {SerializedCache} from "../../../util/serializedCache.js";
4
4
  import {ResponseTypeGetter} from "../types.js";
5
5
 
6
6
  /**
@@ -1,7 +1,7 @@
1
1
  import {ResponseIncoming} from "@lodestar/reqresp";
2
2
  import {SignedBeaconBlock, phase0} from "@lodestar/types";
3
3
  import {LodestarError} from "@lodestar/utils";
4
- import {SerializedCache} from "../../../util/serializedCache.ts";
4
+ import {SerializedCache} from "../../../util/serializedCache.js";
5
5
  import {ReqRespMethod, responseSszTypeByMethod} from "../types.js";
6
6
  import {sszDeserializeResponse} from "./collect.js";
7
7
 
@@ -23,7 +23,7 @@ export function getConnection(libp2p: Libp2p, peerIdStr: string): Connection | u
23
23
  return getConnectionsMap(libp2p).get(peerIdStr)?.value[0] ?? undefined;
24
24
  }
25
25
 
26
- // https://github.com/ChainSafe/js-libp2p-gossipsub/blob/3475242ed254f7647798ab7f36b21909f6cb61da/src/index.ts#L2009
26
+ // https://github.com/libp2p/js-libp2p/blob/f87cba928991736d9646b3e054c367f55cab315c/packages/gossipsub/src/gossipsub.ts#L2076
27
27
  export function isPublishToZeroPeersError(e: Error): boolean {
28
- return e.message.includes("PublishError.InsufficientPeers");
28
+ return e.message.includes("PublishError.NoPeersSubscribedToTopic");
29
29
  }