@lodestar/beacon-node 1.41.0-dev.253ed58dd1 → 1.41.0-dev.26ed5ad353

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 (846) hide show
  1. package/lib/api/impl/api.js.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.d.ts +1 -1
  3. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  4. package/lib/api/impl/beacon/blocks/index.js +12 -2
  5. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  6. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  7. package/lib/api/impl/beacon/index.js.map +1 -1
  8. package/lib/api/impl/beacon/pool/index.d.ts +1 -1
  9. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  10. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  11. package/lib/api/impl/beacon/rewards/index.d.ts +1 -1
  12. package/lib/api/impl/beacon/rewards/index.d.ts.map +1 -1
  13. package/lib/api/impl/beacon/rewards/index.js.map +1 -1
  14. package/lib/api/impl/beacon/state/index.d.ts +1 -1
  15. package/lib/api/impl/beacon/state/index.d.ts.map +1 -1
  16. package/lib/api/impl/beacon/state/index.js +8 -8
  17. package/lib/api/impl/beacon/state/index.js.map +1 -1
  18. package/lib/api/impl/beacon/state/utils.d.ts +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 +1 -0
  27. package/lib/api/impl/debug/index.js.map +1 -1
  28. package/lib/api/impl/errors.d.ts.map +1 -1
  29. package/lib/api/impl/errors.js.map +1 -1
  30. package/lib/api/impl/events/index.d.ts +1 -1
  31. package/lib/api/impl/events/index.d.ts.map +1 -1
  32. package/lib/api/impl/events/index.js.map +1 -1
  33. package/lib/api/impl/lightclient/index.d.ts +1 -1
  34. package/lib/api/impl/lightclient/index.d.ts.map +1 -1
  35. package/lib/api/impl/lightclient/index.js.map +1 -1
  36. package/lib/api/impl/lodestar/index.d.ts +1 -1
  37. package/lib/api/impl/lodestar/index.d.ts.map +1 -1
  38. package/lib/api/impl/lodestar/index.js.map +1 -1
  39. package/lib/api/impl/node/index.js.map +1 -1
  40. package/lib/api/impl/node/utils.d.ts +1 -1
  41. package/lib/api/impl/node/utils.d.ts.map +1 -1
  42. package/lib/api/impl/node/utils.js.map +1 -1
  43. package/lib/api/impl/proof/index.js.map +1 -1
  44. package/lib/api/impl/utils.js.map +1 -1
  45. package/lib/api/impl/validator/index.d.ts.map +1 -1
  46. package/lib/api/impl/validator/index.js +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.map +1 -1
  64. package/lib/chain/archiveStore/archiveStore.js +2 -1
  65. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  66. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts +5 -6
  67. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -1
  68. package/lib/chain/archiveStore/historicalState/getHistoricalState.js +9 -10
  69. package/lib/chain/archiveStore/historicalState/getHistoricalState.js.map +1 -1
  70. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -1
  71. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  72. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  73. package/lib/chain/archiveStore/historicalState/types.js +2 -1
  74. package/lib/chain/archiveStore/historicalState/types.js.map +1 -1
  75. package/lib/chain/archiveStore/historicalState/worker.js +3 -3
  76. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  77. package/lib/chain/archiveStore/interface.js +2 -1
  78. package/lib/chain/archiveStore/interface.js.map +1 -1
  79. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts +1 -1
  80. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -1
  81. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +2 -1
  82. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  83. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +3 -8
  84. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  85. package/lib/chain/archiveStore/utils/archiveBlocks.js +1 -1
  86. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  87. package/lib/chain/archiveStore/utils/archivePayloads.js.map +1 -1
  88. package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
  89. package/lib/chain/archiveStore/utils/updateBackfillRange.js +1 -1
  90. package/lib/chain/archiveStore/utils/updateBackfillRange.js.map +1 -1
  91. package/lib/chain/balancesCache.d.ts.map +1 -1
  92. package/lib/chain/balancesCache.js.map +1 -1
  93. package/lib/chain/beaconProposerCache.d.ts.map +1 -1
  94. package/lib/chain/beaconProposerCache.js.map +1 -1
  95. package/lib/chain/blocks/blockInput/blockInput.d.ts +25 -2
  96. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  97. package/lib/chain/blocks/blockInput/blockInput.js +71 -0
  98. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  99. package/lib/chain/blocks/blockInput/errors.js +2 -1
  100. package/lib/chain/blocks/blockInput/errors.js.map +1 -1
  101. package/lib/chain/blocks/blockInput/types.d.ts +18 -1
  102. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  103. package/lib/chain/blocks/blockInput/types.js +5 -2
  104. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  105. package/lib/chain/blocks/blockInput/utils.js.map +1 -1
  106. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  107. package/lib/chain/blocks/importBlock.js +28 -5
  108. package/lib/chain/blocks/importBlock.js.map +1 -1
  109. package/lib/chain/blocks/index.d.ts.map +1 -1
  110. package/lib/chain/blocks/index.js.map +1 -1
  111. package/lib/chain/blocks/types.js +6 -3
  112. package/lib/chain/blocks/types.js.map +1 -1
  113. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  114. package/lib/chain/blocks/utils/checkpoint.js.map +1 -1
  115. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  116. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  117. package/lib/chain/blocks/verifyBlocksDataAvailability.js +3 -0
  118. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  119. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +4 -0
  120. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  121. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +5 -1
  122. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  123. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  124. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -1
  125. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  126. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  127. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  128. package/lib/chain/blocks/writeBlockInputToDb.d.ts +12 -3
  129. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
  130. package/lib/chain/blocks/writeBlockInputToDb.js +92 -98
  131. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  132. package/lib/chain/bls/maybeBatch.js.map +1 -1
  133. package/lib/chain/bls/multithread/index.d.ts +3 -3
  134. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  135. package/lib/chain/bls/multithread/index.js +5 -5
  136. package/lib/chain/bls/multithread/index.js.map +1 -1
  137. package/lib/chain/bls/multithread/jobItem.d.ts +2 -2
  138. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
  139. package/lib/chain/bls/multithread/jobItem.js +4 -3
  140. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  141. package/lib/chain/bls/multithread/types.js +2 -1
  142. package/lib/chain/bls/multithread/types.js.map +1 -1
  143. package/lib/chain/bls/multithread/utils.js.map +1 -1
  144. package/lib/chain/bls/multithread/worker.js.map +1 -1
  145. package/lib/chain/bls/singleThread.d.ts +4 -4
  146. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  147. package/lib/chain/bls/singleThread.js +4 -4
  148. package/lib/chain/bls/singleThread.js.map +1 -1
  149. package/lib/chain/bls/utils.d.ts +2 -2
  150. package/lib/chain/bls/utils.d.ts.map +1 -1
  151. package/lib/chain/bls/utils.js +7 -4
  152. package/lib/chain/bls/utils.js.map +1 -1
  153. package/lib/chain/chain.d.ts +7 -10
  154. package/lib/chain/chain.d.ts.map +1 -1
  155. package/lib/chain/chain.js +25 -24
  156. package/lib/chain/chain.js.map +1 -1
  157. package/lib/chain/emitter.d.ts +4 -6
  158. package/lib/chain/emitter.d.ts.map +1 -1
  159. package/lib/chain/emitter.js +2 -1
  160. package/lib/chain/emitter.js.map +1 -1
  161. package/lib/chain/errors/attestationError.d.ts.map +1 -1
  162. package/lib/chain/errors/attestationError.js +2 -1
  163. package/lib/chain/errors/attestationError.js.map +1 -1
  164. package/lib/chain/errors/attesterSlashingError.js +2 -1
  165. package/lib/chain/errors/attesterSlashingError.js.map +1 -1
  166. package/lib/chain/errors/blobSidecarError.js +2 -1
  167. package/lib/chain/errors/blobSidecarError.js.map +1 -1
  168. package/lib/chain/errors/blockError.d.ts.map +1 -1
  169. package/lib/chain/errors/blockError.js +2 -1
  170. package/lib/chain/errors/blockError.js.map +1 -1
  171. package/lib/chain/errors/blsToExecutionChangeError.js +2 -1
  172. package/lib/chain/errors/blsToExecutionChangeError.js.map +1 -1
  173. package/lib/chain/errors/dataColumnSidecarError.js +2 -1
  174. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  175. package/lib/chain/errors/executionPayloadBid.d.ts +1 -1
  176. package/lib/chain/errors/executionPayloadBid.js +2 -1
  177. package/lib/chain/errors/executionPayloadBid.js.map +1 -1
  178. package/lib/chain/errors/executionPayloadEnvelope.d.ts +2 -2
  179. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  180. package/lib/chain/errors/executionPayloadEnvelope.js +2 -1
  181. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  182. package/lib/chain/errors/gossipValidation.d.ts.map +1 -1
  183. package/lib/chain/errors/gossipValidation.js +4 -2
  184. package/lib/chain/errors/gossipValidation.js.map +1 -1
  185. package/lib/chain/errors/lightClientError.js +4 -2
  186. package/lib/chain/errors/lightClientError.js.map +1 -1
  187. package/lib/chain/errors/payloadAttestation.d.ts +1 -1
  188. package/lib/chain/errors/payloadAttestation.js +2 -1
  189. package/lib/chain/errors/payloadAttestation.js.map +1 -1
  190. package/lib/chain/errors/proposerSlashingError.js +2 -1
  191. package/lib/chain/errors/proposerSlashingError.js.map +1 -1
  192. package/lib/chain/errors/syncCommitteeError.js +2 -1
  193. package/lib/chain/errors/syncCommitteeError.js.map +1 -1
  194. package/lib/chain/errors/voluntaryExitError.js +2 -1
  195. package/lib/chain/errors/voluntaryExitError.js.map +1 -1
  196. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  197. package/lib/chain/forkChoice/index.js +32 -25
  198. package/lib/chain/forkChoice/index.js.map +1 -1
  199. package/lib/chain/initState.d.ts +1 -1
  200. package/lib/chain/initState.d.ts.map +1 -1
  201. package/lib/chain/initState.js.map +1 -1
  202. package/lib/chain/interface.d.ts +2 -4
  203. package/lib/chain/interface.d.ts.map +1 -1
  204. package/lib/chain/interface.js +2 -1
  205. package/lib/chain/interface.js.map +1 -1
  206. package/lib/chain/lightClient/index.d.ts +0 -29
  207. package/lib/chain/lightClient/index.d.ts.map +1 -1
  208. package/lib/chain/lightClient/index.js.map +1 -1
  209. package/lib/chain/lightClient/proofs.js.map +1 -1
  210. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
  211. package/lib/chain/opPools/aggregatedAttestationPool.js +5 -3
  212. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  213. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  214. package/lib/chain/opPools/attestationPool.js.map +1 -1
  215. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
  216. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  217. package/lib/chain/opPools/opPool.d.ts.map +1 -1
  218. package/lib/chain/opPools/opPool.js.map +1 -1
  219. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  220. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  221. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  222. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  223. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  224. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  225. package/lib/chain/opPools/types.js +4 -2
  226. package/lib/chain/opPools/types.js.map +1 -1
  227. package/lib/chain/opPools/utils.js.map +1 -1
  228. package/lib/chain/prepareNextSlot.d.ts +1 -2
  229. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  230. package/lib/chain/prepareNextSlot.js.map +1 -1
  231. package/lib/chain/produceBlock/computeNewStateRoot.d.ts +0 -1
  232. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  233. package/lib/chain/produceBlock/computeNewStateRoot.js +4 -3
  234. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  235. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  236. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  237. package/lib/chain/produceBlock/produceBlockBody.js +24 -7
  238. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  239. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  240. package/lib/chain/regen/errors.d.ts.map +1 -1
  241. package/lib/chain/regen/errors.js +2 -1
  242. package/lib/chain/regen/errors.js.map +1 -1
  243. package/lib/chain/regen/interface.js +4 -2
  244. package/lib/chain/regen/interface.js.map +1 -1
  245. package/lib/chain/regen/queued.d.ts.map +1 -1
  246. package/lib/chain/regen/queued.js +4 -1
  247. package/lib/chain/regen/queued.js.map +1 -1
  248. package/lib/chain/regen/regen.d.ts.map +1 -1
  249. package/lib/chain/regen/regen.js +6 -2
  250. package/lib/chain/regen/regen.js.map +1 -1
  251. package/lib/chain/reprocess.d.ts.map +1 -1
  252. package/lib/chain/reprocess.js +2 -1
  253. package/lib/chain/reprocess.js.map +1 -1
  254. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -1
  255. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  256. package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -1
  257. package/lib/chain/seenCache/seenAttestationData.js +2 -1
  258. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  259. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  260. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  261. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -1
  262. package/lib/chain/seenCache/seenBlockAttesters.js.map +1 -1
  263. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -1
  264. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  265. package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -1
  266. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  267. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -1
  268. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  269. package/lib/chain/seenCache/seenExecutionPayloadBids.d.ts.map +1 -1
  270. package/lib/chain/seenCache/seenExecutionPayloadBids.js.map +1 -1
  271. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.d.ts.map +1 -1
  272. package/lib/chain/seenCache/seenExecutionPayloadEnvelope.js.map +1 -1
  273. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -3
  274. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  275. package/lib/chain/seenCache/seenGossipBlockInput.js +38 -16
  276. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  277. package/lib/chain/serializeState.js +1 -0
  278. package/lib/chain/serializeState.js.map +1 -1
  279. package/lib/chain/shufflingCache.d.ts.map +1 -1
  280. package/lib/chain/shufflingCache.js +2 -1
  281. package/lib/chain/shufflingCache.js.map +1 -1
  282. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -1
  283. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  284. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -1
  285. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  286. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  287. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  288. package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -1
  289. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  290. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +1 -41
  291. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  292. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  293. package/lib/chain/stateCache/types.js +2 -1
  294. package/lib/chain/stateCache/types.js.map +1 -1
  295. package/lib/chain/validation/aggregateAndProof.js +1 -1
  296. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  297. package/lib/chain/validation/attestation.d.ts.map +1 -1
  298. package/lib/chain/validation/attestation.js +14 -7
  299. package/lib/chain/validation/attestation.js.map +1 -1
  300. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  301. package/lib/chain/validation/attesterSlashing.js +9 -2
  302. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  303. package/lib/chain/validation/blobSidecar.js +2 -2
  304. package/lib/chain/validation/blobSidecar.js.map +1 -1
  305. package/lib/chain/validation/block.d.ts.map +1 -1
  306. package/lib/chain/validation/block.js +6 -3
  307. package/lib/chain/validation/block.js.map +1 -1
  308. package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
  309. package/lib/chain/validation/dataColumnSidecar.d.ts +2 -1
  310. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  311. package/lib/chain/validation/dataColumnSidecar.js +125 -108
  312. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  313. package/lib/chain/validation/executionPayloadBid.js +1 -2
  314. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  315. package/lib/chain/validation/executionPayloadEnvelope.js +4 -4
  316. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  317. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  318. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  319. package/lib/chain/validation/payloadAttestationMessage.js +9 -3
  320. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  321. package/lib/chain/validation/proposerSlashing.js +1 -1
  322. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  323. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  324. package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
  325. package/lib/chain/validation/signatureSets/selectionProof.js.map +1 -1
  326. package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
  327. package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
  328. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
  329. package/lib/chain/validation/syncCommittee.js.map +1 -1
  330. package/lib/chain/validation/syncCommitteeContributionAndProof.js +1 -1
  331. package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
  332. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  333. package/lib/chain/validatorMonitor.d.ts.map +1 -1
  334. package/lib/chain/validatorMonitor.js +2 -1
  335. package/lib/chain/validatorMonitor.js.map +1 -1
  336. package/lib/constants/network.js +4 -2
  337. package/lib/constants/network.js.map +1 -1
  338. package/lib/db/beacon.d.ts.map +1 -1
  339. package/lib/db/beacon.js.map +1 -1
  340. package/lib/db/buckets.d.ts +23 -23
  341. package/lib/db/buckets.d.ts.map +1 -1
  342. package/lib/db/buckets.js +2 -1
  343. package/lib/db/buckets.js.map +1 -1
  344. package/lib/db/index.d.ts +1 -0
  345. package/lib/db/index.d.ts.map +1 -1
  346. package/lib/db/index.js +1 -0
  347. package/lib/db/index.js.map +1 -1
  348. package/lib/db/repositories/attesterSlashing.d.ts.map +1 -1
  349. package/lib/db/repositories/attesterSlashing.js.map +1 -1
  350. package/lib/db/repositories/backfilledRanges.d.ts.map +1 -1
  351. package/lib/db/repositories/backfilledRanges.js.map +1 -1
  352. package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
  353. package/lib/db/repositories/blobSidecars.js.map +1 -1
  354. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -1
  355. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  356. package/lib/db/repositories/block.d.ts.map +1 -1
  357. package/lib/db/repositories/block.js.map +1 -1
  358. package/lib/db/repositories/blockArchive.d.ts.map +1 -1
  359. package/lib/db/repositories/blockArchive.js +1 -2
  360. package/lib/db/repositories/blockArchive.js.map +1 -1
  361. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  362. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  363. package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -1
  364. package/lib/db/repositories/blsToExecutionChange.js.map +1 -1
  365. package/lib/db/repositories/checkpointState.d.ts.map +1 -1
  366. package/lib/db/repositories/checkpointState.js.map +1 -1
  367. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
  368. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  369. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  370. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  371. package/lib/db/repositories/executionPayloadEnvelope.d.ts.map +1 -1
  372. package/lib/db/repositories/executionPayloadEnvelope.js.map +1 -1
  373. package/lib/db/repositories/executionPayloadEnvelopeArchive.d.ts.map +1 -1
  374. package/lib/db/repositories/executionPayloadEnvelopeArchive.js.map +1 -1
  375. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +1 -1
  376. package/lib/db/repositories/lightclientBestUpdate.js.map +1 -1
  377. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +1 -1
  378. package/lib/db/repositories/lightclientCheckpointHeader.js.map +1 -1
  379. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +1 -1
  380. package/lib/db/repositories/lightclientSyncCommittee.js.map +1 -1
  381. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -1
  382. package/lib/db/repositories/lightclientSyncCommitteeWitness.js.map +1 -1
  383. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -1
  384. package/lib/db/repositories/proposerSlashing.js.map +1 -1
  385. package/lib/db/repositories/stateArchive.d.ts.map +1 -1
  386. package/lib/db/repositories/stateArchive.js.map +1 -1
  387. package/lib/db/repositories/stateArchiveIndex.js.map +1 -1
  388. package/lib/db/repositories/voluntaryExit.d.ts.map +1 -1
  389. package/lib/db/repositories/voluntaryExit.js.map +1 -1
  390. package/lib/execution/builder/cache.d.ts.map +1 -1
  391. package/lib/execution/builder/cache.js.map +1 -1
  392. package/lib/execution/builder/http.d.ts.map +1 -1
  393. package/lib/execution/builder/http.js +2 -1
  394. package/lib/execution/builder/http.js.map +1 -1
  395. package/lib/execution/builder/index.js.map +1 -1
  396. package/lib/execution/builder/utils.js.map +1 -1
  397. package/lib/execution/engine/disabled.d.ts.map +1 -1
  398. package/lib/execution/engine/disabled.js.map +1 -1
  399. package/lib/execution/engine/http.d.ts +1 -0
  400. package/lib/execution/engine/http.d.ts.map +1 -1
  401. package/lib/execution/engine/http.js +3 -0
  402. package/lib/execution/engine/http.js.map +1 -1
  403. package/lib/execution/engine/index.js.map +1 -1
  404. package/lib/execution/engine/interface.js +4 -2
  405. package/lib/execution/engine/interface.js.map +1 -1
  406. package/lib/execution/engine/jsonRpcHttpClient.d.ts +10 -15
  407. package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -1
  408. package/lib/execution/engine/jsonRpcHttpClient.js +2 -1
  409. package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -1
  410. package/lib/execution/engine/jwt.js.map +1 -1
  411. package/lib/execution/engine/mock.d.ts.map +1 -1
  412. package/lib/execution/engine/mock.js.map +1 -1
  413. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  414. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  415. package/lib/execution/engine/types.js.map +1 -1
  416. package/lib/execution/engine/utils.d.ts +1 -1
  417. package/lib/execution/engine/utils.d.ts.map +1 -1
  418. package/lib/execution/engine/utils.js.map +1 -1
  419. package/lib/metrics/metrics/beacon.d.ts +2 -1
  420. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  421. package/lib/metrics/metrics/beacon.js +9 -3
  422. package/lib/metrics/metrics/beacon.js.map +1 -1
  423. package/lib/metrics/metrics/lodestar.d.ts +16 -11
  424. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  425. package/lib/metrics/metrics/lodestar.js +39 -24
  426. package/lib/metrics/metrics/lodestar.js.map +1 -1
  427. package/lib/metrics/metrics.js.map +1 -1
  428. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  429. package/lib/metrics/server/http.d.ts +1 -1
  430. package/lib/metrics/server/http.d.ts.map +1 -1
  431. package/lib/metrics/server/http.js.map +1 -1
  432. package/lib/metrics/utils/avgMinMax.d.ts.map +1 -1
  433. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  434. package/lib/metrics/utils/gauge.d.ts.map +1 -1
  435. package/lib/metrics/utils/gauge.js.map +1 -1
  436. package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -1
  437. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  438. package/lib/monitoring/clientStats.js.map +1 -1
  439. package/lib/monitoring/properties.d.ts.map +1 -1
  440. package/lib/monitoring/properties.js.map +1 -1
  441. package/lib/monitoring/service.d.ts +2 -2
  442. package/lib/monitoring/service.d.ts.map +1 -1
  443. package/lib/monitoring/service.js +3 -2
  444. package/lib/monitoring/service.js.map +1 -1
  445. package/lib/monitoring/system.d.ts.map +1 -1
  446. package/lib/monitoring/system.js.map +1 -1
  447. package/lib/monitoring/types.js +4 -2
  448. package/lib/monitoring/types.js.map +1 -1
  449. package/lib/network/core/events.d.ts +1 -3
  450. package/lib/network/core/events.d.ts.map +1 -1
  451. package/lib/network/core/events.js +4 -2
  452. package/lib/network/core/events.js.map +1 -1
  453. package/lib/network/core/metrics.d.ts +6 -7
  454. package/lib/network/core/metrics.d.ts.map +1 -1
  455. package/lib/network/core/metrics.js.map +1 -1
  456. package/lib/network/core/networkCore.d.ts +4 -4
  457. package/lib/network/core/networkCore.d.ts.map +1 -1
  458. package/lib/network/core/networkCore.js.map +1 -1
  459. package/lib/network/core/networkCoreWorker.js.map +1 -1
  460. package/lib/network/core/networkCoreWorkerHandler.d.ts +3 -3
  461. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  462. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  463. package/lib/network/core/types.d.ts +2 -2
  464. package/lib/network/core/types.d.ts.map +1 -1
  465. package/lib/network/discv5/index.d.ts +1 -3
  466. package/lib/network/discv5/index.d.ts.map +1 -1
  467. package/lib/network/discv5/index.js.map +1 -1
  468. package/lib/network/discv5/utils.d.ts +1 -1
  469. package/lib/network/discv5/utils.d.ts.map +1 -1
  470. package/lib/network/discv5/utils.js +7 -5
  471. package/lib/network/discv5/utils.js.map +1 -1
  472. package/lib/network/discv5/worker.js.map +1 -1
  473. package/lib/network/events.d.ts +3 -4
  474. package/lib/network/events.d.ts.map +1 -1
  475. package/lib/network/events.js +4 -2
  476. package/lib/network/events.js.map +1 -1
  477. package/lib/network/forks.js.map +1 -1
  478. package/lib/network/gossip/encoding.d.ts +3 -3
  479. package/lib/network/gossip/encoding.d.ts.map +1 -1
  480. package/lib/network/gossip/encoding.js.map +1 -1
  481. package/lib/network/gossip/errors.d.ts.map +1 -1
  482. package/lib/network/gossip/errors.js.map +1 -1
  483. package/lib/network/gossip/gossipsub.d.ts +13 -4
  484. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  485. package/lib/network/gossip/gossipsub.js +56 -26
  486. package/lib/network/gossip/gossipsub.js.map +1 -1
  487. package/lib/network/gossip/interface.d.ts +3 -3
  488. package/lib/network/gossip/interface.d.ts.map +1 -1
  489. package/lib/network/gossip/interface.js +4 -2
  490. package/lib/network/gossip/interface.js.map +1 -1
  491. package/lib/network/gossip/metrics.d.ts +12 -14
  492. package/lib/network/gossip/metrics.d.ts.map +1 -1
  493. package/lib/network/gossip/metrics.js.map +1 -1
  494. package/lib/network/gossip/scoringParameters.d.ts +2 -2
  495. package/lib/network/gossip/scoringParameters.d.ts.map +1 -1
  496. package/lib/network/gossip/scoringParameters.js +1 -1
  497. package/lib/network/gossip/scoringParameters.js.map +1 -1
  498. package/lib/network/gossip/topic.d.ts +2867 -2920
  499. package/lib/network/gossip/topic.d.ts.map +1 -1
  500. package/lib/network/gossip/topic.js.map +1 -1
  501. package/lib/network/interface.d.ts +3 -3
  502. package/lib/network/interface.d.ts.map +1 -1
  503. package/lib/network/libp2p/error.js +2 -1
  504. package/lib/network/libp2p/error.js.map +1 -1
  505. package/lib/network/libp2p/index.d.ts +2 -2
  506. package/lib/network/libp2p/index.d.ts.map +1 -1
  507. package/lib/network/libp2p/index.js +42 -19
  508. package/lib/network/libp2p/index.js.map +1 -1
  509. package/lib/network/metadata.d.ts +1 -0
  510. package/lib/network/metadata.d.ts.map +1 -1
  511. package/lib/network/metadata.js +5 -2
  512. package/lib/network/metadata.js.map +1 -1
  513. package/lib/network/network.d.ts +3 -3
  514. package/lib/network/network.d.ts.map +1 -1
  515. package/lib/network/network.js +1 -1
  516. package/lib/network/network.js.map +1 -1
  517. package/lib/network/options.d.ts +2 -0
  518. package/lib/network/options.d.ts.map +1 -1
  519. package/lib/network/options.js +6 -0
  520. package/lib/network/options.js.map +1 -1
  521. package/lib/network/peers/client.js +2 -1
  522. package/lib/network/peers/client.js.map +1 -1
  523. package/lib/network/peers/datastore.d.ts +7 -8
  524. package/lib/network/peers/datastore.d.ts.map +1 -1
  525. package/lib/network/peers/datastore.js +10 -10
  526. package/lib/network/peers/datastore.js.map +1 -1
  527. package/lib/network/peers/discover.d.ts +2 -7
  528. package/lib/network/peers/discover.d.ts.map +1 -1
  529. package/lib/network/peers/discover.js +45 -12
  530. package/lib/network/peers/discover.js.map +1 -1
  531. package/lib/network/peers/peerManager.d.ts +3 -1
  532. package/lib/network/peers/peerManager.d.ts.map +1 -1
  533. package/lib/network/peers/peerManager.js +103 -53
  534. package/lib/network/peers/peerManager.js.map +1 -1
  535. package/lib/network/peers/peersData.d.ts.map +1 -1
  536. package/lib/network/peers/peersData.js +2 -1
  537. package/lib/network/peers/peersData.js.map +1 -1
  538. package/lib/network/peers/score/interface.js +4 -2
  539. package/lib/network/peers/score/interface.js.map +1 -1
  540. package/lib/network/peers/score/score.d.ts.map +1 -1
  541. package/lib/network/peers/score/score.js.map +1 -1
  542. package/lib/network/peers/score/store.d.ts.map +1 -1
  543. package/lib/network/peers/score/store.js.map +1 -1
  544. package/lib/network/peers/score/utils.js.map +1 -1
  545. package/lib/network/peers/utils/assertPeerRelevance.js +2 -1
  546. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  547. package/lib/network/peers/utils/enrSubnetsDeserialize.js.map +1 -1
  548. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  549. package/lib/network/peers/utils/prioritizePeers.d.ts +3 -3
  550. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  551. package/lib/network/peers/utils/prioritizePeers.js +2 -1
  552. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  553. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
  554. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  555. package/lib/network/processor/aggregatorTracker.d.ts.map +1 -1
  556. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  557. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  558. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  559. package/lib/network/processor/gossipHandlers.js +4 -1
  560. package/lib/network/processor/gossipHandlers.js.map +1 -1
  561. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  562. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -1
  563. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  564. package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -1
  565. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  566. package/lib/network/processor/gossipQueues/types.js +4 -2
  567. package/lib/network/processor/gossipQueues/types.js.map +1 -1
  568. package/lib/network/processor/gossipValidatorFn.js +1 -1
  569. package/lib/network/processor/gossipValidatorFn.js.map +1 -1
  570. package/lib/network/processor/index.d.ts.map +1 -1
  571. package/lib/network/processor/index.js +4 -2
  572. package/lib/network/processor/index.js.map +1 -1
  573. package/lib/network/processor/types.d.ts +1 -1
  574. package/lib/network/processor/types.d.ts.map +1 -1
  575. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
  576. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  577. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
  578. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -2
  579. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  580. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  581. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -1
  582. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +3 -2
  583. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  584. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +1 -1
  585. package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +1 -1
  586. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -1
  587. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +3 -2
  588. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -1
  589. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +1 -1
  590. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  591. package/lib/network/reqresp/handlers/index.js.map +1 -1
  592. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  593. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  594. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  595. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  596. package/lib/network/reqresp/interface.js +2 -1
  597. package/lib/network/reqresp/interface.js.map +1 -1
  598. package/lib/network/reqresp/protocols.d.ts.map +1 -1
  599. package/lib/network/reqresp/protocols.js.map +1 -1
  600. package/lib/network/reqresp/rateLimit.js.map +1 -1
  601. package/lib/network/reqresp/score.d.ts.map +1 -1
  602. package/lib/network/reqresp/score.js +0 -1
  603. package/lib/network/reqresp/score.js.map +1 -1
  604. package/lib/network/reqresp/types.js +4 -2
  605. package/lib/network/reqresp/types.js.map +1 -1
  606. package/lib/network/reqresp/utils/collect.d.ts +1 -1
  607. package/lib/network/reqresp/utils/collect.js.map +1 -1
  608. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts +1 -1
  609. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js +2 -1
  610. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.js.map +1 -1
  611. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts +1 -1
  612. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -1
  613. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  614. package/lib/network/statusCache.d.ts.map +1 -1
  615. package/lib/network/statusCache.js.map +1 -1
  616. package/lib/network/subnets/attnetsService.d.ts.map +1 -1
  617. package/lib/network/subnets/attnetsService.js +2 -1
  618. package/lib/network/subnets/attnetsService.js.map +1 -1
  619. package/lib/network/subnets/interface.js.map +1 -1
  620. package/lib/network/subnets/syncnetsService.d.ts.map +1 -1
  621. package/lib/network/subnets/syncnetsService.js.map +1 -1
  622. package/lib/network/subnets/util.js.map +1 -1
  623. package/lib/network/util.js +2 -2
  624. package/lib/network/util.js.map +1 -1
  625. package/lib/node/nodejs.d.ts +4 -6
  626. package/lib/node/nodejs.d.ts.map +1 -1
  627. package/lib/node/nodejs.js +8 -5
  628. package/lib/node/nodejs.js.map +1 -1
  629. package/lib/node/notifier.js.map +1 -1
  630. package/lib/node/utils/interop/deposits.js.map +1 -1
  631. package/lib/node/utils/interop/state.d.ts +1 -1
  632. package/lib/node/utils/interop/state.d.ts.map +1 -1
  633. package/lib/node/utils/interop/state.js.map +1 -1
  634. package/lib/node/utils/lightclient.js.map +1 -1
  635. package/lib/node/utils/state.js.map +1 -1
  636. package/lib/sync/backfill/backfill.d.ts +1 -10
  637. package/lib/sync/backfill/backfill.d.ts.map +1 -1
  638. package/lib/sync/backfill/backfill.js +6 -3
  639. package/lib/sync/backfill/backfill.js.map +1 -1
  640. package/lib/sync/backfill/errors.js +2 -1
  641. package/lib/sync/backfill/errors.js.map +1 -1
  642. package/lib/sync/backfill/verify.js.map +1 -1
  643. package/lib/sync/interface.js +2 -1
  644. package/lib/sync/interface.js.map +1 -1
  645. package/lib/sync/range/batch.d.ts.map +1 -1
  646. package/lib/sync/range/batch.js +4 -2
  647. package/lib/sync/range/batch.js.map +1 -1
  648. package/lib/sync/range/chain.d.ts +0 -10
  649. package/lib/sync/range/chain.d.ts.map +1 -1
  650. package/lib/sync/range/chain.js +2 -1
  651. package/lib/sync/range/chain.js.map +1 -1
  652. package/lib/sync/range/range.d.ts +1 -3
  653. package/lib/sync/range/range.d.ts.map +1 -1
  654. package/lib/sync/range/range.js +5 -2
  655. package/lib/sync/range/range.js.map +1 -1
  656. package/lib/sync/range/utils/batches.js.map +1 -1
  657. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  658. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  659. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -1
  660. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  661. package/lib/sync/range/utils/updateChains.js.map +1 -1
  662. package/lib/sync/sync.d.ts.map +1 -1
  663. package/lib/sync/sync.js.map +1 -1
  664. package/lib/sync/types.js +4 -2
  665. package/lib/sync/types.js.map +1 -1
  666. package/lib/sync/unknownBlock.d.ts +0 -14
  667. package/lib/sync/unknownBlock.d.ts.map +1 -1
  668. package/lib/sync/unknownBlock.js.map +1 -1
  669. package/lib/sync/utils/downloadByRange.d.ts +8 -5
  670. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  671. package/lib/sync/utils/downloadByRange.js +8 -6
  672. package/lib/sync/utils/downloadByRange.js.map +1 -1
  673. package/lib/sync/utils/downloadByRoot.d.ts +8 -8
  674. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  675. package/lib/sync/utils/downloadByRoot.js +3 -2
  676. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  677. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  678. package/lib/sync/utils/remoteSyncType.d.ts +1 -1
  679. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -1
  680. package/lib/sync/utils/remoteSyncType.js +4 -2
  681. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  682. package/lib/util/address.js.map +1 -1
  683. package/lib/util/array.d.ts.map +1 -1
  684. package/lib/util/array.js.map +1 -1
  685. package/lib/util/asyncIterableToEvents.d.ts.map +1 -1
  686. package/lib/util/asyncIterableToEvents.js +2 -1
  687. package/lib/util/asyncIterableToEvents.js.map +1 -1
  688. package/lib/util/binarySearch.d.ts.map +1 -1
  689. package/lib/util/binarySearch.js.map +1 -1
  690. package/lib/util/bitArray.js +2 -1
  691. package/lib/util/bitArray.js.map +1 -1
  692. package/lib/util/blobs.js.map +1 -1
  693. package/lib/util/bufferPool.d.ts.map +1 -1
  694. package/lib/util/bufferPool.js +2 -1
  695. package/lib/util/bufferPool.js.map +1 -1
  696. package/lib/util/chunkify.js.map +1 -1
  697. package/lib/util/clock.d.ts +6 -0
  698. package/lib/util/clock.d.ts.map +1 -1
  699. package/lib/util/clock.js +11 -4
  700. package/lib/util/clock.js.map +1 -1
  701. package/lib/util/dataColumns.d.ts.map +1 -1
  702. package/lib/util/dataColumns.js +9 -3
  703. package/lib/util/dataColumns.js.map +1 -1
  704. package/lib/util/dependentRoot.js.map +1 -1
  705. package/lib/util/enum.js.map +1 -1
  706. package/lib/util/error.js.map +1 -1
  707. package/lib/util/eventLoop.js.map +1 -1
  708. package/lib/util/execution.d.ts.map +1 -1
  709. package/lib/util/execution.js +19 -9
  710. package/lib/util/execution.js.map +1 -1
  711. package/lib/util/file.js.map +1 -1
  712. package/lib/util/forkChoice.js.map +1 -1
  713. package/lib/util/forkName.js.map +1 -1
  714. package/lib/util/graffiti.js.map +1 -1
  715. package/lib/util/hex.js.map +1 -1
  716. package/lib/util/ip.js.map +1 -1
  717. package/lib/util/itTrigger.d.ts.map +1 -1
  718. package/lib/util/itTrigger.js.map +1 -1
  719. package/lib/util/map.d.ts.map +1 -1
  720. package/lib/util/map.js.map +1 -1
  721. package/lib/util/metadata.js.map +1 -1
  722. package/lib/util/multifork.js.map +1 -1
  723. package/lib/util/numpy.js.map +1 -1
  724. package/lib/util/peerId.js.map +1 -1
  725. package/lib/util/profile.js +2 -1
  726. package/lib/util/profile.js.map +1 -1
  727. package/lib/util/promises.js.map +1 -1
  728. package/lib/util/queue/errors.js +2 -1
  729. package/lib/util/queue/errors.js.map +1 -1
  730. package/lib/util/queue/fnQueue.d.ts.map +1 -1
  731. package/lib/util/queue/fnQueue.js.map +1 -1
  732. package/lib/util/queue/itemQueue.d.ts.map +1 -1
  733. package/lib/util/queue/itemQueue.js.map +1 -1
  734. package/lib/util/queue/options.js +2 -1
  735. package/lib/util/queue/options.js.map +1 -1
  736. package/lib/util/serializedCache.d.ts +4 -4
  737. package/lib/util/serializedCache.d.ts.map +1 -1
  738. package/lib/util/serializedCache.js +6 -4
  739. package/lib/util/serializedCache.js.map +1 -1
  740. package/lib/util/set.d.ts.map +1 -1
  741. package/lib/util/set.js.map +1 -1
  742. package/lib/util/shuffle.js.map +1 -1
  743. package/lib/util/sortBy.js.map +1 -1
  744. package/lib/util/sszBytes.js.map +1 -1
  745. package/lib/util/time.js.map +1 -1
  746. package/lib/util/timeSeries.d.ts.map +1 -1
  747. package/lib/util/timeSeries.js.map +1 -1
  748. package/lib/util/types.d.ts.map +1 -1
  749. package/lib/util/workerEvents.d.ts +1 -1
  750. package/lib/util/workerEvents.d.ts.map +1 -1
  751. package/lib/util/workerEvents.js.map +1 -1
  752. package/lib/util/wrapError.js.map +1 -1
  753. package/package.json +42 -44
  754. package/src/api/impl/beacon/blocks/index.ts +14 -2
  755. package/src/api/impl/beacon/state/index.ts +8 -8
  756. package/src/api/impl/beacon/state/utils.ts +15 -29
  757. package/src/api/impl/debug/index.ts +1 -0
  758. package/src/api/impl/node/utils.ts +3 -3
  759. package/src/api/impl/validator/index.ts +29 -16
  760. package/src/chain/archiveStore/archiveStore.ts +5 -5
  761. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +10 -11
  762. package/src/chain/archiveStore/historicalState/worker.ts +3 -3
  763. package/src/chain/archiveStore/utils/archiveBlocks.ts +4 -5
  764. package/src/chain/archiveStore/utils/updateBackfillRange.ts +1 -1
  765. package/src/chain/blocks/blockInput/blockInput.ts +103 -3
  766. package/src/chain/blocks/blockInput/types.ts +18 -0
  767. package/src/chain/blocks/importBlock.ts +36 -5
  768. package/src/chain/blocks/verifyBlocksDataAvailability.ts +3 -0
  769. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -2
  770. package/src/chain/blocks/verifyBlocksSanityChecks.ts +7 -2
  771. package/src/chain/blocks/writeBlockInputToDb.ts +105 -104
  772. package/src/chain/bls/multithread/index.ts +7 -7
  773. package/src/chain/bls/multithread/jobItem.ts +3 -3
  774. package/src/chain/bls/singleThread.ts +5 -5
  775. package/src/chain/bls/utils.ts +8 -5
  776. package/src/chain/chain.ts +45 -36
  777. package/src/chain/emitter.ts +3 -3
  778. package/src/chain/errors/executionPayloadBid.ts +1 -1
  779. package/src/chain/errors/executionPayloadEnvelope.ts +6 -2
  780. package/src/chain/errors/payloadAttestation.ts +1 -1
  781. package/src/chain/forkChoice/index.ts +39 -21
  782. package/src/chain/interface.ts +2 -9
  783. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  784. package/src/chain/produceBlock/computeNewStateRoot.ts +4 -3
  785. package/src/chain/produceBlock/produceBlockBody.ts +18 -5
  786. package/src/chain/regen/queued.ts +7 -2
  787. package/src/chain/regen/regen.ts +9 -3
  788. package/src/chain/seenCache/seenGossipBlockInput.ts +56 -18
  789. package/src/chain/validation/aggregateAndProof.ts +1 -1
  790. package/src/chain/validation/attestation.ts +14 -7
  791. package/src/chain/validation/attesterSlashing.ts +10 -1
  792. package/src/chain/validation/blobSidecar.ts +2 -2
  793. package/src/chain/validation/block.ts +9 -4
  794. package/src/chain/validation/dataColumnSidecar.ts +147 -127
  795. package/src/chain/validation/executionPayloadBid.ts +1 -2
  796. package/src/chain/validation/executionPayloadEnvelope.ts +4 -4
  797. package/src/chain/validation/payloadAttestationMessage.ts +10 -3
  798. package/src/chain/validation/proposerSlashing.ts +1 -1
  799. package/src/chain/validation/syncCommitteeContributionAndProof.ts +1 -1
  800. package/src/db/index.ts +1 -0
  801. package/src/db/repositories/blockArchive.ts +1 -2
  802. package/src/execution/engine/http.ts +3 -0
  803. package/src/metrics/metrics/beacon.ts +9 -3
  804. package/src/metrics/metrics/lodestar.ts +39 -24
  805. package/src/monitoring/service.ts +3 -2
  806. package/src/network/core/networkCore.ts +3 -3
  807. package/src/network/core/networkCoreWorkerHandler.ts +3 -3
  808. package/src/network/core/types.ts +2 -2
  809. package/src/network/discv5/utils.ts +5 -4
  810. package/src/network/events.ts +2 -1
  811. package/src/network/gossip/encoding.ts +3 -3
  812. package/src/network/gossip/gossipsub.ts +98 -32
  813. package/src/network/gossip/interface.ts +3 -3
  814. package/src/network/gossip/scoringParameters.ts +4 -4
  815. package/src/network/interface.ts +3 -3
  816. package/src/network/libp2p/index.ts +48 -21
  817. package/src/network/metadata.ts +1 -0
  818. package/src/network/network.ts +5 -4
  819. package/src/network/options.ts +8 -1
  820. package/src/network/peers/datastore.ts +13 -10
  821. package/src/network/peers/discover.ts +46 -11
  822. package/src/network/peers/peerManager.ts +118 -54
  823. package/src/network/peers/utils/prioritizePeers.ts +3 -3
  824. package/src/network/processor/gossipHandlers.ts +12 -3
  825. package/src/network/processor/gossipValidatorFn.ts +2 -2
  826. package/src/network/processor/types.ts +1 -1
  827. package/src/network/reqresp/ReqRespBeaconNode.ts +1 -1
  828. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +4 -3
  829. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +3 -2
  830. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +1 -1
  831. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +4 -3
  832. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +2 -2
  833. package/src/network/reqresp/score.ts +0 -1
  834. package/src/network/reqresp/utils/collect.ts +1 -1
  835. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +1 -1
  836. package/src/network/util.ts +2 -2
  837. package/src/node/nodejs.ts +8 -9
  838. package/src/sync/range/range.ts +1 -0
  839. package/src/sync/utils/downloadByRange.ts +12 -3
  840. package/src/sync/utils/downloadByRoot.ts +2 -2
  841. package/src/sync/utils/remoteSyncType.ts +1 -1
  842. package/src/util/clock.ts +9 -4
  843. package/src/util/dataColumns.ts +6 -2
  844. package/src/util/execution.ts +23 -12
  845. package/src/util/serializedCache.ts +7 -5
  846. package/src/util/workerEvents.ts +1 -1
@@ -12,6 +12,7 @@ import {
12
12
  } from "@lodestar/state-transition";
13
13
  import {DataColumnSidecar, Root, Slot, SubnetID, fulu, ssz} from "@lodestar/types";
14
14
  import {byteArrayEquals, toRootHex, verifyMerkleBranch} from "@lodestar/utils";
15
+ import {BeaconMetrics} from "../../metrics/metrics/beacon.js";
15
16
  import {Metrics} from "../../metrics/metrics.js";
16
17
  import {kzg} from "../../util/kzg.js";
17
18
  import {
@@ -73,7 +74,7 @@ export async function validateGossipDataColumnSidecar(
73
74
  // 6) [IGNORE] The sidecar's block's parent (defined by block_header.parent_root) has been seen (via gossip
74
75
  // or non-gossip sources)
75
76
  const parentRoot = toRootHex(blockHeader.parentRoot);
76
- const parentBlock = chain.forkChoice.getBlockHex(parentRoot);
77
+ const parentBlock = chain.forkChoice.getBlockHexDefaultStatus(parentRoot);
77
78
  if (parentBlock === null) {
78
79
  // If fork choice does *not* consider the parent to be a descendant of the finalized block,
79
80
  // then there are two more cases:
@@ -177,6 +178,7 @@ export async function validateGossipDataColumnSidecar(
177
178
  });
178
179
  }
179
180
 
181
+ // single data column is being verified here
180
182
  const kzgProofTimer = metrics?.peerDas.dataColumnSidecarKzgProofsVerificationTime.startTimer();
181
183
  // 11) [REJECT] The sidecar's column data is valid as verified by verify_data_column_sidecar_kzg_proofs
182
184
  try {
@@ -297,159 +299,177 @@ export async function validateBlockDataColumnSidecars(
297
299
  blockSlot: Slot,
298
300
  blockRoot: Root,
299
301
  blockBlobCount: number,
300
- dataColumnSidecars: fulu.DataColumnSidecars
302
+ dataColumnSidecars: fulu.DataColumnSidecars,
303
+ metrics?: BeaconMetrics["peerDas"] | null
301
304
  ): Promise<void> {
302
- if (dataColumnSidecars.length === 0) {
303
- return;
304
- }
305
+ metrics?.dataColumnSidecarProcessingRequests.inc(dataColumnSidecars.length);
306
+ const verificationTimer = metrics?.dataColumnSidecarGossipVerificationTime.startTimer();
307
+ try {
308
+ if (dataColumnSidecars.length === 0) {
309
+ return;
310
+ }
305
311
 
306
- if (blockBlobCount === 0) {
307
- throw new DataColumnSidecarValidationError(
308
- {
309
- code: DataColumnSidecarErrorCode.INCORRECT_SIDECAR_COUNT,
310
- slot: blockSlot,
311
- expected: 0,
312
- actual: dataColumnSidecars.length,
313
- },
314
- "Block has no blob commitments but data column sidecars were provided"
315
- );
316
- }
317
- // Hash the first sidecar block header and compare the rest via (cheaper) equality
318
- const firstSidecarSignedBlockHeader = dataColumnSidecars[0].signedBlockHeader;
319
- const firstSidecarBlockHeader = firstSidecarSignedBlockHeader.message;
320
- const firstBlockRoot = ssz.phase0.BeaconBlockHeader.hashTreeRoot(firstSidecarBlockHeader);
321
- if (!byteArrayEquals(blockRoot, firstBlockRoot)) {
322
- throw new DataColumnSidecarValidationError(
323
- {
324
- code: DataColumnSidecarErrorCode.INCORRECT_BLOCK,
325
- slot: blockSlot,
326
- columnIndex: 0,
327
- expected: toRootHex(blockRoot),
328
- actual: toRootHex(firstBlockRoot),
329
- },
330
- "DataColumnSidecar doesn't match corresponding block"
331
- );
332
- }
312
+ if (blockBlobCount === 0) {
313
+ throw new DataColumnSidecarValidationError(
314
+ {
315
+ code: DataColumnSidecarErrorCode.INCORRECT_SIDECAR_COUNT,
316
+ slot: blockSlot,
317
+ expected: 0,
318
+ actual: dataColumnSidecars.length,
319
+ },
320
+ "Block has no blob commitments but data column sidecars were provided"
321
+ );
322
+ }
323
+ // Hash the first sidecar block header and compare the rest via (cheaper) equality
324
+ const firstSidecarSignedBlockHeader = dataColumnSidecars[0].signedBlockHeader;
325
+ const firstSidecarBlockHeader = firstSidecarSignedBlockHeader.message;
326
+ const firstBlockRoot = ssz.phase0.BeaconBlockHeader.hashTreeRoot(firstSidecarBlockHeader);
327
+ if (!byteArrayEquals(blockRoot, firstBlockRoot)) {
328
+ throw new DataColumnSidecarValidationError(
329
+ {
330
+ code: DataColumnSidecarErrorCode.INCORRECT_BLOCK,
331
+ slot: blockSlot,
332
+ columnIndex: 0,
333
+ expected: toRootHex(blockRoot),
334
+ actual: toRootHex(firstBlockRoot),
335
+ },
336
+ "DataColumnSidecar doesn't match corresponding block"
337
+ );
338
+ }
339
+
340
+ if (chain !== null) {
341
+ const rootHex = toRootHex(blockRoot);
342
+ const slot = firstSidecarSignedBlockHeader.message.slot;
343
+ const signature = firstSidecarSignedBlockHeader.signature;
344
+ if (!chain.seenBlockInputCache.isVerifiedProposerSignature(slot, rootHex, signature)) {
345
+ const signatureSet = getBlockHeaderProposerSignatureSetByHeaderSlot(
346
+ chain.config,
347
+ firstSidecarSignedBlockHeader
348
+ );
349
+
350
+ if (
351
+ !(await chain.bls.verifySignatureSets([signatureSet], {
352
+ verifyOnMainThread: true,
353
+ }))
354
+ ) {
355
+ throw new DataColumnSidecarValidationError({
356
+ code: DataColumnSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID,
357
+ blockRoot: rootHex,
358
+ slot: blockSlot,
359
+ index: dataColumnSidecars[0].index,
360
+ });
361
+ }
362
+
363
+ chain.seenBlockInputCache.markVerifiedProposerSignature(slot, rootHex, signature);
364
+ }
365
+ }
333
366
 
334
- if (chain !== null) {
335
- const rootHex = toRootHex(blockRoot);
336
- const slot = firstSidecarSignedBlockHeader.message.slot;
337
- const signature = firstSidecarSignedBlockHeader.signature;
338
- if (!chain.seenBlockInputCache.isVerifiedProposerSignature(slot, rootHex, signature)) {
339
- const signatureSet = getBlockHeaderProposerSignatureSetByHeaderSlot(chain.config, firstSidecarSignedBlockHeader);
367
+ const commitments: Uint8Array[] = [];
368
+ const cellIndices: number[] = [];
369
+ const cells: Uint8Array[] = [];
370
+ const proofs: Uint8Array[] = [];
371
+ for (let i = 0; i < dataColumnSidecars.length; i++) {
372
+ const columnSidecar = dataColumnSidecars[i];
340
373
 
341
374
  if (
342
- !(await chain.bls.verifySignatureSets([signatureSet], {
343
- verifyOnMainThread: true,
344
- }))
375
+ i !== 0 &&
376
+ !ssz.phase0.SignedBeaconBlockHeader.equals(firstSidecarSignedBlockHeader, columnSidecar.signedBlockHeader)
345
377
  ) {
346
378
  throw new DataColumnSidecarValidationError({
347
- code: DataColumnSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID,
348
- blockRoot: rootHex,
379
+ code: DataColumnSidecarErrorCode.INCORRECT_HEADER_ROOT,
349
380
  slot: blockSlot,
350
- index: dataColumnSidecars[0].index,
381
+ expected: toRootHex(blockRoot),
382
+ actual: toRootHex(ssz.phase0.BeaconBlockHeader.hashTreeRoot(columnSidecar.signedBlockHeader.message)),
351
383
  });
352
384
  }
353
385
 
354
- chain.seenBlockInputCache.markVerifiedProposerSignature(slot, rootHex, signature);
355
- }
356
- }
386
+ if (columnSidecar.index >= NUMBER_OF_COLUMNS) {
387
+ throw new DataColumnSidecarValidationError(
388
+ {
389
+ code: DataColumnSidecarErrorCode.INVALID_INDEX,
390
+ slot: blockSlot,
391
+ columnIndex: columnSidecar.index,
392
+ },
393
+ "DataColumnSidecar has invalid index"
394
+ );
395
+ }
357
396
 
358
- const commitments: Uint8Array[] = [];
359
- const cellIndices: number[] = [];
360
- const cells: Uint8Array[] = [];
361
- const proofs: Uint8Array[] = [];
362
- for (let i = 0; i < dataColumnSidecars.length; i++) {
363
- const columnSidecar = dataColumnSidecars[i];
397
+ if (columnSidecar.column.length !== blockBlobCount) {
398
+ throw new DataColumnSidecarValidationError({
399
+ code: DataColumnSidecarErrorCode.INCORRECT_CELL_COUNT,
400
+ slot: blockSlot,
401
+ columnIndex: columnSidecar.index,
402
+ expected: blockBlobCount,
403
+ actual: columnSidecar.column.length,
404
+ });
405
+ }
364
406
 
365
- if (
366
- i !== 0 &&
367
- !ssz.phase0.SignedBeaconBlockHeader.equals(firstSidecarSignedBlockHeader, columnSidecar.signedBlockHeader)
368
- ) {
369
- throw new DataColumnSidecarValidationError({
370
- code: DataColumnSidecarErrorCode.INCORRECT_HEADER_ROOT,
371
- slot: blockSlot,
372
- expected: toRootHex(blockRoot),
373
- actual: toRootHex(ssz.phase0.BeaconBlockHeader.hashTreeRoot(columnSidecar.signedBlockHeader.message)),
374
- });
375
- }
407
+ if (columnSidecar.column.length !== columnSidecar.kzgCommitments.length) {
408
+ throw new DataColumnSidecarValidationError({
409
+ code: DataColumnSidecarErrorCode.INCORRECT_KZG_COMMITMENTS_COUNT,
410
+ slot: blockSlot,
411
+ columnIndex: columnSidecar.index,
412
+ expected: columnSidecar.column.length,
413
+ actual: columnSidecar.kzgCommitments.length,
414
+ });
415
+ }
376
416
 
377
- if (columnSidecar.index >= NUMBER_OF_COLUMNS) {
378
- throw new DataColumnSidecarValidationError(
379
- {
380
- code: DataColumnSidecarErrorCode.INVALID_INDEX,
417
+ if (columnSidecar.column.length !== columnSidecar.kzgProofs.length) {
418
+ throw new DataColumnSidecarValidationError({
419
+ code: DataColumnSidecarErrorCode.INCORRECT_KZG_PROOF_COUNT,
381
420
  slot: blockSlot,
382
421
  columnIndex: columnSidecar.index,
383
- },
384
- "DataColumnSidecar has invalid index"
385
- );
386
- }
422
+ expected: columnSidecar.column.length,
423
+ actual: columnSidecar.kzgProofs.length,
424
+ });
425
+ }
387
426
 
388
- if (columnSidecar.column.length !== blockBlobCount) {
389
- throw new DataColumnSidecarValidationError({
390
- code: DataColumnSidecarErrorCode.INCORRECT_CELL_COUNT,
391
- slot: blockSlot,
392
- columnIndex: columnSidecar.index,
393
- expected: blockBlobCount,
394
- actual: columnSidecar.column.length,
395
- });
396
- }
427
+ const inclusionProofTimer = metrics?.dataColumnSidecarInclusionProofVerificationTime.startTimer();
428
+ const validInclusionProof = verifyDataColumnSidecarInclusionProof(columnSidecar);
429
+ inclusionProofTimer?.();
430
+ if (!validInclusionProof) {
431
+ throw new DataColumnSidecarValidationError(
432
+ {
433
+ code: DataColumnSidecarErrorCode.INCLUSION_PROOF_INVALID,
434
+ slot: blockSlot,
435
+ columnIndex: columnSidecar.index,
436
+ },
437
+ "DataColumnSidecar has invalid inclusion proof"
438
+ );
439
+ }
397
440
 
398
- if (columnSidecar.column.length !== columnSidecar.kzgCommitments.length) {
399
- throw new DataColumnSidecarValidationError({
400
- code: DataColumnSidecarErrorCode.INCORRECT_KZG_COMMITMENTS_COUNT,
401
- slot: blockSlot,
402
- columnIndex: columnSidecar.index,
403
- expected: columnSidecar.column.length,
404
- actual: columnSidecar.kzgCommitments.length,
405
- });
441
+ commitments.push(...columnSidecar.kzgCommitments);
442
+ cellIndices.push(...Array.from({length: columnSidecar.column.length}, () => columnSidecar.index));
443
+ cells.push(...columnSidecar.column);
444
+ proofs.push(...columnSidecar.kzgProofs);
406
445
  }
407
446
 
408
- if (columnSidecar.column.length !== columnSidecar.kzgProofs.length) {
409
- throw new DataColumnSidecarValidationError({
410
- code: DataColumnSidecarErrorCode.INCORRECT_KZG_PROOF_COUNT,
411
- slot: blockSlot,
412
- columnIndex: columnSidecar.index,
413
- expected: columnSidecar.column.length,
414
- actual: columnSidecar.kzgProofs.length,
415
- });
447
+ let reason: string | undefined;
448
+ // batch verification for the cases: downloadByRange and downloadByRoot
449
+ const kzgVerificationTimer = metrics?.kzgVerificationDataColumnBatchTime.startTimer();
450
+ try {
451
+ const valid = await kzg.asyncVerifyCellKzgProofBatch(commitments, cellIndices, cells, proofs);
452
+ if (!valid) {
453
+ reason = "Invalid KZG proof batch";
454
+ }
455
+ } catch (e) {
456
+ reason = (e as Error).message;
457
+ } finally {
458
+ kzgVerificationTimer?.();
416
459
  }
417
-
418
- if (!verifyDataColumnSidecarInclusionProof(columnSidecar)) {
460
+ if (reason !== undefined) {
419
461
  throw new DataColumnSidecarValidationError(
420
462
  {
421
- code: DataColumnSidecarErrorCode.INCLUSION_PROOF_INVALID,
463
+ code: DataColumnSidecarErrorCode.INVALID_KZG_PROOF_BATCH,
422
464
  slot: blockSlot,
423
- columnIndex: columnSidecar.index,
465
+ reason,
424
466
  },
425
- "DataColumnSidecar has invalid inclusion proof"
467
+ "DataColumnSidecar has invalid KZG proof batch"
426
468
  );
427
469
  }
428
-
429
- commitments.push(...columnSidecar.kzgCommitments);
430
- cellIndices.push(...Array.from({length: columnSidecar.column.length}, () => columnSidecar.index));
431
- cells.push(...columnSidecar.column);
432
- proofs.push(...columnSidecar.kzgProofs);
433
- }
434
-
435
- let reason: string | undefined;
436
- try {
437
- const valid = await kzg.asyncVerifyCellKzgProofBatch(commitments, cellIndices, cells, proofs);
438
- if (!valid) {
439
- reason = "Invalid KZG proof batch";
440
- }
441
- } catch (e) {
442
- reason = (e as Error).message;
443
- }
444
- if (reason !== undefined) {
445
- throw new DataColumnSidecarValidationError(
446
- {
447
- code: DataColumnSidecarErrorCode.INVALID_KZG_PROOF_BATCH,
448
- slot: blockSlot,
449
- reason,
450
- },
451
- "DataColumnSidecar has invalid KZG proof batch"
452
- );
470
+ metrics?.dataColumnSidecarProcessingSuccesses.inc();
471
+ } finally {
472
+ verificationTimer?.();
453
473
  }
454
474
  }
455
475
 
@@ -113,8 +113,7 @@ async function validateExecutionPayloadBid(
113
113
 
114
114
  // [IGNORE] `bid.parent_block_root` is the hash tree root of a known beacon
115
115
  // block in fork choice.
116
- const block = chain.forkChoice.getBlock(bid.parentBlockRoot);
117
- if (block === null) {
116
+ if (!chain.forkChoice.hasBlock(bid.parentBlockRoot)) {
118
117
  throw new ExecutionPayloadBidError(GossipAction.IGNORE, {
119
118
  code: ExecutionPayloadBidErrorCode.UNKNOWN_BLOCK_ROOT,
120
119
  parentBlockRoot: parentBlockRootHex,
@@ -37,7 +37,7 @@ async function validateExecutionPayloadEnvelope(
37
37
  // the block is retrieved).
38
38
  // TODO GLOAS: Need to review this, we should queue the envelope for later
39
39
  // processing if the block is not yet known, otherwise we would ignore it here
40
- const block = chain.forkChoice.getBlock(envelope.beaconBlockRoot);
40
+ const block = chain.forkChoice.getBlockDefaultStatus(envelope.beaconBlockRoot);
41
41
  if (block === null) {
42
42
  throw new ExecutionPayloadEnvelopeError(GossipAction.IGNORE, {
43
43
  code: ExecutionPayloadEnvelopeErrorCode.BLOCK_ROOT_UNKNOWN,
@@ -79,7 +79,7 @@ async function validateExecutionPayloadEnvelope(
79
79
  });
80
80
  }
81
81
 
82
- if (block.builderIndex === undefined || block.blockHashHex === undefined) {
82
+ if (block.builderIndex == null || block.blockHashFromBid == null) {
83
83
  // This indicates this block is a pre-gloas block which is wrong
84
84
  throw new ExecutionPayloadEnvelopeError(GossipAction.IGNORE, {
85
85
  code: ExecutionPayloadEnvelopeErrorCode.CACHE_FAIL,
@@ -97,11 +97,11 @@ async function validateExecutionPayloadEnvelope(
97
97
  }
98
98
 
99
99
  // [REJECT] `payload.block_hash == bid.block_hash`
100
- if (toRootHex(payload.blockHash) !== block.blockHashHex) {
100
+ if (toRootHex(payload.blockHash) !== block.blockHashFromBid) {
101
101
  throw new ExecutionPayloadEnvelopeError(GossipAction.REJECT, {
102
102
  code: ExecutionPayloadEnvelopeErrorCode.BLOCK_HASH_MISMATCH,
103
103
  envelopeBlockHash: toRootHex(payload.blockHash),
104
- bidBlockHash: block.blockHashHex,
104
+ bidBlockHash: block.blockHashFromBid,
105
105
  });
106
106
  }
107
107
 
@@ -59,8 +59,7 @@ async function validatePayloadAttestationMessage(
59
59
  // [IGNORE] The message's block `data.beacon_block_root` has been seen (via
60
60
  // gossip or non-gossip sources) (a client MAY queue attestation for processing
61
61
  // once the block is retrieved. Note a client might want to request payload after).
62
- const block = chain.forkChoice.getBlock(data.beaconBlockRoot);
63
- if (block === null) {
62
+ if (!chain.forkChoice.hasBlock(data.beaconBlockRoot)) {
64
63
  throw new PayloadAttestationError(GossipAction.IGNORE, {
65
64
  code: PayloadAttestationErrorCode.UNKNOWN_BLOCK_ROOT,
66
65
  blockRoot: toRootHex(data.beaconBlockRoot),
@@ -87,8 +86,16 @@ async function validatePayloadAttestationMessage(
87
86
  }
88
87
 
89
88
  // [REJECT] `payload_attestation_message.signature` is valid with respect to the validator's public key.
89
+ const validatorPubkey = chain.pubkeyCache.get(validatorIndex);
90
+ if (!validatorPubkey) {
91
+ throw new PayloadAttestationError(GossipAction.REJECT, {
92
+ code: PayloadAttestationErrorCode.INVALID_ATTESTER,
93
+ attesterIndex: validatorIndex,
94
+ });
95
+ }
96
+
90
97
  const signatureSet = createSingleSignatureSetFromComponents(
91
- chain.index2pubkey[validatorIndex],
98
+ validatorPubkey,
92
99
  getPayloadAttestationDataSigningRoot(chain.config, data),
93
100
  payloadAttestationMessage.signature
94
101
  );
@@ -37,7 +37,7 @@ async function validateProposerSlashing(
37
37
  try {
38
38
  const proposer = state.validators.getReadonly(proposerSlashing.signedHeader1.message.proposerIndex);
39
39
  // verifySignature = false, verified in batch below
40
- assertValidProposerSlashing(chain.config, chain.index2pubkey, state.slot, proposerSlashing, proposer, false);
40
+ assertValidProposerSlashing(chain.config, chain.pubkeyCache, state.slot, proposerSlashing, proposer, false);
41
41
  } catch (e) {
42
42
  throw new ProposerSlashingError(GossipAction.REJECT, {
43
43
  code: ProposerSlashingErrorCode.INVALID,
@@ -106,7 +106,7 @@ export async function validateSyncCommitteeGossipContributionAndProof(
106
106
  /**
107
107
  * Retrieve pubkeys in contribution aggregate using epochCtx:
108
108
  * - currSyncCommitteeIndexes cache
109
- * - index2pubkey cache
109
+ * - pubkeyCache
110
110
  */
111
111
  function getContributionIndices(
112
112
  state: CachedBeaconStateAltair,
package/src/db/index.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export {BeaconDb} from "./beacon.js";
2
+ export {Bucket} from "./buckets.js";
2
3
  export type {IBeaconDb} from "./interface.js";
@@ -1,4 +1,3 @@
1
- import all from "it-all";
2
1
  import {ChainForkConfig} from "@lodestar/config";
3
2
  import {Db, FilterOptions, KeyValue, Repository} from "@lodestar/db";
4
3
  import {Root, SignedBeaconBlock, Slot, ssz} from "@lodestar/types";
@@ -121,7 +120,7 @@ export class BlockArchiveRepository extends Repository<Slot, SignedBeaconBlock>
121
120
  }
122
121
 
123
122
  async values(opts?: BlockFilterOptions): Promise<SignedBeaconBlock[]> {
124
- return all(this.valuesStream(opts));
123
+ return await Array.fromAsync(this.valuesStream(opts));
125
124
  }
126
125
 
127
126
  // INDEX
@@ -128,6 +128,7 @@ const getClientVersionOpts: ReqOpts = {routeId: "getClientVersion"};
128
128
  */
129
129
  export class ExecutionEngineHttp implements IExecutionEngine {
130
130
  private logger: Logger;
131
+ private metrics: Metrics | null;
131
132
 
132
133
  // The default state is ONLINE, it will be updated to SYNCING once we receive the first payload
133
134
  // This assumption is better than the OFFLINE state, since we can't be sure if the EL is offline and being offline may trigger some notifications
@@ -167,6 +168,7 @@ export class ExecutionEngineHttp implements IExecutionEngine {
167
168
  metrics?.engineHttpProcessorQueue
168
169
  );
169
170
  this.logger = logger;
171
+ this.metrics = metrics ?? null;
170
172
 
171
173
  this.rpc.emitter.on(JsonRpcHttpClientEvent.ERROR, ({error}) => {
172
174
  this.updateEngineState(getExecutionEngineState({payloadError: error, oldState: this.state}));
@@ -369,6 +371,7 @@ export class ExecutionEngineHttp implements IExecutionEngine {
369
371
  } = await request;
370
372
 
371
373
  this.updateEngineState(getExecutionEngineState({payloadStatus: status, oldState: this.state}));
374
+ this.metrics?.engineNotifyForkchoiceUpdateResult.inc({result: status});
372
375
 
373
376
  switch (status) {
374
377
  case ExecutionPayloadStatus.VALID:
@@ -333,11 +333,13 @@ export function createBeaconMetrics(register: RegistryMetricCreator) {
333
333
  help: "Time taken to verify data_column sidecar inclusion proof",
334
334
  buckets: [0.002, 0.004, 0.006, 0.008, 0.01, 0.05, 1, 2],
335
335
  }),
336
+ // single verification
336
337
  dataColumnSidecarKzgProofsVerificationTime: register.histogram({
337
338
  name: "beacon_data_column_sidecar_kzg_proofs_verification_seconds",
338
- help: "Time taken to verify data_column sidecar kzg proofs",
339
+ help: "Time taken to verify single data_column sidecar kzg proofs",
339
340
  buckets: [0.01, 0.02, 0.03, 0.04, 0.05, 0.1, 0.2, 0.5, 1],
340
341
  }),
342
+ // batch verification
341
343
  kzgVerificationDataColumnBatchTime: register.histogram({
342
344
  name: "beacon_kzg_verification_data_column_batch_seconds",
343
345
  help: "Runtime of batched data column kzg verification",
@@ -361,10 +363,14 @@ export function createBeaconMetrics(register: RegistryMetricCreator) {
361
363
  help: "Duration of engine_getBlobsV2 requests",
362
364
  buckets: [0.01, 0.05, 0.1, 0.5, 1, 2.5, 5, 7.5],
363
365
  }),
364
- targetCustodyGroupCount: register.gauge({
365
- name: "beacon_target_custody_group_count",
366
+ custodyGroupCount: register.gauge({
367
+ name: "beacon_custody_groups",
366
368
  help: "Total number of custody groups within a node",
367
369
  }),
370
+ custodyGroupsBackfilled: register.gauge({
371
+ name: "beacon_custody_groups_backfilled",
372
+ help: "Total number of custody groups backfilled by a node",
373
+ }),
368
374
  reconstructedColumns: register.counter({
369
375
  name: "beacon_data_availability_reconstructed_columns_total",
370
376
  help: "Total count of reconstructed columns",
@@ -836,20 +836,23 @@ export function createLodestarMetrics(
836
836
  buckets: [0.5, 1, 2, 4, 6, 12],
837
837
  }),
838
838
  },
839
- recoverDataColumnSidecars: {
840
- recoverTime: register.histogram({
841
- name: "lodestar_recover_data_column_sidecar_recover_time_seconds",
842
- help: "Time elapsed to recover data column sidecar",
843
- buckets: [0.5, 1.0, 1.5, 2],
839
+ // recovery in the case of specific blob rows required
840
+ recoverBlobSidecars: {
841
+ blobsReconstructed: register.counter({
842
+ name: "lodestar_blobs_reconstructed_total",
843
+ help: "Total count of reconstructed blobs",
844
+ }),
845
+ reconstructionTime: register.histogram({
846
+ name: "lodestar_blob_reconstruction_seconds",
847
+ help: "Time taken to reconstruct blobs",
848
+ buckets: [0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 2, 5],
844
849
  }),
850
+ },
851
+ recoverDataColumnSidecars: {
845
852
  custodyBeforeReconstruction: register.gauge({
846
853
  name: "lodestar_data_columns_in_custody_before_reconstruction",
847
854
  help: "Number of data columns in custody before reconstruction",
848
855
  }),
849
- numberOfColumnsRecovered: register.gauge({
850
- name: "lodestar_recover_data_column_sidecar_recovered_columns_total",
851
- help: "Total number of columns that were recovered",
852
- }),
853
856
  reconstructionResult: register.counter<{result: DataColumnReconstructionCode}>({
854
857
  name: "lodestar_data_column_sidecars_reconstruction_result",
855
858
  help: "Data column sidecars reconstruction result",
@@ -857,6 +860,10 @@ export function createLodestarMetrics(
857
860
  }),
858
861
  },
859
862
  dataColumns: {
863
+ alreadyAdded: register.counter({
864
+ name: "lodestar_data_column_sidecar_already_added",
865
+ help: "Total number of columns that were already added by other sources while waiting",
866
+ }),
860
867
  bySource: register.gauge<{source: BlockInputSource}>({
861
868
  name: "lodestar_data_columns_by_source",
862
869
  help: "Number of received data columns by source",
@@ -912,11 +919,6 @@ export function createLodestarMetrics(
912
919
  help: "Total number of imported blobs by source",
913
920
  labelNames: ["blobsSource"],
914
921
  }),
915
- columnsBySource: register.gauge<{source: BlockInputSource}>({
916
- name: "lodestar_import_columns_by_source_total",
917
- help: "Total number of imported columns (sampled columns) by source",
918
- labelNames: ["source"],
919
- }),
920
922
  notOverrideFcuReason: register.counter<{reason: NotReorgedReason}>({
921
923
  name: "lodestar_import_block_not_override_fcu_reason_total",
922
924
  help: "Reason why the fcu call is not suppressed during block import",
@@ -928,6 +930,11 @@ export function createLodestarMetrics(
928
930
  help: "The total result of calling notifyNewPayload execution engine api",
929
931
  labelNames: ["result"],
930
932
  }),
933
+ engineNotifyForkchoiceUpdateResult: register.gauge<{result: ExecutionPayloadStatus}>({
934
+ name: "lodestar_execution_engine_notify_forkchoice_update_result_total",
935
+ help: "The total result of calling notifyForkchoiceUpdate execution engine api",
936
+ labelNames: ["result"],
937
+ }),
931
938
  backfillSync: {
932
939
  backfilledTillSlot: register.gauge({
933
940
  name: "lodestar_backfill_till_slot",
@@ -1456,29 +1463,37 @@ export function createLodestarMetrics(
1456
1463
  name: "lodestar_seen_block_input_cache_size",
1457
1464
  help: "Number of cached BlockInputs",
1458
1465
  }),
1459
- duplicateBlockCount: register.gauge<{source: BlockInputSource}>({
1460
- name: "lodestar_seen_block_input_cache_duplicate_block_count",
1466
+ serializedObjectRefs: register.gauge({
1467
+ name: "lodestar_seen_block_input_cache_serialized_object_refs",
1468
+ help: "Number of serialized-cache object refs retained by cached BlockInputs",
1469
+ }),
1470
+ duplicateBlockCount: register.counter<{source: BlockInputSource}>({
1471
+ name: "lodestar_seen_block_input_cache_duplicate_block_total",
1461
1472
  help: "Total number of duplicate blocks that pass validation and attempt to be cached but are known",
1462
1473
  labelNames: ["source"],
1463
1474
  }),
1464
- duplicateBlobCount: register.gauge<{source: BlockInputSource}>({
1465
- name: "lodestar_seen_block_input_cache_duplicate_blob_count",
1475
+ duplicateBlobCount: register.counter<{source: BlockInputSource}>({
1476
+ name: "lodestar_seen_block_input_cache_duplicate_blob_total",
1466
1477
  help: "Total number of duplicate blobs that pass validation and attempt to be cached but are known",
1467
1478
  labelNames: ["source"],
1468
1479
  }),
1469
- duplicateColumnCount: register.gauge<{source: BlockInputSource}>({
1470
- name: "lodestar_seen_block_input_cache_duplicate_column_count",
1480
+ duplicateColumnCount: register.counter<{source: BlockInputSource}>({
1481
+ name: "lodestar_seen_block_input_cache_duplicate_column_total",
1471
1482
  help: "Total number of duplicate columns that pass validation and attempt to be cached but are known",
1472
1483
  labelNames: ["source"],
1473
1484
  }),
1474
- createdByBlock: register.gauge({
1475
- name: "lodestar_seen_block_input_cache_items_created_by_block",
1485
+ createdByBlock: register.counter({
1486
+ name: "lodestar_seen_block_input_cache_items_created_by_block_total",
1476
1487
  help: "Number of BlockInputs created via a block being seen first",
1477
1488
  }),
1478
- createdByBlob: register.gauge({
1479
- name: "lodestar_seen_block_input_cache_items_created_by_blob",
1489
+ createdByBlob: register.counter({
1490
+ name: "lodestar_seen_block_input_cache_items_created_by_blob_total",
1480
1491
  help: "Number of BlockInputs created via a blob being seen first",
1481
1492
  }),
1493
+ createdByColumn: register.counter({
1494
+ name: "lodestar_seen_block_input_cache_items_created_by_column_total",
1495
+ help: "Number of BlockInputs created via a data column being seen first",
1496
+ }),
1482
1497
  },
1483
1498
  },
1484
1499
 
@@ -89,9 +89,9 @@ export class MonitoringService {
89
89
  }
90
90
 
91
91
  /**
92
- * Stop sending client stats
92
+ * Stop sending client stats and wait for any pending request to complete
93
93
  */
94
- close(): void {
94
+ async close(): Promise<void> {
95
95
  if (this.status === Status.Closed) return;
96
96
  this.status = Status.Closed;
97
97
 
@@ -103,6 +103,7 @@ export class MonitoringService {
103
103
  }
104
104
  if (this.pendingRequest) {
105
105
  this.fetchAbortController?.abort(FetchAbortReason.Close);
106
+ await this.pendingRequest;
106
107
  }
107
108
  }
108
109
 
@@ -1,8 +1,8 @@
1
- import {Connection, PrivateKey} from "@libp2p/interface";
1
+ import type {PeerScoreStatsDump} from "@libp2p/gossipsub/score";
2
+ import type {PublishOpts} from "@libp2p/gossipsub/types";
3
+ import type {Connection, PrivateKey} from "@libp2p/interface";
2
4
  import {peerIdFromPrivateKey} from "@libp2p/peer-id";
3
5
  import {multiaddr} from "@multiformats/multiaddr";
4
- import {PeerScoreStatsDump} from "@chainsafe/libp2p-gossipsub/score";
5
- import {PublishOpts} from "@chainsafe/libp2p-gossipsub/types";
6
6
  import {routes} from "@lodestar/api";
7
7
  import {BeaconConfig, ForkBoundary} from "@lodestar/config";
8
8
  import type {LoggerNode} from "@lodestar/logger/node";