@lodestar/beacon-node 1.41.0-dev.be5acbb8f7 → 1.41.0-dev.c11b797bd6

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 (644) 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.map +1 -1
  5. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  6. package/lib/api/impl/beacon/index.js.map +1 -1
  7. package/lib/api/impl/beacon/pool/index.d.ts +1 -1
  8. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  9. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  10. package/lib/api/impl/beacon/rewards/index.d.ts +1 -1
  11. package/lib/api/impl/beacon/rewards/index.d.ts.map +1 -1
  12. package/lib/api/impl/beacon/rewards/index.js.map +1 -1
  13. package/lib/api/impl/beacon/state/index.d.ts +1 -1
  14. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  15. package/lib/api/impl/beacon/state/index.js.map +1 -1
  16. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  17. package/lib/api/impl/config/constants.js.map +1 -1
  18. package/lib/api/impl/config/index.js.map +1 -1
  19. package/lib/api/impl/debug/index.d.ts +1 -1
  20. package/lib/api/impl/debug/index.d.ts.map +1 -1
  21. package/lib/api/impl/debug/index.js.map +1 -1
  22. package/lib/api/impl/errors.d.ts.map +1 -1
  23. package/lib/api/impl/errors.js.map +1 -1
  24. package/lib/api/impl/events/index.d.ts +1 -1
  25. package/lib/api/impl/events/index.d.ts.map +1 -1
  26. package/lib/api/impl/events/index.js.map +1 -1
  27. package/lib/api/impl/lightclient/index.d.ts +1 -1
  28. package/lib/api/impl/lightclient/index.d.ts.map +1 -1
  29. package/lib/api/impl/lightclient/index.js.map +1 -1
  30. package/lib/api/impl/lodestar/index.d.ts +1 -1
  31. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  32. package/lib/api/impl/lodestar/index.js.map +1 -1
  33. package/lib/api/impl/node/index.js.map +1 -1
  34. package/lib/api/impl/node/utils.js.map +1 -1
  35. package/lib/api/impl/proof/index.js.map +1 -1
  36. package/lib/api/impl/utils.js.map +1 -1
  37. package/lib/api/impl/validator/index.js +4 -2
  38. package/lib/api/impl/validator/index.js.map +1 -1
  39. package/lib/api/impl/validator/utils.d.ts +1 -1
  40. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  41. package/lib/api/impl/validator/utils.js.map +1 -1
  42. package/lib/api/rest/activeSockets.d.ts.map +1 -1
  43. package/lib/api/rest/activeSockets.js.map +1 -1
  44. package/lib/api/rest/base.d.ts.map +1 -1
  45. package/lib/api/rest/base.js.map +1 -1
  46. package/lib/api/rest/index.d.ts.map +1 -1
  47. package/lib/api/rest/index.js.map +1 -1
  48. package/lib/api/rest/swaggerUI.js.map +1 -1
  49. package/lib/bun-wrappers/prometheus-gc-stats.js.map +1 -1
  50. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
  51. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  52. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  53. package/lib/chain/GetBlobsTracker.js.map +1 -1
  54. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  55. package/lib/chain/archiveStore/archiveStore.js +2 -1
  56. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  57. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  58. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
  59. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  60. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  61. package/lib/chain/archiveStore/historicalState/types.js +2 -1
  62. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  63. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  64. package/lib/chain/archiveStore/interface.js +2 -1
  65. package/lib/chain/archiveStore/interface.js.map +1 -1
  66. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +1 -1
  67. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  68. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +2 -1
  69. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  70. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  71. package/lib/chain/archiveStore/utils/archivePayloads.js.map +1 -1
  72. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  73. package/lib/chain/archiveStore/utils/updateBackfillRange.js.map +1 -1
  74. package/lib/chain/balancesCache.d.ts.map +1 -1
  75. package/lib/chain/balancesCache.js.map +1 -1
  76. package/lib/chain/beaconProposerCache.d.ts.map +1 -1
  77. package/lib/chain/beaconProposerCache.js.map +1 -1
  78. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  79. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  80. package/lib/chain/blocks/blockInput/errors.js +2 -1
  81. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  82. package/lib/chain/blocks/blockInput/types.js +4 -2
  83. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  84. package/lib/chain/blocks/blockInput/utils.js.map +1 -1
  85. package/lib/chain/blocks/importBlock.js.map +1 -1
  86. package/lib/chain/blocks/index.d.ts.map +1 -1
  87. package/lib/chain/blocks/index.js.map +1 -1
  88. package/lib/chain/blocks/types.js +6 -3
  89. package/lib/chain/blocks/types.js.map +1 -1
  90. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  91. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  92. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  93. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  94. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  95. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  96. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  97. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  98. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  99. package/lib/chain/bls/maybeBatch.js.map +1 -1
  100. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  101. package/lib/chain/bls/multithread/index.js.map +1 -1
  102. package/lib/chain/bls/multithread/jobItem.js +2 -1
  103. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  104. package/lib/chain/bls/multithread/types.js +2 -1
  105. package/lib/chain/bls/multithread/types.js.map +1 -1
  106. package/lib/chain/bls/multithread/utils.js.map +1 -1
  107. package/lib/chain/bls/multithread/worker.js.map +1 -1
  108. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  109. package/lib/chain/bls/singleThread.js.map +1 -1
  110. package/lib/chain/bls/utils.js.map +1 -1
  111. package/lib/chain/chain.d.ts +2 -2
  112. package/lib/chain/chain.d.ts.map +1 -1
  113. package/lib/chain/chain.js.map +1 -1
  114. package/lib/chain/emitter.d.ts +1 -3
  115. package/lib/chain/emitter.d.ts.map +1 -1
  116. package/lib/chain/emitter.js +2 -1
  117. package/lib/chain/emitter.js.map +1 -1
  118. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  119. package/lib/chain/errors/attestationError.js +2 -1
  120. package/lib/chain/errors/attestationError.js.map +1 -1
  121. package/lib/chain/errors/attesterSlashingError.js +2 -1
  122. package/lib/chain/errors/attesterSlashingError.js.map +1 -1
  123. package/lib/chain/errors/blobSidecarError.js +2 -1
  124. package/lib/chain/errors/blobSidecarError.js.map +1 -1
  125. package/lib/chain/errors/blockError.d.ts.map +1 -1
  126. package/lib/chain/errors/blockError.js +2 -1
  127. package/lib/chain/errors/blockError.js.map +1 -1
  128. package/lib/chain/errors/blsToExecutionChangeError.js +2 -1
  129. package/lib/chain/errors/blsToExecutionChangeError.js.map +1 -1
  130. package/lib/chain/errors/dataColumnSidecarError.js +2 -1
  131. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  132. package/lib/chain/errors/executionPayloadBid.js +2 -1
  133. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  134. package/lib/chain/errors/executionPayloadEnvelope.js +2 -1
  135. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  136. package/lib/chain/errors/gossipValidation.d.ts.map +1 -1
  137. package/lib/chain/errors/gossipValidation.js +4 -2
  138. package/lib/chain/errors/gossipValidation.js.map +1 -1
  139. package/lib/chain/errors/lightClientError.js +4 -2
  140. package/lib/chain/errors/lightClientError.js.map +1 -1
  141. package/lib/chain/errors/payloadAttestation.js +2 -1
  142. package/lib/chain/errors/payloadAttestation.js.map +1 -1
  143. package/lib/chain/errors/proposerSlashingError.js +2 -1
  144. package/lib/chain/errors/proposerSlashingError.js.map +1 -1
  145. package/lib/chain/errors/syncCommitteeError.js +2 -1
  146. package/lib/chain/errors/syncCommitteeError.js.map +1 -1
  147. package/lib/chain/errors/voluntaryExitError.js +2 -1
  148. package/lib/chain/errors/voluntaryExitError.js.map +1 -1
  149. package/lib/chain/forkChoice/index.js +2 -1
  150. package/lib/chain/forkChoice/index.js.map +1 -1
  151. package/lib/chain/initState.d.ts +1 -1
  152. package/lib/chain/initState.d.ts.map +1 -1
  153. package/lib/chain/initState.js.map +1 -1
  154. package/lib/chain/interface.js +2 -1
  155. package/lib/chain/interface.js.map +1 -1
  156. package/lib/chain/lightClient/index.d.ts +0 -29
  157. package/lib/chain/lightClient/index.d.ts.map +1 -1
  158. package/lib/chain/lightClient/index.js.map +1 -1
  159. package/lib/chain/lightClient/proofs.js.map +1 -1
  160. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  161. package/lib/chain/opPools/aggregatedAttestationPool.js +4 -2
  162. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  163. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  164. package/lib/chain/opPools/attestationPool.js.map +1 -1
  165. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
  166. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  167. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  168. package/lib/chain/opPools/opPool.js.map +1 -1
  169. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  170. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  171. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  172. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  173. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  174. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  175. package/lib/chain/opPools/types.js +4 -2
  176. package/lib/chain/opPools/types.js.map +1 -1
  177. package/lib/chain/opPools/utils.js.map +1 -1
  178. package/lib/chain/prepareNextSlot.d.ts +1 -2
  179. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  180. package/lib/chain/prepareNextSlot.js.map +1 -1
  181. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  182. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  183. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  184. package/lib/chain/produceBlock/produceBlockBody.js +6 -3
  185. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  186. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  187. package/lib/chain/regen/errors.d.ts.map +1 -1
  188. package/lib/chain/regen/errors.js +2 -1
  189. package/lib/chain/regen/errors.js.map +1 -1
  190. package/lib/chain/regen/interface.js +4 -2
  191. package/lib/chain/regen/interface.js.map +1 -1
  192. package/lib/chain/regen/queued.d.ts.map +1 -1
  193. package/lib/chain/regen/queued.js.map +1 -1
  194. package/lib/chain/regen/regen.d.ts.map +1 -1
  195. package/lib/chain/regen/regen.js.map +1 -1
  196. package/lib/chain/reprocess.d.ts.map +1 -1
  197. package/lib/chain/reprocess.js +2 -1
  198. package/lib/chain/reprocess.js.map +1 -1
  199. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -1
  200. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  201. package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -1
  202. package/lib/chain/seenCache/seenAttestationData.js +2 -1
  203. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  204. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  205. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  206. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -1
  207. package/lib/chain/seenCache/seenBlockAttesters.js.map +1 -1
  208. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -1
  209. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  210. package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -1
  211. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  212. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -1
  213. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  214. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -1
  215. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -1
  216. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -1
  217. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -1
  218. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +3 -3
  219. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  220. package/lib/chain/seenCache/seenGossipBlockInput.js +3 -2
  221. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  222. package/lib/chain/serializeState.js +1 -0
  223. package/lib/chain/serializeState.js.map +1 -1
  224. package/lib/chain/shufflingCache.d.ts.map +1 -1
  225. package/lib/chain/shufflingCache.js +2 -1
  226. package/lib/chain/shufflingCache.js.map +1 -1
  227. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  228. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  229. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  230. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  231. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  232. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  233. package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -1
  234. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  235. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +1 -41
  236. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  237. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  238. package/lib/chain/stateCache/types.js +2 -1
  239. package/lib/chain/stateCache/types.js.map +1 -1
  240. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  241. package/lib/chain/validation/attestation.d.ts.map +1 -1
  242. package/lib/chain/validation/attestation.js +7 -3
  243. package/lib/chain/validation/attestation.js.map +1 -1
  244. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  245. package/lib/chain/validation/blobSidecar.js.map +1 -1
  246. package/lib/chain/validation/block.js.map +1 -1
  247. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  248. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  249. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  250. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  251. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  252. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  253. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  254. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  255. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  256. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  257. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  258. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  259. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  260. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  261. package/lib/chain/validation/syncCommittee.js.map +1 -1
  262. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  263. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  264. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  265. package/lib/chain/validatorMonitor.js +2 -1
  266. package/lib/chain/validatorMonitor.js.map +1 -1
  267. package/lib/constants/network.js +4 -2
  268. package/lib/constants/network.js.map +1 -1
  269. package/lib/db/beacon.d.ts.map +1 -1
  270. package/lib/db/beacon.js.map +1 -1
  271. package/lib/db/buckets.d.ts +23 -23
  272. package/lib/db/buckets.d.ts.map +1 -1
  273. package/lib/db/buckets.js +2 -1
  274. package/lib/db/buckets.js.map +1 -1
  275. package/lib/db/repositories/attesterSlashing.d.ts.map +1 -1
  276. package/lib/db/repositories/attesterSlashing.js.map +1 -1
  277. package/lib/db/repositories/backfilledRanges.d.ts.map +1 -1
  278. package/lib/db/repositories/backfilledRanges.js.map +1 -1
  279. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  280. package/lib/db/repositories/blobSidecars.js.map +1 -1
  281. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -1
  282. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  283. package/lib/db/repositories/block.d.ts.map +1 -1
  284. package/lib/db/repositories/block.js.map +1 -1
  285. package/lib/db/repositories/blockArchive.d.ts.map +1 -1
  286. package/lib/db/repositories/blockArchive.js.map +1 -1
  287. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  288. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  289. package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -1
  290. package/lib/db/repositories/blsToExecutionChange.js.map +1 -1
  291. package/lib/db/repositories/checkpointState.d.ts.map +1 -1
  292. package/lib/db/repositories/checkpointState.js.map +1 -1
  293. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
  294. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  295. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  296. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  297. package/lib/db/repositories/executionPayloadEnvelope.d.ts.map +1 -1
  298. package/lib/db/repositories/executionPayloadEnvelope.js.map +1 -1
  299. package/lib/db/repositories/executionPayloadEnvelopeArchive.d.ts.map +1 -1
  300. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -1
  301. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +1 -1
  302. package/lib/db/repositories/lightclientBestUpdate.js.map +1 -1
  303. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +1 -1
  304. package/lib/db/repositories/lightclientCheckpointHeader.js.map +1 -1
  305. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +1 -1
  306. package/lib/db/repositories/lightclientSyncCommittee.js.map +1 -1
  307. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -1
  308. package/lib/db/repositories/lightclientSyncCommitteeWitness.js.map +1 -1
  309. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -1
  310. package/lib/db/repositories/proposerSlashing.js.map +1 -1
  311. package/lib/db/repositories/stateArchive.d.ts.map +1 -1
  312. package/lib/db/repositories/stateArchive.js.map +1 -1
  313. package/lib/db/repositories/stateArchiveIndex.js.map +1 -1
  314. package/lib/db/repositories/voluntaryExit.d.ts.map +1 -1
  315. package/lib/db/repositories/voluntaryExit.js.map +1 -1
  316. package/lib/execution/builder/cache.d.ts.map +1 -1
  317. package/lib/execution/builder/cache.js.map +1 -1
  318. package/lib/execution/builder/http.d.ts.map +1 -1
  319. package/lib/execution/builder/http.js +2 -1
  320. package/lib/execution/builder/http.js.map +1 -1
  321. package/lib/execution/builder/index.js.map +1 -1
  322. package/lib/execution/builder/utils.js.map +1 -1
  323. package/lib/execution/engine/disabled.d.ts.map +1 -1
  324. package/lib/execution/engine/disabled.js.map +1 -1
  325. package/lib/execution/engine/http.d.ts.map +1 -1
  326. package/lib/execution/engine/http.js.map +1 -1
  327. package/lib/execution/engine/index.js.map +1 -1
  328. package/lib/execution/engine/interface.js +4 -2
  329. package/lib/execution/engine/interface.js.map +1 -1
  330. package/lib/execution/engine/jsonRpcHttpClient.d.ts +10 -15
  331. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -1
  332. package/lib/execution/engine/jsonRpcHttpClient.js +2 -1
  333. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -1
  334. package/lib/execution/engine/jwt.js.map +1 -1
  335. package/lib/execution/engine/mock.d.ts.map +1 -1
  336. package/lib/execution/engine/mock.js.map +1 -1
  337. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  338. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  339. package/lib/execution/engine/types.js.map +1 -1
  340. package/lib/execution/engine/utils.d.ts +1 -1
  341. package/lib/execution/engine/utils.d.ts.map +1 -1
  342. package/lib/execution/engine/utils.js.map +1 -1
  343. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  344. package/lib/metrics/metrics/beacon.js.map +1 -1
  345. package/lib/metrics/metrics/lodestar.d.ts +8 -7
  346. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  347. package/lib/metrics/metrics/lodestar.js +17 -13
  348. package/lib/metrics/metrics/lodestar.js.map +1 -1
  349. package/lib/metrics/metrics.js.map +1 -1
  350. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  351. package/lib/metrics/server/http.d.ts +1 -1
  352. package/lib/metrics/server/http.d.ts.map +1 -1
  353. package/lib/metrics/server/http.js.map +1 -1
  354. package/lib/metrics/utils/avgMinMax.d.ts.map +1 -1
  355. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  356. package/lib/metrics/utils/gauge.d.ts.map +1 -1
  357. package/lib/metrics/utils/gauge.js.map +1 -1
  358. package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -1
  359. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  360. package/lib/monitoring/clientStats.js.map +1 -1
  361. package/lib/monitoring/properties.d.ts.map +1 -1
  362. package/lib/monitoring/properties.js.map +1 -1
  363. package/lib/monitoring/service.d.ts.map +1 -1
  364. package/lib/monitoring/service.js.map +1 -1
  365. package/lib/monitoring/system.d.ts.map +1 -1
  366. package/lib/monitoring/system.js.map +1 -1
  367. package/lib/monitoring/types.js +4 -2
  368. package/lib/monitoring/types.js.map +1 -1
  369. package/lib/network/core/events.d.ts +1 -3
  370. package/lib/network/core/events.d.ts.map +1 -1
  371. package/lib/network/core/events.js +4 -2
  372. package/lib/network/core/events.js.map +1 -1
  373. package/lib/network/core/metrics.d.ts +6 -7
  374. package/lib/network/core/metrics.d.ts.map +1 -1
  375. package/lib/network/core/metrics.js.map +1 -1
  376. package/lib/network/core/networkCore.d.ts +1 -1
  377. package/lib/network/core/networkCore.d.ts.map +1 -1
  378. package/lib/network/core/networkCore.js.map +1 -1
  379. package/lib/network/core/networkCoreWorker.js.map +1 -1
  380. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  381. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  382. package/lib/network/discv5/index.d.ts +1 -3
  383. package/lib/network/discv5/index.d.ts.map +1 -1
  384. package/lib/network/discv5/index.js.map +1 -1
  385. package/lib/network/discv5/utils.d.ts +1 -1
  386. package/lib/network/discv5/utils.d.ts.map +1 -1
  387. package/lib/network/discv5/utils.js +7 -5
  388. package/lib/network/discv5/utils.js.map +1 -1
  389. package/lib/network/discv5/worker.js.map +1 -1
  390. package/lib/network/events.d.ts +1 -3
  391. package/lib/network/events.d.ts.map +1 -1
  392. package/lib/network/events.js +4 -2
  393. package/lib/network/events.js.map +1 -1
  394. package/lib/network/forks.js.map +1 -1
  395. package/lib/network/gossip/encoding.d.ts.map +1 -1
  396. package/lib/network/gossip/encoding.js.map +1 -1
  397. package/lib/network/gossip/errors.d.ts.map +1 -1
  398. package/lib/network/gossip/errors.js.map +1 -1
  399. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  400. package/lib/network/gossip/gossipsub.js +9 -6
  401. package/lib/network/gossip/gossipsub.js.map +1 -1
  402. package/lib/network/gossip/interface.js +4 -2
  403. package/lib/network/gossip/interface.js.map +1 -1
  404. package/lib/network/gossip/metrics.d.ts +12 -14
  405. package/lib/network/gossip/metrics.d.ts.map +1 -1
  406. package/lib/network/gossip/metrics.js.map +1 -1
  407. package/lib/network/gossip/scoringParameters.d.ts +1 -1
  408. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  409. package/lib/network/gossip/scoringParameters.js.map +1 -1
  410. package/lib/network/gossip/topic.d.ts +2867 -2920
  411. package/lib/network/gossip/topic.d.ts.map +1 -1
  412. package/lib/network/gossip/topic.js.map +1 -1
  413. package/lib/network/libp2p/error.js +2 -1
  414. package/lib/network/libp2p/error.js.map +1 -1
  415. package/lib/network/libp2p/index.d.ts +1 -1
  416. package/lib/network/libp2p/index.d.ts.map +1 -1
  417. package/lib/network/libp2p/index.js +35 -17
  418. package/lib/network/libp2p/index.js.map +1 -1
  419. package/lib/network/metadata.d.ts +1 -0
  420. package/lib/network/metadata.d.ts.map +1 -1
  421. package/lib/network/metadata.js +5 -2
  422. package/lib/network/metadata.js.map +1 -1
  423. package/lib/network/network.d.ts +1 -1
  424. package/lib/network/network.d.ts.map +1 -1
  425. package/lib/network/network.js.map +1 -1
  426. package/lib/network/options.d.ts +2 -0
  427. package/lib/network/options.d.ts.map +1 -1
  428. package/lib/network/options.js +3 -0
  429. package/lib/network/options.js.map +1 -1
  430. package/lib/network/peers/client.js +2 -1
  431. package/lib/network/peers/client.js.map +1 -1
  432. package/lib/network/peers/datastore.d.ts +0 -3
  433. package/lib/network/peers/datastore.d.ts.map +1 -1
  434. package/lib/network/peers/datastore.js.map +1 -1
  435. package/lib/network/peers/discover.d.ts +2 -7
  436. package/lib/network/peers/discover.d.ts.map +1 -1
  437. package/lib/network/peers/discover.js +45 -12
  438. package/lib/network/peers/discover.js.map +1 -1
  439. package/lib/network/peers/peerManager.d.ts +0 -1
  440. package/lib/network/peers/peerManager.d.ts.map +1 -1
  441. package/lib/network/peers/peerManager.js.map +1 -1
  442. package/lib/network/peers/peersData.d.ts.map +1 -1
  443. package/lib/network/peers/peersData.js +2 -1
  444. package/lib/network/peers/peersData.js.map +1 -1
  445. package/lib/network/peers/score/interface.js +4 -2
  446. package/lib/network/peers/score/interface.js.map +1 -1
  447. package/lib/network/peers/score/score.d.ts.map +1 -1
  448. package/lib/network/peers/score/score.js.map +1 -1
  449. package/lib/network/peers/score/store.d.ts.map +1 -1
  450. package/lib/network/peers/score/store.js.map +1 -1
  451. package/lib/network/peers/score/utils.js.map +1 -1
  452. package/lib/network/peers/utils/assertPeerRelevance.js +2 -1
  453. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  454. package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
  455. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  456. package/lib/network/peers/utils/prioritizePeers.js +2 -1
  457. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  458. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  459. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  460. package/lib/network/processor/aggregatorTracker.d.ts.map +1 -1
  461. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  462. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  463. package/lib/network/processor/gossipHandlers.js.map +1 -1
  464. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  465. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -1
  466. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  467. package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -1
  468. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  469. package/lib/network/processor/gossipQueues/types.js +4 -2
  470. package/lib/network/processor/gossipQueues/types.js.map +1 -1
  471. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  472. package/lib/network/processor/index.d.ts.map +1 -1
  473. package/lib/network/processor/index.js +4 -2
  474. package/lib/network/processor/index.js.map +1 -1
  475. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  476. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  477. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  478. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  479. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  480. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  481. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  482. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  483. package/lib/network/reqresp/handlers/index.js.map +1 -1
  484. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  485. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  486. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  487. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  488. package/lib/network/reqresp/interface.js +2 -1
  489. package/lib/network/reqresp/interface.js.map +1 -1
  490. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  491. package/lib/network/reqresp/protocols.js.map +1 -1
  492. package/lib/network/reqresp/rateLimit.js.map +1 -1
  493. package/lib/network/reqresp/score.js.map +1 -1
  494. package/lib/network/reqresp/types.js +4 -2
  495. package/lib/network/reqresp/types.js.map +1 -1
  496. package/lib/network/reqresp/utils/collect.js.map +1 -1
  497. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js +2 -1
  498. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js.map +1 -1
  499. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts +1 -1
  500. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -1
  501. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  502. package/lib/network/statusCache.d.ts.map +1 -1
  503. package/lib/network/statusCache.js.map +1 -1
  504. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  505. package/lib/network/subnets/attnetsService.js +2 -1
  506. package/lib/network/subnets/attnetsService.js.map +1 -1
  507. package/lib/network/subnets/interface.js.map +1 -1
  508. package/lib/network/subnets/syncnetsService.d.ts.map +1 -1
  509. package/lib/network/subnets/syncnetsService.js.map +1 -1
  510. package/lib/network/subnets/util.js.map +1 -1
  511. package/lib/network/util.js.map +1 -1
  512. package/lib/node/nodejs.d.ts +2 -2
  513. package/lib/node/nodejs.d.ts.map +1 -1
  514. package/lib/node/nodejs.js +2 -1
  515. package/lib/node/nodejs.js.map +1 -1
  516. package/lib/node/notifier.js.map +1 -1
  517. package/lib/node/utils/interop/deposits.js.map +1 -1
  518. package/lib/node/utils/interop/state.d.ts +1 -1
  519. package/lib/node/utils/interop/state.d.ts.map +1 -1
  520. package/lib/node/utils/interop/state.js.map +1 -1
  521. package/lib/node/utils/lightclient.js.map +1 -1
  522. package/lib/node/utils/state.js.map +1 -1
  523. package/lib/sync/backfill/backfill.d.ts +1 -10
  524. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  525. package/lib/sync/backfill/backfill.js +6 -3
  526. package/lib/sync/backfill/backfill.js.map +1 -1
  527. package/lib/sync/backfill/errors.js +2 -1
  528. package/lib/sync/backfill/errors.js.map +1 -1
  529. package/lib/sync/backfill/verify.js.map +1 -1
  530. package/lib/sync/interface.js +2 -1
  531. package/lib/sync/interface.js.map +1 -1
  532. package/lib/sync/range/batch.d.ts.map +1 -1
  533. package/lib/sync/range/batch.js +4 -2
  534. package/lib/sync/range/batch.js.map +1 -1
  535. package/lib/sync/range/chain.d.ts +0 -10
  536. package/lib/sync/range/chain.d.ts.map +1 -1
  537. package/lib/sync/range/chain.js +2 -1
  538. package/lib/sync/range/chain.js.map +1 -1
  539. package/lib/sync/range/range.d.ts +1 -3
  540. package/lib/sync/range/range.d.ts.map +1 -1
  541. package/lib/sync/range/range.js +4 -2
  542. package/lib/sync/range/range.js.map +1 -1
  543. package/lib/sync/range/utils/batches.js.map +1 -1
  544. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  545. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  546. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -1
  547. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  548. package/lib/sync/range/utils/updateChains.js.map +1 -1
  549. package/lib/sync/sync.d.ts.map +1 -1
  550. package/lib/sync/sync.js.map +1 -1
  551. package/lib/sync/types.js +4 -2
  552. package/lib/sync/types.js.map +1 -1
  553. package/lib/sync/unknownBlock.d.ts +0 -14
  554. package/lib/sync/unknownBlock.d.ts.map +1 -1
  555. package/lib/sync/unknownBlock.js.map +1 -1
  556. package/lib/sync/utils/downloadByRange.d.ts +4 -4
  557. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  558. package/lib/sync/utils/downloadByRange.js +2 -1
  559. package/lib/sync/utils/downloadByRange.js.map +1 -1
  560. package/lib/sync/utils/downloadByRoot.d.ts +7 -7
  561. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  562. package/lib/sync/utils/downloadByRoot.js +2 -1
  563. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  564. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  565. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -1
  566. package/lib/sync/utils/remoteSyncType.js +4 -2
  567. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  568. package/lib/util/address.js.map +1 -1
  569. package/lib/util/array.d.ts.map +1 -1
  570. package/lib/util/array.js.map +1 -1
  571. package/lib/util/asyncIterableToEvents.d.ts.map +1 -1
  572. package/lib/util/asyncIterableToEvents.js +2 -1
  573. package/lib/util/asyncIterableToEvents.js.map +1 -1
  574. package/lib/util/binarySearch.d.ts.map +1 -1
  575. package/lib/util/binarySearch.js.map +1 -1
  576. package/lib/util/bitArray.js +2 -1
  577. package/lib/util/bitArray.js.map +1 -1
  578. package/lib/util/blobs.js.map +1 -1
  579. package/lib/util/bufferPool.d.ts.map +1 -1
  580. package/lib/util/bufferPool.js +2 -1
  581. package/lib/util/bufferPool.js.map +1 -1
  582. package/lib/util/chunkify.js.map +1 -1
  583. package/lib/util/clock.d.ts.map +1 -1
  584. package/lib/util/clock.js +2 -1
  585. package/lib/util/clock.js.map +1 -1
  586. package/lib/util/dataColumns.d.ts.map +1 -1
  587. package/lib/util/dataColumns.js +4 -2
  588. package/lib/util/dataColumns.js.map +1 -1
  589. package/lib/util/dependentRoot.js.map +1 -1
  590. package/lib/util/enum.js.map +1 -1
  591. package/lib/util/error.js.map +1 -1
  592. package/lib/util/eventLoop.js.map +1 -1
  593. package/lib/util/execution.js +2 -1
  594. package/lib/util/execution.js.map +1 -1
  595. package/lib/util/file.js.map +1 -1
  596. package/lib/util/forkChoice.js.map +1 -1
  597. package/lib/util/forkName.js.map +1 -1
  598. package/lib/util/graffiti.js.map +1 -1
  599. package/lib/util/hex.js.map +1 -1
  600. package/lib/util/ip.js.map +1 -1
  601. package/lib/util/itTrigger.d.ts.map +1 -1
  602. package/lib/util/itTrigger.js.map +1 -1
  603. package/lib/util/map.d.ts.map +1 -1
  604. package/lib/util/map.js.map +1 -1
  605. package/lib/util/metadata.js.map +1 -1
  606. package/lib/util/multifork.js.map +1 -1
  607. package/lib/util/numpy.js.map +1 -1
  608. package/lib/util/peerId.js.map +1 -1
  609. package/lib/util/profile.js +2 -1
  610. package/lib/util/profile.js.map +1 -1
  611. package/lib/util/promises.js.map +1 -1
  612. package/lib/util/queue/errors.js +2 -1
  613. package/lib/util/queue/errors.js.map +1 -1
  614. package/lib/util/queue/fnQueue.d.ts.map +1 -1
  615. package/lib/util/queue/fnQueue.js.map +1 -1
  616. package/lib/util/queue/itemQueue.d.ts.map +1 -1
  617. package/lib/util/queue/itemQueue.js.map +1 -1
  618. package/lib/util/queue/options.js +2 -1
  619. package/lib/util/queue/options.js.map +1 -1
  620. package/lib/util/serializedCache.d.ts.map +1 -1
  621. package/lib/util/serializedCache.js.map +1 -1
  622. package/lib/util/set.d.ts.map +1 -1
  623. package/lib/util/set.js.map +1 -1
  624. package/lib/util/shuffle.js.map +1 -1
  625. package/lib/util/sortBy.js.map +1 -1
  626. package/lib/util/sszBytes.js.map +1 -1
  627. package/lib/util/time.js.map +1 -1
  628. package/lib/util/timeSeries.d.ts.map +1 -1
  629. package/lib/util/timeSeries.js.map +1 -1
  630. package/lib/util/types.d.ts.map +1 -1
  631. package/lib/util/workerEvents.d.ts +1 -1
  632. package/lib/util/workerEvents.d.ts.map +1 -1
  633. package/lib/util/workerEvents.js.map +1 -1
  634. package/lib/util/wrapError.js.map +1 -1
  635. package/package.json +28 -27
  636. package/src/chain/seenCache/seenGossipBlockInput.ts +3 -2
  637. package/src/chain/validation/attestation.ts +7 -3
  638. package/src/metrics/metrics/lodestar.ts +17 -13
  639. package/src/network/discv5/utils.ts +5 -4
  640. package/src/network/gossip/gossipsub.ts +12 -7
  641. package/src/network/libp2p/index.ts +40 -18
  642. package/src/network/metadata.ts +1 -0
  643. package/src/network/options.ts +5 -1
  644. package/src/network/peers/discover.ts +46 -11
@@ -134,7 +134,7 @@ export class SeenBlockInput {
134
134
  if (metrics) {
135
135
  metrics.seenCache.blockInput.blockInputCount.addCollect(() => {
136
136
  metrics.seenCache.blockInput.blockInputCount.set(this.blockInputs.size);
137
- metrics.seenCache.blockInput.serializedObjectCount.set(
137
+ metrics.seenCache.blockInput.serializedObjectRefs.set(
138
138
  Array.from(this.blockInputs.values()).reduce(
139
139
  (count, blockInput) => count + blockInput.getSerializedCacheKeys().length,
140
140
  0
@@ -250,6 +250,7 @@ export class SeenBlockInput {
250
250
  peerIdStr,
251
251
  });
252
252
  }
253
+ this.metrics?.seenCache.blockInput.createdByBlock.inc();
253
254
  this.blockInputs.set(blockInput.blockRootHex, blockInput);
254
255
  }
255
256
 
@@ -349,7 +350,7 @@ export class SeenBlockInput {
349
350
  custodyColumns: this.custodyConfig.custodyColumns,
350
351
  sampledColumns: this.custodyConfig.sampledColumns,
351
352
  });
352
- this.metrics?.seenCache.blockInput.createdByBlob.inc();
353
+ this.metrics?.seenCache.blockInput.createdByColumn.inc();
353
354
  this.blockInputs.set(blockRootHex, blockInput);
354
355
  }
355
356
 
@@ -604,10 +604,14 @@ export function verifyPropagationSlotRange(fork: ForkName, chain: IBeaconChain,
604
604
  //
605
605
  // see: https://github.com/ethereum/consensus-specs/pull/3360
606
606
  if (ForkSeq[fork] < ForkSeq.deneb) {
607
+ const currentSlot = chain.clock.currentSlot;
608
+ const withinPastDisparity = currentSlot > 0 && chain.clock.isCurrentSlotGivenGossipDisparity(currentSlot - 1);
607
609
  const earliestPermissibleSlot = Math.max(
608
- // slot with past tolerance of MAXIMUM_GOSSIP_CLOCK_DISPARITY
609
- chain.clock.slotWithPastTolerance(chain.config.MAXIMUM_GOSSIP_CLOCK_DISPARITY / 1000) -
610
- chain.config.ATTESTATION_PROPAGATION_SLOT_RANGE,
610
+ // Pre-Deneb propagation is time-bounded: an attestation remains valid at the exact old
611
+ // boundary `compute_time_at_slot(slot + range + 1) + MAXIMUM_GOSSIP_CLOCK_DISPARITY`.
612
+ // Model that boundary by extending the lower slot bound by one additional slot only while
613
+ // the clock still considers the previous slot current given gossip disparity.
614
+ currentSlot - chain.config.ATTESTATION_PROPAGATION_SLOT_RANGE - (withinPastDisparity ? 1 : 0),
611
615
  0
612
616
  );
613
617
 
@@ -1461,33 +1461,37 @@ export function createLodestarMetrics(
1461
1461
  name: "lodestar_seen_block_input_cache_size",
1462
1462
  help: "Number of cached BlockInputs",
1463
1463
  }),
1464
- serializedObjectCount: register.gauge({
1465
- name: "lodestar_seen_block_input_cache_serialized_object_count",
1466
- help: "Number of serialized objects retained by cached BlockInputs",
1464
+ serializedObjectRefs: register.gauge({
1465
+ name: "lodestar_seen_block_input_cache_serialized_object_refs",
1466
+ help: "Number of serialized-cache object refs retained by cached BlockInputs",
1467
1467
  }),
1468
- duplicateBlockCount: register.gauge<{source: BlockInputSource}>({
1469
- name: "lodestar_seen_block_input_cache_duplicate_block_count",
1468
+ duplicateBlockCount: register.counter<{source: BlockInputSource}>({
1469
+ name: "lodestar_seen_block_input_cache_duplicate_block_total",
1470
1470
  help: "Total number of duplicate blocks that pass validation and attempt to be cached but are known",
1471
1471
  labelNames: ["source"],
1472
1472
  }),
1473
- duplicateBlobCount: register.gauge<{source: BlockInputSource}>({
1474
- name: "lodestar_seen_block_input_cache_duplicate_blob_count",
1473
+ duplicateBlobCount: register.counter<{source: BlockInputSource}>({
1474
+ name: "lodestar_seen_block_input_cache_duplicate_blob_total",
1475
1475
  help: "Total number of duplicate blobs that pass validation and attempt to be cached but are known",
1476
1476
  labelNames: ["source"],
1477
1477
  }),
1478
- duplicateColumnCount: register.gauge<{source: BlockInputSource}>({
1479
- name: "lodestar_seen_block_input_cache_duplicate_column_count",
1478
+ duplicateColumnCount: register.counter<{source: BlockInputSource}>({
1479
+ name: "lodestar_seen_block_input_cache_duplicate_column_total",
1480
1480
  help: "Total number of duplicate columns that pass validation and attempt to be cached but are known",
1481
1481
  labelNames: ["source"],
1482
1482
  }),
1483
- createdByBlock: register.gauge({
1484
- name: "lodestar_seen_block_input_cache_items_created_by_block",
1483
+ createdByBlock: register.counter({
1484
+ name: "lodestar_seen_block_input_cache_items_created_by_block_total",
1485
1485
  help: "Number of BlockInputs created via a block being seen first",
1486
1486
  }),
1487
- createdByBlob: register.gauge({
1488
- name: "lodestar_seen_block_input_cache_items_created_by_blob",
1487
+ createdByBlob: register.counter({
1488
+ name: "lodestar_seen_block_input_cache_items_created_by_blob_total",
1489
1489
  help: "Number of BlockInputs created via a blob being seen first",
1490
1490
  }),
1491
+ createdByColumn: register.counter({
1492
+ name: "lodestar_seen_block_input_cache_items_created_by_column_total",
1493
+ help: "Number of BlockInputs created via a data column being seen first",
1494
+ }),
1491
1495
  },
1492
1496
  },
1493
1497
 
@@ -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
@@ -11,7 +11,7 @@ import type {PeerScoreParams, PeerScoreStatsDump} from "@libp2p/gossipsub/score"
11
11
  import type {AddrInfo, PublishOpts, TopicStr} from "@libp2p/gossipsub/types";
12
12
  import type {PeerId} from "@libp2p/interface";
13
13
  import {peerIdFromString} from "@libp2p/peer-id";
14
- import {multiaddr} from "@multiformats/multiaddr";
14
+ import {type Multiaddr, multiaddr} from "@multiformats/multiaddr";
15
15
  import {ENR} from "@chainsafe/enr";
16
16
  import {routes} from "@lodestar/api";
17
17
  import {BeaconConfig, ForkBoundary} from "@lodestar/config";
@@ -537,19 +537,24 @@ export function parseDirectPeers(directPeerStrs: routes.lodestar.DirectPeer[], l
537
537
  const enr = ENR.decodeTxt(peerStr);
538
538
  const peerId = enr.peerId;
539
539
 
540
- // Get TCP multiaddr from ENR
541
- const multiaddrTCP = enr.getLocationMultiaddr("tcp");
542
- if (!multiaddrTCP) {
543
- 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});
544
546
  continue;
545
547
  }
546
548
 
547
549
  directPeers.push({
548
550
  id: peerId,
549
- addrs: [multiaddrTCP],
551
+ addrs,
550
552
  });
551
553
 
552
- 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
+ });
553
558
  } catch (e) {
554
559
  logger.warn("Failed to parse direct peer ENR", {enr: peerStr}, e as Error);
555
560
  }
@@ -5,11 +5,12 @@ import {mdns} from "@libp2p/mdns";
5
5
  import {mplex} from "@libp2p/mplex";
6
6
  import {prometheusMetrics} from "@libp2p/prometheus-metrics";
7
7
  import {tcp} from "@libp2p/tcp";
8
- import {createLibp2p} from "libp2p";
8
+ import {Libp2pInit, createLibp2p} from "libp2p";
9
9
  import {Registry} from "prom-client";
10
10
  import {ENR} from "@chainsafe/enr";
11
11
  import {noise} from "@chainsafe/libp2p-noise";
12
12
  import {asCrypto, defaultCrypto} from "@chainsafe/libp2p-noise/crypto";
13
+ import {quic} from "@chainsafe/libp2p-quic";
13
14
  import {Libp2p, LodestarComponents} from "../interface.js";
14
15
  import {NetworkOptions, defaultNetworkOptions} from "../options.js";
15
16
  import {Eth2PeerDataStore} from "../peers/datastore.js";
@@ -21,11 +22,14 @@ export type NodeJsLibp2pOpts = {
21
22
  metricsRegistry?: Registry;
22
23
  };
23
24
 
24
- export async function getDiscv5Multiaddrs(bootEnrs: string[]): Promise<string[]> {
25
+ export async function getDiscv5Multiaddrs(bootEnrs: string[], quicEnabled?: boolean): Promise<string[]> {
25
26
  const bootMultiaddrs = [];
26
27
  for (const enrStr of bootEnrs) {
27
28
  const enr = ENR.decodeTxt(enrStr);
28
- const multiaddrWithPeerId = (await enr.getFullMultiaddr("tcp"))?.toString();
29
+ // Prefer QUIC over TCP when available
30
+ const quicMultiaddr = quicEnabled ? (await enr.getFullMultiaddr("quic"))?.toString() : undefined;
31
+ const tcpMultiaddr = (await enr.getFullMultiaddr("tcp"))?.toString();
32
+ const multiaddrWithPeerId = quicMultiaddr ?? tcpMultiaddr;
29
33
  if (multiaddrWithPeerId) {
30
34
  bootMultiaddrs.push(multiaddrWithPeerId);
31
35
  }
@@ -53,7 +57,9 @@ export async function createNodeJsLibp2p(
53
57
  const bootMultiaddrs = [
54
58
  ...(networkOpts.bootMultiaddrs ?? defaultNetworkOptions.bootMultiaddrs ?? []),
55
59
  // Append discv5.bootEnrs to bootMultiaddrs if requested
56
- ...(networkOpts.connectToDiscv5Bootnodes ? await getDiscv5Multiaddrs(networkOpts.discv5?.bootEnrs ?? []) : []),
60
+ ...(networkOpts.connectToDiscv5Bootnodes
61
+ ? await getDiscv5Multiaddrs(networkOpts.discv5?.bootEnrs ?? [], networkOpts.quic)
62
+ : []),
57
63
  ];
58
64
 
59
65
  if ((bootMultiaddrs.length ?? 0) > 0) {
@@ -64,6 +70,35 @@ export async function createNodeJsLibp2p(
64
70
  peerDiscovery.push(mdns());
65
71
  }
66
72
  }
73
+ const transports: Libp2pInit["transports"] = [];
74
+ if (networkOpts.tcp ?? true) {
75
+ transports.unshift(
76
+ tcp({
77
+ // Reject connections when the server's connection count gets high
78
+ maxConnections: networkOpts.maxPeers,
79
+ // socket option: the maximum length of the queue of pending connections
80
+ // https://nodejs.org/dist/latest-v18.x/docs/api/net.html#serverlisten
81
+ // it's not safe if we increase this number
82
+ backlog: 5,
83
+ closeServerOnMaxConnections: {
84
+ closeAbove: networkOpts.maxPeers ?? Infinity,
85
+ listenBelow: networkOpts.maxPeers ?? Infinity,
86
+ },
87
+ })
88
+ );
89
+ }
90
+ if (networkOpts.quic) {
91
+ transports.unshift(
92
+ quic({
93
+ handshakeTimeout: 5_000,
94
+ maxIdleTimeout: 10_000,
95
+ keepAliveInterval: 5_000,
96
+ maxConcurrentStreamLimit: 256,
97
+ maxStreamData: 10_000_000,
98
+ maxConnectionData: 15_000_000,
99
+ })
100
+ );
101
+ }
67
102
 
68
103
  const noiseCrypto = {
69
104
  ...defaultCrypto,
@@ -85,20 +120,7 @@ export async function createNodeJsLibp2p(
85
120
  announce: [],
86
121
  },
87
122
  connectionEncrypters: [noise({crypto: noiseCrypto})],
88
- // Reject connections when the server's connection count gets high
89
- transports: [
90
- tcp({
91
- maxConnections: networkOpts.maxPeers,
92
- // socket option: the maximum length of the queue of pending connections
93
- // https://nodejs.org/dist/latest-v18.x/docs/api/net.html#serverlisten
94
- // it's not safe if we increase this number
95
- backlog: 5,
96
- closeServerOnMaxConnections: {
97
- closeAbove: networkOpts.maxPeers ?? Infinity,
98
- listenBelow: networkOpts.maxPeers ?? Infinity,
99
- },
100
- }),
101
- ],
123
+ transports,
102
124
  streamMuxers: [mplex({disconnectThreshold})],
103
125
  peerDiscovery,
104
126
  metrics: nodeJsLibp2pOpts.metrics
@@ -11,6 +11,7 @@ import {NetworkConfig} from "./networkConfig.js";
11
11
 
12
12
  export enum ENRKey {
13
13
  tcp = "tcp",
14
+ quic = "quic",
14
15
  eth2 = "eth2",
15
16
  attnets = "attnets",
16
17
  syncnets = "syncnets",
@@ -29,7 +29,6 @@ export interface NetworkOptions
29
29
  useWorker?: boolean;
30
30
  maxYoungGenerationSizeMb?: number;
31
31
  disableLightClientServer?: boolean;
32
-
33
32
  /**
34
33
  * During E2E tests observe a lot of following `missing stream`:
35
34
  *
@@ -48,11 +47,14 @@ export interface NetworkOptions
48
47
  * We need to increase this only for the testing purpose
49
48
  */
50
49
  disconnectThreshold?: number;
50
+ quic?: boolean;
51
+ tcp?: boolean;
51
52
  }
52
53
 
53
54
  export const defaultNetworkOptions: NetworkOptions = {
54
55
  maxPeers: 210, // Allow some room above targetPeers for new inbound peers
55
56
  targetPeers: 200,
57
+ // In CLI usage this is typically overridden; when unset it serves as a fallback default (e.g. programmatic usage/tests)
56
58
  localMultiaddrs: ["/ip4/0.0.0.0/tcp/9000", "/ip6/::/tcp/9000"],
57
59
  bootMultiaddrs: [],
58
60
  /** disabled by default */
@@ -67,6 +69,8 @@ export const defaultNetworkOptions: NetworkOptions = {
67
69
  slotsToSubscribeBeforeAggregatorDuty: 2,
68
70
  // This will enable the light client server by default
69
71
  disableLightClientServer: false,
72
+ quic: false,
73
+ tcp: true,
70
74
  // specific option for fulu
71
75
  // - this is the same to TARGET_SUBNET_PEERS
72
76
  // - for fusaka-devnets, we have 25-30 peers per subnet
@@ -59,6 +59,7 @@ export enum DiscoveredPeerStatus {
59
59
  cached = "cached",
60
60
  dropped = "dropped",
61
61
  no_multiaddrs = "no_multiaddrs",
62
+ transport_incompatible = "transport_incompatible",
62
63
  peer_cooling_down = "peer_cooling_down",
63
64
  }
64
65
 
@@ -88,7 +89,8 @@ export type SubnetDiscvQueryMs = {
88
89
 
89
90
  type CachedENR = {
90
91
  peerId: PeerId;
91
- multiaddrTCP: Multiaddr;
92
+ multiaddrTCP?: Multiaddr;
93
+ multiaddrQUIC?: Multiaddr;
92
94
  subnets: Record<SubnetType, boolean[]>;
93
95
  addedUnixMs: number;
94
96
  // custodyGroups is null for pre-fulu
@@ -114,6 +116,7 @@ export class PeerDiscovery {
114
116
  attnets: new Map(),
115
117
  syncnets: new Map(),
116
118
  };
119
+ private transports: string[];
117
120
 
118
121
  private custodyGroupQueries: CustodyGroupQueries;
119
122
 
@@ -180,6 +183,17 @@ export class PeerDiscovery {
180
183
  }
181
184
  });
182
185
  }
186
+
187
+ // Transport tags vary by library: @libp2p/tcp uses '@libp2p/tcp', @chainsafe/libp2p-quic uses 'quic'
188
+ // Normalize to simple 'tcp' / 'quic' strings for matching
189
+ this.transports = libp2p.services.components.transportManager
190
+ .getTransports()
191
+ .map((t) => t[Symbol.toStringTag])
192
+ .map((tag) => {
193
+ if (tag?.includes("tcp")) return "tcp";
194
+ if (tag?.includes("quic")) return "quic";
195
+ return tag;
196
+ });
183
197
  }
184
198
 
185
199
  static async init(modules: PeerDiscoveryModules, opts: PeerDiscoveryOpts): Promise<PeerDiscovery> {
@@ -372,10 +386,15 @@ export class PeerDiscovery {
372
386
  return;
373
387
  }
374
388
 
389
+ // Select multiaddrs by protocol rather than index — libp2p discovery events
390
+ // don't guarantee ordering or number of addresses
391
+ const multiaddrTCP = multiaddrs.find((ma) => ma.toString().includes("/tcp/"));
392
+ const multiaddrQUIC = multiaddrs.find((ma) => ma.toString().includes("/quic-v1"));
393
+
375
394
  const attnets = zeroAttnets;
376
395
  const syncnets = zeroSyncnets;
377
396
 
378
- const status = this.handleDiscoveredPeer(id, multiaddrs[0], attnets, syncnets, undefined);
397
+ const status = this.handleDiscoveredPeer(id, multiaddrTCP, multiaddrQUIC, attnets, syncnets, undefined);
379
398
  this.logger.debug("Discovered peer via libp2p", {peer: prettyPrintPeerId(id), status});
380
399
  this.metrics?.discovery.discoveredStatus.inc({status});
381
400
  };
@@ -388,13 +407,15 @@ export class PeerDiscovery {
388
407
  this.randomNodeQuery.count++;
389
408
  }
390
409
  const peerId = enr.peerId;
391
- // tcp multiaddr is known to be be present, checked inside the worker
410
+ // At least one transport is known to be present, checked inside the worker
392
411
  const multiaddrTCP = enr.getLocationMultiaddr(ENRKey.tcp);
393
- if (!multiaddrTCP) {
394
- this.logger.warn("Discv5 worker sent enr without tcp multiaddr", {enr: enr.encodeTxt()});
412
+ const multiaddrQUIC = enr.getLocationMultiaddr(ENRKey.quic);
413
+ if (!multiaddrTCP && !multiaddrQUIC) {
414
+ this.logger.warn("Discv5 worker sent enr without any transport multiaddr", {enr: enr.encodeTxt()});
395
415
  this.metrics?.discovery.discoveredStatus.inc({status: DiscoveredPeerStatus.no_multiaddrs});
396
416
  return;
397
417
  }
418
+
398
419
  // Are this fields mandatory?
399
420
  const attnetsBytes = enr.kvs.get(ENRKey.attnets); // 64 bits
400
421
  const syncnetsBytes = enr.kvs.get(ENRKey.syncnets); // 4 bits
@@ -414,7 +435,7 @@ export class PeerDiscovery {
414
435
  const syncnets = syncnetsBytes ? deserializeEnrSubnets(syncnetsBytes, SYNC_COMMITTEE_SUBNET_COUNT) : zeroSyncnets;
415
436
  const custodyGroupCount = custodyGroupCountBytes ? bytesToInt(custodyGroupCountBytes, "be") : undefined;
416
437
 
417
- const status = this.handleDiscoveredPeer(peerId, multiaddrTCP, attnets, syncnets, custodyGroupCount);
438
+ const status = this.handleDiscoveredPeer(peerId, multiaddrTCP, multiaddrQUIC, attnets, syncnets, custodyGroupCount);
418
439
  this.logger.debug("Discovered peer via discv5", {
419
440
  peer: prettyPrintPeerId(peerId),
420
441
  status,
@@ -428,7 +449,8 @@ export class PeerDiscovery {
428
449
  */
429
450
  private handleDiscoveredPeer(
430
451
  peerId: PeerId,
431
- multiaddrTCP: Multiaddr,
452
+ multiaddrTCP: Multiaddr | undefined,
453
+ multiaddrQUIC: Multiaddr | undefined,
432
454
  attnets: boolean[],
433
455
  syncnets: boolean[],
434
456
  custodySubnetCount?: number
@@ -454,6 +476,13 @@ export class PeerDiscovery {
454
476
  return DiscoveredPeerStatus.already_connected;
455
477
  }
456
478
 
479
+ // ignore peers if they don't share any transport with us
480
+ const hasTcpMatch = this.transports.includes("tcp") && multiaddrTCP;
481
+ const hasQuicMatch = this.transports.includes("quic") && multiaddrQUIC;
482
+ if (!hasTcpMatch && !hasQuicMatch) {
483
+ return DiscoveredPeerStatus.transport_incompatible;
484
+ }
485
+
457
486
  // Ignore dialing peers
458
487
  if (
459
488
  this.libp2p.services.components.connectionManager
@@ -469,6 +498,7 @@ export class PeerDiscovery {
469
498
  const cachedPeer: CachedENR = {
470
499
  peerId,
471
500
  multiaddrTCP,
501
+ multiaddrQUIC,
472
502
  subnets: {attnets, syncnets},
473
503
  addedUnixMs: Date.now(),
474
504
  // for pre-fulu, custodyGroups is null
@@ -566,19 +596,24 @@ export class PeerDiscovery {
566
596
  // are not successful.
567
597
  this.peersToConnect = Math.max(this.peersToConnect - 1, 0);
568
598
 
569
- const {peerId, multiaddrTCP} = cachedPeer;
599
+ const {peerId, multiaddrTCP, multiaddrQUIC} = cachedPeer;
570
600
 
571
601
  // Must add the multiaddrs array to the address book before dialing
572
602
  // https://github.com/libp2p/js-libp2p/blob/aec8e3d3bb1b245051b60c2a890550d262d5b062/src/index.js#L638
573
- const peer = await this.libp2p.peerStore.merge(peerId, {multiaddrs: [multiaddrTCP]});
603
+ const peer = await this.libp2p.peerStore.merge(peerId, {
604
+ multiaddrs: [multiaddrQUIC, multiaddrTCP].filter(Boolean) as Multiaddr[],
605
+ });
574
606
  if (peer.addresses.length === 0) {
575
607
  this.metrics?.discovery.notDialReason.inc({reason: NotDialReason.no_multiaddrs});
576
608
  return;
577
609
  }
578
610
 
579
- // Note: PeerDiscovery adds the multiaddrTCP beforehand
611
+ // Note: PeerDiscovery adds the multiaddrs beforehand
580
612
  const peerIdShort = prettyPrintPeerId(peerId);
581
- this.logger.debug("Dialing discovered peer", {peer: peerIdShort});
613
+ this.logger.debug("Dialing discovered peer", {
614
+ peer: peerIdShort,
615
+ addresses: peer.addresses.map((a) => a.multiaddr.toString()).join(", "),
616
+ });
582
617
 
583
618
  this.metrics?.discovery.dialAttempts.inc();
584
619
  const timer = this.metrics?.discovery.dialTime.startTimer();