@lodestar/beacon-node 1.35.0-dev.8689cc3545 → 1.35.0-dev.8b45b1e978

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 (863) hide show
  1. package/lib/db/buckets.d.ts +4 -4
  2. package/lib/db/buckets.js +4 -4
  3. package/lib/db/buckets.js.map +1 -1
  4. package/lib/db/repositories/blobSidecars.js +1 -1
  5. package/lib/db/repositories/blobSidecars.js.map +1 -1
  6. package/lib/db/repositories/blobSidecarsArchive.js +1 -1
  7. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  8. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  9. package/lib/db/repositories/dataColumnSidecar.js +1 -1
  10. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  11. package/lib/db/repositories/dataColumnSidecarArchive.js +1 -1
  12. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  13. package/lib/network/network.js +4 -2
  14. package/lib/network/network.js.map +1 -1
  15. package/lib/util/blobs.js +3 -5
  16. package/lib/util/blobs.js.map +1 -1
  17. package/package.json +20 -18
  18. package/lib/api/impl/api.d.ts.map +0 -1
  19. package/lib/api/impl/beacon/blocks/index.d.ts.map +0 -1
  20. package/lib/api/impl/beacon/blocks/utils.d.ts.map +0 -1
  21. package/lib/api/impl/beacon/index.d.ts.map +0 -1
  22. package/lib/api/impl/beacon/pool/index.d.ts.map +0 -1
  23. package/lib/api/impl/beacon/rewards/index.d.ts.map +0 -1
  24. package/lib/api/impl/beacon/state/index.d.ts.map +0 -1
  25. package/lib/api/impl/beacon/state/utils.d.ts.map +0 -1
  26. package/lib/api/impl/config/constants.d.ts.map +0 -1
  27. package/lib/api/impl/config/index.d.ts.map +0 -1
  28. package/lib/api/impl/debug/index.d.ts.map +0 -1
  29. package/lib/api/impl/errors.d.ts.map +0 -1
  30. package/lib/api/impl/events/index.d.ts.map +0 -1
  31. package/lib/api/impl/index.d.ts.map +0 -1
  32. package/lib/api/impl/lightclient/index.d.ts.map +0 -1
  33. package/lib/api/impl/lodestar/index.d.ts.map +0 -1
  34. package/lib/api/impl/node/index.d.ts.map +0 -1
  35. package/lib/api/impl/node/utils.d.ts.map +0 -1
  36. package/lib/api/impl/proof/index.d.ts.map +0 -1
  37. package/lib/api/impl/types.d.ts.map +0 -1
  38. package/lib/api/impl/utils.d.ts.map +0 -1
  39. package/lib/api/impl/validator/index.d.ts.map +0 -1
  40. package/lib/api/impl/validator/utils.d.ts.map +0 -1
  41. package/lib/api/index.d.ts.map +0 -1
  42. package/lib/api/options.d.ts.map +0 -1
  43. package/lib/api/rest/activeSockets.d.ts.map +0 -1
  44. package/lib/api/rest/base.d.ts.map +0 -1
  45. package/lib/api/rest/index.d.ts.map +0 -1
  46. package/lib/api/rest/swaggerUI.d.ts.map +0 -1
  47. package/lib/bun-wrappers/prometheus-gc-stats.d.ts.map +0 -1
  48. package/lib/chain/ColumnReconstructionTracker.d.ts.map +0 -1
  49. package/lib/chain/GetBlobsTracker.d.ts.map +0 -1
  50. package/lib/chain/archiveStore/archiveStore.d.ts.map +0 -1
  51. package/lib/chain/archiveStore/constants.d.ts.map +0 -1
  52. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +0 -1
  53. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +0 -1
  54. package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +0 -1
  55. package/lib/chain/archiveStore/historicalState/types.d.ts.map +0 -1
  56. package/lib/chain/archiveStore/historicalState/worker.d.ts.map +0 -1
  57. package/lib/chain/archiveStore/index.d.ts.map +0 -1
  58. package/lib/chain/archiveStore/interface.d.ts.map +0 -1
  59. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +0 -1
  60. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +0 -1
  61. package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +0 -1
  62. package/lib/chain/archiveStore/utils/updateBackfillRange.d.ts.map +0 -1
  63. package/lib/chain/balancesCache.d.ts.map +0 -1
  64. package/lib/chain/beaconProposerCache.d.ts.map +0 -1
  65. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +0 -1
  66. package/lib/chain/blocks/blockInput/errors.d.ts.map +0 -1
  67. package/lib/chain/blocks/blockInput/index.d.ts.map +0 -1
  68. package/lib/chain/blocks/blockInput/types.d.ts.map +0 -1
  69. package/lib/chain/blocks/blockInput/utils.d.ts.map +0 -1
  70. package/lib/chain/blocks/importBlock.d.ts.map +0 -1
  71. package/lib/chain/blocks/index.d.ts.map +0 -1
  72. package/lib/chain/blocks/types.d.ts.map +0 -1
  73. package/lib/chain/blocks/utils/blowfishBanner.d.ts.map +0 -1
  74. package/lib/chain/blocks/utils/chainSegment.d.ts.map +0 -1
  75. package/lib/chain/blocks/utils/checkpoint.d.ts.map +0 -1
  76. package/lib/chain/blocks/utils/giraffeBanner.d.ts.map +0 -1
  77. package/lib/chain/blocks/utils/ownBanner.d.ts.map +0 -1
  78. package/lib/chain/blocks/utils/pandaMergeTransitionBanner.d.ts.map +0 -1
  79. package/lib/chain/blocks/utils/zebraBanner.d.ts.map +0 -1
  80. package/lib/chain/blocks/verifyBlock.d.ts.map +0 -1
  81. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +0 -1
  82. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +0 -1
  83. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +0 -1
  84. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +0 -1
  85. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +0 -1
  86. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +0 -1
  87. package/lib/chain/bls/index.d.ts.map +0 -1
  88. package/lib/chain/bls/interface.d.ts.map +0 -1
  89. package/lib/chain/bls/maybeBatch.d.ts.map +0 -1
  90. package/lib/chain/bls/multithread/index.d.ts.map +0 -1
  91. package/lib/chain/bls/multithread/jobItem.d.ts.map +0 -1
  92. package/lib/chain/bls/multithread/poolSize.d.ts.map +0 -1
  93. package/lib/chain/bls/multithread/types.d.ts.map +0 -1
  94. package/lib/chain/bls/multithread/utils.d.ts.map +0 -1
  95. package/lib/chain/bls/multithread/worker.d.ts.map +0 -1
  96. package/lib/chain/bls/singleThread.d.ts.map +0 -1
  97. package/lib/chain/bls/utils.d.ts.map +0 -1
  98. package/lib/chain/chain.d.ts.map +0 -1
  99. package/lib/chain/emitter.d.ts.map +0 -1
  100. package/lib/chain/errors/attestationError.d.ts.map +0 -1
  101. package/lib/chain/errors/attesterSlashingError.d.ts.map +0 -1
  102. package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
  103. package/lib/chain/errors/blockError.d.ts.map +0 -1
  104. package/lib/chain/errors/blsToExecutionChangeError.d.ts.map +0 -1
  105. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +0 -1
  106. package/lib/chain/errors/gossipValidation.d.ts.map +0 -1
  107. package/lib/chain/errors/index.d.ts.map +0 -1
  108. package/lib/chain/errors/lightClientError.d.ts.map +0 -1
  109. package/lib/chain/errors/proposerSlashingError.d.ts.map +0 -1
  110. package/lib/chain/errors/syncCommitteeError.d.ts.map +0 -1
  111. package/lib/chain/errors/voluntaryExitError.d.ts.map +0 -1
  112. package/lib/chain/forkChoice/index.d.ts.map +0 -1
  113. package/lib/chain/genesis/genesis.d.ts.map +0 -1
  114. package/lib/chain/genesis/interface.d.ts.map +0 -1
  115. package/lib/chain/index.d.ts.map +0 -1
  116. package/lib/chain/initState.d.ts.map +0 -1
  117. package/lib/chain/interface.d.ts.map +0 -1
  118. package/lib/chain/lightClient/index.d.ts.map +0 -1
  119. package/lib/chain/lightClient/proofs.d.ts.map +0 -1
  120. package/lib/chain/lightClient/types.d.ts.map +0 -1
  121. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +0 -1
  122. package/lib/chain/opPools/attestationPool.d.ts.map +0 -1
  123. package/lib/chain/opPools/index.d.ts.map +0 -1
  124. package/lib/chain/opPools/opPool.d.ts.map +0 -1
  125. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +0 -1
  126. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +0 -1
  127. package/lib/chain/opPools/types.d.ts.map +0 -1
  128. package/lib/chain/opPools/utils.d.ts.map +0 -1
  129. package/lib/chain/options.d.ts.map +0 -1
  130. package/lib/chain/prepareNextSlot.d.ts.map +0 -1
  131. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +0 -1
  132. package/lib/chain/produceBlock/index.d.ts.map +0 -1
  133. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +0 -1
  134. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts.map +0 -1
  135. package/lib/chain/regen/errors.d.ts.map +0 -1
  136. package/lib/chain/regen/index.d.ts.map +0 -1
  137. package/lib/chain/regen/interface.d.ts.map +0 -1
  138. package/lib/chain/regen/queued.d.ts.map +0 -1
  139. package/lib/chain/regen/regen.d.ts.map +0 -1
  140. package/lib/chain/reprocess.d.ts.map +0 -1
  141. package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
  142. package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
  143. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
  144. package/lib/chain/seenCache/index.d.ts.map +0 -1
  145. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +0 -1
  146. package/lib/chain/seenCache/seenAttestationData.d.ts.map +0 -1
  147. package/lib/chain/seenCache/seenAttesters.d.ts.map +0 -1
  148. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +0 -1
  149. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +0 -1
  150. package/lib/chain/seenCache/seenCommittee.d.ts.map +0 -1
  151. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +0 -1
  152. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +0 -1
  153. package/lib/chain/serializeState.d.ts.map +0 -1
  154. package/lib/chain/shufflingCache.d.ts.map +0 -1
  155. package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +0 -1
  156. package/lib/chain/stateCache/datastore/db.d.ts.map +0 -1
  157. package/lib/chain/stateCache/datastore/file.d.ts.map +0 -1
  158. package/lib/chain/stateCache/datastore/index.d.ts.map +0 -1
  159. package/lib/chain/stateCache/datastore/types.d.ts.map +0 -1
  160. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +0 -1
  161. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +0 -1
  162. package/lib/chain/stateCache/index.d.ts.map +0 -1
  163. package/lib/chain/stateCache/mapMetrics.d.ts.map +0 -1
  164. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +0 -1
  165. package/lib/chain/stateCache/types.d.ts.map +0 -1
  166. package/lib/chain/validation/aggregateAndProof.d.ts.map +0 -1
  167. package/lib/chain/validation/attestation.d.ts.map +0 -1
  168. package/lib/chain/validation/attesterSlashing.d.ts.map +0 -1
  169. package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
  170. package/lib/chain/validation/block.d.ts.map +0 -1
  171. package/lib/chain/validation/blsToExecutionChange.d.ts.map +0 -1
  172. package/lib/chain/validation/dataColumnSidecar.d.ts.map +0 -1
  173. package/lib/chain/validation/index.d.ts.map +0 -1
  174. package/lib/chain/validation/lightClientFinalityUpdate.d.ts.map +0 -1
  175. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +0 -1
  176. package/lib/chain/validation/proposerSlashing.d.ts.map +0 -1
  177. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +0 -1
  178. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +0 -1
  179. package/lib/chain/validation/signatureSets/index.d.ts.map +0 -1
  180. package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +0 -1
  181. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +0 -1
  182. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +0 -1
  183. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +0 -1
  184. package/lib/chain/validation/syncCommittee.d.ts.map +0 -1
  185. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +0 -1
  186. package/lib/chain/validation/voluntaryExit.d.ts.map +0 -1
  187. package/lib/chain/validatorMonitor.d.ts.map +0 -1
  188. package/lib/constants/constants.d.ts.map +0 -1
  189. package/lib/constants/index.d.ts.map +0 -1
  190. package/lib/constants/network.d.ts.map +0 -1
  191. package/lib/db/beacon.d.ts.map +0 -1
  192. package/lib/db/buckets.d.ts.map +0 -1
  193. package/lib/db/index.d.ts.map +0 -1
  194. package/lib/db/interface.d.ts.map +0 -1
  195. package/lib/db/options.d.ts.map +0 -1
  196. package/lib/db/repositories/attesterSlashing.d.ts.map +0 -1
  197. package/lib/db/repositories/backfilledRanges.d.ts.map +0 -1
  198. package/lib/db/repositories/blobSidecars.d.ts.map +0 -1
  199. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +0 -1
  200. package/lib/db/repositories/block.d.ts.map +0 -1
  201. package/lib/db/repositories/blockArchive.d.ts.map +0 -1
  202. package/lib/db/repositories/blockArchiveIndex.d.ts.map +0 -1
  203. package/lib/db/repositories/blsToExecutionChange.d.ts.map +0 -1
  204. package/lib/db/repositories/checkpointState.d.ts.map +0 -1
  205. package/lib/db/repositories/dataColumnSidecar.d.ts.map +0 -1
  206. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +0 -1
  207. package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
  208. package/lib/db/repositories/depositEvent.d.ts.map +0 -1
  209. package/lib/db/repositories/eth1Data.d.ts.map +0 -1
  210. package/lib/db/repositories/index.d.ts.map +0 -1
  211. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +0 -1
  212. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +0 -1
  213. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +0 -1
  214. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +0 -1
  215. package/lib/db/repositories/proposerSlashing.d.ts.map +0 -1
  216. package/lib/db/repositories/stateArchive.d.ts.map +0 -1
  217. package/lib/db/repositories/stateArchiveIndex.d.ts.map +0 -1
  218. package/lib/db/repositories/voluntaryExit.d.ts.map +0 -1
  219. package/lib/db/single/index.d.ts.map +0 -1
  220. package/lib/db/single/preGenesisState.d.ts.map +0 -1
  221. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
  222. package/lib/eth1/errors.d.ts.map +0 -1
  223. package/lib/eth1/eth1DataCache.d.ts.map +0 -1
  224. package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
  225. package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
  226. package/lib/eth1/eth1MergeBlockTracker.d.ts.map +0 -1
  227. package/lib/eth1/index.d.ts.map +0 -1
  228. package/lib/eth1/interface.d.ts.map +0 -1
  229. package/lib/eth1/options.d.ts.map +0 -1
  230. package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
  231. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
  232. package/lib/eth1/provider/jwt.d.ts.map +0 -1
  233. package/lib/eth1/provider/utils.d.ts.map +0 -1
  234. package/lib/eth1/stream.d.ts.map +0 -1
  235. package/lib/eth1/utils/depositContract.d.ts.map +0 -1
  236. package/lib/eth1/utils/deposits.d.ts.map +0 -1
  237. package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
  238. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
  239. package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
  240. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
  241. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
  242. package/lib/execution/builder/cache.d.ts.map +0 -1
  243. package/lib/execution/builder/http.d.ts.map +0 -1
  244. package/lib/execution/builder/index.d.ts.map +0 -1
  245. package/lib/execution/builder/interface.d.ts.map +0 -1
  246. package/lib/execution/builder/utils.d.ts.map +0 -1
  247. package/lib/execution/engine/disabled.d.ts.map +0 -1
  248. package/lib/execution/engine/http.d.ts.map +0 -1
  249. package/lib/execution/engine/index.d.ts.map +0 -1
  250. package/lib/execution/engine/interface.d.ts.map +0 -1
  251. package/lib/execution/engine/mock.d.ts.map +0 -1
  252. package/lib/execution/engine/payloadIdCache.d.ts.map +0 -1
  253. package/lib/execution/engine/types.d.ts.map +0 -1
  254. package/lib/execution/engine/utils.d.ts.map +0 -1
  255. package/lib/execution/index.d.ts.map +0 -1
  256. package/lib/index.d.ts.map +0 -1
  257. package/lib/metrics/index.d.ts.map +0 -1
  258. package/lib/metrics/metrics/beacon.d.ts.map +0 -1
  259. package/lib/metrics/metrics/lodestar.d.ts.map +0 -1
  260. package/lib/metrics/metrics.d.ts.map +0 -1
  261. package/lib/metrics/nodeJsMetrics.d.ts.map +0 -1
  262. package/lib/metrics/options.d.ts.map +0 -1
  263. package/lib/metrics/server/http.d.ts.map +0 -1
  264. package/lib/metrics/server/index.d.ts.map +0 -1
  265. package/lib/metrics/utils/avgMinMax.d.ts.map +0 -1
  266. package/lib/metrics/utils/gauge.d.ts.map +0 -1
  267. package/lib/metrics/utils/registryMetricCreator.d.ts.map +0 -1
  268. package/lib/monitoring/clientStats.d.ts.map +0 -1
  269. package/lib/monitoring/index.d.ts.map +0 -1
  270. package/lib/monitoring/options.d.ts.map +0 -1
  271. package/lib/monitoring/properties.d.ts.map +0 -1
  272. package/lib/monitoring/service.d.ts.map +0 -1
  273. package/lib/monitoring/system.d.ts.map +0 -1
  274. package/lib/monitoring/types.d.ts.map +0 -1
  275. package/lib/network/core/events.d.ts.map +0 -1
  276. package/lib/network/core/index.d.ts.map +0 -1
  277. package/lib/network/core/metrics.d.ts.map +0 -1
  278. package/lib/network/core/networkCore.d.ts.map +0 -1
  279. package/lib/network/core/networkCoreWorker.d.ts.map +0 -1
  280. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +0 -1
  281. package/lib/network/core/types.d.ts.map +0 -1
  282. package/lib/network/discv5/index.d.ts.map +0 -1
  283. package/lib/network/discv5/types.d.ts.map +0 -1
  284. package/lib/network/discv5/utils.d.ts.map +0 -1
  285. package/lib/network/discv5/worker.d.ts.map +0 -1
  286. package/lib/network/events.d.ts.map +0 -1
  287. package/lib/network/forks.d.ts.map +0 -1
  288. package/lib/network/gossip/constants.d.ts.map +0 -1
  289. package/lib/network/gossip/encoding.d.ts.map +0 -1
  290. package/lib/network/gossip/errors.d.ts.map +0 -1
  291. package/lib/network/gossip/gossipsub.d.ts.map +0 -1
  292. package/lib/network/gossip/index.d.ts.map +0 -1
  293. package/lib/network/gossip/interface.d.ts.map +0 -1
  294. package/lib/network/gossip/metrics.d.ts.map +0 -1
  295. package/lib/network/gossip/scoringParameters.d.ts.map +0 -1
  296. package/lib/network/gossip/topic.d.ts.map +0 -1
  297. package/lib/network/index.d.ts.map +0 -1
  298. package/lib/network/interface.d.ts.map +0 -1
  299. package/lib/network/libp2p/error.d.ts.map +0 -1
  300. package/lib/network/libp2p/index.d.ts.map +0 -1
  301. package/lib/network/metadata.d.ts.map +0 -1
  302. package/lib/network/network.d.ts.map +0 -1
  303. package/lib/network/networkConfig.d.ts.map +0 -1
  304. package/lib/network/options.d.ts.map +0 -1
  305. package/lib/network/peers/client.d.ts.map +0 -1
  306. package/lib/network/peers/datastore.d.ts.map +0 -1
  307. package/lib/network/peers/discover.d.ts.map +0 -1
  308. package/lib/network/peers/index.d.ts.map +0 -1
  309. package/lib/network/peers/peerManager.d.ts.map +0 -1
  310. package/lib/network/peers/peersData.d.ts.map +0 -1
  311. package/lib/network/peers/score/constants.d.ts.map +0 -1
  312. package/lib/network/peers/score/index.d.ts.map +0 -1
  313. package/lib/network/peers/score/interface.d.ts.map +0 -1
  314. package/lib/network/peers/score/score.d.ts.map +0 -1
  315. package/lib/network/peers/score/store.d.ts.map +0 -1
  316. package/lib/network/peers/score/utils.d.ts.map +0 -1
  317. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +0 -1
  318. package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +0 -1
  319. package/lib/network/peers/utils/getConnectedPeerIds.d.ts.map +0 -1
  320. package/lib/network/peers/utils/index.d.ts.map +0 -1
  321. package/lib/network/peers/utils/prioritizePeers.d.ts.map +0 -1
  322. package/lib/network/peers/utils/subnetMap.d.ts.map +0 -1
  323. package/lib/network/processor/aggregatorTracker.d.ts.map +0 -1
  324. package/lib/network/processor/extractSlotRootFns.d.ts.map +0 -1
  325. package/lib/network/processor/gossipHandlers.d.ts.map +0 -1
  326. package/lib/network/processor/gossipQueues/index.d.ts.map +0 -1
  327. package/lib/network/processor/gossipQueues/indexed.d.ts.map +0 -1
  328. package/lib/network/processor/gossipQueues/linear.d.ts.map +0 -1
  329. package/lib/network/processor/gossipQueues/types.d.ts.map +0 -1
  330. package/lib/network/processor/gossipValidatorFn.d.ts.map +0 -1
  331. package/lib/network/processor/index.d.ts.map +0 -1
  332. package/lib/network/processor/types.d.ts.map +0 -1
  333. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +0 -1
  334. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +0 -1
  335. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +0 -1
  336. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
  337. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
  338. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +0 -1
  339. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +0 -1
  340. package/lib/network/reqresp/handlers/index.d.ts.map +0 -1
  341. package/lib/network/reqresp/handlers/lightClientBootstrap.d.ts.map +0 -1
  342. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.d.ts.map +0 -1
  343. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.d.ts.map +0 -1
  344. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +0 -1
  345. package/lib/network/reqresp/index.d.ts.map +0 -1
  346. package/lib/network/reqresp/interface.d.ts.map +0 -1
  347. package/lib/network/reqresp/protocols.d.ts.map +0 -1
  348. package/lib/network/reqresp/rateLimit.d.ts.map +0 -1
  349. package/lib/network/reqresp/score.d.ts.map +0 -1
  350. package/lib/network/reqresp/types.d.ts.map +0 -1
  351. package/lib/network/reqresp/utils/collect.d.ts.map +0 -1
  352. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts.map +0 -1
  353. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +0 -1
  354. package/lib/network/statusCache.d.ts.map +0 -1
  355. package/lib/network/subnets/attnetsService.d.ts.map +0 -1
  356. package/lib/network/subnets/index.d.ts.map +0 -1
  357. package/lib/network/subnets/interface.d.ts.map +0 -1
  358. package/lib/network/subnets/syncnetsService.d.ts.map +0 -1
  359. package/lib/network/subnets/util.d.ts.map +0 -1
  360. package/lib/network/util.d.ts.map +0 -1
  361. package/lib/node/index.d.ts.map +0 -1
  362. package/lib/node/nodejs.d.ts.map +0 -1
  363. package/lib/node/notifier.d.ts.map +0 -1
  364. package/lib/node/options.d.ts.map +0 -1
  365. package/lib/node/utils/interop/deposits.d.ts.map +0 -1
  366. package/lib/node/utils/interop/state.d.ts.map +0 -1
  367. package/lib/node/utils/lightclient.d.ts.map +0 -1
  368. package/lib/node/utils/state.d.ts.map +0 -1
  369. package/lib/sync/backfill/backfill.d.ts.map +0 -1
  370. package/lib/sync/backfill/errors.d.ts.map +0 -1
  371. package/lib/sync/backfill/index.d.ts.map +0 -1
  372. package/lib/sync/backfill/verify.d.ts.map +0 -1
  373. package/lib/sync/constants.d.ts.map +0 -1
  374. package/lib/sync/index.d.ts.map +0 -1
  375. package/lib/sync/interface.d.ts.map +0 -1
  376. package/lib/sync/options.d.ts.map +0 -1
  377. package/lib/sync/range/batch.d.ts.map +0 -1
  378. package/lib/sync/range/chain.d.ts.map +0 -1
  379. package/lib/sync/range/range.d.ts.map +0 -1
  380. package/lib/sync/range/utils/batches.d.ts.map +0 -1
  381. package/lib/sync/range/utils/chainTarget.d.ts.map +0 -1
  382. package/lib/sync/range/utils/hashBlocks.d.ts.map +0 -1
  383. package/lib/sync/range/utils/index.d.ts.map +0 -1
  384. package/lib/sync/range/utils/peerBalancer.d.ts.map +0 -1
  385. package/lib/sync/range/utils/updateChains.d.ts.map +0 -1
  386. package/lib/sync/sync.d.ts.map +0 -1
  387. package/lib/sync/types.d.ts.map +0 -1
  388. package/lib/sync/unknownBlock.d.ts.map +0 -1
  389. package/lib/sync/utils/downloadByRange.d.ts.map +0 -1
  390. package/lib/sync/utils/downloadByRoot.d.ts.map +0 -1
  391. package/lib/sync/utils/pendingBlocksTree.d.ts.map +0 -1
  392. package/lib/sync/utils/remoteSyncType.d.ts.map +0 -1
  393. package/lib/util/address.d.ts.map +0 -1
  394. package/lib/util/array.d.ts.map +0 -1
  395. package/lib/util/asyncIterableToEvents.d.ts.map +0 -1
  396. package/lib/util/binarySearch.d.ts.map +0 -1
  397. package/lib/util/bitArray.d.ts.map +0 -1
  398. package/lib/util/blobs.d.ts.map +0 -1
  399. package/lib/util/bufferPool.d.ts.map +0 -1
  400. package/lib/util/bytes.d.ts.map +0 -1
  401. package/lib/util/chunkify.d.ts.map +0 -1
  402. package/lib/util/clock.d.ts.map +0 -1
  403. package/lib/util/dataColumns.d.ts.map +0 -1
  404. package/lib/util/dependentRoot.d.ts.map +0 -1
  405. package/lib/util/enum.d.ts.map +0 -1
  406. package/lib/util/error.d.ts.map +0 -1
  407. package/lib/util/eventLoop.d.ts.map +0 -1
  408. package/lib/util/execution.d.ts.map +0 -1
  409. package/lib/util/file.d.ts.map +0 -1
  410. package/lib/util/forkChoice.d.ts.map +0 -1
  411. package/lib/util/forkName.d.ts.map +0 -1
  412. package/lib/util/graffiti.d.ts.map +0 -1
  413. package/lib/util/hex.d.ts.map +0 -1
  414. package/lib/util/index.d.ts.map +0 -1
  415. package/lib/util/ip.d.ts.map +0 -1
  416. package/lib/util/itTrigger.d.ts.map +0 -1
  417. package/lib/util/kzg.d.ts.map +0 -1
  418. package/lib/util/map.d.ts.map +0 -1
  419. package/lib/util/metadata.d.ts.map +0 -1
  420. package/lib/util/multifork.d.ts.map +0 -1
  421. package/lib/util/numpy.d.ts.map +0 -1
  422. package/lib/util/peerId.d.ts.map +0 -1
  423. package/lib/util/profile.d.ts.map +0 -1
  424. package/lib/util/promises.d.ts.map +0 -1
  425. package/lib/util/queue/errors.d.ts.map +0 -1
  426. package/lib/util/queue/fnQueue.d.ts.map +0 -1
  427. package/lib/util/queue/index.d.ts.map +0 -1
  428. package/lib/util/queue/itemQueue.d.ts.map +0 -1
  429. package/lib/util/queue/options.d.ts.map +0 -1
  430. package/lib/util/serializedCache.d.ts.map +0 -1
  431. package/lib/util/set.d.ts.map +0 -1
  432. package/lib/util/shuffle.d.ts.map +0 -1
  433. package/lib/util/sortBy.d.ts.map +0 -1
  434. package/lib/util/sszBytes.d.ts.map +0 -1
  435. package/lib/util/strictEvents.d.ts.map +0 -1
  436. package/lib/util/time.d.ts.map +0 -1
  437. package/lib/util/timeSeries.d.ts.map +0 -1
  438. package/lib/util/types.d.ts.map +0 -1
  439. package/lib/util/workerEvents.d.ts.map +0 -1
  440. package/lib/util/wrapError.d.ts.map +0 -1
  441. package/src/api/impl/api.ts +0 -26
  442. package/src/api/impl/beacon/blocks/index.ts +0 -744
  443. package/src/api/impl/beacon/blocks/utils.ts +0 -75
  444. package/src/api/impl/beacon/index.ts +0 -35
  445. package/src/api/impl/beacon/pool/index.ts +0 -314
  446. package/src/api/impl/beacon/rewards/index.ts +0 -30
  447. package/src/api/impl/beacon/state/index.ts +0 -406
  448. package/src/api/impl/beacon/state/utils.ts +0 -189
  449. package/src/api/impl/config/constants.ts +0 -127
  450. package/src/api/impl/config/index.ts +0 -59
  451. package/src/api/impl/debug/index.ts +0 -131
  452. package/src/api/impl/errors.ts +0 -50
  453. package/src/api/impl/events/index.ts +0 -33
  454. package/src/api/impl/index.ts +0 -6
  455. package/src/api/impl/lightclient/index.ts +0 -64
  456. package/src/api/impl/lodestar/index.ts +0 -257
  457. package/src/api/impl/node/index.ts +0 -88
  458. package/src/api/impl/node/utils.ts +0 -51
  459. package/src/api/impl/proof/index.ts +0 -60
  460. package/src/api/impl/types.ts +0 -17
  461. package/src/api/impl/utils.ts +0 -25
  462. package/src/api/impl/validator/index.ts +0 -1538
  463. package/src/api/impl/validator/utils.ts +0 -85
  464. package/src/api/index.ts +0 -2
  465. package/src/api/options.ts +0 -16
  466. package/src/api/rest/activeSockets.ts +0 -109
  467. package/src/api/rest/base.ts +0 -216
  468. package/src/api/rest/index.ts +0 -63
  469. package/src/api/rest/swaggerUI.ts +0 -80
  470. package/src/bun-wrappers/prometheus-gc-stats.ts +0 -7
  471. package/src/chain/ColumnReconstructionTracker.ts +0 -90
  472. package/src/chain/GetBlobsTracker.ts +0 -115
  473. package/src/chain/archiveStore/archiveStore.ts +0 -222
  474. package/src/chain/archiveStore/constants.ts +0 -5
  475. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +0 -116
  476. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +0 -68
  477. package/src/chain/archiveStore/historicalState/metrics.ts +0 -214
  478. package/src/chain/archiveStore/historicalState/types.ts +0 -41
  479. package/src/chain/archiveStore/historicalState/worker.ts +0 -77
  480. package/src/chain/archiveStore/index.ts +0 -3
  481. package/src/chain/archiveStore/interface.ts +0 -75
  482. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +0 -138
  483. package/src/chain/archiveStore/utils/archiveBlocks.ts +0 -437
  484. package/src/chain/archiveStore/utils/pruneHistory.ts +0 -56
  485. package/src/chain/archiveStore/utils/updateBackfillRange.ts +0 -50
  486. package/src/chain/balancesCache.ts +0 -52
  487. package/src/chain/beaconProposerCache.ts +0 -43
  488. package/src/chain/blocks/blockInput/blockInput.ts +0 -851
  489. package/src/chain/blocks/blockInput/errors.ts +0 -48
  490. package/src/chain/blocks/blockInput/index.ts +0 -4
  491. package/src/chain/blocks/blockInput/types.ts +0 -145
  492. package/src/chain/blocks/blockInput/utils.ts +0 -21
  493. package/src/chain/blocks/importBlock.ts +0 -603
  494. package/src/chain/blocks/index.ts +0 -179
  495. package/src/chain/blocks/types.ts +0 -101
  496. package/src/chain/blocks/utils/blowfishBanner.ts +0 -28
  497. package/src/chain/blocks/utils/chainSegment.ts +0 -29
  498. package/src/chain/blocks/utils/checkpoint.ts +0 -25
  499. package/src/chain/blocks/utils/giraffeBanner.ts +0 -30
  500. package/src/chain/blocks/utils/ownBanner.ts +0 -20
  501. package/src/chain/blocks/utils/pandaMergeTransitionBanner.ts +0 -43
  502. package/src/chain/blocks/utils/zebraBanner.ts +0 -45
  503. package/src/chain/blocks/verifyBlock.ts +0 -242
  504. package/src/chain/blocks/verifyBlocksDataAvailability.ts +0 -34
  505. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +0 -438
  506. package/src/chain/blocks/verifyBlocksSanityChecks.ts +0 -129
  507. package/src/chain/blocks/verifyBlocksSignatures.ts +0 -105
  508. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +0 -114
  509. package/src/chain/blocks/writeBlockInputToDb.ts +0 -128
  510. package/src/chain/bls/index.ts +0 -4
  511. package/src/chain/bls/interface.ts +0 -68
  512. package/src/chain/bls/maybeBatch.ts +0 -45
  513. package/src/chain/bls/multithread/index.ts +0 -582
  514. package/src/chain/bls/multithread/jobItem.ts +0 -119
  515. package/src/chain/bls/multithread/poolSize.ts +0 -16
  516. package/src/chain/bls/multithread/types.ts +0 -38
  517. package/src/chain/bls/multithread/utils.ts +0 -19
  518. package/src/chain/bls/multithread/worker.ts +0 -114
  519. package/src/chain/bls/singleThread.ts +0 -87
  520. package/src/chain/bls/utils.ts +0 -30
  521. package/src/chain/chain.ts +0 -1365
  522. package/src/chain/emitter.ts +0 -113
  523. package/src/chain/errors/attestationError.ts +0 -194
  524. package/src/chain/errors/attesterSlashingError.ts +0 -11
  525. package/src/chain/errors/blobSidecarError.ts +0 -60
  526. package/src/chain/errors/blockError.ts +0 -166
  527. package/src/chain/errors/blsToExecutionChangeError.ts +0 -13
  528. package/src/chain/errors/dataColumnSidecarError.ts +0 -80
  529. package/src/chain/errors/gossipValidation.ts +0 -20
  530. package/src/chain/errors/index.ts +0 -10
  531. package/src/chain/errors/lightClientError.ts +0 -30
  532. package/src/chain/errors/proposerSlashingError.ts +0 -11
  533. package/src/chain/errors/syncCommitteeError.ts +0 -36
  534. package/src/chain/errors/voluntaryExitError.ts +0 -13
  535. package/src/chain/forkChoice/index.ts +0 -112
  536. package/src/chain/genesis/genesis.ts +0 -190
  537. package/src/chain/genesis/interface.ts +0 -14
  538. package/src/chain/index.ts +0 -6
  539. package/src/chain/initState.ts +0 -221
  540. package/src/chain/interface.ts +0 -280
  541. package/src/chain/lightClient/index.ts +0 -764
  542. package/src/chain/lightClient/proofs.ts +0 -85
  543. package/src/chain/lightClient/types.ts +0 -33
  544. package/src/chain/opPools/aggregatedAttestationPool.ts +0 -1063
  545. package/src/chain/opPools/attestationPool.ts +0 -283
  546. package/src/chain/opPools/index.ts +0 -5
  547. package/src/chain/opPools/opPool.ts +0 -462
  548. package/src/chain/opPools/syncCommitteeMessagePool.ts +0 -167
  549. package/src/chain/opPools/syncContributionAndProofPool.ts +0 -240
  550. package/src/chain/opPools/types.ts +0 -35
  551. package/src/chain/opPools/utils.ts +0 -65
  552. package/src/chain/options.ts +0 -138
  553. package/src/chain/prepareNextSlot.ts +0 -277
  554. package/src/chain/produceBlock/computeNewStateRoot.ts +0 -55
  555. package/src/chain/produceBlock/index.ts +0 -2
  556. package/src/chain/produceBlock/produceBlockBody.ts +0 -797
  557. package/src/chain/produceBlock/validateBlobsAndKzgCommitments.ts +0 -54
  558. package/src/chain/regen/errors.ts +0 -30
  559. package/src/chain/regen/index.ts +0 -4
  560. package/src/chain/regen/interface.ts +0 -93
  561. package/src/chain/regen/queued.ts +0 -317
  562. package/src/chain/regen/regen.ts +0 -424
  563. package/src/chain/reprocess.ts +0 -161
  564. package/src/chain/rewards/attestationsRewards.ts +0 -196
  565. package/src/chain/rewards/blockRewards.ts +0 -150
  566. package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
  567. package/src/chain/seenCache/index.ts +0 -5
  568. package/src/chain/seenCache/seenAggregateAndProof.ts +0 -120
  569. package/src/chain/seenCache/seenAttestationData.ts +0 -145
  570. package/src/chain/seenCache/seenAttesters.ts +0 -58
  571. package/src/chain/seenCache/seenBlockAttesters.ts +0 -18
  572. package/src/chain/seenCache/seenBlockProposers.ts +0 -48
  573. package/src/chain/seenCache/seenCommittee.ts +0 -43
  574. package/src/chain/seenCache/seenCommitteeContribution.ts +0 -104
  575. package/src/chain/seenCache/seenGossipBlockInput.ts +0 -373
  576. package/src/chain/serializeState.ts +0 -32
  577. package/src/chain/shufflingCache.ts +0 -238
  578. package/src/chain/stateCache/blockStateCacheImpl.ts +0 -150
  579. package/src/chain/stateCache/datastore/db.ts +0 -36
  580. package/src/chain/stateCache/datastore/file.ts +0 -53
  581. package/src/chain/stateCache/datastore/index.ts +0 -2
  582. package/src/chain/stateCache/datastore/types.ts +0 -13
  583. package/src/chain/stateCache/fifoBlockStateCache.ts +0 -208
  584. package/src/chain/stateCache/inMemoryCheckpointsCache.ts +0 -198
  585. package/src/chain/stateCache/index.ts +0 -3
  586. package/src/chain/stateCache/mapMetrics.ts +0 -52
  587. package/src/chain/stateCache/persistentCheckpointsCache.ts +0 -835
  588. package/src/chain/stateCache/types.ts +0 -86
  589. package/src/chain/validation/aggregateAndProof.ts +0 -258
  590. package/src/chain/validation/attestation.ts +0 -885
  591. package/src/chain/validation/attesterSlashing.ts +0 -61
  592. package/src/chain/validation/blobSidecar.ts +0 -301
  593. package/src/chain/validation/block.ts +0 -188
  594. package/src/chain/validation/blsToExecutionChange.ts +0 -61
  595. package/src/chain/validation/dataColumnSidecar.ts +0 -381
  596. package/src/chain/validation/index.ts +0 -9
  597. package/src/chain/validation/lightClientFinalityUpdate.ts +0 -45
  598. package/src/chain/validation/lightClientOptimisticUpdate.ts +0 -67
  599. package/src/chain/validation/proposerSlashing.ts +0 -54
  600. package/src/chain/validation/signatureSets/aggregateAndProof.ts +0 -38
  601. package/src/chain/validation/signatureSets/contributionAndProof.ts +0 -27
  602. package/src/chain/validation/signatureSets/index.ts +0 -6
  603. package/src/chain/validation/signatureSets/selectionProof.ts +0 -27
  604. package/src/chain/validation/signatureSets/syncCommittee.ts +0 -22
  605. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +0 -18
  606. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +0 -27
  607. package/src/chain/validation/syncCommittee.ts +0 -165
  608. package/src/chain/validation/syncCommitteeContributionAndProof.ts +0 -122
  609. package/src/chain/validation/voluntaryExit.ts +0 -58
  610. package/src/chain/validatorMonitor.ts +0 -1299
  611. package/src/constants/constants.ts +0 -15
  612. package/src/constants/index.ts +0 -2
  613. package/src/constants/network.ts +0 -52
  614. package/src/db/beacon.ts +0 -113
  615. package/src/db/buckets.ts +0 -80
  616. package/src/db/index.ts +0 -2
  617. package/src/db/interface.ts +0 -76
  618. package/src/db/options.ts +0 -7
  619. package/src/db/repositories/attesterSlashing.ts +0 -38
  620. package/src/db/repositories/backfilledRanges.ts +0 -29
  621. package/src/db/repositories/blobSidecars.ts +0 -37
  622. package/src/db/repositories/blobSidecarsArchive.ts +0 -28
  623. package/src/db/repositories/block.ts +0 -33
  624. package/src/db/repositories/blockArchive.ts +0 -170
  625. package/src/db/repositories/blockArchiveIndex.ts +0 -45
  626. package/src/db/repositories/blsToExecutionChange.ts +0 -16
  627. package/src/db/repositories/checkpointState.ts +0 -31
  628. package/src/db/repositories/dataColumnSidecar.ts +0 -49
  629. package/src/db/repositories/dataColumnSidecarArchive.ts +0 -56
  630. package/src/db/repositories/depositDataRoot.ts +0 -80
  631. package/src/db/repositories/depositEvent.ts +0 -32
  632. package/src/db/repositories/eth1Data.ts +0 -33
  633. package/src/db/repositories/index.ts +0 -20
  634. package/src/db/repositories/lightclientBestUpdate.ts +0 -41
  635. package/src/db/repositories/lightclientCheckpointHeader.ts +0 -32
  636. package/src/db/repositories/lightclientSyncCommittee.ts +0 -16
  637. package/src/db/repositories/lightclientSyncCommitteeWitness.ts +0 -77
  638. package/src/db/repositories/proposerSlashing.ts +0 -15
  639. package/src/db/repositories/stateArchive.ts +0 -69
  640. package/src/db/repositories/stateArchiveIndex.ts +0 -18
  641. package/src/db/repositories/voluntaryExit.ts +0 -15
  642. package/src/db/single/index.ts +0 -2
  643. package/src/db/single/preGenesisState.ts +0 -37
  644. package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
  645. package/src/eth1/errors.ts +0 -40
  646. package/src/eth1/eth1DataCache.ts +0 -26
  647. package/src/eth1/eth1DepositDataTracker.ts +0 -410
  648. package/src/eth1/eth1DepositsCache.ts +0 -141
  649. package/src/eth1/eth1MergeBlockTracker.ts +0 -328
  650. package/src/eth1/index.ts +0 -157
  651. package/src/eth1/interface.ts +0 -131
  652. package/src/eth1/options.ts +0 -28
  653. package/src/eth1/provider/eth1Provider.ts +0 -229
  654. package/src/eth1/provider/jsonRpcHttpClient.ts +0 -390
  655. package/src/eth1/provider/jwt.ts +0 -36
  656. package/src/eth1/provider/utils.ts +0 -136
  657. package/src/eth1/stream.ts +0 -75
  658. package/src/eth1/utils/depositContract.ts +0 -37
  659. package/src/eth1/utils/deposits.ts +0 -70
  660. package/src/eth1/utils/eth1Data.ts +0 -100
  661. package/src/eth1/utils/eth1DepositEvent.ts +0 -12
  662. package/src/eth1/utils/eth1Vote.ts +0 -142
  663. package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
  664. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
  665. package/src/execution/builder/cache.ts +0 -39
  666. package/src/execution/builder/http.ts +0 -229
  667. package/src/execution/builder/index.ts +0 -27
  668. package/src/execution/builder/interface.ts +0 -49
  669. package/src/execution/builder/utils.ts +0 -19
  670. package/src/execution/engine/disabled.ts +0 -35
  671. package/src/execution/engine/http.ts +0 -644
  672. package/src/execution/engine/index.ts +0 -63
  673. package/src/execution/engine/interface.ts +0 -199
  674. package/src/execution/engine/mock.ts +0 -493
  675. package/src/execution/engine/payloadIdCache.ts +0 -54
  676. package/src/execution/engine/types.ts +0 -640
  677. package/src/execution/engine/utils.ts +0 -136
  678. package/src/execution/index.ts +0 -4
  679. package/src/index.ts +0 -20
  680. package/src/metrics/index.ts +0 -4
  681. package/src/metrics/metrics/beacon.ts +0 -390
  682. package/src/metrics/metrics/lodestar.ts +0 -1870
  683. package/src/metrics/metrics.ts +0 -43
  684. package/src/metrics/nodeJsMetrics.ts +0 -19
  685. package/src/metrics/options.ts +0 -22
  686. package/src/metrics/server/http.ts +0 -114
  687. package/src/metrics/server/index.ts +0 -1
  688. package/src/metrics/utils/avgMinMax.ts +0 -87
  689. package/src/metrics/utils/gauge.ts +0 -22
  690. package/src/metrics/utils/registryMetricCreator.ts +0 -41
  691. package/src/monitoring/clientStats.ts +0 -297
  692. package/src/monitoring/index.ts +0 -2
  693. package/src/monitoring/options.ts +0 -19
  694. package/src/monitoring/properties.ts +0 -152
  695. package/src/monitoring/service.ts +0 -235
  696. package/src/monitoring/system.ts +0 -146
  697. package/src/monitoring/types.ts +0 -21
  698. package/src/network/core/events.ts +0 -59
  699. package/src/network/core/index.ts +0 -3
  700. package/src/network/core/metrics.ts +0 -304
  701. package/src/network/core/networkCore.ts +0 -599
  702. package/src/network/core/networkCoreWorker.ts +0 -176
  703. package/src/network/core/networkCoreWorkerHandler.ts +0 -284
  704. package/src/network/core/types.ts +0 -119
  705. package/src/network/discv5/index.ts +0 -132
  706. package/src/network/discv5/types.ts +0 -74
  707. package/src/network/discv5/utils.ts +0 -50
  708. package/src/network/discv5/worker.ts +0 -137
  709. package/src/network/events.ts +0 -51
  710. package/src/network/forks.ts +0 -94
  711. package/src/network/gossip/constants.ts +0 -15
  712. package/src/network/gossip/encoding.ts +0 -111
  713. package/src/network/gossip/errors.ts +0 -7
  714. package/src/network/gossip/gossipsub.ts +0 -384
  715. package/src/network/gossip/index.ts +0 -4
  716. package/src/network/gossip/interface.ts +0 -215
  717. package/src/network/gossip/metrics.ts +0 -71
  718. package/src/network/gossip/scoringParameters.ts +0 -333
  719. package/src/network/gossip/topic.ts +0 -332
  720. package/src/network/index.ts +0 -8
  721. package/src/network/interface.ts +0 -134
  722. package/src/network/libp2p/error.ts +0 -55
  723. package/src/network/libp2p/index.ts +0 -153
  724. package/src/network/metadata.ts +0 -162
  725. package/src/network/network.ts +0 -767
  726. package/src/network/networkConfig.ts +0 -12
  727. package/src/network/options.ts +0 -70
  728. package/src/network/peers/client.ts +0 -29
  729. package/src/network/peers/datastore.ts +0 -188
  730. package/src/network/peers/discover.ts +0 -647
  731. package/src/network/peers/index.ts +0 -2
  732. package/src/network/peers/peerManager.ts +0 -899
  733. package/src/network/peers/peersData.ts +0 -65
  734. package/src/network/peers/score/constants.ts +0 -34
  735. package/src/network/peers/score/index.ts +0 -4
  736. package/src/network/peers/score/interface.ts +0 -74
  737. package/src/network/peers/score/score.ts +0 -200
  738. package/src/network/peers/score/store.ts +0 -95
  739. package/src/network/peers/score/utils.ts +0 -37
  740. package/src/network/peers/utils/assertPeerRelevance.ts +0 -99
  741. package/src/network/peers/utils/enrSubnetsDeserialize.ts +0 -27
  742. package/src/network/peers/utils/getConnectedPeerIds.ts +0 -33
  743. package/src/network/peers/utils/index.ts +0 -4
  744. package/src/network/peers/utils/prioritizePeers.ts +0 -627
  745. package/src/network/peers/utils/subnetMap.ts +0 -88
  746. package/src/network/processor/aggregatorTracker.ts +0 -38
  747. package/src/network/processor/extractSlotRootFns.ts +0 -64
  748. package/src/network/processor/gossipHandlers.ts +0 -951
  749. package/src/network/processor/gossipQueues/index.ts +0 -114
  750. package/src/network/processor/gossipQueues/indexed.ts +0 -219
  751. package/src/network/processor/gossipQueues/linear.ts +0 -162
  752. package/src/network/processor/gossipQueues/types.ts +0 -57
  753. package/src/network/processor/gossipValidatorFn.ts +0 -142
  754. package/src/network/processor/index.ts +0 -497
  755. package/src/network/processor/types.ts +0 -27
  756. package/src/network/reqresp/ReqRespBeaconNode.ts +0 -373
  757. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +0 -101
  758. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +0 -49
  759. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -114
  760. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -62
  761. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +0 -144
  762. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +0 -88
  763. package/src/network/reqresp/handlers/index.ts +0 -78
  764. package/src/network/reqresp/handlers/lightClientBootstrap.ts +0 -31
  765. package/src/network/reqresp/handlers/lightClientFinalityUpdate.ts +0 -21
  766. package/src/network/reqresp/handlers/lightClientOptimisticUpdate.ts +0 -21
  767. package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +0 -39
  768. package/src/network/reqresp/index.ts +0 -2
  769. package/src/network/reqresp/interface.ts +0 -45
  770. package/src/network/reqresp/protocols.ts +0 -146
  771. package/src/network/reqresp/rateLimit.ts +0 -112
  772. package/src/network/reqresp/score.ts +0 -70
  773. package/src/network/reqresp/types.ts +0 -174
  774. package/src/network/reqresp/utils/collect.ts +0 -84
  775. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +0 -57
  776. package/src/network/reqresp/utils/dataColumnResponseValidation.ts +0 -99
  777. package/src/network/statusCache.ts +0 -17
  778. package/src/network/subnets/attnetsService.ts +0 -385
  779. package/src/network/subnets/index.ts +0 -2
  780. package/src/network/subnets/interface.ts +0 -66
  781. package/src/network/subnets/syncnetsService.ts +0 -147
  782. package/src/network/subnets/util.ts +0 -63
  783. package/src/network/util.ts +0 -29
  784. package/src/node/index.ts +0 -2
  785. package/src/node/nodejs.ts +0 -349
  786. package/src/node/notifier.ts +0 -206
  787. package/src/node/options.ts +0 -51
  788. package/src/node/utils/interop/deposits.ts +0 -53
  789. package/src/node/utils/interop/state.ts +0 -59
  790. package/src/node/utils/lightclient.ts +0 -7
  791. package/src/node/utils/state.ts +0 -37
  792. package/src/sync/backfill/backfill.ts +0 -893
  793. package/src/sync/backfill/errors.ts +0 -23
  794. package/src/sync/backfill/index.ts +0 -1
  795. package/src/sync/backfill/verify.ts +0 -58
  796. package/src/sync/constants.ts +0 -71
  797. package/src/sync/index.ts +0 -2
  798. package/src/sync/interface.ts +0 -55
  799. package/src/sync/options.ts +0 -45
  800. package/src/sync/range/batch.ts +0 -455
  801. package/src/sync/range/chain.ts +0 -715
  802. package/src/sync/range/range.ts +0 -354
  803. package/src/sync/range/utils/batches.ts +0 -119
  804. package/src/sync/range/utils/chainTarget.ts +0 -62
  805. package/src/sync/range/utils/hashBlocks.ts +0 -27
  806. package/src/sync/range/utils/index.ts +0 -5
  807. package/src/sync/range/utils/peerBalancer.ts +0 -184
  808. package/src/sync/range/utils/updateChains.ts +0 -66
  809. package/src/sync/sync.ts +0 -290
  810. package/src/sync/types.ts +0 -59
  811. package/src/sync/unknownBlock.ts +0 -862
  812. package/src/sync/utils/downloadByRange.ts +0 -808
  813. package/src/sync/utils/downloadByRoot.ts +0 -560
  814. package/src/sync/utils/pendingBlocksTree.ts +0 -97
  815. package/src/sync/utils/remoteSyncType.ts +0 -144
  816. package/src/util/address.ts +0 -3
  817. package/src/util/array.ts +0 -311
  818. package/src/util/asyncIterableToEvents.ts +0 -164
  819. package/src/util/binarySearch.ts +0 -48
  820. package/src/util/bitArray.ts +0 -84
  821. package/src/util/blobs.ts +0 -210
  822. package/src/util/bufferPool.ts +0 -95
  823. package/src/util/bytes.ts +0 -11
  824. package/src/util/chunkify.ts +0 -27
  825. package/src/util/clock.ts +0 -204
  826. package/src/util/dataColumns.ts +0 -415
  827. package/src/util/dependentRoot.ts +0 -47
  828. package/src/util/enum.ts +0 -17
  829. package/src/util/error.ts +0 -56
  830. package/src/util/eventLoop.ts +0 -22
  831. package/src/util/execution.ts +0 -223
  832. package/src/util/file.ts +0 -52
  833. package/src/util/forkChoice.ts +0 -5
  834. package/src/util/forkName.ts +0 -20
  835. package/src/util/graffiti.ts +0 -39
  836. package/src/util/hex.ts +0 -9
  837. package/src/util/index.ts +0 -2
  838. package/src/util/ip.ts +0 -6
  839. package/src/util/itTrigger.ts +0 -49
  840. package/src/util/kzg.ts +0 -3
  841. package/src/util/map.ts +0 -77
  842. package/src/util/metadata.ts +0 -22
  843. package/src/util/multifork.ts +0 -69
  844. package/src/util/numpy.ts +0 -8
  845. package/src/util/peerId.ts +0 -16
  846. package/src/util/profile.ts +0 -54
  847. package/src/util/promises.ts +0 -14
  848. package/src/util/queue/errors.ts +0 -14
  849. package/src/util/queue/fnQueue.ts +0 -16
  850. package/src/util/queue/index.ts +0 -4
  851. package/src/util/queue/itemQueue.ts +0 -128
  852. package/src/util/queue/options.ts +0 -37
  853. package/src/util/serializedCache.ts +0 -20
  854. package/src/util/set.ts +0 -62
  855. package/src/util/shuffle.ts +0 -21
  856. package/src/util/sortBy.ts +0 -19
  857. package/src/util/sszBytes.ts +0 -481
  858. package/src/util/strictEvents.ts +0 -8
  859. package/src/util/time.ts +0 -13
  860. package/src/util/timeSeries.ts +0 -118
  861. package/src/util/types.ts +0 -31
  862. package/src/util/workerEvents.ts +0 -142
  863. package/src/util/wrapError.ts +0 -27
@@ -1,885 +0,0 @@
1
- import {BitArray} from "@chainsafe/ssz";
2
- import {BeaconConfig} from "@lodestar/config";
3
- import {ProtoBlock} from "@lodestar/fork-choice";
4
- import {
5
- ATTESTATION_SUBNET_COUNT,
6
- DOMAIN_BEACON_ATTESTER,
7
- ForkName,
8
- ForkPostElectra,
9
- ForkPreElectra,
10
- ForkSeq,
11
- SLOTS_PER_EPOCH,
12
- isForkPostElectra,
13
- } from "@lodestar/params";
14
- import {
15
- EpochCacheError,
16
- EpochCacheErrorCode,
17
- EpochShuffling,
18
- SingleSignatureSet,
19
- computeEpochAtSlot,
20
- computeSigningRoot,
21
- computeStartSlotAtEpoch,
22
- createSingleSignatureSetFromComponents,
23
- } from "@lodestar/state-transition";
24
- import {
25
- CommitteeIndex,
26
- Epoch,
27
- IndexedAttestation,
28
- Root,
29
- RootHex,
30
- SingleAttestation,
31
- Slot,
32
- SubnetID,
33
- ValidatorIndex,
34
- isElectraSingleAttestation,
35
- phase0,
36
- ssz,
37
- } from "@lodestar/types";
38
- import {assert, toRootHex} from "@lodestar/utils";
39
- import {MAXIMUM_GOSSIP_CLOCK_DISPARITY_SEC} from "../../constants/index.js";
40
- import {sszDeserializeSingleAttestation} from "../../network/gossip/topic.js";
41
- import {getShufflingDependentRoot} from "../../util/dependentRoot.js";
42
- import {
43
- getAggregationBitsFromAttestationSerialized,
44
- getAttDataFromSignedAggregateAndProofElectra,
45
- getAttDataFromSignedAggregateAndProofPhase0,
46
- getAttesterIndexFromSingleAttestationSerialized,
47
- getCommitteeIndexFromSingleAttestationSerialized,
48
- getSignatureFromAttestationSerialized,
49
- getSignatureFromSingleAttestationSerialized,
50
- } from "../../util/sszBytes.js";
51
- import {Result, wrapError} from "../../util/wrapError.js";
52
- import {AttestationError, AttestationErrorCode, GossipAction} from "../errors/index.js";
53
- import {IBeaconChain} from "../interface.js";
54
- import {RegenCaller} from "../regen/index.js";
55
- import {
56
- AttestationDataCacheEntry,
57
- PRE_ELECTRA_SINGLE_ATTESTATION_COMMITTEE_INDEX,
58
- SeenAttDataKey,
59
- } from "../seenCache/seenAttestationData.js";
60
-
61
- export type BatchResult = {
62
- results: Result<AttestationValidationResult>[];
63
- batchableBls: boolean;
64
- };
65
-
66
- export type AttestationValidationResult = {
67
- attestation: SingleAttestation;
68
- indexedAttestation: IndexedAttestation;
69
- subnet: SubnetID;
70
- attDataRootHex: RootHex;
71
- committeeIndex: CommitteeIndex;
72
- validatorCommitteeIndex: number;
73
- committeeSize: number;
74
- };
75
-
76
- export type AttestationOrBytes = ApiAttestation | GossipAttestation;
77
-
78
- /** attestation from api */
79
- export type ApiAttestation = {attestation: SingleAttestation; serializedData: null};
80
-
81
- /** attestation from gossip */
82
- export type GossipAttestation = {
83
- attestation: null;
84
- serializedData: Uint8Array;
85
- // available in NetworkProcessor since we check for unknown block root attestations
86
- attSlot: Slot;
87
- // for indexed gossip queue we have attDataBase64
88
- attDataBase64: SeenAttDataKey;
89
- subnet: SubnetID;
90
- };
91
-
92
- export type Step0Result = AttestationValidationResult & {
93
- signatureSet: SingleSignatureSet;
94
- validatorIndex: number;
95
- };
96
-
97
- /**
98
- * Verify gossip attestations of the same attestation data. The main advantage is we can batch verify bls signatures
99
- * through verifySignatureSetsSameMessage bls api to improve performance.
100
- * - If there are less than 2 signatures (minSameMessageSignatureSetsToBatch), verify each signature individually with batchable = true
101
- * - do not prioritize bls signature set
102
- */
103
- export async function validateGossipAttestationsSameAttData(
104
- fork: ForkName,
105
- chain: IBeaconChain,
106
- attestationOrBytesArr: GossipAttestation[],
107
- // for unit test, consumers do not need to pass this
108
- step0ValidationFn = validateAttestationNoSignatureCheck
109
- ): Promise<BatchResult> {
110
- if (attestationOrBytesArr.length === 0) {
111
- return {results: [], batchableBls: false};
112
- }
113
-
114
- // step0: do all verifications except for signature verification
115
- // this for await pattern below seems to be bad but it's not
116
- // for seen AttestationData, it's the same to await Promise.all() pattern
117
- // for unseen AttestationData, the 1st call will be cached and the rest will be fast
118
- const step0ResultOrErrors: Result<Step0Result>[] = [];
119
- for (const attestationOrBytes of attestationOrBytesArr) {
120
- const {subnet} = attestationOrBytes;
121
- const resultOrError = await wrapError(step0ValidationFn(fork, chain, attestationOrBytes, subnet));
122
- step0ResultOrErrors.push(resultOrError);
123
- }
124
-
125
- // step1: verify signatures of all valid attestations
126
- // map new index to index in resultOrErrors
127
- const newIndexToOldIndex = new Map<number, number>();
128
- const signatureSets: SingleSignatureSet[] = [];
129
- let newIndex = 0;
130
- const step0Results: Step0Result[] = [];
131
- for (const [i, resultOrError] of step0ResultOrErrors.entries()) {
132
- if (resultOrError.err) {
133
- continue;
134
- }
135
- step0Results.push(resultOrError.result);
136
- newIndexToOldIndex.set(newIndex, i);
137
- signatureSets.push(resultOrError.result.signatureSet);
138
- newIndex++;
139
- }
140
-
141
- let signatureValids: boolean[];
142
- const batchableBls = signatureSets.length >= chain.opts.minSameMessageSignatureSetsToBatch;
143
- if (batchableBls) {
144
- // all signature sets should have same signing root since we filtered in network processor
145
- signatureValids = await chain.bls.verifySignatureSetsSameMessage(
146
- signatureSets.map((set) => ({publicKey: set.pubkey, signature: set.signature})),
147
- signatureSets[0].signingRoot
148
- );
149
- } else {
150
- // don't want to block the main thread if there are too few signatures
151
- signatureValids = await Promise.all(
152
- signatureSets.map((set) => chain.bls.verifySignatureSets([set], {batchable: true}))
153
- );
154
- }
155
-
156
- // phase0 post validation
157
- for (const [i, sigValid] of signatureValids.entries()) {
158
- const oldIndex = newIndexToOldIndex.get(i);
159
- if (oldIndex == null) {
160
- // should not happen
161
- throw Error(`Cannot get old index for index ${i}`);
162
- }
163
-
164
- const {validatorIndex, attestation} = step0Results[i];
165
- const targetEpoch = attestation.data.target.epoch;
166
- if (sigValid) {
167
- // Now that the attestation has been fully verified, store that we have received a valid attestation from this validator.
168
- //
169
- // It's important to double check that the attestation still hasn't been observed, since
170
- // there can be a race-condition if we receive two attestations at the same time and
171
- // process them in different threads.
172
- if (chain.seenAttesters.isKnown(targetEpoch, validatorIndex)) {
173
- step0ResultOrErrors[oldIndex] = {
174
- err: new AttestationError(GossipAction.IGNORE, {
175
- code: AttestationErrorCode.ATTESTATION_ALREADY_KNOWN,
176
- targetEpoch,
177
- validatorIndex,
178
- }),
179
- };
180
- }
181
-
182
- // valid
183
- chain.seenAttesters.add(targetEpoch, validatorIndex);
184
- } else {
185
- step0ResultOrErrors[oldIndex] = {
186
- err: new AttestationError(GossipAction.IGNORE, {
187
- code: AttestationErrorCode.INVALID_SIGNATURE,
188
- }),
189
- };
190
- }
191
- }
192
-
193
- return {
194
- results: step0ResultOrErrors,
195
- batchableBls,
196
- };
197
- }
198
-
199
- /**
200
- * Validate attestations from api
201
- * - no need to deserialize attestation
202
- * - no subnet
203
- * - prioritize bls signature set
204
- */
205
- export async function validateApiAttestation(
206
- fork: ForkName,
207
- chain: IBeaconChain,
208
- attestationOrBytes: ApiAttestation
209
- ): Promise<AttestationValidationResult> {
210
- const prioritizeBls = true;
211
- const subnet = null;
212
-
213
- try {
214
- const step0Result = await validateAttestationNoSignatureCheck(fork, chain, attestationOrBytes, subnet);
215
- const {attestation, signatureSet, validatorIndex} = step0Result;
216
- const isValid = await chain.bls.verifySignatureSets([signatureSet], {batchable: true, priority: prioritizeBls});
217
-
218
- if (isValid) {
219
- const targetEpoch = attestation.data.target.epoch;
220
- chain.seenAttesters.add(targetEpoch, validatorIndex);
221
- return step0Result;
222
- }
223
-
224
- throw new AttestationError(GossipAction.IGNORE, {
225
- code: AttestationErrorCode.INVALID_SIGNATURE,
226
- });
227
- } catch (err) {
228
- if (err instanceof EpochCacheError && err.type.code === EpochCacheErrorCode.COMMITTEE_INDEX_OUT_OF_RANGE) {
229
- throw new AttestationError(GossipAction.IGNORE, {
230
- code: AttestationErrorCode.BAD_TARGET_EPOCH,
231
- });
232
- }
233
- throw err;
234
- }
235
- }
236
-
237
- /**
238
- * Only deserialize the single attestation if needed, use the cached AttestationData instead
239
- * This is to avoid deserializing similar attestation multiple times which could help the gc
240
- */
241
- async function validateAttestationNoSignatureCheck(
242
- fork: ForkName,
243
- chain: IBeaconChain,
244
- attestationOrBytes: AttestationOrBytes,
245
- /** Optional, to allow verifying attestations through API with unknown subnet */
246
- subnet: SubnetID | null
247
- ): Promise<Step0Result> {
248
- // Do checks in this order:
249
- // - do early checks (w/o indexed attestation)
250
- // - > obtain indexed attestation and committes per slot
251
- // - do middle checks w/ indexed attestation
252
- // - > verify signature
253
- // - do late checks w/ a valid signature
254
-
255
- // verify_early_checks
256
- // Run the checks that happen before an indexed attestation is constructed.
257
-
258
- let attestationOrCache:
259
- | {attestation: SingleAttestation; cache: null}
260
- | {attestation: null; cache: AttestationDataCacheEntry; serializedData: Uint8Array};
261
- let attDataKey: SeenAttDataKey | null = null;
262
- if (attestationOrBytes.serializedData) {
263
- // gossip
264
- const attSlot = attestationOrBytes.attSlot;
265
- attDataKey = getSeenAttDataKeyFromGossipAttestation(attestationOrBytes);
266
- const committeeIndexForLookup = isForkPostElectra(fork)
267
- ? (getCommitteeIndexFromAttestationOrBytes(fork, attestationOrBytes) ?? 0)
268
- : PRE_ELECTRA_SINGLE_ATTESTATION_COMMITTEE_INDEX;
269
- const cachedAttData =
270
- attDataKey !== null ? chain.seenAttestationDatas.get(attSlot, committeeIndexForLookup, attDataKey) : null;
271
- if (cachedAttData === null) {
272
- const attestation = sszDeserializeSingleAttestation(fork, attestationOrBytes.serializedData);
273
- // only deserialize on the first AttestationData that's not cached
274
- attestationOrCache = {attestation, cache: null};
275
- } else {
276
- attestationOrCache = {attestation: null, cache: cachedAttData, serializedData: attestationOrBytes.serializedData};
277
- }
278
- } else {
279
- // api
280
- attDataKey = null;
281
- attestationOrCache = {attestation: attestationOrBytes.attestation, cache: null};
282
- }
283
-
284
- const attData: phase0.AttestationData = attestationOrCache.attestation
285
- ? attestationOrCache.attestation.data
286
- : attestationOrCache.cache.attestationData;
287
- const attSlot = attData.slot;
288
- const attEpoch = computeEpochAtSlot(attSlot);
289
- const attTarget = attData.target;
290
- const targetEpoch = attTarget.epoch;
291
- let committeeIndex: number | null;
292
- if (attestationOrCache.attestation) {
293
- if (isElectraSingleAttestation(attestationOrCache.attestation)) {
294
- // api or first time validation of a gossip attestation
295
- committeeIndex = attestationOrCache.attestation.committeeIndex;
296
-
297
- // [REJECT] attestation.data.index == 0
298
- if (attData.index !== 0) {
299
- throw new AttestationError(GossipAction.REJECT, {code: AttestationErrorCode.NON_ZERO_ATTESTATION_DATA_INDEX});
300
- }
301
- } else {
302
- // phase0 attestation
303
- committeeIndex = attData.index;
304
- }
305
- } else {
306
- // found a seen AttestationData
307
- committeeIndex = attestationOrCache.cache.committeeIndex;
308
- }
309
-
310
- chain.metrics?.gossipAttestation.attestationSlotToClockSlot.observe(
311
- {caller: RegenCaller.validateGossipAttestation},
312
- chain.clock.currentSlot - attSlot
313
- );
314
-
315
- if (!attestationOrCache.cache) {
316
- // [REJECT] The attestation's epoch matches its target -- i.e. attestation.data.target.epoch == compute_epoch_at_slot(attestation.data.slot)
317
- if (targetEpoch !== attEpoch) {
318
- throw new AttestationError(GossipAction.REJECT, {
319
- code: AttestationErrorCode.BAD_TARGET_EPOCH,
320
- });
321
- }
322
-
323
- // Pre-deneb:
324
- // [IGNORE] attestation.data.slot is within the last ATTESTATION_PROPAGATION_SLOT_RANGE slots (within a MAXIMUM_GOSSIP_CLOCK_DISPARITY allowance)
325
- // -- i.e. attestation.data.slot + ATTESTATION_PROPAGATION_SLOT_RANGE >= current_slot >= attestation.data.slot
326
- // (a client MAY queue future attestations for processing at the appropriate slot).
327
- // Post-deneb:
328
- // [IGNORE] `attestation.data.slot` is equal to or earlier than the `current_slot` (with a `MAXIMUM_GOSSIP_CLOCK_DISPARITY` allowance)
329
- // -- i.e. `attestation.data.slot <= current_slot`
330
- // (a client MAY queue future attestation for processing at the appropriate slot).
331
- // [IGNORE] the epoch of `attestation.data.slot` is either the current or previous epoch
332
- // (with a `MAXIMUM_GOSSIP_CLOCK_DISPARITY` allowance)
333
- // -- i.e. `compute_epoch_at_slot(attestation.data.slot) in (get_previous_epoch(state), get_current_epoch(state))`
334
- verifyPropagationSlotRange(fork, chain, attestationOrCache.attestation.data.slot);
335
- }
336
-
337
- let aggregationBits: BitArray | null = null;
338
- let validatorCommitteeIndex: number | null = null;
339
- if (!isForkPostElectra(fork)) {
340
- // [REJECT] The attestation is unaggregated -- that is, it has exactly one participating validator
341
- // (len([bit for bit in attestation.aggregation_bits if bit]) == 1, i.e. exactly 1 bit is set).
342
- // > TODO: Do this check **before** getting the target state but don't recompute zipIndexes
343
- aggregationBits = attestationOrCache.attestation
344
- ? (attestationOrCache.attestation as SingleAttestation<ForkPreElectra>).aggregationBits
345
- : getAggregationBitsFromAttestationSerialized(attestationOrCache.serializedData);
346
- if (aggregationBits === null) {
347
- throw new AttestationError(GossipAction.REJECT, {
348
- code: AttestationErrorCode.INVALID_SERIALIZED_BYTES,
349
- });
350
- }
351
-
352
- const bitIndex = aggregationBits.getSingleTrueBit();
353
- if (bitIndex === null) {
354
- throw new AttestationError(GossipAction.REJECT, {
355
- code: AttestationErrorCode.NOT_EXACTLY_ONE_AGGREGATION_BIT_SET,
356
- });
357
- }
358
- validatorCommitteeIndex = bitIndex;
359
- }
360
-
361
- let committeeValidatorIndices: Uint32Array;
362
- let getSigningRoot: () => Uint8Array;
363
- let expectedSubnet: SubnetID;
364
- if (attestationOrCache.cache) {
365
- committeeValidatorIndices = attestationOrCache.cache.committeeValidatorIndices;
366
- const signingRoot = attestationOrCache.cache.signingRoot;
367
- getSigningRoot = () => signingRoot;
368
- expectedSubnet = attestationOrCache.cache.subnet;
369
- } else {
370
- // Attestations must be for a known block. If the block is unknown, we simply drop the
371
- // attestation and do not delay consideration for later.
372
- //
373
- // TODO (LH): Enforce a maximum skip distance for unaggregated attestations.
374
-
375
- // [IGNORE] The block being voted for (attestation.data.beacon_block_root) has been seen (via both gossip
376
- // and non-gossip sources) (a client MAY queue attestations for processing once block is retrieved).
377
- const attHeadBlock = verifyHeadBlockAndTargetRoot(
378
- chain,
379
- attestationOrCache.attestation.data.beaconBlockRoot,
380
- attestationOrCache.attestation.data.target.root,
381
- attSlot,
382
- attEpoch,
383
- RegenCaller.validateGossipAttestation,
384
- chain.opts.maxSkipSlots
385
- );
386
-
387
- // [REJECT] The block being voted for (attestation.data.beacon_block_root) passes validation.
388
- // > Altready check in `verifyHeadBlockAndTargetRoot()`
389
-
390
- // [IGNORE] The current finalized_checkpoint is an ancestor of the block defined by attestation.data.beacon_block_root
391
- // -- i.e. get_ancestor(store, attestation.data.beacon_block_root, compute_start_slot_at_epoch(store.finalized_checkpoint.epoch)) == store.finalized_checkpoint.root
392
- // > Altready check in `verifyHeadBlockAndTargetRoot()`
393
-
394
- // [REJECT] The attestation's target block is an ancestor of the block named in the LMD vote
395
- // --i.e. get_ancestor(store, attestation.data.beacon_block_root, compute_start_slot_at_epoch(attestation.data.target.epoch)) == attestation.data.target.root
396
- // > Altready check in `verifyHeadBlockAndTargetRoot()`
397
-
398
- const shuffling = await getShufflingForAttestationVerification(
399
- chain,
400
- attEpoch,
401
- attHeadBlock,
402
- RegenCaller.validateGossipAttestation
403
- );
404
-
405
- // [REJECT] The committee index is within the expected range
406
- // -- i.e. data.index < get_committee_count_per_slot(state, data.target.epoch)
407
- committeeValidatorIndices = getCommitteeValidatorIndices(shuffling, attSlot, committeeIndex);
408
- getSigningRoot = () => getAttestationDataSigningRoot(chain.config, attData);
409
- expectedSubnet = computeSubnetForSlot(shuffling, attSlot, committeeIndex);
410
- }
411
-
412
- let validatorIndex: number;
413
-
414
- if (!isForkPostElectra(fork)) {
415
- // The validity of aggregation bits are already checked above
416
- assert.notNull(aggregationBits);
417
- assert.notNull(validatorCommitteeIndex);
418
-
419
- validatorIndex = committeeValidatorIndices[validatorCommitteeIndex];
420
- // [REJECT] The number of aggregation bits matches the committee size
421
- // -- i.e. len(attestation.aggregation_bits) == len(get_beacon_committee(state, data.slot, data.index)).
422
- // > TODO: Is this necessary? Lighthouse does not do this check.
423
- if (aggregationBits.bitLen !== committeeValidatorIndices.length) {
424
- throw new AttestationError(GossipAction.REJECT, {
425
- code: AttestationErrorCode.WRONG_NUMBER_OF_AGGREGATION_BITS,
426
- });
427
- }
428
- } else {
429
- if (attestationOrCache.attestation) {
430
- validatorIndex = (attestationOrCache.attestation as SingleAttestation<ForkPostElectra>).attesterIndex;
431
- } else {
432
- const attesterIndex = getAttesterIndexFromSingleAttestationSerialized(attestationOrCache.serializedData);
433
- if (attesterIndex === null) {
434
- throw new AttestationError(GossipAction.REJECT, {
435
- code: AttestationErrorCode.INVALID_SERIALIZED_BYTES,
436
- });
437
- }
438
- validatorIndex = attesterIndex;
439
- }
440
-
441
- // [REJECT] The attester is a member of the committee -- i.e.
442
- // `attestation.attester_index in get_beacon_committee(state, attestation.data.slot, index)`.
443
- // Position of the validator in its committee
444
- validatorCommitteeIndex = committeeValidatorIndices.indexOf(validatorIndex);
445
- if (validatorCommitteeIndex === -1) {
446
- throw new AttestationError(GossipAction.REJECT, {
447
- code: AttestationErrorCode.ATTESTER_NOT_IN_COMMITTEE,
448
- });
449
- }
450
- }
451
-
452
- // LH > verify_middle_checks
453
- // Run the checks that apply to the indexed attestation before the signature is checked.
454
- // Check correct subnet
455
- // The attestation is the first valid attestation received for the participating validator for the slot, attestation.data.slot.
456
-
457
- // [REJECT] The attestation is for the correct subnet
458
- // -- i.e. compute_subnet_for_attestation(committees_per_slot, attestation.data.slot, attestation.data.index) == subnet_id,
459
- // where committees_per_slot = get_committee_count_per_slot(state, attestation.data.target.epoch),
460
- // which may be pre-computed along with the committee information for the signature check.
461
- if (subnet !== null && subnet !== expectedSubnet) {
462
- throw new AttestationError(GossipAction.REJECT, {
463
- code: AttestationErrorCode.INVALID_SUBNET_ID,
464
- received: subnet,
465
- expected: expectedSubnet,
466
- });
467
- }
468
-
469
- // [IGNORE] There has been no other valid attestation seen on an attestation subnet that has an
470
- // identical attestation.data.target.epoch and participating validator index.
471
- if (chain.seenAttesters.isKnown(targetEpoch, validatorIndex)) {
472
- throw new AttestationError(GossipAction.IGNORE, {
473
- code: AttestationErrorCode.ATTESTATION_ALREADY_KNOWN,
474
- targetEpoch,
475
- validatorIndex,
476
- });
477
- }
478
-
479
- // [REJECT] The signature of attestation is valid.
480
- const attestingIndices = [validatorIndex];
481
- let signatureSet: SingleSignatureSet;
482
- let attDataRootHex: RootHex;
483
- const signature = attestationOrCache.attestation
484
- ? attestationOrCache.attestation.signature
485
- : !isForkPostElectra(fork)
486
- ? getSignatureFromAttestationSerialized(attestationOrCache.serializedData)
487
- : getSignatureFromSingleAttestationSerialized(attestationOrCache.serializedData);
488
- if (signature === null) {
489
- throw new AttestationError(GossipAction.REJECT, {
490
- code: AttestationErrorCode.INVALID_SERIALIZED_BYTES,
491
- });
492
- }
493
-
494
- if (attestationOrCache.cache) {
495
- // there could be up to 6% of cpu time to compute signing root if we don't clone the signature set
496
- signatureSet = createSingleSignatureSetFromComponents(
497
- chain.index2pubkey[validatorIndex],
498
- attestationOrCache.cache.signingRoot,
499
- signature
500
- );
501
- attDataRootHex = attestationOrCache.cache.attDataRootHex;
502
- } else {
503
- signatureSet = createSingleSignatureSetFromComponents(
504
- chain.index2pubkey[validatorIndex],
505
- getSigningRoot(),
506
- signature
507
- );
508
-
509
- // add cached attestation data before verifying signature
510
- attDataRootHex = toRootHex(ssz.phase0.AttestationData.hashTreeRoot(attData));
511
- if (attDataKey) {
512
- // for pre-electra, committee index key is 0. See SeenAttestationDatas.add() documentation
513
- const committeeIndexKey = isForkPostElectra(fork)
514
- ? committeeIndex
515
- : PRE_ELECTRA_SINGLE_ATTESTATION_COMMITTEE_INDEX;
516
- chain.seenAttestationDatas.add(attSlot, committeeIndexKey, attDataKey, {
517
- committeeValidatorIndices,
518
- committeeIndex,
519
- signingRoot: signatureSet.signingRoot,
520
- subnet: expectedSubnet,
521
- // precompute this to be used in forkchoice
522
- // root of AttestationData was already cached during getIndexedAttestationSignatureSet
523
- attDataRootHex,
524
- attestationData: attData,
525
- });
526
- }
527
- }
528
-
529
- // no signature check, leave that for step1
530
- const indexedAttestation: IndexedAttestation = {
531
- attestingIndices,
532
- data: attData,
533
- signature,
534
- };
535
-
536
- const attestation: SingleAttestation = attestationOrCache.attestation
537
- ? attestationOrCache.attestation
538
- : !isForkPostElectra(fork)
539
- ? {
540
- // Aggregation bits are already asserted above to not be null
541
- aggregationBits: aggregationBits as BitArray,
542
- data: attData,
543
- signature,
544
- }
545
- : {
546
- committeeIndex,
547
- attesterIndex: validatorIndex,
548
- data: attData,
549
- signature,
550
- };
551
-
552
- return {
553
- attestation,
554
- indexedAttestation,
555
- subnet: expectedSubnet,
556
- attDataRootHex,
557
- signatureSet,
558
- validatorIndex,
559
- committeeIndex,
560
- validatorCommitteeIndex,
561
- committeeSize: committeeValidatorIndices.length,
562
- };
563
- }
564
-
565
- /**
566
- * Verify that the `attestation` is within the acceptable gossip propagation range, with reference
567
- * to the current slot of the `chain`.
568
- *
569
- * Accounts for `MAXIMUM_GOSSIP_CLOCK_DISPARITY`.
570
- * Note: We do not queue future attestations for later processing
571
- */
572
- export function verifyPropagationSlotRange(fork: ForkName, chain: IBeaconChain, attestationSlot: Slot): void {
573
- // slot with future tolerance of MAXIMUM_GOSSIP_CLOCK_DISPARITY_SEC
574
- const latestPermissibleSlot = chain.clock.slotWithFutureTolerance(MAXIMUM_GOSSIP_CLOCK_DISPARITY_SEC);
575
- if (attestationSlot > latestPermissibleSlot) {
576
- throw new AttestationError(GossipAction.IGNORE, {
577
- code: AttestationErrorCode.FUTURE_SLOT,
578
- latestPermissibleSlot,
579
- attestationSlot,
580
- });
581
- }
582
-
583
- // Post deneb the attestations are valid for current as well as previous epoch
584
- // while pre deneb they are valid for ATTESTATION_PROPAGATION_SLOT_RANGE
585
- //
586
- // see: https://github.com/ethereum/consensus-specs/pull/3360
587
- if (ForkSeq[fork] < ForkSeq.deneb) {
588
- const earliestPermissibleSlot = Math.max(
589
- // slot with past tolerance of MAXIMUM_GOSSIP_CLOCK_DISPARITY_SEC
590
- // ATTESTATION_PROPAGATION_SLOT_RANGE = SLOTS_PER_EPOCH
591
- chain.clock.slotWithPastTolerance(MAXIMUM_GOSSIP_CLOCK_DISPARITY_SEC) - SLOTS_PER_EPOCH,
592
- 0
593
- );
594
-
595
- if (attestationSlot < earliestPermissibleSlot) {
596
- throw new AttestationError(GossipAction.IGNORE, {
597
- code: AttestationErrorCode.PAST_SLOT,
598
- earliestPermissibleSlot,
599
- attestationSlot,
600
- });
601
- }
602
- } else {
603
- const attestationEpoch = computeEpochAtSlot(attestationSlot);
604
-
605
- // upper bound for current epoch is same as epoch of latestPermissibleSlot
606
- const latestPermissibleCurrentEpoch = computeEpochAtSlot(latestPermissibleSlot);
607
- if (attestationEpoch > latestPermissibleCurrentEpoch) {
608
- throw new AttestationError(GossipAction.IGNORE, {
609
- code: AttestationErrorCode.FUTURE_EPOCH,
610
- currentEpoch: latestPermissibleCurrentEpoch,
611
- attestationEpoch,
612
- });
613
- }
614
-
615
- // lower bound for previous epoch is same as epoch of earliestPermissibleSlot
616
- const currentEpochWithPastTolerance = computeEpochAtSlot(
617
- chain.clock.slotWithPastTolerance(MAXIMUM_GOSSIP_CLOCK_DISPARITY_SEC)
618
- );
619
-
620
- const earliestPermissiblePreviousEpoch = Math.max(currentEpochWithPastTolerance - 1, 0);
621
- if (attestationEpoch < earliestPermissiblePreviousEpoch) {
622
- throw new AttestationError(GossipAction.IGNORE, {
623
- code: AttestationErrorCode.PAST_EPOCH,
624
- previousEpoch: earliestPermissiblePreviousEpoch,
625
- attestationEpoch,
626
- });
627
- }
628
- }
629
- }
630
-
631
- /**
632
- * Verify:
633
- * 1. head block is known
634
- * 2. attestation's target block is an ancestor of the block named in the LMD vote
635
- */
636
- export function verifyHeadBlockAndTargetRoot(
637
- chain: IBeaconChain,
638
- beaconBlockRoot: Root,
639
- targetRoot: Root,
640
- attestationSlot: Slot,
641
- attestationEpoch: Epoch,
642
- caller: RegenCaller,
643
- maxSkipSlots?: number
644
- ): ProtoBlock {
645
- const headBlock = verifyHeadBlockIsKnown(chain, beaconBlockRoot);
646
- // Lighthouse rejects the attestation, however Lodestar only ignores considering it's not against the spec
647
- // it's more about a DOS protection to us
648
- // With verifyPropagationSlotRange() and maxSkipSlots = 32, it's unlikely we have to regenerate states in queue
649
- // to validate beacon_attestation and aggregate_and_proof
650
- const slotDistance = attestationSlot - headBlock.slot;
651
- chain.metrics?.gossipAttestation.headSlotToAttestationSlot.observe({caller}, slotDistance);
652
-
653
- if (maxSkipSlots !== undefined && slotDistance > maxSkipSlots) {
654
- throw new AttestationError(GossipAction.IGNORE, {
655
- code: AttestationErrorCode.TOO_MANY_SKIPPED_SLOTS,
656
- attestationSlot,
657
- headBlockSlot: headBlock.slot,
658
- });
659
- }
660
- verifyAttestationTargetRoot(headBlock, targetRoot, attestationEpoch);
661
- return headBlock;
662
- }
663
-
664
- /**
665
- * Get a shuffling for attestation verification from the ShufflingCache.
666
- * - if blockEpoch is attEpoch, use current shuffling of head state
667
- * - if blockEpoch is attEpoch - 1, use next shuffling of head state
668
- * - if blockEpoch is less than attEpoch - 1, dial head state to attEpoch - 1, and add to ShufflingCache
669
- *
670
- * This implementation does not require to dial head state to attSlot at fork boundary because we always get domain of attSlot
671
- * in consumer context.
672
- *
673
- * This is similar to the old getStateForAttestationVerification
674
- * see https://github.com/ChainSafe/lodestar/blob/v1.11.3/packages/beacon-node/src/chain/validation/attestation.ts#L566
675
- */
676
- export async function getShufflingForAttestationVerification(
677
- chain: IBeaconChain,
678
- attEpoch: Epoch,
679
- attHeadBlock: ProtoBlock,
680
- regenCaller: RegenCaller
681
- ): Promise<EpochShuffling> {
682
- const blockEpoch = computeEpochAtSlot(attHeadBlock.slot);
683
- const shufflingDependentRoot = getShufflingDependentRoot(chain.forkChoice, attEpoch, blockEpoch, attHeadBlock);
684
-
685
- const shuffling = await chain.shufflingCache.get(attEpoch, shufflingDependentRoot);
686
- if (shuffling) {
687
- // most of the time, we should get the shuffling from cache
688
- chain.metrics?.gossipAttestation.shufflingCacheHit.inc({caller: regenCaller});
689
- return shuffling;
690
- }
691
-
692
- chain.metrics?.gossipAttestation.shufflingCacheMiss.inc({caller: regenCaller});
693
- try {
694
- // for the 1st time of the same epoch and dependent root, it awaits for the regen state
695
- // from the 2nd time, it should use the same cached promise and it should reach the above code
696
- chain.metrics?.gossipAttestation.shufflingCacheRegenHit.inc({caller: regenCaller});
697
- return await chain.regenStateForAttestationVerification(
698
- attEpoch,
699
- shufflingDependentRoot,
700
- attHeadBlock,
701
- regenCaller
702
- );
703
- } catch (e) {
704
- chain.metrics?.gossipAttestation.shufflingCacheRegenMiss.inc({caller: regenCaller});
705
- throw new AttestationError(GossipAction.IGNORE, {
706
- code: AttestationErrorCode.MISSING_STATE_TO_VERIFY_ATTESTATION,
707
- error: e as Error,
708
- });
709
- }
710
- }
711
-
712
- /**
713
- * Different version of getAttestationDataSigningRoot in state-transition which doesn't require a state.
714
- */
715
- export function getAttestationDataSigningRoot(config: BeaconConfig, data: phase0.AttestationData): Uint8Array {
716
- const slot = computeStartSlotAtEpoch(data.target.epoch);
717
- // previously, we call `domain = config.getDomain(state.slot, DOMAIN_BEACON_ATTESTER, slot)`
718
- // 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
719
- // instead of that, just use the fork at slot in the attestation data
720
- const fork = config.getForkName(slot);
721
- const domain = config.getDomainAtFork(fork, DOMAIN_BEACON_ATTESTER);
722
- return computeSigningRoot(ssz.phase0.AttestationData, data, domain);
723
- }
724
-
725
- /**
726
- * Checks if the `attestation.data.beaconBlockRoot` is known to this chain.
727
- *
728
- * The block root may not be known for two reasons:
729
- *
730
- * 1. The block has never been verified by our application.
731
- * 2. The block is prior to the latest finalized block.
732
- *
733
- * Case (1) is the exact thing we're trying to detect. However case (2) is a little different, but
734
- * it's still fine to ignore here because there's no need for us to handle attestations that are
735
- * already finalized.
736
- */
737
- function verifyHeadBlockIsKnown(chain: IBeaconChain, beaconBlockRoot: Root): ProtoBlock {
738
- // TODO (LH): Enforce a maximum skip distance for unaggregated attestations.
739
-
740
- const headBlock = chain.forkChoice.getBlock(beaconBlockRoot);
741
- if (headBlock === null) {
742
- throw new AttestationError(GossipAction.IGNORE, {
743
- code: AttestationErrorCode.UNKNOWN_OR_PREFINALIZED_BEACON_BLOCK_ROOT,
744
- root: toRootHex(beaconBlockRoot),
745
- });
746
- }
747
-
748
- return headBlock;
749
- }
750
-
751
- /**
752
- * Verifies that the `attestation.data.target.root` is indeed the target root of the block at
753
- * `attestation.data.beacon_block_root`.
754
- */
755
- function verifyAttestationTargetRoot(headBlock: ProtoBlock, targetRoot: Root, attestationEpoch: Epoch): void {
756
- // Check the attestation target root.
757
- const headBlockEpoch = computeEpochAtSlot(headBlock.slot);
758
-
759
- if (headBlockEpoch > attestationEpoch) {
760
- // The epoch references an invalid head block from a future epoch.
761
- //
762
- // This check is not in the specification, however we guard against it since it opens us up
763
- // to weird edge cases during verification.
764
- //
765
- // Whilst this attestation *technically* could be used to add value to a block, it is
766
- // invalid in the spirit of the protocol. Here we choose safety over profit.
767
- //
768
- // Reference:
769
- // https://github.com/ethereum/consensus-specs/pull/2001#issuecomment-699246659
770
- throw new AttestationError(GossipAction.REJECT, {
771
- code: AttestationErrorCode.INVALID_TARGET_ROOT,
772
- targetRoot: toRootHex(targetRoot),
773
- expected: null,
774
- });
775
- }
776
-
777
- const expectedTargetRoot =
778
- headBlockEpoch === attestationEpoch
779
- ? // If the block is in the same epoch as the attestation, then use the target root
780
- // from the block.
781
- headBlock.targetRoot
782
- : // If the head block is from a previous epoch then skip slots will cause the head block
783
- // root to become the target block root.
784
- //
785
- // We know the head block is from a previous epoch due to a previous check.
786
- headBlock.blockRoot;
787
-
788
- // TODO: Do a fast comparision to convert and compare byte by byte
789
- if (expectedTargetRoot !== toRootHex(targetRoot)) {
790
- // Reject any attestation with an invalid target root.
791
- throw new AttestationError(GossipAction.REJECT, {
792
- code: AttestationErrorCode.INVALID_TARGET_ROOT,
793
- targetRoot: toRootHex(targetRoot),
794
- expected: expectedTargetRoot,
795
- });
796
- }
797
- }
798
-
799
- /**
800
- * Get a list of validator indices in the given committee
801
- * attestationIndex - Index of the committee in shuffling.committees
802
- */
803
- export function getCommitteeValidatorIndices(
804
- shuffling: EpochShuffling,
805
- attestationSlot: Slot,
806
- attestationIndex: number
807
- ): Uint32Array {
808
- const {committees} = shuffling;
809
- const slotCommittees = committees[attestationSlot % SLOTS_PER_EPOCH];
810
-
811
- if (attestationIndex >= slotCommittees.length) {
812
- throw new AttestationError(GossipAction.REJECT, {
813
- code: AttestationErrorCode.COMMITTEE_INDEX_OUT_OF_RANGE,
814
- index: attestationIndex,
815
- });
816
- }
817
- return slotCommittees[attestationIndex];
818
- }
819
-
820
- /**
821
- * Compute the correct subnet for a slot/committee index
822
- */
823
- export function computeSubnetForSlot(shuffling: EpochShuffling, slot: number, committeeIndex: number): SubnetID {
824
- const slotsSinceEpochStart = slot % SLOTS_PER_EPOCH;
825
- const committeesSinceEpochStart = shuffling.committeesPerSlot * slotsSinceEpochStart;
826
- return (committeesSinceEpochStart + committeeIndex) % ATTESTATION_SUBNET_COUNT;
827
- }
828
-
829
- /**
830
- * Return fork-dependent seen attestation key
831
- * - for pre-electra, it's the AttestationData base64 from Attestation
832
- * - for electra and later, it's the AttestationData base64 from SingleAttestation
833
- * - consumers need to also pass slot + committeeIndex to get the correct SeenAttestationData
834
- */
835
- export function getSeenAttDataKeyFromGossipAttestation(attestation: GossipAttestation): SeenAttDataKey | null {
836
- // SeenAttDataKey is the same as gossip index
837
- return attestation.attDataBase64;
838
- }
839
-
840
- /**
841
- * Extract attestation data key from SignedAggregateAndProof Uint8Array to use cached data from SeenAttestationDatas
842
- * - for both electra + pre-electra, it's the AttestationData base64
843
- * - consumers need to also pass slot + committeeIndex to get the correct SeenAttestationData
844
- */
845
- export function getSeenAttDataKeyFromSignedAggregateAndProof(
846
- fork: ForkName,
847
- aggregateAndProof: Uint8Array
848
- ): SeenAttDataKey | null {
849
- return isForkPostElectra(fork)
850
- ? getAttDataFromSignedAggregateAndProofElectra(aggregateAndProof)
851
- : getAttDataFromSignedAggregateAndProofPhase0(aggregateAndProof);
852
- }
853
-
854
- export function getCommitteeIndexFromAttestationOrBytes(
855
- fork: ForkName,
856
- attestationOrBytes: AttestationOrBytes
857
- ): CommitteeIndex | null {
858
- const isGossipAttestation = attestationOrBytes.serializedData !== null;
859
-
860
- if (isForkPostElectra(fork)) {
861
- if (isGossipAttestation) {
862
- return getCommitteeIndexFromSingleAttestationSerialized(ForkName.electra, attestationOrBytes.serializedData);
863
- }
864
- return (attestationOrBytes.attestation as SingleAttestation<ForkPostElectra>).committeeIndex;
865
- }
866
- if (isGossipAttestation) {
867
- return getCommitteeIndexFromSingleAttestationSerialized(ForkName.phase0, attestationOrBytes.serializedData);
868
- }
869
- return (attestationOrBytes.attestation as SingleAttestation<ForkPreElectra>).data.index;
870
- }
871
-
872
- /**
873
- * Convert pre-electra single attestation (`phase0.Attestation`) to post-electra `SingleAttestation`
874
- */
875
- export function toElectraSingleAttestation(
876
- attestation: SingleAttestation<ForkPreElectra>,
877
- attesterIndex: ValidatorIndex
878
- ): SingleAttestation<ForkPostElectra> {
879
- return {
880
- committeeIndex: attestation.data.index,
881
- attesterIndex,
882
- data: attestation.data,
883
- signature: attestation.signature,
884
- };
885
- }