@lodestar/beacon-node 1.35.0-dev.b42a298a7c → 1.35.0-dev.ba92bd8a88

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 (884) hide show
  1. package/lib/api/impl/api.d.ts.map +1 -0
  2. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -0
  3. package/lib/api/impl/beacon/blocks/utils.d.ts.map +1 -0
  4. package/lib/api/impl/beacon/index.d.ts.map +1 -0
  5. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -0
  6. package/lib/api/impl/beacon/rewards/index.d.ts.map +1 -0
  7. package/lib/api/impl/beacon/state/index.d.ts.map +1 -0
  8. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -0
  9. package/lib/api/impl/config/constants.d.ts.map +1 -0
  10. package/lib/api/impl/config/index.d.ts.map +1 -0
  11. package/lib/api/impl/debug/index.d.ts.map +1 -0
  12. package/lib/api/impl/errors.d.ts.map +1 -0
  13. package/lib/api/impl/events/index.d.ts.map +1 -0
  14. package/lib/api/impl/index.d.ts.map +1 -0
  15. package/lib/api/impl/lightclient/index.d.ts.map +1 -0
  16. package/lib/api/impl/lodestar/index.d.ts.map +1 -0
  17. package/lib/api/impl/node/index.d.ts.map +1 -0
  18. package/lib/api/impl/node/utils.d.ts.map +1 -0
  19. package/lib/api/impl/proof/index.d.ts.map +1 -0
  20. package/lib/api/impl/types.d.ts.map +1 -0
  21. package/lib/api/impl/utils.d.ts.map +1 -0
  22. package/lib/api/impl/validator/index.d.ts.map +1 -0
  23. package/lib/api/impl/validator/utils.d.ts.map +1 -0
  24. package/lib/api/index.d.ts.map +1 -0
  25. package/lib/api/options.d.ts.map +1 -0
  26. package/lib/api/rest/activeSockets.d.ts.map +1 -0
  27. package/lib/api/rest/base.d.ts.map +1 -0
  28. package/lib/api/rest/index.d.ts.map +1 -0
  29. package/lib/api/rest/swaggerUI.d.ts.map +1 -0
  30. package/lib/bun-wrappers/prometheus-gc-stats.d.ts.map +1 -0
  31. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -0
  32. package/lib/chain/GetBlobsTracker.d.ts.map +1 -0
  33. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -0
  34. package/lib/chain/archiveStore/constants.d.ts.map +1 -0
  35. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -0
  36. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -0
  37. package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +1 -0
  38. package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -0
  39. package/lib/chain/archiveStore/historicalState/worker.d.ts.map +1 -0
  40. package/lib/chain/archiveStore/historicalState/worker.js +1 -1
  41. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  42. package/lib/chain/archiveStore/index.d.ts.map +1 -0
  43. package/lib/chain/archiveStore/interface.d.ts.map +1 -0
  44. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -0
  45. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -0
  46. package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +1 -0
  47. package/lib/chain/archiveStore/utils/updateBackfillRange.d.ts.map +1 -0
  48. package/lib/chain/balancesCache.d.ts.map +1 -0
  49. package/lib/chain/beaconProposerCache.d.ts.map +1 -0
  50. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -0
  51. package/lib/chain/blocks/blockInput/errors.d.ts.map +1 -0
  52. package/lib/chain/blocks/blockInput/index.d.ts.map +1 -0
  53. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -0
  54. package/lib/chain/blocks/blockInput/utils.d.ts.map +1 -0
  55. package/lib/chain/blocks/importBlock.d.ts.map +1 -0
  56. package/lib/chain/blocks/index.d.ts.map +1 -0
  57. package/lib/chain/blocks/types.d.ts.map +1 -0
  58. package/lib/chain/blocks/utils/blowfishBanner.d.ts.map +1 -0
  59. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -0
  60. package/lib/chain/blocks/utils/checkpoint.d.ts.map +1 -0
  61. package/lib/chain/blocks/utils/giraffeBanner.d.ts.map +1 -0
  62. package/lib/chain/blocks/utils/ownBanner.d.ts.map +1 -0
  63. package/lib/chain/blocks/utils/pandaMergeTransitionBanner.d.ts.map +1 -0
  64. package/lib/chain/blocks/utils/zebraBanner.d.ts.map +1 -0
  65. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -0
  66. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -0
  67. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -0
  68. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -0
  69. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -0
  70. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -0
  71. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -0
  72. package/lib/chain/bls/index.d.ts.map +1 -0
  73. package/lib/chain/bls/interface.d.ts.map +1 -0
  74. package/lib/chain/bls/maybeBatch.d.ts.map +1 -0
  75. package/lib/chain/bls/multithread/index.d.ts.map +1 -0
  76. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -0
  77. package/lib/chain/bls/multithread/poolSize.d.ts.map +1 -0
  78. package/lib/chain/bls/multithread/types.d.ts.map +1 -0
  79. package/lib/chain/bls/multithread/utils.d.ts.map +1 -0
  80. package/lib/chain/bls/multithread/worker.d.ts.map +1 -0
  81. package/lib/chain/bls/singleThread.d.ts.map +1 -0
  82. package/lib/chain/bls/utils.d.ts.map +1 -0
  83. package/lib/chain/chain.d.ts.map +1 -0
  84. package/lib/chain/emitter.d.ts +2 -2
  85. package/lib/chain/emitter.d.ts.map +1 -0
  86. package/lib/chain/errors/attestationError.d.ts.map +1 -0
  87. package/lib/chain/errors/attesterSlashingError.d.ts.map +1 -0
  88. package/lib/chain/errors/blobSidecarError.d.ts.map +1 -0
  89. package/lib/chain/errors/blockError.d.ts.map +1 -0
  90. package/lib/chain/errors/blsToExecutionChangeError.d.ts.map +1 -0
  91. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -0
  92. package/lib/chain/errors/gossipValidation.d.ts.map +1 -0
  93. package/lib/chain/errors/index.d.ts.map +1 -0
  94. package/lib/chain/errors/lightClientError.d.ts.map +1 -0
  95. package/lib/chain/errors/proposerSlashingError.d.ts.map +1 -0
  96. package/lib/chain/errors/syncCommitteeError.d.ts.map +1 -0
  97. package/lib/chain/errors/voluntaryExitError.d.ts.map +1 -0
  98. package/lib/chain/forkChoice/index.d.ts.map +1 -0
  99. package/lib/chain/genesis/genesis.d.ts.map +1 -0
  100. package/lib/chain/genesis/interface.d.ts.map +1 -0
  101. package/lib/chain/index.d.ts.map +1 -0
  102. package/lib/chain/initState.d.ts.map +1 -0
  103. package/lib/chain/interface.d.ts.map +1 -0
  104. package/lib/chain/lightClient/index.d.ts.map +1 -0
  105. package/lib/chain/lightClient/proofs.d.ts.map +1 -0
  106. package/lib/chain/lightClient/types.d.ts.map +1 -0
  107. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -0
  108. package/lib/chain/opPools/attestationPool.d.ts.map +1 -0
  109. package/lib/chain/opPools/index.d.ts.map +1 -0
  110. package/lib/chain/opPools/opPool.d.ts.map +1 -0
  111. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -0
  112. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -0
  113. package/lib/chain/opPools/types.d.ts.map +1 -0
  114. package/lib/chain/opPools/utils.d.ts.map +1 -0
  115. package/lib/chain/options.d.ts.map +1 -0
  116. package/lib/chain/prepareNextSlot.d.ts.map +1 -0
  117. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -0
  118. package/lib/chain/produceBlock/index.d.ts.map +1 -0
  119. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -0
  120. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts.map +1 -0
  121. package/lib/chain/regen/errors.d.ts.map +1 -0
  122. package/lib/chain/regen/index.d.ts.map +1 -0
  123. package/lib/chain/regen/interface.d.ts.map +1 -0
  124. package/lib/chain/regen/queued.d.ts.map +1 -0
  125. package/lib/chain/regen/regen.d.ts.map +1 -0
  126. package/lib/chain/reprocess.d.ts.map +1 -0
  127. package/lib/chain/rewards/attestationsRewards.d.ts.map +1 -0
  128. package/lib/chain/rewards/blockRewards.d.ts.map +1 -0
  129. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +1 -0
  130. package/lib/chain/seenCache/index.d.ts.map +1 -0
  131. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -0
  132. package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -0
  133. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -0
  134. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -0
  135. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -0
  136. package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -0
  137. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -0
  138. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -0
  139. package/lib/chain/serializeState.d.ts.map +1 -0
  140. package/lib/chain/shufflingCache.d.ts.map +1 -0
  141. package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +1 -0
  142. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -0
  143. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -0
  144. package/lib/chain/stateCache/datastore/index.d.ts.map +1 -0
  145. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -0
  146. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -0
  147. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +1 -0
  148. package/lib/chain/stateCache/index.d.ts.map +1 -0
  149. package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -0
  150. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -0
  151. package/lib/chain/stateCache/types.d.ts.map +1 -0
  152. package/lib/chain/validation/aggregateAndProof.d.ts.map +1 -0
  153. package/lib/chain/validation/attestation.d.ts.map +1 -0
  154. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -0
  155. package/lib/chain/validation/blobSidecar.d.ts.map +1 -0
  156. package/lib/chain/validation/block.d.ts.map +1 -0
  157. package/lib/chain/validation/blsToExecutionChange.d.ts.map +1 -0
  158. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -0
  159. package/lib/chain/validation/index.d.ts.map +1 -0
  160. package/lib/chain/validation/lightClientFinalityUpdate.d.ts.map +1 -0
  161. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +1 -0
  162. package/lib/chain/validation/proposerSlashing.d.ts.map +1 -0
  163. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +1 -0
  164. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -0
  165. package/lib/chain/validation/signatureSets/index.d.ts.map +1 -0
  166. package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +1 -0
  167. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -0
  168. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -0
  169. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -0
  170. package/lib/chain/validation/syncCommittee.d.ts.map +1 -0
  171. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -0
  172. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -0
  173. package/lib/chain/validatorMonitor.d.ts.map +1 -0
  174. package/lib/constants/constants.d.ts.map +1 -0
  175. package/lib/constants/index.d.ts.map +1 -0
  176. package/lib/constants/network.d.ts.map +1 -0
  177. package/lib/db/beacon.d.ts.map +1 -0
  178. package/lib/db/buckets.d.ts +4 -4
  179. package/lib/db/buckets.d.ts.map +1 -0
  180. package/lib/db/buckets.js +4 -4
  181. package/lib/db/buckets.js.map +1 -1
  182. package/lib/db/index.d.ts.map +1 -0
  183. package/lib/db/interface.d.ts.map +1 -0
  184. package/lib/db/options.d.ts.map +1 -0
  185. package/lib/db/repositories/attesterSlashing.d.ts.map +1 -0
  186. package/lib/db/repositories/backfilledRanges.d.ts.map +1 -0
  187. package/lib/db/repositories/blobSidecars.d.ts.map +1 -0
  188. package/lib/db/repositories/blobSidecars.js +1 -1
  189. package/lib/db/repositories/blobSidecars.js.map +1 -1
  190. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -0
  191. package/lib/db/repositories/blobSidecarsArchive.js +1 -1
  192. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  193. package/lib/db/repositories/block.d.ts.map +1 -0
  194. package/lib/db/repositories/blockArchive.d.ts.map +1 -0
  195. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  196. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -0
  197. package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -0
  198. package/lib/db/repositories/checkpointState.d.ts.map +1 -0
  199. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -0
  200. package/lib/db/repositories/dataColumnSidecar.js +1 -1
  201. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  202. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -0
  203. package/lib/db/repositories/dataColumnSidecarArchive.js +1 -1
  204. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  205. package/lib/db/repositories/depositDataRoot.d.ts.map +1 -0
  206. package/lib/db/repositories/depositEvent.d.ts.map +1 -0
  207. package/lib/db/repositories/eth1Data.d.ts.map +1 -0
  208. package/lib/db/repositories/index.d.ts.map +1 -0
  209. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +1 -0
  210. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +1 -0
  211. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +1 -0
  212. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -0
  213. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -0
  214. package/lib/db/repositories/stateArchive.d.ts.map +1 -0
  215. package/lib/db/repositories/stateArchiveIndex.d.ts.map +1 -0
  216. package/lib/db/repositories/voluntaryExit.d.ts.map +1 -0
  217. package/lib/db/single/index.d.ts.map +1 -0
  218. package/lib/db/single/preGenesisState.d.ts.map +1 -0
  219. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +1 -0
  220. package/lib/eth1/errors.d.ts.map +1 -0
  221. package/lib/eth1/eth1DataCache.d.ts.map +1 -0
  222. package/lib/eth1/eth1DepositDataTracker.d.ts.map +1 -0
  223. package/lib/eth1/eth1DepositsCache.d.ts.map +1 -0
  224. package/lib/eth1/eth1MergeBlockTracker.d.ts.map +1 -0
  225. package/lib/eth1/index.d.ts.map +1 -0
  226. package/lib/eth1/interface.d.ts.map +1 -0
  227. package/lib/eth1/options.d.ts.map +1 -0
  228. package/lib/eth1/provider/eth1Provider.d.ts.map +1 -0
  229. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +1 -0
  230. package/lib/eth1/provider/jwt.d.ts.map +1 -0
  231. package/lib/eth1/provider/utils.d.ts.map +1 -0
  232. package/lib/eth1/stream.d.ts.map +1 -0
  233. package/lib/eth1/utils/depositContract.d.ts.map +1 -0
  234. package/lib/eth1/utils/deposits.d.ts.map +1 -0
  235. package/lib/eth1/utils/eth1Data.d.ts.map +1 -0
  236. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +1 -0
  237. package/lib/eth1/utils/eth1Vote.d.ts.map +1 -0
  238. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +1 -0
  239. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +1 -0
  240. package/lib/execution/builder/cache.d.ts.map +1 -0
  241. package/lib/execution/builder/http.d.ts.map +1 -0
  242. package/lib/execution/builder/index.d.ts.map +1 -0
  243. package/lib/execution/builder/interface.d.ts.map +1 -0
  244. package/lib/execution/builder/utils.d.ts.map +1 -0
  245. package/lib/execution/engine/disabled.d.ts.map +1 -0
  246. package/lib/execution/engine/http.d.ts.map +1 -0
  247. package/lib/execution/engine/index.d.ts.map +1 -0
  248. package/lib/execution/engine/interface.d.ts.map +1 -0
  249. package/lib/execution/engine/mock.d.ts.map +1 -0
  250. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -0
  251. package/lib/execution/engine/types.d.ts.map +1 -0
  252. package/lib/execution/engine/utils.d.ts.map +1 -0
  253. package/lib/execution/index.d.ts.map +1 -0
  254. package/lib/index.d.ts.map +1 -0
  255. package/lib/metrics/index.d.ts.map +1 -0
  256. package/lib/metrics/metrics/beacon.d.ts.map +1 -0
  257. package/lib/metrics/metrics/lodestar.d.ts.map +1 -0
  258. package/lib/metrics/metrics.d.ts.map +1 -0
  259. package/lib/metrics/nodeJsMetrics.d.ts.map +1 -0
  260. package/lib/metrics/options.d.ts.map +1 -0
  261. package/lib/metrics/server/http.d.ts.map +1 -0
  262. package/lib/metrics/server/index.d.ts.map +1 -0
  263. package/lib/metrics/utils/avgMinMax.d.ts.map +1 -0
  264. package/lib/metrics/utils/gauge.d.ts.map +1 -0
  265. package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -0
  266. package/lib/monitoring/clientStats.d.ts.map +1 -0
  267. package/lib/monitoring/index.d.ts.map +1 -0
  268. package/lib/monitoring/options.d.ts.map +1 -0
  269. package/lib/monitoring/properties.d.ts.map +1 -0
  270. package/lib/monitoring/service.d.ts.map +1 -0
  271. package/lib/monitoring/system.d.ts.map +1 -0
  272. package/lib/monitoring/types.d.ts.map +1 -0
  273. package/lib/network/core/events.d.ts.map +1 -0
  274. package/lib/network/core/index.d.ts.map +1 -0
  275. package/lib/network/core/metrics.d.ts.map +1 -0
  276. package/lib/network/core/networkCore.d.ts.map +1 -0
  277. package/lib/network/core/networkCoreWorker.d.ts.map +1 -0
  278. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -0
  279. package/lib/network/core/types.d.ts.map +1 -0
  280. package/lib/network/discv5/index.d.ts.map +1 -0
  281. package/lib/network/discv5/types.d.ts.map +1 -0
  282. package/lib/network/discv5/utils.d.ts.map +1 -0
  283. package/lib/network/discv5/worker.d.ts.map +1 -0
  284. package/lib/network/events.d.ts.map +1 -0
  285. package/lib/network/forks.d.ts.map +1 -0
  286. package/lib/network/gossip/constants.d.ts.map +1 -0
  287. package/lib/network/gossip/encoding.d.ts.map +1 -0
  288. package/lib/network/gossip/errors.d.ts.map +1 -0
  289. package/lib/network/gossip/gossipsub.d.ts +1 -0
  290. package/lib/network/gossip/gossipsub.d.ts.map +1 -0
  291. package/lib/network/gossip/gossipsub.js +35 -16
  292. package/lib/network/gossip/gossipsub.js.map +1 -1
  293. package/lib/network/gossip/index.d.ts.map +1 -0
  294. package/lib/network/gossip/interface.d.ts.map +1 -0
  295. package/lib/network/gossip/metrics.d.ts +15 -7
  296. package/lib/network/gossip/metrics.d.ts.map +1 -0
  297. package/lib/network/gossip/metrics.js +16 -6
  298. package/lib/network/gossip/metrics.js.map +1 -1
  299. package/lib/network/gossip/scoringParameters.d.ts.map +1 -0
  300. package/lib/network/gossip/topic.d.ts.map +1 -0
  301. package/lib/network/index.d.ts.map +1 -0
  302. package/lib/network/interface.d.ts.map +1 -0
  303. package/lib/network/libp2p/error.d.ts.map +1 -0
  304. package/lib/network/libp2p/index.d.ts.map +1 -0
  305. package/lib/network/metadata.d.ts.map +1 -0
  306. package/lib/network/metadata.js +2 -1
  307. package/lib/network/metadata.js.map +1 -1
  308. package/lib/network/network.d.ts.map +1 -0
  309. package/lib/network/network.js +2 -4
  310. package/lib/network/network.js.map +1 -1
  311. package/lib/network/networkConfig.d.ts.map +1 -0
  312. package/lib/network/options.d.ts.map +1 -0
  313. package/lib/network/peers/client.d.ts.map +1 -0
  314. package/lib/network/peers/datastore.d.ts.map +1 -0
  315. package/lib/network/peers/discover.d.ts.map +1 -0
  316. package/lib/network/peers/index.d.ts.map +1 -0
  317. package/lib/network/peers/peerManager.d.ts.map +1 -0
  318. package/lib/network/peers/peersData.d.ts.map +1 -0
  319. package/lib/network/peers/score/constants.d.ts.map +1 -0
  320. package/lib/network/peers/score/index.d.ts.map +1 -0
  321. package/lib/network/peers/score/interface.d.ts.map +1 -0
  322. package/lib/network/peers/score/score.d.ts.map +1 -0
  323. package/lib/network/peers/score/store.d.ts.map +1 -0
  324. package/lib/network/peers/score/utils.d.ts.map +1 -0
  325. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -0
  326. package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +1 -0
  327. package/lib/network/peers/utils/getConnectedPeerIds.d.ts.map +1 -0
  328. package/lib/network/peers/utils/index.d.ts.map +1 -0
  329. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -0
  330. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -0
  331. package/lib/network/processor/aggregatorTracker.d.ts.map +1 -0
  332. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -0
  333. package/lib/network/processor/gossipHandlers.d.ts.map +1 -0
  334. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -0
  335. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -0
  336. package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -0
  337. package/lib/network/processor/gossipQueues/types.d.ts.map +1 -0
  338. package/lib/network/processor/gossipValidatorFn.d.ts.map +1 -0
  339. package/lib/network/processor/index.d.ts +1 -1
  340. package/lib/network/processor/index.d.ts.map +1 -0
  341. package/lib/network/processor/index.js +2 -3
  342. package/lib/network/processor/index.js.map +1 -1
  343. package/lib/network/processor/types.d.ts.map +1 -0
  344. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -0
  345. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -0
  346. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +1 -0
  347. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -0
  348. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +1 -0
  349. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -0
  350. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -0
  351. package/lib/network/reqresp/handlers/index.d.ts.map +1 -0
  352. package/lib/network/reqresp/handlers/lightClientBootstrap.d.ts.map +1 -0
  353. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.d.ts.map +1 -0
  354. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.d.ts.map +1 -0
  355. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +1 -0
  356. package/lib/network/reqresp/index.d.ts.map +1 -0
  357. package/lib/network/reqresp/interface.d.ts.map +1 -0
  358. package/lib/network/reqresp/protocols.d.ts.map +1 -0
  359. package/lib/network/reqresp/rateLimit.d.ts.map +1 -0
  360. package/lib/network/reqresp/score.d.ts.map +1 -0
  361. package/lib/network/reqresp/types.d.ts.map +1 -0
  362. package/lib/network/reqresp/utils/collect.d.ts.map +1 -0
  363. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts.map +1 -0
  364. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -0
  365. package/lib/network/statusCache.d.ts.map +1 -0
  366. package/lib/network/subnets/attnetsService.d.ts.map +1 -0
  367. package/lib/network/subnets/index.d.ts.map +1 -0
  368. package/lib/network/subnets/interface.d.ts.map +1 -0
  369. package/lib/network/subnets/syncnetsService.d.ts.map +1 -0
  370. package/lib/network/subnets/util.d.ts.map +1 -0
  371. package/lib/network/util.d.ts.map +1 -0
  372. package/lib/node/index.d.ts.map +1 -0
  373. package/lib/node/nodejs.d.ts.map +1 -0
  374. package/lib/node/notifier.d.ts.map +1 -0
  375. package/lib/node/options.d.ts.map +1 -0
  376. package/lib/node/utils/interop/deposits.d.ts.map +1 -0
  377. package/lib/node/utils/interop/state.d.ts.map +1 -0
  378. package/lib/node/utils/lightclient.d.ts.map +1 -0
  379. package/lib/node/utils/state.d.ts.map +1 -0
  380. package/lib/sync/backfill/backfill.d.ts.map +1 -0
  381. package/lib/sync/backfill/errors.d.ts.map +1 -0
  382. package/lib/sync/backfill/index.d.ts.map +1 -0
  383. package/lib/sync/backfill/verify.d.ts.map +1 -0
  384. package/lib/sync/constants.d.ts.map +1 -0
  385. package/lib/sync/index.d.ts.map +1 -0
  386. package/lib/sync/interface.d.ts.map +1 -0
  387. package/lib/sync/options.d.ts.map +1 -0
  388. package/lib/sync/range/batch.d.ts.map +1 -0
  389. package/lib/sync/range/chain.d.ts.map +1 -0
  390. package/lib/sync/range/range.d.ts.map +1 -0
  391. package/lib/sync/range/utils/batches.d.ts.map +1 -0
  392. package/lib/sync/range/utils/chainTarget.d.ts.map +1 -0
  393. package/lib/sync/range/utils/hashBlocks.d.ts.map +1 -0
  394. package/lib/sync/range/utils/index.d.ts.map +1 -0
  395. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -0
  396. package/lib/sync/range/utils/updateChains.d.ts.map +1 -0
  397. package/lib/sync/sync.d.ts.map +1 -0
  398. package/lib/sync/types.d.ts +0 -1
  399. package/lib/sync/types.d.ts.map +1 -0
  400. package/lib/sync/types.js.map +1 -1
  401. package/lib/sync/unknownBlock.d.ts.map +1 -0
  402. package/lib/sync/unknownBlock.js +12 -14
  403. package/lib/sync/unknownBlock.js.map +1 -1
  404. package/lib/sync/utils/downloadByRange.d.ts.map +1 -0
  405. package/lib/sync/utils/downloadByRoot.d.ts +3 -1
  406. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -0
  407. package/lib/sync/utils/downloadByRoot.js +32 -5
  408. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  409. package/lib/sync/utils/pendingBlocksTree.d.ts.map +1 -0
  410. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -0
  411. package/lib/util/address.d.ts.map +1 -0
  412. package/lib/util/array.d.ts.map +1 -0
  413. package/lib/util/asyncIterableToEvents.d.ts.map +1 -0
  414. package/lib/util/binarySearch.d.ts.map +1 -0
  415. package/lib/util/bitArray.d.ts.map +1 -0
  416. package/lib/util/blobs.d.ts.map +1 -0
  417. package/lib/util/blobs.js +5 -3
  418. package/lib/util/blobs.js.map +1 -1
  419. package/lib/util/bufferPool.d.ts.map +1 -0
  420. package/lib/util/bytes.d.ts.map +1 -0
  421. package/lib/util/chunkify.d.ts.map +1 -0
  422. package/lib/util/clock.d.ts.map +1 -0
  423. package/lib/util/dataColumns.d.ts.map +1 -0
  424. package/lib/util/dependentRoot.d.ts.map +1 -0
  425. package/lib/util/enum.d.ts.map +1 -0
  426. package/lib/util/error.d.ts.map +1 -0
  427. package/lib/util/eventLoop.d.ts.map +1 -0
  428. package/lib/util/execution.d.ts.map +1 -0
  429. package/lib/util/file.d.ts.map +1 -0
  430. package/lib/util/forkChoice.d.ts.map +1 -0
  431. package/lib/util/forkName.d.ts.map +1 -0
  432. package/lib/util/graffiti.d.ts.map +1 -0
  433. package/lib/util/hex.d.ts.map +1 -0
  434. package/lib/util/index.d.ts.map +1 -0
  435. package/lib/util/ip.d.ts.map +1 -0
  436. package/lib/util/itTrigger.d.ts.map +1 -0
  437. package/lib/util/kzg.d.ts.map +1 -0
  438. package/lib/util/map.d.ts.map +1 -0
  439. package/lib/util/metadata.d.ts.map +1 -0
  440. package/lib/util/multifork.d.ts.map +1 -0
  441. package/lib/util/numpy.d.ts.map +1 -0
  442. package/lib/util/peerId.d.ts.map +1 -0
  443. package/lib/util/profile.d.ts.map +1 -0
  444. package/lib/util/promises.d.ts.map +1 -0
  445. package/lib/util/queue/errors.d.ts.map +1 -0
  446. package/lib/util/queue/fnQueue.d.ts.map +1 -0
  447. package/lib/util/queue/index.d.ts.map +1 -0
  448. package/lib/util/queue/itemQueue.d.ts.map +1 -0
  449. package/lib/util/queue/options.d.ts.map +1 -0
  450. package/lib/util/serializedCache.d.ts.map +1 -0
  451. package/lib/util/set.d.ts.map +1 -0
  452. package/lib/util/shuffle.d.ts.map +1 -0
  453. package/lib/util/sortBy.d.ts.map +1 -0
  454. package/lib/util/sszBytes.d.ts.map +1 -0
  455. package/lib/util/strictEvents.d.ts.map +1 -0
  456. package/lib/util/time.d.ts.map +1 -0
  457. package/lib/util/timeSeries.d.ts.map +1 -0
  458. package/lib/util/types.d.ts.map +1 -0
  459. package/lib/util/workerEvents.d.ts.map +1 -0
  460. package/lib/util/wrapError.d.ts.map +1 -0
  461. package/package.json +18 -20
  462. package/src/api/impl/api.ts +26 -0
  463. package/src/api/impl/beacon/blocks/index.ts +744 -0
  464. package/src/api/impl/beacon/blocks/utils.ts +75 -0
  465. package/src/api/impl/beacon/index.ts +35 -0
  466. package/src/api/impl/beacon/pool/index.ts +314 -0
  467. package/src/api/impl/beacon/rewards/index.ts +30 -0
  468. package/src/api/impl/beacon/state/index.ts +406 -0
  469. package/src/api/impl/beacon/state/utils.ts +189 -0
  470. package/src/api/impl/config/constants.ts +127 -0
  471. package/src/api/impl/config/index.ts +59 -0
  472. package/src/api/impl/debug/index.ts +131 -0
  473. package/src/api/impl/errors.ts +50 -0
  474. package/src/api/impl/events/index.ts +33 -0
  475. package/src/api/impl/index.ts +6 -0
  476. package/src/api/impl/lightclient/index.ts +64 -0
  477. package/src/api/impl/lodestar/index.ts +257 -0
  478. package/src/api/impl/node/index.ts +88 -0
  479. package/src/api/impl/node/utils.ts +51 -0
  480. package/src/api/impl/proof/index.ts +60 -0
  481. package/src/api/impl/types.ts +17 -0
  482. package/src/api/impl/utils.ts +25 -0
  483. package/src/api/impl/validator/index.ts +1538 -0
  484. package/src/api/impl/validator/utils.ts +85 -0
  485. package/src/api/index.ts +2 -0
  486. package/src/api/options.ts +16 -0
  487. package/src/api/rest/activeSockets.ts +109 -0
  488. package/src/api/rest/base.ts +216 -0
  489. package/src/api/rest/index.ts +63 -0
  490. package/src/api/rest/swaggerUI.ts +80 -0
  491. package/src/bun-wrappers/prometheus-gc-stats.ts +7 -0
  492. package/src/chain/ColumnReconstructionTracker.ts +90 -0
  493. package/src/chain/GetBlobsTracker.ts +115 -0
  494. package/src/chain/archiveStore/archiveStore.ts +222 -0
  495. package/src/chain/archiveStore/constants.ts +5 -0
  496. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +116 -0
  497. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +68 -0
  498. package/src/chain/archiveStore/historicalState/metrics.ts +214 -0
  499. package/src/chain/archiveStore/historicalState/types.ts +41 -0
  500. package/src/chain/archiveStore/historicalState/worker.ts +77 -0
  501. package/src/chain/archiveStore/index.ts +3 -0
  502. package/src/chain/archiveStore/interface.ts +75 -0
  503. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +138 -0
  504. package/src/chain/archiveStore/utils/archiveBlocks.ts +437 -0
  505. package/src/chain/archiveStore/utils/pruneHistory.ts +56 -0
  506. package/src/chain/archiveStore/utils/updateBackfillRange.ts +50 -0
  507. package/src/chain/balancesCache.ts +52 -0
  508. package/src/chain/beaconProposerCache.ts +43 -0
  509. package/src/chain/blocks/blockInput/blockInput.ts +851 -0
  510. package/src/chain/blocks/blockInput/errors.ts +48 -0
  511. package/src/chain/blocks/blockInput/index.ts +4 -0
  512. package/src/chain/blocks/blockInput/types.ts +145 -0
  513. package/src/chain/blocks/blockInput/utils.ts +21 -0
  514. package/src/chain/blocks/importBlock.ts +603 -0
  515. package/src/chain/blocks/index.ts +179 -0
  516. package/src/chain/blocks/types.ts +101 -0
  517. package/src/chain/blocks/utils/blowfishBanner.ts +28 -0
  518. package/src/chain/blocks/utils/chainSegment.ts +29 -0
  519. package/src/chain/blocks/utils/checkpoint.ts +25 -0
  520. package/src/chain/blocks/utils/giraffeBanner.ts +30 -0
  521. package/src/chain/blocks/utils/ownBanner.ts +20 -0
  522. package/src/chain/blocks/utils/pandaMergeTransitionBanner.ts +43 -0
  523. package/src/chain/blocks/utils/zebraBanner.ts +45 -0
  524. package/src/chain/blocks/verifyBlock.ts +242 -0
  525. package/src/chain/blocks/verifyBlocksDataAvailability.ts +34 -0
  526. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +438 -0
  527. package/src/chain/blocks/verifyBlocksSanityChecks.ts +129 -0
  528. package/src/chain/blocks/verifyBlocksSignatures.ts +105 -0
  529. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +114 -0
  530. package/src/chain/blocks/writeBlockInputToDb.ts +128 -0
  531. package/src/chain/bls/index.ts +4 -0
  532. package/src/chain/bls/interface.ts +68 -0
  533. package/src/chain/bls/maybeBatch.ts +45 -0
  534. package/src/chain/bls/multithread/index.ts +582 -0
  535. package/src/chain/bls/multithread/jobItem.ts +119 -0
  536. package/src/chain/bls/multithread/poolSize.ts +16 -0
  537. package/src/chain/bls/multithread/types.ts +38 -0
  538. package/src/chain/bls/multithread/utils.ts +19 -0
  539. package/src/chain/bls/multithread/worker.ts +114 -0
  540. package/src/chain/bls/singleThread.ts +87 -0
  541. package/src/chain/bls/utils.ts +30 -0
  542. package/src/chain/chain.ts +1365 -0
  543. package/src/chain/emitter.ts +113 -0
  544. package/src/chain/errors/attestationError.ts +194 -0
  545. package/src/chain/errors/attesterSlashingError.ts +11 -0
  546. package/src/chain/errors/blobSidecarError.ts +60 -0
  547. package/src/chain/errors/blockError.ts +166 -0
  548. package/src/chain/errors/blsToExecutionChangeError.ts +13 -0
  549. package/src/chain/errors/dataColumnSidecarError.ts +80 -0
  550. package/src/chain/errors/gossipValidation.ts +20 -0
  551. package/src/chain/errors/index.ts +10 -0
  552. package/src/chain/errors/lightClientError.ts +30 -0
  553. package/src/chain/errors/proposerSlashingError.ts +11 -0
  554. package/src/chain/errors/syncCommitteeError.ts +36 -0
  555. package/src/chain/errors/voluntaryExitError.ts +13 -0
  556. package/src/chain/forkChoice/index.ts +112 -0
  557. package/src/chain/genesis/genesis.ts +190 -0
  558. package/src/chain/genesis/interface.ts +14 -0
  559. package/src/chain/index.ts +6 -0
  560. package/src/chain/initState.ts +221 -0
  561. package/src/chain/interface.ts +280 -0
  562. package/src/chain/lightClient/index.ts +764 -0
  563. package/src/chain/lightClient/proofs.ts +85 -0
  564. package/src/chain/lightClient/types.ts +33 -0
  565. package/src/chain/opPools/aggregatedAttestationPool.ts +1063 -0
  566. package/src/chain/opPools/attestationPool.ts +283 -0
  567. package/src/chain/opPools/index.ts +5 -0
  568. package/src/chain/opPools/opPool.ts +462 -0
  569. package/src/chain/opPools/syncCommitteeMessagePool.ts +167 -0
  570. package/src/chain/opPools/syncContributionAndProofPool.ts +240 -0
  571. package/src/chain/opPools/types.ts +35 -0
  572. package/src/chain/opPools/utils.ts +65 -0
  573. package/src/chain/options.ts +138 -0
  574. package/src/chain/prepareNextSlot.ts +277 -0
  575. package/src/chain/produceBlock/computeNewStateRoot.ts +55 -0
  576. package/src/chain/produceBlock/index.ts +2 -0
  577. package/src/chain/produceBlock/produceBlockBody.ts +797 -0
  578. package/src/chain/produceBlock/validateBlobsAndKzgCommitments.ts +54 -0
  579. package/src/chain/regen/errors.ts +30 -0
  580. package/src/chain/regen/index.ts +4 -0
  581. package/src/chain/regen/interface.ts +93 -0
  582. package/src/chain/regen/queued.ts +317 -0
  583. package/src/chain/regen/regen.ts +424 -0
  584. package/src/chain/reprocess.ts +161 -0
  585. package/src/chain/rewards/attestationsRewards.ts +196 -0
  586. package/src/chain/rewards/blockRewards.ts +150 -0
  587. package/src/chain/rewards/syncCommitteeRewards.ts +58 -0
  588. package/src/chain/seenCache/index.ts +5 -0
  589. package/src/chain/seenCache/seenAggregateAndProof.ts +120 -0
  590. package/src/chain/seenCache/seenAttestationData.ts +145 -0
  591. package/src/chain/seenCache/seenAttesters.ts +58 -0
  592. package/src/chain/seenCache/seenBlockAttesters.ts +18 -0
  593. package/src/chain/seenCache/seenBlockProposers.ts +48 -0
  594. package/src/chain/seenCache/seenCommittee.ts +43 -0
  595. package/src/chain/seenCache/seenCommitteeContribution.ts +104 -0
  596. package/src/chain/seenCache/seenGossipBlockInput.ts +373 -0
  597. package/src/chain/serializeState.ts +32 -0
  598. package/src/chain/shufflingCache.ts +238 -0
  599. package/src/chain/stateCache/blockStateCacheImpl.ts +150 -0
  600. package/src/chain/stateCache/datastore/db.ts +36 -0
  601. package/src/chain/stateCache/datastore/file.ts +53 -0
  602. package/src/chain/stateCache/datastore/index.ts +2 -0
  603. package/src/chain/stateCache/datastore/types.ts +13 -0
  604. package/src/chain/stateCache/fifoBlockStateCache.ts +208 -0
  605. package/src/chain/stateCache/inMemoryCheckpointsCache.ts +198 -0
  606. package/src/chain/stateCache/index.ts +3 -0
  607. package/src/chain/stateCache/mapMetrics.ts +52 -0
  608. package/src/chain/stateCache/persistentCheckpointsCache.ts +835 -0
  609. package/src/chain/stateCache/types.ts +86 -0
  610. package/src/chain/validation/aggregateAndProof.ts +258 -0
  611. package/src/chain/validation/attestation.ts +885 -0
  612. package/src/chain/validation/attesterSlashing.ts +61 -0
  613. package/src/chain/validation/blobSidecar.ts +301 -0
  614. package/src/chain/validation/block.ts +188 -0
  615. package/src/chain/validation/blsToExecutionChange.ts +61 -0
  616. package/src/chain/validation/dataColumnSidecar.ts +381 -0
  617. package/src/chain/validation/index.ts +9 -0
  618. package/src/chain/validation/lightClientFinalityUpdate.ts +45 -0
  619. package/src/chain/validation/lightClientOptimisticUpdate.ts +67 -0
  620. package/src/chain/validation/proposerSlashing.ts +54 -0
  621. package/src/chain/validation/signatureSets/aggregateAndProof.ts +38 -0
  622. package/src/chain/validation/signatureSets/contributionAndProof.ts +27 -0
  623. package/src/chain/validation/signatureSets/index.ts +6 -0
  624. package/src/chain/validation/signatureSets/selectionProof.ts +27 -0
  625. package/src/chain/validation/signatureSets/syncCommittee.ts +22 -0
  626. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +18 -0
  627. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +27 -0
  628. package/src/chain/validation/syncCommittee.ts +165 -0
  629. package/src/chain/validation/syncCommitteeContributionAndProof.ts +122 -0
  630. package/src/chain/validation/voluntaryExit.ts +58 -0
  631. package/src/chain/validatorMonitor.ts +1299 -0
  632. package/src/constants/constants.ts +15 -0
  633. package/src/constants/index.ts +2 -0
  634. package/src/constants/network.ts +52 -0
  635. package/src/db/beacon.ts +113 -0
  636. package/src/db/buckets.ts +80 -0
  637. package/src/db/index.ts +2 -0
  638. package/src/db/interface.ts +76 -0
  639. package/src/db/options.ts +7 -0
  640. package/src/db/repositories/attesterSlashing.ts +38 -0
  641. package/src/db/repositories/backfilledRanges.ts +29 -0
  642. package/src/db/repositories/blobSidecars.ts +37 -0
  643. package/src/db/repositories/blobSidecarsArchive.ts +28 -0
  644. package/src/db/repositories/block.ts +33 -0
  645. package/src/db/repositories/blockArchive.ts +170 -0
  646. package/src/db/repositories/blockArchiveIndex.ts +45 -0
  647. package/src/db/repositories/blsToExecutionChange.ts +16 -0
  648. package/src/db/repositories/checkpointState.ts +31 -0
  649. package/src/db/repositories/dataColumnSidecar.ts +49 -0
  650. package/src/db/repositories/dataColumnSidecarArchive.ts +56 -0
  651. package/src/db/repositories/depositDataRoot.ts +80 -0
  652. package/src/db/repositories/depositEvent.ts +32 -0
  653. package/src/db/repositories/eth1Data.ts +33 -0
  654. package/src/db/repositories/index.ts +20 -0
  655. package/src/db/repositories/lightclientBestUpdate.ts +41 -0
  656. package/src/db/repositories/lightclientCheckpointHeader.ts +32 -0
  657. package/src/db/repositories/lightclientSyncCommittee.ts +16 -0
  658. package/src/db/repositories/lightclientSyncCommitteeWitness.ts +77 -0
  659. package/src/db/repositories/proposerSlashing.ts +15 -0
  660. package/src/db/repositories/stateArchive.ts +69 -0
  661. package/src/db/repositories/stateArchiveIndex.ts +18 -0
  662. package/src/db/repositories/voluntaryExit.ts +15 -0
  663. package/src/db/single/index.ts +2 -0
  664. package/src/db/single/preGenesisState.ts +37 -0
  665. package/src/db/single/preGenesisStateLastProcessedBlock.ts +34 -0
  666. package/src/eth1/errors.ts +40 -0
  667. package/src/eth1/eth1DataCache.ts +26 -0
  668. package/src/eth1/eth1DepositDataTracker.ts +410 -0
  669. package/src/eth1/eth1DepositsCache.ts +141 -0
  670. package/src/eth1/eth1MergeBlockTracker.ts +328 -0
  671. package/src/eth1/index.ts +157 -0
  672. package/src/eth1/interface.ts +131 -0
  673. package/src/eth1/options.ts +28 -0
  674. package/src/eth1/provider/eth1Provider.ts +229 -0
  675. package/src/eth1/provider/jsonRpcHttpClient.ts +390 -0
  676. package/src/eth1/provider/jwt.ts +36 -0
  677. package/src/eth1/provider/utils.ts +136 -0
  678. package/src/eth1/stream.ts +75 -0
  679. package/src/eth1/utils/depositContract.ts +37 -0
  680. package/src/eth1/utils/deposits.ts +70 -0
  681. package/src/eth1/utils/eth1Data.ts +100 -0
  682. package/src/eth1/utils/eth1DepositEvent.ts +12 -0
  683. package/src/eth1/utils/eth1Vote.ts +142 -0
  684. package/src/eth1/utils/groupDepositEventsByBlock.ts +19 -0
  685. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +18 -0
  686. package/src/execution/builder/cache.ts +39 -0
  687. package/src/execution/builder/http.ts +229 -0
  688. package/src/execution/builder/index.ts +27 -0
  689. package/src/execution/builder/interface.ts +49 -0
  690. package/src/execution/builder/utils.ts +19 -0
  691. package/src/execution/engine/disabled.ts +35 -0
  692. package/src/execution/engine/http.ts +644 -0
  693. package/src/execution/engine/index.ts +63 -0
  694. package/src/execution/engine/interface.ts +199 -0
  695. package/src/execution/engine/mock.ts +493 -0
  696. package/src/execution/engine/payloadIdCache.ts +54 -0
  697. package/src/execution/engine/types.ts +640 -0
  698. package/src/execution/engine/utils.ts +136 -0
  699. package/src/execution/index.ts +4 -0
  700. package/src/index.ts +20 -0
  701. package/src/metrics/index.ts +4 -0
  702. package/src/metrics/metrics/beacon.ts +390 -0
  703. package/src/metrics/metrics/lodestar.ts +1870 -0
  704. package/src/metrics/metrics.ts +43 -0
  705. package/src/metrics/nodeJsMetrics.ts +19 -0
  706. package/src/metrics/options.ts +22 -0
  707. package/src/metrics/server/http.ts +114 -0
  708. package/src/metrics/server/index.ts +1 -0
  709. package/src/metrics/utils/avgMinMax.ts +87 -0
  710. package/src/metrics/utils/gauge.ts +22 -0
  711. package/src/metrics/utils/registryMetricCreator.ts +41 -0
  712. package/src/monitoring/clientStats.ts +297 -0
  713. package/src/monitoring/index.ts +2 -0
  714. package/src/monitoring/options.ts +19 -0
  715. package/src/monitoring/properties.ts +152 -0
  716. package/src/monitoring/service.ts +235 -0
  717. package/src/monitoring/system.ts +146 -0
  718. package/src/monitoring/types.ts +21 -0
  719. package/src/network/core/events.ts +59 -0
  720. package/src/network/core/index.ts +3 -0
  721. package/src/network/core/metrics.ts +304 -0
  722. package/src/network/core/networkCore.ts +599 -0
  723. package/src/network/core/networkCoreWorker.ts +176 -0
  724. package/src/network/core/networkCoreWorkerHandler.ts +284 -0
  725. package/src/network/core/types.ts +119 -0
  726. package/src/network/discv5/index.ts +132 -0
  727. package/src/network/discv5/types.ts +74 -0
  728. package/src/network/discv5/utils.ts +50 -0
  729. package/src/network/discv5/worker.ts +137 -0
  730. package/src/network/events.ts +51 -0
  731. package/src/network/forks.ts +94 -0
  732. package/src/network/gossip/constants.ts +15 -0
  733. package/src/network/gossip/encoding.ts +111 -0
  734. package/src/network/gossip/errors.ts +7 -0
  735. package/src/network/gossip/gossipsub.ts +384 -0
  736. package/src/network/gossip/index.ts +4 -0
  737. package/src/network/gossip/interface.ts +215 -0
  738. package/src/network/gossip/metrics.ts +71 -0
  739. package/src/network/gossip/scoringParameters.ts +333 -0
  740. package/src/network/gossip/topic.ts +332 -0
  741. package/src/network/index.ts +8 -0
  742. package/src/network/interface.ts +134 -0
  743. package/src/network/libp2p/error.ts +55 -0
  744. package/src/network/libp2p/index.ts +153 -0
  745. package/src/network/metadata.ts +162 -0
  746. package/src/network/network.ts +767 -0
  747. package/src/network/networkConfig.ts +12 -0
  748. package/src/network/options.ts +70 -0
  749. package/src/network/peers/client.ts +29 -0
  750. package/src/network/peers/datastore.ts +188 -0
  751. package/src/network/peers/discover.ts +647 -0
  752. package/src/network/peers/index.ts +2 -0
  753. package/src/network/peers/peerManager.ts +899 -0
  754. package/src/network/peers/peersData.ts +65 -0
  755. package/src/network/peers/score/constants.ts +34 -0
  756. package/src/network/peers/score/index.ts +4 -0
  757. package/src/network/peers/score/interface.ts +74 -0
  758. package/src/network/peers/score/score.ts +200 -0
  759. package/src/network/peers/score/store.ts +95 -0
  760. package/src/network/peers/score/utils.ts +37 -0
  761. package/src/network/peers/utils/assertPeerRelevance.ts +99 -0
  762. package/src/network/peers/utils/enrSubnetsDeserialize.ts +27 -0
  763. package/src/network/peers/utils/getConnectedPeerIds.ts +33 -0
  764. package/src/network/peers/utils/index.ts +4 -0
  765. package/src/network/peers/utils/prioritizePeers.ts +627 -0
  766. package/src/network/peers/utils/subnetMap.ts +88 -0
  767. package/src/network/processor/aggregatorTracker.ts +38 -0
  768. package/src/network/processor/extractSlotRootFns.ts +64 -0
  769. package/src/network/processor/gossipHandlers.ts +951 -0
  770. package/src/network/processor/gossipQueues/index.ts +114 -0
  771. package/src/network/processor/gossipQueues/indexed.ts +219 -0
  772. package/src/network/processor/gossipQueues/linear.ts +162 -0
  773. package/src/network/processor/gossipQueues/types.ts +57 -0
  774. package/src/network/processor/gossipValidatorFn.ts +142 -0
  775. package/src/network/processor/index.ts +496 -0
  776. package/src/network/processor/types.ts +27 -0
  777. package/src/network/reqresp/ReqRespBeaconNode.ts +373 -0
  778. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +101 -0
  779. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +49 -0
  780. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +114 -0
  781. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +62 -0
  782. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +144 -0
  783. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +88 -0
  784. package/src/network/reqresp/handlers/index.ts +78 -0
  785. package/src/network/reqresp/handlers/lightClientBootstrap.ts +31 -0
  786. package/src/network/reqresp/handlers/lightClientFinalityUpdate.ts +21 -0
  787. package/src/network/reqresp/handlers/lightClientOptimisticUpdate.ts +21 -0
  788. package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +39 -0
  789. package/src/network/reqresp/index.ts +2 -0
  790. package/src/network/reqresp/interface.ts +45 -0
  791. package/src/network/reqresp/protocols.ts +146 -0
  792. package/src/network/reqresp/rateLimit.ts +112 -0
  793. package/src/network/reqresp/score.ts +70 -0
  794. package/src/network/reqresp/types.ts +174 -0
  795. package/src/network/reqresp/utils/collect.ts +84 -0
  796. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +57 -0
  797. package/src/network/reqresp/utils/dataColumnResponseValidation.ts +99 -0
  798. package/src/network/statusCache.ts +17 -0
  799. package/src/network/subnets/attnetsService.ts +385 -0
  800. package/src/network/subnets/index.ts +2 -0
  801. package/src/network/subnets/interface.ts +66 -0
  802. package/src/network/subnets/syncnetsService.ts +147 -0
  803. package/src/network/subnets/util.ts +63 -0
  804. package/src/network/util.ts +29 -0
  805. package/src/node/index.ts +2 -0
  806. package/src/node/nodejs.ts +349 -0
  807. package/src/node/notifier.ts +206 -0
  808. package/src/node/options.ts +51 -0
  809. package/src/node/utils/interop/deposits.ts +53 -0
  810. package/src/node/utils/interop/state.ts +59 -0
  811. package/src/node/utils/lightclient.ts +7 -0
  812. package/src/node/utils/state.ts +37 -0
  813. package/src/sync/backfill/backfill.ts +893 -0
  814. package/src/sync/backfill/errors.ts +23 -0
  815. package/src/sync/backfill/index.ts +1 -0
  816. package/src/sync/backfill/verify.ts +58 -0
  817. package/src/sync/constants.ts +71 -0
  818. package/src/sync/index.ts +2 -0
  819. package/src/sync/interface.ts +55 -0
  820. package/src/sync/options.ts +45 -0
  821. package/src/sync/range/batch.ts +455 -0
  822. package/src/sync/range/chain.ts +715 -0
  823. package/src/sync/range/range.ts +354 -0
  824. package/src/sync/range/utils/batches.ts +119 -0
  825. package/src/sync/range/utils/chainTarget.ts +62 -0
  826. package/src/sync/range/utils/hashBlocks.ts +27 -0
  827. package/src/sync/range/utils/index.ts +5 -0
  828. package/src/sync/range/utils/peerBalancer.ts +184 -0
  829. package/src/sync/range/utils/updateChains.ts +66 -0
  830. package/src/sync/sync.ts +290 -0
  831. package/src/sync/types.ts +57 -0
  832. package/src/sync/unknownBlock.ts +859 -0
  833. package/src/sync/utils/downloadByRange.ts +808 -0
  834. package/src/sync/utils/downloadByRoot.ts +560 -0
  835. package/src/sync/utils/pendingBlocksTree.ts +97 -0
  836. package/src/sync/utils/remoteSyncType.ts +144 -0
  837. package/src/util/address.ts +3 -0
  838. package/src/util/array.ts +311 -0
  839. package/src/util/asyncIterableToEvents.ts +164 -0
  840. package/src/util/binarySearch.ts +48 -0
  841. package/src/util/bitArray.ts +84 -0
  842. package/src/util/blobs.ts +210 -0
  843. package/src/util/bufferPool.ts +95 -0
  844. package/src/util/bytes.ts +11 -0
  845. package/src/util/chunkify.ts +27 -0
  846. package/src/util/clock.ts +204 -0
  847. package/src/util/dataColumns.ts +415 -0
  848. package/src/util/dependentRoot.ts +47 -0
  849. package/src/util/enum.ts +17 -0
  850. package/src/util/error.ts +56 -0
  851. package/src/util/eventLoop.ts +22 -0
  852. package/src/util/execution.ts +223 -0
  853. package/src/util/file.ts +52 -0
  854. package/src/util/forkChoice.ts +5 -0
  855. package/src/util/forkName.ts +20 -0
  856. package/src/util/graffiti.ts +39 -0
  857. package/src/util/hex.ts +9 -0
  858. package/src/util/index.ts +2 -0
  859. package/src/util/ip.ts +6 -0
  860. package/src/util/itTrigger.ts +49 -0
  861. package/src/util/kzg.ts +3 -0
  862. package/src/util/map.ts +77 -0
  863. package/src/util/metadata.ts +22 -0
  864. package/src/util/multifork.ts +69 -0
  865. package/src/util/numpy.ts +8 -0
  866. package/src/util/peerId.ts +16 -0
  867. package/src/util/profile.ts +54 -0
  868. package/src/util/promises.ts +14 -0
  869. package/src/util/queue/errors.ts +14 -0
  870. package/src/util/queue/fnQueue.ts +16 -0
  871. package/src/util/queue/index.ts +4 -0
  872. package/src/util/queue/itemQueue.ts +128 -0
  873. package/src/util/queue/options.ts +37 -0
  874. package/src/util/serializedCache.ts +20 -0
  875. package/src/util/set.ts +62 -0
  876. package/src/util/shuffle.ts +21 -0
  877. package/src/util/sortBy.ts +19 -0
  878. package/src/util/sszBytes.ts +481 -0
  879. package/src/util/strictEvents.ts +8 -0
  880. package/src/util/time.ts +13 -0
  881. package/src/util/timeSeries.ts +118 -0
  882. package/src/util/types.ts +31 -0
  883. package/src/util/workerEvents.ts +142 -0
  884. package/src/util/wrapError.ts +27 -0
@@ -0,0 +1,381 @@
1
+ import {ChainConfig} from "@lodestar/config";
2
+ import {
3
+ KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH,
4
+ KZG_COMMITMENTS_SUBTREE_INDEX,
5
+ NUMBER_OF_COLUMNS,
6
+ } from "@lodestar/params";
7
+ import {computeStartSlotAtEpoch, getBlockHeaderProposerSignatureSet} from "@lodestar/state-transition";
8
+ import {Root, Slot, SubnetID, fulu, ssz} from "@lodestar/types";
9
+ import {toRootHex, verifyMerkleBranch} from "@lodestar/utils";
10
+ import {Metrics} from "../../metrics/metrics.js";
11
+ import {kzg} from "../../util/kzg.js";
12
+ import {
13
+ DataColumnSidecarErrorCode,
14
+ DataColumnSidecarGossipError,
15
+ DataColumnSidecarValidationError,
16
+ } from "../errors/dataColumnSidecarError.js";
17
+ import {GossipAction} from "../errors/gossipValidation.js";
18
+ import {IBeaconChain} from "../interface.js";
19
+ import {RegenCaller} from "../regen/interface.js";
20
+
21
+ // SPEC FUNCTION
22
+ // https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#data_column_sidecar_subnet_id
23
+ export async function validateGossipDataColumnSidecar(
24
+ chain: IBeaconChain,
25
+ dataColumnSidecar: fulu.DataColumnSidecar,
26
+ gossipSubnet: SubnetID,
27
+ metrics: Metrics | null
28
+ ): Promise<void> {
29
+ const blockHeader = dataColumnSidecar.signedBlockHeader.message;
30
+
31
+ // 1) [REJECT] The sidecar is valid as verified by verify_data_column_sidecar
32
+ verifyDataColumnSidecar(dataColumnSidecar);
33
+
34
+ // 2) [REJECT] The sidecar is for the correct subnet -- i.e. compute_subnet_for_data_column_sidecar(sidecar.index) == subnet_id
35
+ if (computeSubnetForDataColumnSidecar(chain.config, dataColumnSidecar) !== gossipSubnet) {
36
+ throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
37
+ code: DataColumnSidecarErrorCode.INVALID_SUBNET,
38
+ columnIdx: dataColumnSidecar.index,
39
+ gossipSubnet: gossipSubnet,
40
+ });
41
+ }
42
+
43
+ // 3) [IGNORE] The sidecar is not from a future slot (with a MAXIMUM_GOSSIP_CLOCK_DISPARITY allowance)
44
+ // -- i.e. validate that sidecar.slot <= current_slot (a client MAY queue future blocks
45
+ // for processing at the appropriate slot).
46
+ const currentSlotWithGossipDisparity = chain.clock.currentSlotWithGossipDisparity;
47
+ if (currentSlotWithGossipDisparity < blockHeader.slot) {
48
+ throw new DataColumnSidecarGossipError(GossipAction.IGNORE, {
49
+ code: DataColumnSidecarErrorCode.FUTURE_SLOT,
50
+ currentSlot: currentSlotWithGossipDisparity,
51
+ blockSlot: blockHeader.slot,
52
+ });
53
+ }
54
+
55
+ // 4) [IGNORE] The sidecar is from a slot greater than the latest finalized slot -- i.e. validate that
56
+ // sidecar.slot > compute_start_slot_at_epoch(state.finalized_checkpoint.epoch)
57
+ const finalizedCheckpoint = chain.forkChoice.getFinalizedCheckpoint();
58
+ const finalizedSlot = computeStartSlotAtEpoch(finalizedCheckpoint.epoch);
59
+ if (blockHeader.slot <= finalizedSlot) {
60
+ throw new DataColumnSidecarGossipError(GossipAction.IGNORE, {
61
+ code: DataColumnSidecarErrorCode.WOULD_REVERT_FINALIZED_SLOT,
62
+ blockSlot: blockHeader.slot,
63
+ finalizedSlot,
64
+ });
65
+ }
66
+
67
+ // 6) [IGNORE] The sidecar's block's parent (defined by block_header.parent_root) has been seen (via gossip
68
+ // or non-gossip sources)
69
+ const parentRoot = toRootHex(blockHeader.parentRoot);
70
+ const parentBlock = chain.forkChoice.getBlockHex(parentRoot);
71
+ if (parentBlock === null) {
72
+ // If fork choice does *not* consider the parent to be a descendant of the finalized block,
73
+ // then there are two more cases:
74
+ //
75
+ // 1. We have the parent stored in our database. Because fork-choice has confirmed the
76
+ // parent is *not* in our post-finalization DAG, all other blocks must be either
77
+ // pre-finalization or conflicting with finalization.
78
+ // 2. The parent is unknown to us, we probably want to download it since it might actually
79
+ // descend from the finalized root.
80
+ // (Non-Lighthouse): Since we prune all blocks non-descendant from finalized checking the `db.block` database won't be useful to guard
81
+ // against known bad fork blocks, so we throw PARENT_UNKNOWN for cases (1) and (2)
82
+ throw new DataColumnSidecarGossipError(GossipAction.IGNORE, {
83
+ code: DataColumnSidecarErrorCode.PARENT_UNKNOWN,
84
+ parentRoot,
85
+ });
86
+ }
87
+
88
+ // 8) [REJECT] The sidecar is from a higher slot than the sidecar's block's parent
89
+ if (parentBlock.slot >= blockHeader.slot) {
90
+ throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
91
+ code: DataColumnSidecarErrorCode.NOT_LATER_THAN_PARENT,
92
+ parentSlot: parentBlock.slot,
93
+ slot: blockHeader.slot,
94
+ });
95
+ }
96
+
97
+ // getBlockSlotState also checks for whether the current finalized checkpoint is an ancestor of the block.
98
+ // As a result, we throw an IGNORE (whereas the spec says we should REJECT for this scenario).
99
+ // this is something we should change this in the future to make the code airtight to the spec.
100
+ // 7) [REJECT] The sidecar's block's parent passes validation.
101
+ const blockState = await chain.regen
102
+ .getBlockSlotState(parentRoot, blockHeader.slot, {dontTransferCache: true}, RegenCaller.validateGossipBlock)
103
+ .catch(() => {
104
+ throw new DataColumnSidecarGossipError(GossipAction.IGNORE, {
105
+ code: DataColumnSidecarErrorCode.PARENT_UNKNOWN,
106
+ parentRoot,
107
+ });
108
+ });
109
+
110
+ // 13) [REJECT] The sidecar is proposed by the expected proposer_index for the block's slot in the context of the current
111
+ // shuffling (defined by block_header.parent_root/block_header.slot). If the proposer_index cannot
112
+ // immediately be verified against the expected shuffling, the sidecar MAY be queued for later processing
113
+ // while proposers for the block's branch are calculated -- in such a case do not REJECT, instead IGNORE
114
+ // this message.
115
+ const proposerIndex = blockHeader.proposerIndex;
116
+ const expectedProposerIndex = blockState.epochCtx.getBeaconProposer(blockHeader.slot);
117
+
118
+ if (proposerIndex !== expectedProposerIndex) {
119
+ throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
120
+ code: DataColumnSidecarErrorCode.INCORRECT_PROPOSER,
121
+ actualProposerIndex: proposerIndex,
122
+ expectedProposerIndex,
123
+ });
124
+ }
125
+
126
+ // 5) [REJECT] The proposer signature of sidecar.signed_block_header, is valid with respect to the block_header.proposer_index pubkey.
127
+ const signatureSet = getBlockHeaderProposerSignatureSet(blockState, dataColumnSidecar.signedBlockHeader);
128
+ // Don't batch so verification is not delayed
129
+ if (
130
+ !(await chain.bls.verifySignatureSets([signatureSet], {
131
+ verifyOnMainThread: blockHeader.slot > chain.forkChoice.getHead().slot,
132
+ }))
133
+ ) {
134
+ throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
135
+ code: DataColumnSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID,
136
+ });
137
+ }
138
+
139
+ // 9) [REJECT] The current finalized_checkpoint is an ancestor of the sidecar's block
140
+ // -- i.e. get_checkpoint_block(store, block_header.parent_root, store.finalized_checkpoint.epoch)
141
+ // == store.finalized_checkpoint.root
142
+ // Handled by 7)
143
+
144
+ // 10) [REJECT] The sidecar's kzg_commitments field inclusion proof is valid as verified by
145
+ // verify_data_column_sidecar_inclusion_proof
146
+ // TODO: Can cache result on (commitments, proof, header) in the future
147
+ const timer = metrics?.peerDas.dataColumnSidecarInclusionProofVerificationTime.startTimer();
148
+ const valid = verifyDataColumnSidecarInclusionProof(dataColumnSidecar);
149
+ timer?.();
150
+
151
+ if (!valid) {
152
+ throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
153
+ code: DataColumnSidecarErrorCode.INCLUSION_PROOF_INVALID,
154
+ slot: dataColumnSidecar.signedBlockHeader.message.slot,
155
+ columnIdx: dataColumnSidecar.index,
156
+ });
157
+ }
158
+
159
+ const kzgProofTimer = metrics?.peerDas.dataColumnSidecarKzgProofsVerificationTime.startTimer();
160
+ // 11) [REJECT] The sidecar's column data is valid as verified by verify_data_column_sidecar_kzg_proofs
161
+ try {
162
+ await verifyDataColumnSidecarKzgProofs(
163
+ dataColumnSidecar.kzgCommitments,
164
+ Array.from({length: dataColumnSidecar.column.length}, () => dataColumnSidecar.index),
165
+ dataColumnSidecar.column,
166
+ dataColumnSidecar.kzgProofs
167
+ );
168
+ } catch {
169
+ throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
170
+ code: DataColumnSidecarErrorCode.INVALID_KZG_PROOF,
171
+ slot: blockHeader.slot,
172
+ columnIdx: dataColumnSidecar.index,
173
+ });
174
+ } finally {
175
+ kzgProofTimer?.();
176
+ }
177
+
178
+ // 12) [IGNORE] The sidecar is the first sidecar for the tuple (block_header.slot, block_header.proposer_index,
179
+ // sidecar.index) with valid header signature, sidecar inclusion proof, and kzg proof
180
+ // -- Handled in seenGossipBlockInput
181
+ }
182
+
183
+ /**
184
+ * SPEC FUNCTION
185
+ * https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#verify_data_column_sidecar
186
+ */
187
+ function verifyDataColumnSidecar(dataColumnSidecar: fulu.DataColumnSidecar): void {
188
+ if (dataColumnSidecar.index >= NUMBER_OF_COLUMNS) {
189
+ throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
190
+ code: DataColumnSidecarErrorCode.INVALID_INDEX,
191
+ slot: dataColumnSidecar.signedBlockHeader.message.slot,
192
+ columnIdx: dataColumnSidecar.index,
193
+ });
194
+ }
195
+
196
+ if (dataColumnSidecar.kzgCommitments.length === 0) {
197
+ throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
198
+ code: DataColumnSidecarErrorCode.NO_COMMITMENTS,
199
+ slot: dataColumnSidecar.signedBlockHeader.message.slot,
200
+ columnIdx: dataColumnSidecar.index,
201
+ });
202
+ }
203
+
204
+ if (
205
+ dataColumnSidecar.column.length !== dataColumnSidecar.kzgCommitments.length ||
206
+ dataColumnSidecar.column.length !== dataColumnSidecar.kzgProofs.length
207
+ ) {
208
+ throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
209
+ code: DataColumnSidecarErrorCode.MISMATCHED_LENGTHS,
210
+ columnLength: dataColumnSidecar.column.length,
211
+ commitmentsLength: dataColumnSidecar.kzgCommitments.length,
212
+ proofsLength: dataColumnSidecar.kzgProofs.length,
213
+ });
214
+ }
215
+ }
216
+
217
+ /**
218
+ * SPEC FUNCTION
219
+ * https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#verify_data_column_sidecar_kzg_proofs
220
+ */
221
+ export async function verifyDataColumnSidecarKzgProofs(
222
+ commitments: Uint8Array[],
223
+ cellIndices: number[],
224
+ cells: Uint8Array[],
225
+ proofs: Uint8Array[]
226
+ ): Promise<void> {
227
+ let valid: boolean;
228
+ try {
229
+ valid = await kzg.asyncVerifyCellKzgProofBatch(commitments, cellIndices, cells, proofs);
230
+ } catch (e) {
231
+ (e as Error).message = `Error on asyncVerifyCellKzgProofBatch: ${(e as Error).message}`;
232
+ throw e;
233
+ }
234
+ if (!valid) {
235
+ throw Error("Invalid verifyCellKzgProofBatch");
236
+ }
237
+ }
238
+
239
+ /**
240
+ * SPEC FUNCTION
241
+ * https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#verify_data_column_sidecar_inclusion_proof
242
+ */
243
+ export function verifyDataColumnSidecarInclusionProof(dataColumnSidecar: fulu.DataColumnSidecar): boolean {
244
+ return verifyMerkleBranch(
245
+ ssz.deneb.BlobKzgCommitments.hashTreeRoot(dataColumnSidecar.kzgCommitments),
246
+ dataColumnSidecar.kzgCommitmentsInclusionProof,
247
+ KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH,
248
+ KZG_COMMITMENTS_SUBTREE_INDEX,
249
+ dataColumnSidecar.signedBlockHeader.message.bodyRoot
250
+ );
251
+ }
252
+
253
+ /**
254
+ * Validate a subset of data column sidecars in a block
255
+ *
256
+ * Requires the block to be known to the node
257
+ */
258
+ export async function validateBlockDataColumnSidecars(
259
+ blockSlot: Slot,
260
+ blockRoot: Root,
261
+ blockBlobCount: number,
262
+ dataColumnSidecars: fulu.DataColumnSidecars
263
+ ): Promise<void> {
264
+ if (dataColumnSidecars.length === 0) {
265
+ return;
266
+ }
267
+
268
+ if (blockBlobCount === 0) {
269
+ throw new DataColumnSidecarValidationError(
270
+ {
271
+ code: DataColumnSidecarErrorCode.INCORRECT_SIDECAR_COUNT,
272
+ slot: blockSlot,
273
+ expected: 0,
274
+ actual: dataColumnSidecars.length,
275
+ },
276
+ "Block has no blob commitments but data column sidecars were provided"
277
+ );
278
+ }
279
+
280
+ // Hash the first sidecar block header and compare the rest via (cheaper) equality
281
+ const firstSidecarBlockHeader = dataColumnSidecars[0].signedBlockHeader.message;
282
+ const firstBlockRoot = ssz.phase0.BeaconBlockHeader.hashTreeRoot(firstSidecarBlockHeader);
283
+ if (Buffer.compare(blockRoot, firstBlockRoot) !== 0) {
284
+ throw new DataColumnSidecarValidationError(
285
+ {
286
+ code: DataColumnSidecarErrorCode.INCORRECT_BLOCK,
287
+ slot: blockSlot,
288
+ columnIdx: 0,
289
+ expected: toRootHex(blockRoot),
290
+ actual: toRootHex(firstBlockRoot),
291
+ },
292
+ "DataColumnSidecar doesn't match corresponding block"
293
+ );
294
+ }
295
+
296
+ const commitments: Uint8Array[] = [];
297
+ const cellIndices: number[] = [];
298
+ const cells: Uint8Array[] = [];
299
+ const proofs: Uint8Array[] = [];
300
+ for (let i = 0; i < dataColumnSidecars.length; i++) {
301
+ const columnSidecar = dataColumnSidecars[i];
302
+
303
+ if (columnSidecar.index >= NUMBER_OF_COLUMNS) {
304
+ throw new DataColumnSidecarValidationError(
305
+ {
306
+ code: DataColumnSidecarErrorCode.INVALID_INDEX,
307
+ slot: blockSlot,
308
+ columnIdx: columnSidecar.index,
309
+ },
310
+ "DataColumnSidecar has invalid index"
311
+ );
312
+ }
313
+
314
+ if (columnSidecar.kzgCommitments.length !== blockBlobCount) {
315
+ throw new DataColumnSidecarValidationError({
316
+ code: DataColumnSidecarErrorCode.INCORRECT_KZG_COMMITMENTS_COUNT,
317
+ slot: blockSlot,
318
+ columnIdx: columnSidecar.index,
319
+ expected: blockBlobCount,
320
+ actual: columnSidecar.kzgCommitments.length,
321
+ });
322
+ }
323
+
324
+ if (columnSidecar.kzgProofs.length !== columnSidecar.kzgCommitments.length) {
325
+ throw new DataColumnSidecarValidationError({
326
+ code: DataColumnSidecarErrorCode.INCORRECT_KZG_PROOF_COUNT,
327
+ slot: blockSlot,
328
+ columnIdx: columnSidecar.index,
329
+ expected: columnSidecar.kzgCommitments.length,
330
+ actual: columnSidecar.kzgProofs.length,
331
+ });
332
+ }
333
+
334
+ if (!verifyDataColumnSidecarInclusionProof(columnSidecar)) {
335
+ throw new DataColumnSidecarValidationError(
336
+ {
337
+ code: DataColumnSidecarErrorCode.INCLUSION_PROOF_INVALID,
338
+ slot: blockSlot,
339
+ columnIdx: columnSidecar.index,
340
+ },
341
+ "DataColumnSidecar has invalid inclusion proof"
342
+ );
343
+ }
344
+
345
+ commitments.push(...columnSidecar.kzgCommitments);
346
+ cellIndices.push(...Array.from({length: columnSidecar.column.length}, () => columnSidecar.index));
347
+ cells.push(...columnSidecar.column);
348
+ proofs.push(...columnSidecar.kzgProofs);
349
+ }
350
+
351
+ let reason: string | undefined;
352
+ try {
353
+ const valid = await kzg.asyncVerifyCellKzgProofBatch(commitments, cellIndices, cells, proofs);
354
+ if (!valid) {
355
+ reason = "Invalid KZG proof batch";
356
+ }
357
+ } catch (e) {
358
+ reason = (e as Error).message;
359
+ }
360
+ if (reason !== undefined) {
361
+ throw new DataColumnSidecarValidationError(
362
+ {
363
+ code: DataColumnSidecarErrorCode.INVALID_KZG_PROOF_BATCH,
364
+ slot: blockSlot,
365
+ reason,
366
+ },
367
+ "DataColumnSidecar has invalid KZG proof batch"
368
+ );
369
+ }
370
+ }
371
+
372
+ /**
373
+ * SPEC FUNCTION
374
+ * https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#compute_subnet_for_data_column_sidecar
375
+ */
376
+ export function computeSubnetForDataColumnSidecar(
377
+ config: ChainConfig,
378
+ columnSidecar: fulu.DataColumnSidecar
379
+ ): SubnetID {
380
+ return columnSidecar.index % config.DATA_COLUMN_SIDECAR_SUBNET_COUNT;
381
+ }
@@ -0,0 +1,9 @@
1
+ export * from "./aggregateAndProof.js";
2
+ export * from "./attestation.js";
3
+ export * from "./attesterSlashing.js";
4
+ export * from "./block.js";
5
+ export * from "./blsToExecutionChange.js";
6
+ export * from "./proposerSlashing.js";
7
+ export * from "./syncCommittee.js";
8
+ export * from "./syncCommitteeContributionAndProof.js";
9
+ export * from "./voluntaryExit.js";
@@ -0,0 +1,45 @@
1
+ import {ChainForkConfig} from "@lodestar/config";
2
+ import {LightClientFinalityUpdate} from "@lodestar/types";
3
+ import {assertLightClientServer} from "../../node/utils/lightclient.js";
4
+ import {GossipAction} from "../errors/index.js";
5
+ import {LightClientError, LightClientErrorCode} from "../errors/lightClientError.js";
6
+ import {IBeaconChain} from "../interface.js";
7
+ import {updateReceivedTooEarly} from "./lightClientOptimisticUpdate.js";
8
+
9
+ // https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/light-client/p2p-interface.md#light_client_finality_update
10
+ export function validateLightClientFinalityUpdate(
11
+ config: ChainForkConfig,
12
+ chain: IBeaconChain,
13
+ gossipedFinalityUpdate: LightClientFinalityUpdate
14
+ ): void {
15
+ assertLightClientServer(chain.lightClientServer);
16
+
17
+ // [IGNORE] No other finality_update with a lower or equal finalized_header.slot was already forwarded on the network
18
+ const gossipedFinalitySlot = gossipedFinalityUpdate.finalizedHeader.beacon.slot;
19
+ const localFinalityUpdate = chain.lightClientServer.getFinalityUpdate();
20
+
21
+ if (localFinalityUpdate && gossipedFinalitySlot <= localFinalityUpdate.finalizedHeader.beacon.slot) {
22
+ throw new LightClientError(GossipAction.IGNORE, {
23
+ code: LightClientErrorCode.FINALITY_UPDATE_ALREADY_FORWARDED,
24
+ });
25
+ }
26
+
27
+ // [IGNORE] The finality_update is received after the block at signature_slot was given enough time to propagate
28
+ // through the network -- i.e. validate that one-third of finality_update.signature_slot has transpired
29
+ // (SECONDS_PER_SLOT / INTERVALS_PER_SLOT seconds after the start of the slot, with a MAXIMUM_GOSSIP_CLOCK_DISPARITY allowance)
30
+ if (updateReceivedTooEarly(config, chain.genesisTime, gossipedFinalityUpdate)) {
31
+ throw new LightClientError(GossipAction.IGNORE, {
32
+ code: LightClientErrorCode.FINALITY_UPDATE_RECEIVED_TOO_EARLY,
33
+ });
34
+ }
35
+
36
+ // [IGNORE] The received finality_update matches the locally computed one exactly
37
+ const sszType = config.getPostAltairForkTypes(
38
+ gossipedFinalityUpdate.attestedHeader.beacon.slot
39
+ ).LightClientFinalityUpdate;
40
+ if (localFinalityUpdate === null || !sszType.equals(gossipedFinalityUpdate, localFinalityUpdate)) {
41
+ throw new LightClientError(GossipAction.IGNORE, {
42
+ code: LightClientErrorCode.FINALITY_UPDATE_NOT_MATCHING_LOCAL,
43
+ });
44
+ }
45
+ }
@@ -0,0 +1,67 @@
1
+ import {ChainForkConfig} from "@lodestar/config";
2
+ import {computeTimeAtSlot} from "@lodestar/state-transition";
3
+ import {LightClientOptimisticUpdate} from "@lodestar/types";
4
+ import {MAXIMUM_GOSSIP_CLOCK_DISPARITY} from "../../constants/index.js";
5
+ import {assertLightClientServer} from "../../node/utils/lightclient.js";
6
+ import {GossipAction} from "../errors/index.js";
7
+ import {LightClientError, LightClientErrorCode} from "../errors/lightClientError.js";
8
+ import {IBeaconChain} from "../interface.js";
9
+
10
+ // https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/light-client/p2p-interface.md#light_client_optimistic_update
11
+ export function validateLightClientOptimisticUpdate(
12
+ config: ChainForkConfig,
13
+ chain: IBeaconChain,
14
+ gossipedOptimisticUpdate: LightClientOptimisticUpdate
15
+ ): void {
16
+ assertLightClientServer(chain.lightClientServer);
17
+
18
+ // [IGNORE] No other optimistic_update with a lower or equal attested_header.slot was already forwarded on the network
19
+ const gossipedAttestedSlot = gossipedOptimisticUpdate.attestedHeader.beacon.slot;
20
+ const localOptimisticUpdate = chain.lightClientServer.getOptimisticUpdate();
21
+
22
+ if (localOptimisticUpdate && gossipedAttestedSlot <= localOptimisticUpdate.attestedHeader.beacon.slot) {
23
+ throw new LightClientError(GossipAction.IGNORE, {
24
+ code: LightClientErrorCode.OPTIMISTIC_UPDATE_ALREADY_FORWARDED,
25
+ });
26
+ }
27
+
28
+ // [IGNORE] The optimistic_update is received after the block at signature_slot was given enough time to propagate
29
+ // through the network -- i.e. validate that one-third of optimistic_update.signature_slot has transpired
30
+ // (SECONDS_PER_SLOT / INTERVALS_PER_SLOT seconds after the start of the slot, with a MAXIMUM_GOSSIP_CLOCK_DISPARITY allowance)
31
+ if (updateReceivedTooEarly(config, chain.genesisTime, gossipedOptimisticUpdate)) {
32
+ throw new LightClientError(GossipAction.IGNORE, {
33
+ code: LightClientErrorCode.OPTIMISTIC_UPDATE_RECEIVED_TOO_EARLY,
34
+ });
35
+ }
36
+
37
+ // [IGNORE] The received optimistic_update matches the locally computed one exactly
38
+ const sszType = config.getPostAltairForkTypes(
39
+ gossipedOptimisticUpdate.attestedHeader.beacon.slot
40
+ ).LightClientOptimisticUpdate;
41
+ if (localOptimisticUpdate === null || !sszType.equals(gossipedOptimisticUpdate, localOptimisticUpdate)) {
42
+ throw new LightClientError(GossipAction.IGNORE, {
43
+ code: LightClientErrorCode.OPTIMISTIC_UPDATE_NOT_MATCHING_LOCAL,
44
+ });
45
+ }
46
+ }
47
+
48
+ /**
49
+ * Returns true, if the spec condition below triggers an IGNORE.
50
+ *
51
+ * Sig +1/3 time
52
+ * -----|-----
53
+ * xxx|------- (x is not okay)
54
+ *
55
+ * [IGNORE] The *update is received after the block at signature_slot was given enough time to propagate
56
+ * through the network -- i.e. validate that one-third of *update.signature_slot has transpired
57
+ * (SECONDS_PER_SLOT / INTERVALS_PER_SLOT seconds after the start of the slot, with a MAXIMUM_GOSSIP_CLOCK_DISPARITY allowance)
58
+ */
59
+ export function updateReceivedTooEarly(
60
+ config: ChainForkConfig,
61
+ genesisTime: number,
62
+ update: Pick<LightClientOptimisticUpdate, "signatureSlot">
63
+ ): boolean {
64
+ const signatureSlot13TimestampMs = computeTimeAtSlot(config, update.signatureSlot + 1 / 3, genesisTime) * 1000;
65
+ const earliestAllowedTimestampMs = signatureSlot13TimestampMs - MAXIMUM_GOSSIP_CLOCK_DISPARITY;
66
+ return Date.now() < earliestAllowedTimestampMs;
67
+ }
@@ -0,0 +1,54 @@
1
+ import {assertValidProposerSlashing, getProposerSlashingSignatureSets} from "@lodestar/state-transition";
2
+ import {phase0} from "@lodestar/types";
3
+ import {GossipAction, ProposerSlashingError, ProposerSlashingErrorCode} from "../errors/index.js";
4
+ import {IBeaconChain} from "../index.js";
5
+
6
+ export async function validateApiProposerSlashing(
7
+ chain: IBeaconChain,
8
+ proposerSlashing: phase0.ProposerSlashing
9
+ ): Promise<void> {
10
+ const prioritizeBls = true;
11
+ return validateProposerSlashing(chain, proposerSlashing, prioritizeBls);
12
+ }
13
+
14
+ export async function validateGossipProposerSlashing(
15
+ chain: IBeaconChain,
16
+ proposerSlashing: phase0.ProposerSlashing
17
+ ): Promise<void> {
18
+ return validateProposerSlashing(chain, proposerSlashing);
19
+ }
20
+
21
+ async function validateProposerSlashing(
22
+ chain: IBeaconChain,
23
+ proposerSlashing: phase0.ProposerSlashing,
24
+ prioritizeBls = false
25
+ ): Promise<void> {
26
+ // [IGNORE] The proposer slashing is the first valid proposer slashing received for the proposer with index
27
+ // proposer_slashing.signed_header_1.message.proposer_index.
28
+ if (chain.opPool.hasSeenProposerSlashing(proposerSlashing.signedHeader1.message.proposerIndex)) {
29
+ throw new ProposerSlashingError(GossipAction.IGNORE, {
30
+ code: ProposerSlashingErrorCode.ALREADY_EXISTS,
31
+ });
32
+ }
33
+
34
+ const state = chain.getHeadState();
35
+
36
+ // [REJECT] All of the conditions within process_proposer_slashing pass validation.
37
+ try {
38
+ // verifySignature = false, verified in batch below
39
+ assertValidProposerSlashing(state, proposerSlashing, false);
40
+ } catch (e) {
41
+ throw new ProposerSlashingError(GossipAction.REJECT, {
42
+ code: ProposerSlashingErrorCode.INVALID,
43
+ error: e as Error,
44
+ });
45
+ }
46
+
47
+ const signatureSets = getProposerSlashingSignatureSets(state, proposerSlashing);
48
+ if (!(await chain.bls.verifySignatureSets(signatureSets, {batchable: true, priority: prioritizeBls}))) {
49
+ throw new ProposerSlashingError(GossipAction.REJECT, {
50
+ code: ProposerSlashingErrorCode.INVALID,
51
+ error: Error("Invalid signature"),
52
+ });
53
+ }
54
+ }
@@ -0,0 +1,38 @@
1
+ import {PublicKey} from "@chainsafe/blst";
2
+ import {BeaconConfig} from "@lodestar/config";
3
+ import {DOMAIN_AGGREGATE_AND_PROOF, ForkSeq} from "@lodestar/params";
4
+ import {
5
+ ISignatureSet,
6
+ computeSigningRoot,
7
+ computeStartSlotAtEpoch,
8
+ createSingleSignatureSetFromComponents,
9
+ } from "@lodestar/state-transition";
10
+ import {Epoch, SignedAggregateAndProof, ssz} from "@lodestar/types";
11
+
12
+ export function getAggregateAndProofSigningRoot(
13
+ config: BeaconConfig,
14
+ epoch: Epoch,
15
+ aggregateAndProof: SignedAggregateAndProof
16
+ ): Uint8Array {
17
+ // previously, we call `const aggregatorDomain = state.config.getDomain(state.slot, DOMAIN_AGGREGATE_AND_PROOF, slot);`
18
+ // at fork boundary, it's required to dial to target epoch https://github.com/ChainSafe/lodestar/blob/v1.11.3/packages/beacon-node/src/chain/validation/attestation.ts#L573
19
+ // instead of that, just use the fork of slot in the attestation data
20
+ const slot = computeStartSlotAtEpoch(epoch);
21
+ const fork = config.getForkName(slot);
22
+ const aggregatorDomain = config.getDomainAtFork(fork, DOMAIN_AGGREGATE_AND_PROOF);
23
+ const sszType = ForkSeq[fork] >= ForkSeq.electra ? ssz.electra.AggregateAndProof : ssz.phase0.AggregateAndProof;
24
+ return computeSigningRoot(sszType, aggregateAndProof.message, aggregatorDomain);
25
+ }
26
+
27
+ export function getAggregateAndProofSignatureSet(
28
+ config: BeaconConfig,
29
+ epoch: Epoch,
30
+ aggregator: PublicKey,
31
+ aggregateAndProof: SignedAggregateAndProof
32
+ ): ISignatureSet {
33
+ return createSingleSignatureSetFromComponents(
34
+ aggregator,
35
+ getAggregateAndProofSigningRoot(config, epoch, aggregateAndProof),
36
+ aggregateAndProof.signature
37
+ );
38
+ }
@@ -0,0 +1,27 @@
1
+ import {DOMAIN_CONTRIBUTION_AND_PROOF} from "@lodestar/params";
2
+ import {
3
+ CachedBeaconStateAllForks,
4
+ ISignatureSet,
5
+ SignatureSetType,
6
+ computeSigningRoot,
7
+ } from "@lodestar/state-transition";
8
+ import {altair, ssz} from "@lodestar/types";
9
+
10
+ export function getContributionAndProofSignatureSet(
11
+ state: CachedBeaconStateAllForks,
12
+ signedContributionAndProof: altair.SignedContributionAndProof
13
+ ): ISignatureSet {
14
+ const {epochCtx} = state;
15
+ const domain = state.config.getDomain(
16
+ state.slot,
17
+ DOMAIN_CONTRIBUTION_AND_PROOF,
18
+ signedContributionAndProof.message.contribution.slot
19
+ );
20
+ const signingData = signedContributionAndProof.message;
21
+ return {
22
+ type: SignatureSetType.single,
23
+ pubkey: epochCtx.index2pubkey[signedContributionAndProof.message.aggregatorIndex],
24
+ signingRoot: computeSigningRoot(ssz.altair.ContributionAndProof, signingData, domain),
25
+ signature: signedContributionAndProof.signature,
26
+ };
27
+ }
@@ -0,0 +1,6 @@
1
+ export * from "./aggregateAndProof.js";
2
+ export * from "./contributionAndProof.js";
3
+ export * from "./selectionProof.js";
4
+ export * from "./syncCommittee.js";
5
+ export * from "./syncCommitteeContribution.js";
6
+ export * from "./syncCommitteeSelectionProof.js";
@@ -0,0 +1,27 @@
1
+ import {PublicKey} from "@chainsafe/blst";
2
+ import {BeaconConfig} from "@lodestar/config";
3
+ import {DOMAIN_SELECTION_PROOF} from "@lodestar/params";
4
+ import {ISignatureSet, computeSigningRoot, createSingleSignatureSetFromComponents} from "@lodestar/state-transition";
5
+ import {Slot, phase0, ssz} from "@lodestar/types";
6
+
7
+ export function getSelectionProofSigningRoot(config: BeaconConfig, slot: Slot): Uint8Array {
8
+ // previously, we call `const selectionProofDomain = config.getDomain(state.slot, DOMAIN_SELECTION_PROOF, slot)`
9
+ // at fork boundary, it's required to dial to target epoch https://github.com/ChainSafe/lodestar/blob/v1.11.3/packages/beacon-node/src/chain/validation/attestation.ts#L573
10
+ // instead of that, just use the fork of slot in the attestation data
11
+ const fork = config.getForkName(slot);
12
+ const selectionProofDomain = config.getDomainAtFork(fork, DOMAIN_SELECTION_PROOF);
13
+ return computeSigningRoot(ssz.Slot, slot, selectionProofDomain);
14
+ }
15
+
16
+ export function getSelectionProofSignatureSet(
17
+ config: BeaconConfig,
18
+ slot: Slot,
19
+ aggregator: PublicKey,
20
+ aggregateAndProof: phase0.SignedAggregateAndProof
21
+ ): ISignatureSet {
22
+ return createSingleSignatureSetFromComponents(
23
+ aggregator,
24
+ getSelectionProofSigningRoot(config, slot),
25
+ aggregateAndProof.message.selectionProof
26
+ );
27
+ }