@lodestar/beacon-node 1.35.0-dev.e18102ed8c → 1.35.0-dev.f45a2be721

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 (978) 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/index.js +8 -2
  4. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  5. package/lib/api/impl/beacon/blocks/utils.d.ts.map +1 -0
  6. package/lib/api/impl/beacon/index.d.ts.map +1 -0
  7. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -0
  8. package/lib/api/impl/beacon/rewards/index.d.ts.map +1 -0
  9. package/lib/api/impl/beacon/state/index.d.ts.map +1 -0
  10. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -0
  11. package/lib/api/impl/config/constants.d.ts +9 -9
  12. package/lib/api/impl/config/constants.d.ts.map +1 -0
  13. package/lib/api/impl/config/constants.js +16 -9
  14. package/lib/api/impl/config/constants.js.map +1 -1
  15. package/lib/api/impl/config/index.d.ts.map +1 -0
  16. package/lib/api/impl/debug/index.d.ts.map +1 -0
  17. package/lib/api/impl/errors.d.ts.map +1 -0
  18. package/lib/api/impl/events/index.d.ts.map +1 -0
  19. package/lib/api/impl/index.d.ts.map +1 -0
  20. package/lib/api/impl/lightclient/index.d.ts.map +1 -0
  21. package/lib/api/impl/lodestar/index.d.ts.map +1 -0
  22. package/lib/api/impl/lodestar/index.js +1 -1
  23. package/lib/api/impl/lodestar/index.js.map +1 -1
  24. package/lib/api/impl/node/index.d.ts.map +1 -0
  25. package/lib/api/impl/node/utils.d.ts.map +1 -0
  26. package/lib/api/impl/proof/index.d.ts.map +1 -0
  27. package/lib/api/impl/types.d.ts.map +1 -0
  28. package/lib/api/impl/utils.d.ts.map +1 -0
  29. package/lib/api/impl/validator/index.d.ts.map +1 -0
  30. package/lib/api/impl/validator/index.js +24 -33
  31. package/lib/api/impl/validator/index.js.map +1 -1
  32. package/lib/api/impl/validator/utils.d.ts.map +1 -0
  33. package/lib/api/index.d.ts.map +1 -0
  34. package/lib/api/options.d.ts.map +1 -0
  35. package/lib/api/rest/activeSockets.d.ts.map +1 -0
  36. package/lib/api/rest/base.d.ts.map +1 -0
  37. package/lib/api/rest/index.d.ts.map +1 -0
  38. package/lib/api/rest/swaggerUI.d.ts.map +1 -0
  39. package/lib/bun-wrappers/prometheus-gc-stats.d.ts.map +1 -0
  40. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -0
  41. package/lib/chain/GetBlobsTracker.d.ts.map +1 -0
  42. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -0
  43. package/lib/chain/archiveStore/constants.d.ts.map +1 -0
  44. package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -0
  45. package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -0
  46. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +1 -0
  47. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  48. package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +1 -0
  49. package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -0
  50. package/lib/chain/archiveStore/historicalState/worker.d.ts.map +1 -0
  51. package/lib/chain/archiveStore/historicalState/worker.js +1 -1
  52. package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
  53. package/lib/chain/archiveStore/index.d.ts.map +1 -0
  54. package/lib/chain/archiveStore/interface.d.ts.map +1 -0
  55. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -0
  56. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -0
  57. package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +1 -0
  58. package/lib/chain/archiveStore/utils/updateBackfillRange.d.ts.map +1 -0
  59. package/lib/chain/balancesCache.d.ts.map +1 -0
  60. package/lib/chain/beaconProposerCache.d.ts.map +1 -0
  61. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -0
  62. package/lib/chain/blocks/blockInput/blockInput.js +3 -2
  63. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  64. package/lib/chain/blocks/blockInput/errors.d.ts.map +1 -0
  65. package/lib/chain/blocks/blockInput/index.d.ts.map +1 -0
  66. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -0
  67. package/lib/chain/blocks/blockInput/utils.d.ts.map +1 -0
  68. package/lib/chain/blocks/importBlock.d.ts.map +1 -0
  69. package/lib/chain/blocks/importBlock.js +7 -6
  70. package/lib/chain/blocks/importBlock.js.map +1 -1
  71. package/lib/chain/blocks/index.d.ts.map +1 -0
  72. package/lib/chain/blocks/types.d.ts.map +1 -0
  73. package/lib/chain/blocks/utils/blowfishBanner.d.ts.map +1 -0
  74. package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -0
  75. package/lib/chain/blocks/utils/checkpoint.d.ts.map +1 -0
  76. package/lib/chain/blocks/utils/giraffeBanner.d.ts.map +1 -0
  77. package/lib/chain/blocks/utils/ownBanner.d.ts.map +1 -0
  78. package/lib/chain/blocks/utils/pandaMergeTransitionBanner.d.ts.map +1 -0
  79. package/lib/chain/blocks/utils/zebraBanner.d.ts.map +1 -0
  80. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -0
  81. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -0
  82. package/lib/chain/blocks/verifyBlocksDataAvailability.js +8 -1
  83. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  84. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -0
  85. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -0
  86. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -0
  87. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -0
  88. package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -0
  89. package/lib/chain/blocks/writeBlockInputToDb.js +1 -7
  90. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  91. package/lib/chain/bls/index.d.ts.map +1 -0
  92. package/lib/chain/bls/interface.d.ts.map +1 -0
  93. package/lib/chain/bls/maybeBatch.d.ts.map +1 -0
  94. package/lib/chain/bls/multithread/index.d.ts.map +1 -0
  95. package/lib/chain/bls/multithread/index.js +1 -0
  96. package/lib/chain/bls/multithread/index.js.map +1 -1
  97. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -0
  98. package/lib/chain/bls/multithread/poolSize.d.ts.map +1 -0
  99. package/lib/chain/bls/multithread/types.d.ts.map +1 -0
  100. package/lib/chain/bls/multithread/utils.d.ts.map +1 -0
  101. package/lib/chain/bls/multithread/worker.d.ts.map +1 -0
  102. package/lib/chain/bls/singleThread.d.ts.map +1 -0
  103. package/lib/chain/bls/utils.d.ts.map +1 -0
  104. package/lib/chain/chain.d.ts +1 -1
  105. package/lib/chain/chain.d.ts.map +1 -0
  106. package/lib/chain/chain.js +4 -6
  107. package/lib/chain/chain.js.map +1 -1
  108. package/lib/chain/emitter.d.ts +2 -2
  109. package/lib/chain/emitter.d.ts.map +1 -0
  110. package/lib/chain/errors/attestationError.d.ts.map +1 -0
  111. package/lib/chain/errors/attesterSlashingError.d.ts.map +1 -0
  112. package/lib/chain/errors/blobSidecarError.d.ts.map +1 -0
  113. package/lib/chain/errors/blockError.d.ts.map +1 -0
  114. package/lib/chain/errors/blsToExecutionChangeError.d.ts.map +1 -0
  115. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -0
  116. package/lib/chain/errors/gossipValidation.d.ts.map +1 -0
  117. package/lib/chain/errors/index.d.ts.map +1 -0
  118. package/lib/chain/errors/lightClientError.d.ts.map +1 -0
  119. package/lib/chain/errors/proposerSlashingError.d.ts.map +1 -0
  120. package/lib/chain/errors/syncCommitteeError.d.ts.map +1 -0
  121. package/lib/chain/errors/voluntaryExitError.d.ts.map +1 -0
  122. package/lib/chain/forkChoice/index.d.ts.map +1 -0
  123. package/lib/chain/genesis/genesis.d.ts.map +1 -0
  124. package/lib/chain/genesis/interface.d.ts.map +1 -0
  125. package/lib/chain/index.d.ts.map +1 -0
  126. package/lib/chain/initState.d.ts.map +1 -0
  127. package/lib/chain/interface.d.ts.map +1 -0
  128. package/lib/chain/lightClient/index.d.ts +2 -2
  129. package/lib/chain/lightClient/index.d.ts.map +1 -0
  130. package/lib/chain/lightClient/index.js +2 -0
  131. package/lib/chain/lightClient/index.js.map +1 -1
  132. package/lib/chain/lightClient/proofs.d.ts.map +1 -0
  133. package/lib/chain/lightClient/types.d.ts.map +1 -0
  134. package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -0
  135. package/lib/chain/opPools/attestationPool.d.ts +2 -3
  136. package/lib/chain/opPools/attestationPool.d.ts.map +1 -0
  137. package/lib/chain/opPools/attestationPool.js +3 -5
  138. package/lib/chain/opPools/attestationPool.js.map +1 -1
  139. package/lib/chain/opPools/index.d.ts.map +1 -0
  140. package/lib/chain/opPools/opPool.d.ts.map +1 -0
  141. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts +3 -2
  142. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -0
  143. package/lib/chain/opPools/syncCommitteeMessagePool.js +6 -5
  144. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  145. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -0
  146. package/lib/chain/opPools/types.d.ts +1 -1
  147. package/lib/chain/opPools/types.d.ts.map +1 -0
  148. package/lib/chain/opPools/types.js +1 -1
  149. package/lib/chain/opPools/types.js.map +1 -1
  150. package/lib/chain/opPools/utils.d.ts.map +1 -0
  151. package/lib/chain/options.d.ts.map +1 -0
  152. package/lib/chain/prepareNextSlot.d.ts +3 -3
  153. package/lib/chain/prepareNextSlot.d.ts.map +1 -0
  154. package/lib/chain/prepareNextSlot.js +8 -8
  155. package/lib/chain/prepareNextSlot.js.map +1 -1
  156. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -0
  157. package/lib/chain/produceBlock/index.d.ts.map +1 -0
  158. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -4
  159. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -0
  160. package/lib/chain/produceBlock/produceBlockBody.js +13 -4
  161. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  162. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts.map +1 -0
  163. package/lib/chain/regen/errors.d.ts.map +1 -0
  164. package/lib/chain/regen/index.d.ts.map +1 -0
  165. package/lib/chain/regen/interface.d.ts +1 -0
  166. package/lib/chain/regen/interface.d.ts.map +1 -0
  167. package/lib/chain/regen/interface.js +1 -0
  168. package/lib/chain/regen/interface.js.map +1 -1
  169. package/lib/chain/regen/queued.d.ts.map +1 -0
  170. package/lib/chain/regen/regen.d.ts.map +1 -0
  171. package/lib/chain/reprocess.d.ts.map +1 -0
  172. package/lib/chain/rewards/attestationsRewards.d.ts.map +1 -0
  173. package/lib/chain/rewards/blockRewards.d.ts.map +1 -0
  174. package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +1 -0
  175. package/lib/chain/seenCache/index.d.ts.map +1 -0
  176. package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -0
  177. package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -0
  178. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -0
  179. package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -0
  180. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -0
  181. package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -0
  182. package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -0
  183. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -0
  184. package/lib/chain/seenCache/seenGossipBlockInput.js +8 -1
  185. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  186. package/lib/chain/serializeState.d.ts.map +1 -0
  187. package/lib/chain/shufflingCache.d.ts.map +1 -0
  188. package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +1 -0
  189. package/lib/chain/stateCache/datastore/db.d.ts.map +1 -0
  190. package/lib/chain/stateCache/datastore/file.d.ts.map +1 -0
  191. package/lib/chain/stateCache/datastore/index.d.ts.map +1 -0
  192. package/lib/chain/stateCache/datastore/types.d.ts.map +1 -0
  193. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -0
  194. package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +1 -0
  195. package/lib/chain/stateCache/index.d.ts.map +1 -0
  196. package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -0
  197. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -0
  198. package/lib/chain/stateCache/persistentCheckpointsCache.js +9 -8
  199. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  200. package/lib/chain/stateCache/types.d.ts.map +1 -0
  201. package/lib/chain/validation/aggregateAndProof.d.ts.map +1 -0
  202. package/lib/chain/validation/attestation.d.ts.map +1 -0
  203. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -0
  204. package/lib/chain/validation/blobSidecar.d.ts.map +1 -0
  205. package/lib/chain/validation/block.d.ts.map +1 -0
  206. package/lib/chain/validation/blsToExecutionChange.d.ts.map +1 -0
  207. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -0
  208. package/lib/chain/validation/dataColumnSidecar.js +1 -1
  209. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  210. package/lib/chain/validation/index.d.ts.map +1 -0
  211. package/lib/chain/validation/lightClientFinalityUpdate.d.ts.map +1 -0
  212. package/lib/chain/validation/lightClientFinalityUpdate.js +4 -3
  213. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  214. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts +6 -4
  215. package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +1 -0
  216. package/lib/chain/validation/lightClientOptimisticUpdate.js +11 -11
  217. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  218. package/lib/chain/validation/proposerSlashing.d.ts.map +1 -0
  219. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +1 -0
  220. package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -0
  221. package/lib/chain/validation/signatureSets/index.d.ts.map +1 -0
  222. package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +1 -0
  223. package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -0
  224. package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -0
  225. package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -0
  226. package/lib/chain/validation/syncCommittee.d.ts.map +1 -0
  227. package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -0
  228. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -0
  229. package/lib/chain/validatorMonitor.d.ts.map +1 -0
  230. package/lib/chain/validatorMonitor.js +21 -15
  231. package/lib/chain/validatorMonitor.js.map +1 -1
  232. package/lib/constants/constants.d.ts.map +1 -0
  233. package/lib/constants/index.d.ts.map +1 -0
  234. package/lib/constants/network.d.ts.map +1 -0
  235. package/lib/db/beacon.d.ts.map +1 -0
  236. package/lib/db/buckets.d.ts +4 -4
  237. package/lib/db/buckets.d.ts.map +1 -0
  238. package/lib/db/buckets.js +4 -4
  239. package/lib/db/buckets.js.map +1 -1
  240. package/lib/db/index.d.ts.map +1 -0
  241. package/lib/db/interface.d.ts.map +1 -0
  242. package/lib/db/options.d.ts.map +1 -0
  243. package/lib/db/repositories/attesterSlashing.d.ts.map +1 -0
  244. package/lib/db/repositories/backfilledRanges.d.ts.map +1 -0
  245. package/lib/db/repositories/blobSidecars.d.ts.map +1 -0
  246. package/lib/db/repositories/blobSidecars.js +1 -1
  247. package/lib/db/repositories/blobSidecars.js.map +1 -1
  248. package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -0
  249. package/lib/db/repositories/blobSidecarsArchive.js +1 -1
  250. package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
  251. package/lib/db/repositories/block.d.ts.map +1 -0
  252. package/lib/db/repositories/blockArchive.d.ts.map +1 -0
  253. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  254. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -0
  255. package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -0
  256. package/lib/db/repositories/checkpointState.d.ts.map +1 -0
  257. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -0
  258. package/lib/db/repositories/dataColumnSidecar.js +1 -1
  259. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  260. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -0
  261. package/lib/db/repositories/dataColumnSidecarArchive.js +1 -1
  262. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  263. package/lib/db/repositories/depositDataRoot.d.ts.map +1 -0
  264. package/lib/db/repositories/depositEvent.d.ts.map +1 -0
  265. package/lib/db/repositories/eth1Data.d.ts.map +1 -0
  266. package/lib/db/repositories/index.d.ts.map +1 -0
  267. package/lib/db/repositories/lightclientBestUpdate.d.ts.map +1 -0
  268. package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +1 -0
  269. package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +1 -0
  270. package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -0
  271. package/lib/db/repositories/proposerSlashing.d.ts.map +1 -0
  272. package/lib/db/repositories/stateArchive.d.ts.map +1 -0
  273. package/lib/db/repositories/stateArchiveIndex.d.ts.map +1 -0
  274. package/lib/db/repositories/voluntaryExit.d.ts.map +1 -0
  275. package/lib/db/single/index.d.ts.map +1 -0
  276. package/lib/db/single/preGenesisState.d.ts.map +1 -0
  277. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +1 -0
  278. package/lib/eth1/errors.d.ts.map +1 -0
  279. package/lib/eth1/eth1DataCache.d.ts.map +1 -0
  280. package/lib/eth1/eth1DepositDataTracker.d.ts.map +1 -0
  281. package/lib/eth1/eth1DepositsCache.d.ts.map +1 -0
  282. package/lib/eth1/eth1MergeBlockTracker.d.ts.map +1 -0
  283. package/lib/eth1/index.d.ts.map +1 -0
  284. package/lib/eth1/interface.d.ts.map +1 -0
  285. package/lib/eth1/options.d.ts.map +1 -0
  286. package/lib/eth1/provider/eth1Provider.d.ts.map +1 -0
  287. package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +1 -0
  288. package/lib/eth1/provider/jwt.d.ts.map +1 -0
  289. package/lib/eth1/provider/utils.d.ts.map +1 -0
  290. package/lib/eth1/stream.d.ts.map +1 -0
  291. package/lib/eth1/utils/depositContract.d.ts.map +1 -0
  292. package/lib/eth1/utils/deposits.d.ts.map +1 -0
  293. package/lib/eth1/utils/eth1Data.d.ts.map +1 -0
  294. package/lib/eth1/utils/eth1DepositEvent.d.ts.map +1 -0
  295. package/lib/eth1/utils/eth1Vote.d.ts.map +1 -0
  296. package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +1 -0
  297. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +1 -0
  298. package/lib/execution/builder/cache.d.ts.map +1 -0
  299. package/lib/execution/builder/http.d.ts.map +1 -0
  300. package/lib/execution/builder/index.d.ts.map +1 -0
  301. package/lib/execution/builder/interface.d.ts.map +1 -0
  302. package/lib/execution/builder/utils.d.ts.map +1 -0
  303. package/lib/execution/engine/disabled.d.ts.map +1 -0
  304. package/lib/execution/engine/http.d.ts.map +1 -0
  305. package/lib/execution/engine/index.d.ts.map +1 -0
  306. package/lib/execution/engine/interface.d.ts.map +1 -0
  307. package/lib/execution/engine/mock.d.ts.map +1 -0
  308. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -0
  309. package/lib/execution/engine/types.d.ts.map +1 -0
  310. package/lib/execution/engine/utils.d.ts.map +1 -0
  311. package/lib/execution/index.d.ts.map +1 -0
  312. package/lib/index.d.ts.map +1 -0
  313. package/lib/metrics/index.d.ts.map +1 -0
  314. package/lib/metrics/metrics/beacon.d.ts.map +1 -0
  315. package/lib/metrics/metrics/lodestar.d.ts +1 -1
  316. package/lib/metrics/metrics/lodestar.d.ts.map +1 -0
  317. package/lib/metrics/metrics/lodestar.js +3 -3
  318. package/lib/metrics/metrics/lodestar.js.map +1 -1
  319. package/lib/metrics/metrics.d.ts.map +1 -0
  320. package/lib/metrics/nodeJsMetrics.d.ts.map +1 -0
  321. package/lib/metrics/options.d.ts.map +1 -0
  322. package/lib/metrics/server/http.d.ts.map +1 -0
  323. package/lib/metrics/server/index.d.ts.map +1 -0
  324. package/lib/metrics/utils/avgMinMax.d.ts.map +1 -0
  325. package/lib/metrics/utils/gauge.d.ts.map +1 -0
  326. package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -0
  327. package/lib/monitoring/clientStats.d.ts.map +1 -0
  328. package/lib/monitoring/index.d.ts.map +1 -0
  329. package/lib/monitoring/options.d.ts.map +1 -0
  330. package/lib/monitoring/properties.d.ts.map +1 -0
  331. package/lib/monitoring/service.d.ts.map +1 -0
  332. package/lib/monitoring/system.d.ts.map +1 -0
  333. package/lib/monitoring/types.d.ts.map +1 -0
  334. package/lib/network/core/events.d.ts.map +1 -0
  335. package/lib/network/core/index.d.ts.map +1 -0
  336. package/lib/network/core/metrics.d.ts.map +1 -0
  337. package/lib/network/core/networkCore.d.ts.map +1 -0
  338. package/lib/network/core/networkCoreWorker.d.ts.map +1 -0
  339. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -0
  340. package/lib/network/core/networkCoreWorkerHandler.js +9 -3
  341. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  342. package/lib/network/core/types.d.ts.map +1 -0
  343. package/lib/network/discv5/index.d.ts.map +1 -0
  344. package/lib/network/discv5/index.js +4 -1
  345. package/lib/network/discv5/index.js.map +1 -1
  346. package/lib/network/discv5/types.d.ts.map +1 -0
  347. package/lib/network/discv5/utils.d.ts.map +1 -0
  348. package/lib/network/discv5/worker.d.ts.map +1 -0
  349. package/lib/network/events.d.ts.map +1 -0
  350. package/lib/network/forks.d.ts.map +1 -0
  351. package/lib/network/gossip/constants.d.ts.map +1 -0
  352. package/lib/network/gossip/encoding.d.ts.map +1 -0
  353. package/lib/network/gossip/errors.d.ts.map +1 -0
  354. package/lib/network/gossip/gossipsub.d.ts +1 -0
  355. package/lib/network/gossip/gossipsub.d.ts.map +1 -0
  356. package/lib/network/gossip/gossipsub.js +36 -17
  357. package/lib/network/gossip/gossipsub.js.map +1 -1
  358. package/lib/network/gossip/index.d.ts.map +1 -0
  359. package/lib/network/gossip/interface.d.ts.map +1 -0
  360. package/lib/network/gossip/metrics.d.ts +15 -7
  361. package/lib/network/gossip/metrics.d.ts.map +1 -0
  362. package/lib/network/gossip/metrics.js +16 -6
  363. package/lib/network/gossip/metrics.js.map +1 -1
  364. package/lib/network/gossip/scoringParameters.d.ts.map +1 -0
  365. package/lib/network/gossip/scoringParameters.js +4 -4
  366. package/lib/network/gossip/scoringParameters.js.map +1 -1
  367. package/lib/network/gossip/topic.d.ts.map +1 -0
  368. package/lib/network/gossip/topic.js +2 -2
  369. package/lib/network/gossip/topic.js.map +1 -1
  370. package/lib/network/index.d.ts.map +1 -0
  371. package/lib/network/interface.d.ts.map +1 -0
  372. package/lib/network/libp2p/error.d.ts.map +1 -0
  373. package/lib/network/libp2p/index.d.ts.map +1 -0
  374. package/lib/network/libp2p/index.js +9 -1
  375. package/lib/network/libp2p/index.js.map +1 -1
  376. package/lib/network/metadata.d.ts.map +1 -0
  377. package/lib/network/metadata.js +2 -1
  378. package/lib/network/metadata.js.map +1 -1
  379. package/lib/network/network.d.ts +1 -1
  380. package/lib/network/network.d.ts.map +1 -0
  381. package/lib/network/network.js +11 -13
  382. package/lib/network/network.js.map +1 -1
  383. package/lib/network/networkConfig.d.ts.map +1 -0
  384. package/lib/network/options.d.ts.map +1 -0
  385. package/lib/network/peers/client.d.ts.map +1 -0
  386. package/lib/network/peers/datastore.d.ts +2 -2
  387. package/lib/network/peers/datastore.d.ts.map +1 -0
  388. package/lib/network/peers/datastore.js +2 -2
  389. package/lib/network/peers/datastore.js.map +1 -1
  390. package/lib/network/peers/discover.d.ts.map +1 -0
  391. package/lib/network/peers/index.d.ts.map +1 -0
  392. package/lib/network/peers/peerManager.d.ts.map +1 -0
  393. package/lib/network/peers/peerManager.js +2 -1
  394. package/lib/network/peers/peerManager.js.map +1 -1
  395. package/lib/network/peers/peersData.d.ts.map +1 -0
  396. package/lib/network/peers/score/constants.d.ts.map +1 -0
  397. package/lib/network/peers/score/index.d.ts.map +1 -0
  398. package/lib/network/peers/score/interface.d.ts.map +1 -0
  399. package/lib/network/peers/score/score.d.ts.map +1 -0
  400. package/lib/network/peers/score/store.d.ts.map +1 -0
  401. package/lib/network/peers/score/utils.d.ts.map +1 -0
  402. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -0
  403. package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +1 -0
  404. package/lib/network/peers/utils/getConnectedPeerIds.d.ts.map +1 -0
  405. package/lib/network/peers/utils/index.d.ts.map +1 -0
  406. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -0
  407. package/lib/network/peers/utils/subnetMap.d.ts.map +1 -0
  408. package/lib/network/processor/aggregatorTracker.d.ts.map +1 -0
  409. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -0
  410. package/lib/network/processor/gossipHandlers.d.ts.map +1 -0
  411. package/lib/network/processor/gossipHandlers.js +1 -1
  412. package/lib/network/processor/gossipHandlers.js.map +1 -1
  413. package/lib/network/processor/gossipQueues/index.d.ts.map +1 -0
  414. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -0
  415. package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -0
  416. package/lib/network/processor/gossipQueues/types.d.ts.map +1 -0
  417. package/lib/network/processor/gossipValidatorFn.d.ts.map +1 -0
  418. package/lib/network/processor/index.d.ts +1 -1
  419. package/lib/network/processor/index.d.ts.map +1 -0
  420. package/lib/network/processor/index.js +2 -3
  421. package/lib/network/processor/index.js.map +1 -1
  422. package/lib/network/processor/types.d.ts.map +1 -0
  423. package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -0
  424. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -0
  425. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +1 -0
  426. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -0
  427. package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +1 -0
  428. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -0
  429. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -0
  430. package/lib/network/reqresp/handlers/index.d.ts.map +1 -0
  431. package/lib/network/reqresp/handlers/lightClientBootstrap.d.ts.map +1 -0
  432. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.d.ts.map +1 -0
  433. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.d.ts.map +1 -0
  434. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +1 -0
  435. package/lib/network/reqresp/index.d.ts.map +1 -0
  436. package/lib/network/reqresp/interface.d.ts.map +1 -0
  437. package/lib/network/reqresp/protocols.d.ts.map +1 -0
  438. package/lib/network/reqresp/rateLimit.d.ts.map +1 -0
  439. package/lib/network/reqresp/score.d.ts.map +1 -0
  440. package/lib/network/reqresp/types.d.ts.map +1 -0
  441. package/lib/network/reqresp/utils/collect.d.ts.map +1 -0
  442. package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts.map +1 -0
  443. package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -0
  444. package/lib/network/statusCache.d.ts.map +1 -0
  445. package/lib/network/subnets/attnetsService.d.ts.map +1 -0
  446. package/lib/network/subnets/attnetsService.js +1 -1
  447. package/lib/network/subnets/attnetsService.js.map +1 -1
  448. package/lib/network/subnets/index.d.ts.map +1 -0
  449. package/lib/network/subnets/interface.d.ts.map +1 -0
  450. package/lib/network/subnets/syncnetsService.d.ts.map +1 -0
  451. package/lib/network/subnets/util.d.ts.map +1 -0
  452. package/lib/network/util.d.ts.map +1 -0
  453. package/lib/node/index.d.ts.map +1 -0
  454. package/lib/node/nodejs.d.ts.map +1 -0
  455. package/lib/node/notifier.d.ts.map +1 -0
  456. package/lib/node/notifier.js +1 -1
  457. package/lib/node/notifier.js.map +1 -1
  458. package/lib/node/options.d.ts.map +1 -0
  459. package/lib/node/utils/interop/deposits.d.ts.map +1 -0
  460. package/lib/node/utils/interop/state.d.ts.map +1 -0
  461. package/lib/node/utils/lightclient.d.ts.map +1 -0
  462. package/lib/node/utils/state.d.ts.map +1 -0
  463. package/lib/sync/backfill/backfill.d.ts.map +1 -0
  464. package/lib/sync/backfill/errors.d.ts.map +1 -0
  465. package/lib/sync/backfill/index.d.ts.map +1 -0
  466. package/lib/sync/backfill/verify.d.ts.map +1 -0
  467. package/lib/sync/constants.d.ts.map +1 -0
  468. package/lib/sync/index.d.ts.map +1 -0
  469. package/lib/sync/interface.d.ts.map +1 -0
  470. package/lib/sync/options.d.ts.map +1 -0
  471. package/lib/sync/range/batch.d.ts.map +1 -0
  472. package/lib/sync/range/chain.d.ts.map +1 -0
  473. package/lib/sync/range/range.d.ts.map +1 -0
  474. package/lib/sync/range/utils/batches.d.ts.map +1 -0
  475. package/lib/sync/range/utils/chainTarget.d.ts.map +1 -0
  476. package/lib/sync/range/utils/hashBlocks.d.ts.map +1 -0
  477. package/lib/sync/range/utils/index.d.ts.map +1 -0
  478. package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -0
  479. package/lib/sync/range/utils/updateChains.d.ts.map +1 -0
  480. package/lib/sync/sync.d.ts.map +1 -0
  481. package/lib/sync/types.d.ts +0 -1
  482. package/lib/sync/types.d.ts.map +1 -0
  483. package/lib/sync/types.js.map +1 -1
  484. package/lib/sync/unknownBlock.d.ts +0 -1
  485. package/lib/sync/unknownBlock.d.ts.map +1 -0
  486. package/lib/sync/unknownBlock.js +19 -20
  487. package/lib/sync/unknownBlock.js.map +1 -1
  488. package/lib/sync/utils/downloadByRange.d.ts +2 -1
  489. package/lib/sync/utils/downloadByRange.d.ts.map +1 -0
  490. package/lib/sync/utils/downloadByRange.js +8 -3
  491. package/lib/sync/utils/downloadByRange.js.map +1 -1
  492. package/lib/sync/utils/downloadByRoot.d.ts +3 -1
  493. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -0
  494. package/lib/sync/utils/downloadByRoot.js +34 -6
  495. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  496. package/lib/sync/utils/pendingBlocksTree.d.ts.map +1 -0
  497. package/lib/sync/utils/remoteSyncType.d.ts.map +1 -0
  498. package/lib/util/address.d.ts.map +1 -0
  499. package/lib/util/array.d.ts.map +1 -0
  500. package/lib/util/asyncIterableToEvents.d.ts.map +1 -0
  501. package/lib/util/binarySearch.d.ts.map +1 -0
  502. package/lib/util/bitArray.d.ts.map +1 -0
  503. package/lib/util/blobs.d.ts.map +1 -0
  504. package/lib/util/blobs.js +5 -3
  505. package/lib/util/blobs.js.map +1 -1
  506. package/lib/util/bufferPool.d.ts.map +1 -0
  507. package/lib/util/bytes.d.ts.map +1 -0
  508. package/lib/util/chunkify.d.ts.map +1 -0
  509. package/lib/util/clock.d.ts +8 -3
  510. package/lib/util/clock.d.ts.map +1 -0
  511. package/lib/util/clock.js +8 -5
  512. package/lib/util/clock.js.map +1 -1
  513. package/lib/util/dataColumns.d.ts.map +1 -0
  514. package/lib/util/dataColumns.js +4 -2
  515. package/lib/util/dataColumns.js.map +1 -1
  516. package/lib/util/dependentRoot.d.ts.map +1 -0
  517. package/lib/util/enum.d.ts.map +1 -0
  518. package/lib/util/error.d.ts.map +1 -0
  519. package/lib/util/eventLoop.d.ts.map +1 -0
  520. package/lib/util/execution.d.ts.map +1 -0
  521. package/lib/util/execution.js +19 -2
  522. package/lib/util/execution.js.map +1 -1
  523. package/lib/util/file.d.ts.map +1 -0
  524. package/lib/util/forkChoice.d.ts.map +1 -0
  525. package/lib/util/forkName.d.ts.map +1 -0
  526. package/lib/util/graffiti.d.ts.map +1 -0
  527. package/lib/util/hex.d.ts.map +1 -0
  528. package/lib/util/index.d.ts.map +1 -0
  529. package/lib/util/ip.d.ts.map +1 -0
  530. package/lib/util/itTrigger.d.ts.map +1 -0
  531. package/lib/util/kzg.d.ts.map +1 -0
  532. package/lib/util/map.d.ts.map +1 -0
  533. package/lib/util/metadata.d.ts.map +1 -0
  534. package/lib/util/multifork.d.ts.map +1 -0
  535. package/lib/util/numpy.d.ts.map +1 -0
  536. package/lib/util/peerId.d.ts.map +1 -0
  537. package/lib/util/profile.d.ts.map +1 -0
  538. package/lib/util/promises.d.ts.map +1 -0
  539. package/lib/util/queue/errors.d.ts.map +1 -0
  540. package/lib/util/queue/fnQueue.d.ts.map +1 -0
  541. package/lib/util/queue/index.d.ts.map +1 -0
  542. package/lib/util/queue/itemQueue.d.ts.map +1 -0
  543. package/lib/util/queue/options.d.ts.map +1 -0
  544. package/lib/util/serializedCache.d.ts.map +1 -0
  545. package/lib/util/set.d.ts.map +1 -0
  546. package/lib/util/shuffle.d.ts.map +1 -0
  547. package/lib/util/sortBy.d.ts.map +1 -0
  548. package/lib/util/sszBytes.d.ts.map +1 -0
  549. package/lib/util/strictEvents.d.ts.map +1 -0
  550. package/lib/util/time.d.ts.map +1 -0
  551. package/lib/util/timeSeries.d.ts.map +1 -0
  552. package/lib/util/types.d.ts.map +1 -0
  553. package/lib/util/workerEvents.d.ts.map +1 -0
  554. package/lib/util/wrapError.d.ts.map +1 -0
  555. package/package.json +32 -22
  556. package/src/api/impl/api.ts +26 -0
  557. package/src/api/impl/beacon/blocks/index.ts +753 -0
  558. package/src/api/impl/beacon/blocks/utils.ts +75 -0
  559. package/src/api/impl/beacon/index.ts +35 -0
  560. package/src/api/impl/beacon/pool/index.ts +314 -0
  561. package/src/api/impl/beacon/rewards/index.ts +30 -0
  562. package/src/api/impl/beacon/state/index.ts +406 -0
  563. package/src/api/impl/beacon/state/utils.ts +189 -0
  564. package/src/api/impl/config/constants.ts +135 -0
  565. package/src/api/impl/config/index.ts +59 -0
  566. package/src/api/impl/debug/index.ts +131 -0
  567. package/src/api/impl/errors.ts +50 -0
  568. package/src/api/impl/events/index.ts +33 -0
  569. package/src/api/impl/index.ts +6 -0
  570. package/src/api/impl/lightclient/index.ts +64 -0
  571. package/src/api/impl/lodestar/index.ts +257 -0
  572. package/src/api/impl/node/index.ts +88 -0
  573. package/src/api/impl/node/utils.ts +51 -0
  574. package/src/api/impl/proof/index.ts +60 -0
  575. package/src/api/impl/types.ts +17 -0
  576. package/src/api/impl/utils.ts +25 -0
  577. package/src/api/impl/validator/index.ts +1526 -0
  578. package/src/api/impl/validator/utils.ts +85 -0
  579. package/src/api/index.ts +2 -0
  580. package/src/api/options.ts +16 -0
  581. package/src/api/rest/activeSockets.ts +109 -0
  582. package/src/api/rest/base.ts +216 -0
  583. package/src/api/rest/index.ts +63 -0
  584. package/src/api/rest/swaggerUI.ts +80 -0
  585. package/src/bun-wrappers/prometheus-gc-stats.ts +7 -0
  586. package/src/chain/ColumnReconstructionTracker.ts +90 -0
  587. package/src/chain/GetBlobsTracker.ts +115 -0
  588. package/src/chain/archiveStore/archiveStore.ts +222 -0
  589. package/src/chain/archiveStore/constants.ts +5 -0
  590. package/src/chain/archiveStore/historicalState/getHistoricalState.ts +116 -0
  591. package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +68 -0
  592. package/src/chain/archiveStore/historicalState/metrics.ts +214 -0
  593. package/src/chain/archiveStore/historicalState/types.ts +41 -0
  594. package/src/chain/archiveStore/historicalState/worker.ts +77 -0
  595. package/src/chain/archiveStore/index.ts +3 -0
  596. package/src/chain/archiveStore/interface.ts +75 -0
  597. package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +138 -0
  598. package/src/chain/archiveStore/utils/archiveBlocks.ts +437 -0
  599. package/src/chain/archiveStore/utils/pruneHistory.ts +56 -0
  600. package/src/chain/archiveStore/utils/updateBackfillRange.ts +50 -0
  601. package/src/chain/balancesCache.ts +52 -0
  602. package/src/chain/beaconProposerCache.ts +43 -0
  603. package/src/chain/blocks/blockInput/blockInput.ts +854 -0
  604. package/src/chain/blocks/blockInput/errors.ts +48 -0
  605. package/src/chain/blocks/blockInput/index.ts +4 -0
  606. package/src/chain/blocks/blockInput/types.ts +145 -0
  607. package/src/chain/blocks/blockInput/utils.ts +21 -0
  608. package/src/chain/blocks/importBlock.ts +599 -0
  609. package/src/chain/blocks/index.ts +179 -0
  610. package/src/chain/blocks/types.ts +101 -0
  611. package/src/chain/blocks/utils/blowfishBanner.ts +28 -0
  612. package/src/chain/blocks/utils/chainSegment.ts +29 -0
  613. package/src/chain/blocks/utils/checkpoint.ts +25 -0
  614. package/src/chain/blocks/utils/giraffeBanner.ts +30 -0
  615. package/src/chain/blocks/utils/ownBanner.ts +20 -0
  616. package/src/chain/blocks/utils/pandaMergeTransitionBanner.ts +43 -0
  617. package/src/chain/blocks/utils/zebraBanner.ts +45 -0
  618. package/src/chain/blocks/verifyBlock.ts +242 -0
  619. package/src/chain/blocks/verifyBlocksDataAvailability.ts +42 -0
  620. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +438 -0
  621. package/src/chain/blocks/verifyBlocksSanityChecks.ts +129 -0
  622. package/src/chain/blocks/verifyBlocksSignatures.ts +105 -0
  623. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +114 -0
  624. package/src/chain/blocks/writeBlockInputToDb.ts +120 -0
  625. package/src/chain/bls/index.ts +4 -0
  626. package/src/chain/bls/interface.ts +68 -0
  627. package/src/chain/bls/maybeBatch.ts +45 -0
  628. package/src/chain/bls/multithread/index.ts +582 -0
  629. package/src/chain/bls/multithread/jobItem.ts +119 -0
  630. package/src/chain/bls/multithread/poolSize.ts +16 -0
  631. package/src/chain/bls/multithread/types.ts +38 -0
  632. package/src/chain/bls/multithread/utils.ts +19 -0
  633. package/src/chain/bls/multithread/worker.ts +114 -0
  634. package/src/chain/bls/singleThread.ts +87 -0
  635. package/src/chain/bls/utils.ts +30 -0
  636. package/src/chain/chain.ts +1352 -0
  637. package/src/chain/emitter.ts +113 -0
  638. package/src/chain/errors/attestationError.ts +194 -0
  639. package/src/chain/errors/attesterSlashingError.ts +11 -0
  640. package/src/chain/errors/blobSidecarError.ts +60 -0
  641. package/src/chain/errors/blockError.ts +166 -0
  642. package/src/chain/errors/blsToExecutionChangeError.ts +13 -0
  643. package/src/chain/errors/dataColumnSidecarError.ts +80 -0
  644. package/src/chain/errors/gossipValidation.ts +20 -0
  645. package/src/chain/errors/index.ts +10 -0
  646. package/src/chain/errors/lightClientError.ts +30 -0
  647. package/src/chain/errors/proposerSlashingError.ts +11 -0
  648. package/src/chain/errors/syncCommitteeError.ts +36 -0
  649. package/src/chain/errors/voluntaryExitError.ts +13 -0
  650. package/src/chain/forkChoice/index.ts +112 -0
  651. package/src/chain/genesis/genesis.ts +190 -0
  652. package/src/chain/genesis/interface.ts +14 -0
  653. package/src/chain/index.ts +6 -0
  654. package/src/chain/initState.ts +221 -0
  655. package/src/chain/interface.ts +280 -0
  656. package/src/chain/lightClient/index.ts +772 -0
  657. package/src/chain/lightClient/proofs.ts +85 -0
  658. package/src/chain/lightClient/types.ts +33 -0
  659. package/src/chain/opPools/aggregatedAttestationPool.ts +1063 -0
  660. package/src/chain/opPools/attestationPool.ts +282 -0
  661. package/src/chain/opPools/index.ts +5 -0
  662. package/src/chain/opPools/opPool.ts +462 -0
  663. package/src/chain/opPools/syncCommitteeMessagePool.ts +169 -0
  664. package/src/chain/opPools/syncContributionAndProofPool.ts +240 -0
  665. package/src/chain/opPools/types.ts +35 -0
  666. package/src/chain/opPools/utils.ts +65 -0
  667. package/src/chain/options.ts +138 -0
  668. package/src/chain/prepareNextSlot.ts +277 -0
  669. package/src/chain/produceBlock/computeNewStateRoot.ts +55 -0
  670. package/src/chain/produceBlock/index.ts +2 -0
  671. package/src/chain/produceBlock/produceBlockBody.ts +799 -0
  672. package/src/chain/produceBlock/validateBlobsAndKzgCommitments.ts +54 -0
  673. package/src/chain/regen/errors.ts +30 -0
  674. package/src/chain/regen/index.ts +4 -0
  675. package/src/chain/regen/interface.ts +94 -0
  676. package/src/chain/regen/queued.ts +317 -0
  677. package/src/chain/regen/regen.ts +424 -0
  678. package/src/chain/reprocess.ts +161 -0
  679. package/src/chain/rewards/attestationsRewards.ts +196 -0
  680. package/src/chain/rewards/blockRewards.ts +150 -0
  681. package/src/chain/rewards/syncCommitteeRewards.ts +58 -0
  682. package/src/chain/seenCache/index.ts +5 -0
  683. package/src/chain/seenCache/seenAggregateAndProof.ts +120 -0
  684. package/src/chain/seenCache/seenAttestationData.ts +145 -0
  685. package/src/chain/seenCache/seenAttesters.ts +58 -0
  686. package/src/chain/seenCache/seenBlockAttesters.ts +18 -0
  687. package/src/chain/seenCache/seenBlockProposers.ts +48 -0
  688. package/src/chain/seenCache/seenCommittee.ts +43 -0
  689. package/src/chain/seenCache/seenCommitteeContribution.ts +104 -0
  690. package/src/chain/seenCache/seenGossipBlockInput.ts +381 -0
  691. package/src/chain/serializeState.ts +32 -0
  692. package/src/chain/shufflingCache.ts +238 -0
  693. package/src/chain/stateCache/blockStateCacheImpl.ts +150 -0
  694. package/src/chain/stateCache/datastore/db.ts +36 -0
  695. package/src/chain/stateCache/datastore/file.ts +53 -0
  696. package/src/chain/stateCache/datastore/index.ts +2 -0
  697. package/src/chain/stateCache/datastore/types.ts +13 -0
  698. package/src/chain/stateCache/fifoBlockStateCache.ts +208 -0
  699. package/src/chain/stateCache/inMemoryCheckpointsCache.ts +198 -0
  700. package/src/chain/stateCache/index.ts +3 -0
  701. package/src/chain/stateCache/mapMetrics.ts +52 -0
  702. package/src/chain/stateCache/persistentCheckpointsCache.ts +837 -0
  703. package/src/chain/stateCache/types.ts +86 -0
  704. package/src/chain/validation/aggregateAndProof.ts +258 -0
  705. package/src/chain/validation/attestation.ts +885 -0
  706. package/src/chain/validation/attesterSlashing.ts +61 -0
  707. package/src/chain/validation/blobSidecar.ts +301 -0
  708. package/src/chain/validation/block.ts +188 -0
  709. package/src/chain/validation/blsToExecutionChange.ts +61 -0
  710. package/src/chain/validation/dataColumnSidecar.ts +381 -0
  711. package/src/chain/validation/index.ts +9 -0
  712. package/src/chain/validation/lightClientFinalityUpdate.ts +46 -0
  713. package/src/chain/validation/lightClientOptimisticUpdate.ts +68 -0
  714. package/src/chain/validation/proposerSlashing.ts +54 -0
  715. package/src/chain/validation/signatureSets/aggregateAndProof.ts +38 -0
  716. package/src/chain/validation/signatureSets/contributionAndProof.ts +27 -0
  717. package/src/chain/validation/signatureSets/index.ts +6 -0
  718. package/src/chain/validation/signatureSets/selectionProof.ts +27 -0
  719. package/src/chain/validation/signatureSets/syncCommittee.ts +22 -0
  720. package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +18 -0
  721. package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +27 -0
  722. package/src/chain/validation/syncCommittee.ts +165 -0
  723. package/src/chain/validation/syncCommitteeContributionAndProof.ts +122 -0
  724. package/src/chain/validation/voluntaryExit.ts +58 -0
  725. package/src/chain/validatorMonitor.ts +1310 -0
  726. package/src/constants/constants.ts +15 -0
  727. package/src/constants/index.ts +2 -0
  728. package/src/constants/network.ts +52 -0
  729. package/src/db/beacon.ts +113 -0
  730. package/src/db/buckets.ts +80 -0
  731. package/src/db/index.ts +2 -0
  732. package/src/db/interface.ts +76 -0
  733. package/src/db/options.ts +7 -0
  734. package/src/db/repositories/attesterSlashing.ts +38 -0
  735. package/src/db/repositories/backfilledRanges.ts +29 -0
  736. package/src/db/repositories/blobSidecars.ts +37 -0
  737. package/src/db/repositories/blobSidecarsArchive.ts +28 -0
  738. package/src/db/repositories/block.ts +33 -0
  739. package/src/db/repositories/blockArchive.ts +170 -0
  740. package/src/db/repositories/blockArchiveIndex.ts +45 -0
  741. package/src/db/repositories/blsToExecutionChange.ts +16 -0
  742. package/src/db/repositories/checkpointState.ts +31 -0
  743. package/src/db/repositories/dataColumnSidecar.ts +49 -0
  744. package/src/db/repositories/dataColumnSidecarArchive.ts +56 -0
  745. package/src/db/repositories/depositDataRoot.ts +80 -0
  746. package/src/db/repositories/depositEvent.ts +32 -0
  747. package/src/db/repositories/eth1Data.ts +33 -0
  748. package/src/db/repositories/index.ts +20 -0
  749. package/src/db/repositories/lightclientBestUpdate.ts +41 -0
  750. package/src/db/repositories/lightclientCheckpointHeader.ts +32 -0
  751. package/src/db/repositories/lightclientSyncCommittee.ts +16 -0
  752. package/src/db/repositories/lightclientSyncCommitteeWitness.ts +77 -0
  753. package/src/db/repositories/proposerSlashing.ts +15 -0
  754. package/src/db/repositories/stateArchive.ts +69 -0
  755. package/src/db/repositories/stateArchiveIndex.ts +18 -0
  756. package/src/db/repositories/voluntaryExit.ts +15 -0
  757. package/src/db/single/index.ts +2 -0
  758. package/src/db/single/preGenesisState.ts +37 -0
  759. package/src/db/single/preGenesisStateLastProcessedBlock.ts +34 -0
  760. package/src/eth1/errors.ts +40 -0
  761. package/src/eth1/eth1DataCache.ts +26 -0
  762. package/src/eth1/eth1DepositDataTracker.ts +410 -0
  763. package/src/eth1/eth1DepositsCache.ts +141 -0
  764. package/src/eth1/eth1MergeBlockTracker.ts +328 -0
  765. package/src/eth1/index.ts +157 -0
  766. package/src/eth1/interface.ts +131 -0
  767. package/src/eth1/options.ts +28 -0
  768. package/src/eth1/provider/eth1Provider.ts +229 -0
  769. package/src/eth1/provider/jsonRpcHttpClient.ts +390 -0
  770. package/src/eth1/provider/jwt.ts +36 -0
  771. package/src/eth1/provider/utils.ts +136 -0
  772. package/src/eth1/stream.ts +75 -0
  773. package/src/eth1/utils/depositContract.ts +37 -0
  774. package/src/eth1/utils/deposits.ts +70 -0
  775. package/src/eth1/utils/eth1Data.ts +100 -0
  776. package/src/eth1/utils/eth1DepositEvent.ts +12 -0
  777. package/src/eth1/utils/eth1Vote.ts +142 -0
  778. package/src/eth1/utils/groupDepositEventsByBlock.ts +19 -0
  779. package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +18 -0
  780. package/src/execution/builder/cache.ts +39 -0
  781. package/src/execution/builder/http.ts +229 -0
  782. package/src/execution/builder/index.ts +27 -0
  783. package/src/execution/builder/interface.ts +49 -0
  784. package/src/execution/builder/utils.ts +19 -0
  785. package/src/execution/engine/disabled.ts +35 -0
  786. package/src/execution/engine/http.ts +644 -0
  787. package/src/execution/engine/index.ts +63 -0
  788. package/src/execution/engine/interface.ts +199 -0
  789. package/src/execution/engine/mock.ts +493 -0
  790. package/src/execution/engine/payloadIdCache.ts +54 -0
  791. package/src/execution/engine/types.ts +640 -0
  792. package/src/execution/engine/utils.ts +136 -0
  793. package/src/execution/index.ts +4 -0
  794. package/src/index.ts +20 -0
  795. package/src/metrics/index.ts +4 -0
  796. package/src/metrics/metrics/beacon.ts +390 -0
  797. package/src/metrics/metrics/lodestar.ts +1870 -0
  798. package/src/metrics/metrics.ts +43 -0
  799. package/src/metrics/nodeJsMetrics.ts +19 -0
  800. package/src/metrics/options.ts +22 -0
  801. package/src/metrics/server/http.ts +114 -0
  802. package/src/metrics/server/index.ts +1 -0
  803. package/src/metrics/utils/avgMinMax.ts +87 -0
  804. package/src/metrics/utils/gauge.ts +22 -0
  805. package/src/metrics/utils/registryMetricCreator.ts +41 -0
  806. package/src/monitoring/clientStats.ts +297 -0
  807. package/src/monitoring/index.ts +2 -0
  808. package/src/monitoring/options.ts +19 -0
  809. package/src/monitoring/properties.ts +152 -0
  810. package/src/monitoring/service.ts +235 -0
  811. package/src/monitoring/system.ts +146 -0
  812. package/src/monitoring/types.ts +21 -0
  813. package/src/network/core/events.ts +59 -0
  814. package/src/network/core/index.ts +3 -0
  815. package/src/network/core/metrics.ts +304 -0
  816. package/src/network/core/networkCore.ts +599 -0
  817. package/src/network/core/networkCoreWorker.ts +176 -0
  818. package/src/network/core/networkCoreWorkerHandler.ts +284 -0
  819. package/src/network/core/types.ts +119 -0
  820. package/src/network/discv5/index.ts +132 -0
  821. package/src/network/discv5/types.ts +74 -0
  822. package/src/network/discv5/utils.ts +50 -0
  823. package/src/network/discv5/worker.ts +137 -0
  824. package/src/network/events.ts +51 -0
  825. package/src/network/forks.ts +94 -0
  826. package/src/network/gossip/constants.ts +15 -0
  827. package/src/network/gossip/encoding.ts +111 -0
  828. package/src/network/gossip/errors.ts +7 -0
  829. package/src/network/gossip/gossipsub.ts +384 -0
  830. package/src/network/gossip/index.ts +4 -0
  831. package/src/network/gossip/interface.ts +215 -0
  832. package/src/network/gossip/metrics.ts +71 -0
  833. package/src/network/gossip/scoringParameters.ts +333 -0
  834. package/src/network/gossip/topic.ts +332 -0
  835. package/src/network/index.ts +8 -0
  836. package/src/network/interface.ts +134 -0
  837. package/src/network/libp2p/error.ts +55 -0
  838. package/src/network/libp2p/index.ts +153 -0
  839. package/src/network/metadata.ts +162 -0
  840. package/src/network/network.ts +767 -0
  841. package/src/network/networkConfig.ts +12 -0
  842. package/src/network/options.ts +70 -0
  843. package/src/network/peers/client.ts +29 -0
  844. package/src/network/peers/datastore.ts +188 -0
  845. package/src/network/peers/discover.ts +647 -0
  846. package/src/network/peers/index.ts +2 -0
  847. package/src/network/peers/peerManager.ts +900 -0
  848. package/src/network/peers/peersData.ts +65 -0
  849. package/src/network/peers/score/constants.ts +34 -0
  850. package/src/network/peers/score/index.ts +4 -0
  851. package/src/network/peers/score/interface.ts +74 -0
  852. package/src/network/peers/score/score.ts +200 -0
  853. package/src/network/peers/score/store.ts +95 -0
  854. package/src/network/peers/score/utils.ts +37 -0
  855. package/src/network/peers/utils/assertPeerRelevance.ts +99 -0
  856. package/src/network/peers/utils/enrSubnetsDeserialize.ts +27 -0
  857. package/src/network/peers/utils/getConnectedPeerIds.ts +33 -0
  858. package/src/network/peers/utils/index.ts +4 -0
  859. package/src/network/peers/utils/prioritizePeers.ts +627 -0
  860. package/src/network/peers/utils/subnetMap.ts +88 -0
  861. package/src/network/processor/aggregatorTracker.ts +38 -0
  862. package/src/network/processor/extractSlotRootFns.ts +64 -0
  863. package/src/network/processor/gossipHandlers.ts +951 -0
  864. package/src/network/processor/gossipQueues/index.ts +114 -0
  865. package/src/network/processor/gossipQueues/indexed.ts +219 -0
  866. package/src/network/processor/gossipQueues/linear.ts +162 -0
  867. package/src/network/processor/gossipQueues/types.ts +57 -0
  868. package/src/network/processor/gossipValidatorFn.ts +142 -0
  869. package/src/network/processor/index.ts +496 -0
  870. package/src/network/processor/types.ts +27 -0
  871. package/src/network/reqresp/ReqRespBeaconNode.ts +373 -0
  872. package/src/network/reqresp/handlers/beaconBlocksByRange.ts +101 -0
  873. package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +49 -0
  874. package/src/network/reqresp/handlers/blobSidecarsByRange.ts +114 -0
  875. package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +62 -0
  876. package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +144 -0
  877. package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +88 -0
  878. package/src/network/reqresp/handlers/index.ts +78 -0
  879. package/src/network/reqresp/handlers/lightClientBootstrap.ts +31 -0
  880. package/src/network/reqresp/handlers/lightClientFinalityUpdate.ts +21 -0
  881. package/src/network/reqresp/handlers/lightClientOptimisticUpdate.ts +21 -0
  882. package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +39 -0
  883. package/src/network/reqresp/index.ts +2 -0
  884. package/src/network/reqresp/interface.ts +45 -0
  885. package/src/network/reqresp/protocols.ts +146 -0
  886. package/src/network/reqresp/rateLimit.ts +112 -0
  887. package/src/network/reqresp/score.ts +70 -0
  888. package/src/network/reqresp/types.ts +174 -0
  889. package/src/network/reqresp/utils/collect.ts +84 -0
  890. package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +57 -0
  891. package/src/network/reqresp/utils/dataColumnResponseValidation.ts +99 -0
  892. package/src/network/statusCache.ts +17 -0
  893. package/src/network/subnets/attnetsService.ts +382 -0
  894. package/src/network/subnets/index.ts +2 -0
  895. package/src/network/subnets/interface.ts +66 -0
  896. package/src/network/subnets/syncnetsService.ts +147 -0
  897. package/src/network/subnets/util.ts +63 -0
  898. package/src/network/util.ts +29 -0
  899. package/src/node/index.ts +2 -0
  900. package/src/node/nodejs.ts +349 -0
  901. package/src/node/notifier.ts +206 -0
  902. package/src/node/options.ts +51 -0
  903. package/src/node/utils/interop/deposits.ts +53 -0
  904. package/src/node/utils/interop/state.ts +59 -0
  905. package/src/node/utils/lightclient.ts +7 -0
  906. package/src/node/utils/state.ts +37 -0
  907. package/src/sync/backfill/backfill.ts +893 -0
  908. package/src/sync/backfill/errors.ts +23 -0
  909. package/src/sync/backfill/index.ts +1 -0
  910. package/src/sync/backfill/verify.ts +58 -0
  911. package/src/sync/constants.ts +71 -0
  912. package/src/sync/index.ts +2 -0
  913. package/src/sync/interface.ts +55 -0
  914. package/src/sync/options.ts +45 -0
  915. package/src/sync/range/batch.ts +455 -0
  916. package/src/sync/range/chain.ts +715 -0
  917. package/src/sync/range/range.ts +354 -0
  918. package/src/sync/range/utils/batches.ts +119 -0
  919. package/src/sync/range/utils/chainTarget.ts +62 -0
  920. package/src/sync/range/utils/hashBlocks.ts +27 -0
  921. package/src/sync/range/utils/index.ts +5 -0
  922. package/src/sync/range/utils/peerBalancer.ts +184 -0
  923. package/src/sync/range/utils/updateChains.ts +66 -0
  924. package/src/sync/sync.ts +290 -0
  925. package/src/sync/types.ts +57 -0
  926. package/src/sync/unknownBlock.ts +860 -0
  927. package/src/sync/utils/downloadByRange.ts +814 -0
  928. package/src/sync/utils/downloadByRoot.ts +568 -0
  929. package/src/sync/utils/pendingBlocksTree.ts +97 -0
  930. package/src/sync/utils/remoteSyncType.ts +144 -0
  931. package/src/util/address.ts +3 -0
  932. package/src/util/array.ts +311 -0
  933. package/src/util/asyncIterableToEvents.ts +164 -0
  934. package/src/util/binarySearch.ts +48 -0
  935. package/src/util/bitArray.ts +84 -0
  936. package/src/util/blobs.ts +210 -0
  937. package/src/util/bufferPool.ts +95 -0
  938. package/src/util/bytes.ts +11 -0
  939. package/src/util/chunkify.ts +27 -0
  940. package/src/util/clock.ts +212 -0
  941. package/src/util/dataColumns.ts +424 -0
  942. package/src/util/dependentRoot.ts +47 -0
  943. package/src/util/enum.ts +17 -0
  944. package/src/util/error.ts +56 -0
  945. package/src/util/eventLoop.ts +22 -0
  946. package/src/util/execution.ts +223 -0
  947. package/src/util/file.ts +52 -0
  948. package/src/util/forkChoice.ts +5 -0
  949. package/src/util/forkName.ts +20 -0
  950. package/src/util/graffiti.ts +39 -0
  951. package/src/util/hex.ts +9 -0
  952. package/src/util/index.ts +2 -0
  953. package/src/util/ip.ts +6 -0
  954. package/src/util/itTrigger.ts +49 -0
  955. package/src/util/kzg.ts +3 -0
  956. package/src/util/map.ts +77 -0
  957. package/src/util/metadata.ts +22 -0
  958. package/src/util/multifork.ts +69 -0
  959. package/src/util/numpy.ts +8 -0
  960. package/src/util/peerId.ts +16 -0
  961. package/src/util/profile.ts +54 -0
  962. package/src/util/promises.ts +14 -0
  963. package/src/util/queue/errors.ts +14 -0
  964. package/src/util/queue/fnQueue.ts +16 -0
  965. package/src/util/queue/index.ts +4 -0
  966. package/src/util/queue/itemQueue.ts +128 -0
  967. package/src/util/queue/options.ts +37 -0
  968. package/src/util/serializedCache.ts +20 -0
  969. package/src/util/set.ts +62 -0
  970. package/src/util/shuffle.ts +21 -0
  971. package/src/util/sortBy.ts +19 -0
  972. package/src/util/sszBytes.ts +481 -0
  973. package/src/util/strictEvents.ts +8 -0
  974. package/src/util/time.ts +13 -0
  975. package/src/util/timeSeries.ts +118 -0
  976. package/src/util/types.ts +31 -0
  977. package/src/util/workerEvents.ts +142 -0
  978. package/src/util/wrapError.ts +27 -0
@@ -0,0 +1,481 @@
1
+ import {BitArray, deserializeUint8ArrayBitListFromBytes} from "@chainsafe/ssz";
2
+ import {ChainForkConfig} from "@lodestar/config";
3
+ import {
4
+ BYTES_PER_FIELD_ELEMENT,
5
+ FIELD_ELEMENTS_PER_BLOB,
6
+ ForkName,
7
+ ForkPostDeneb,
8
+ ForkSeq,
9
+ MAX_COMMITTEES_PER_SLOT,
10
+ isForkPostElectra,
11
+ } from "@lodestar/params";
12
+ import {BLSSignature, CommitteeIndex, RootHex, Slot, ValidatorIndex, ssz} from "@lodestar/types";
13
+
14
+ export type BlockRootHex = RootHex;
15
+ // pre-electra, AttestationData is used to cache attestations
16
+ export type AttDataBase64 = string;
17
+ // electra, CommitteeBits
18
+ export type CommitteeBitsBase64 = string;
19
+
20
+ // pre-electra
21
+ // class Attestation(Container):
22
+ // aggregation_bits: Bitlist[MAX_VALIDATORS_PER_COMMITTEE] - offset 4
23
+ // data: AttestationData - target data - 128
24
+ // signature: BLSSignature - 96
25
+
26
+ // electra
27
+ // class Attestation(Container):
28
+ // aggregation_bits: BitList[MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT] - offset 4
29
+ // data: AttestationData - target data - 128
30
+ // signature: BLSSignature - 96
31
+ // committee_bits: BitVector[MAX_COMMITTEES_PER_SLOT]
32
+ // electra
33
+ // class SingleAttestation(Container):
34
+ // committeeIndex: CommitteeIndex - data 8
35
+ // attesterIndex: ValidatorIndex - data 8
36
+ // data: AttestationData - data 128
37
+ // signature: BLSSignature - data 96
38
+ //
39
+ // for all forks
40
+ // class AttestationData(Container): 128 bytes fixed size
41
+ // slot: Slot - data 8
42
+ // index: CommitteeIndex - data 8
43
+ // beacon_block_root: Root - data 32
44
+ // source: Checkpoint - data 40
45
+ // target: Checkpoint - data 40
46
+
47
+ const VARIABLE_FIELD_OFFSET = 4;
48
+ const ATTESTATION_BEACON_BLOCK_ROOT_OFFSET = VARIABLE_FIELD_OFFSET + 8 + 8;
49
+ export const ROOT_SIZE = 32;
50
+ const SLOT_SIZE = 8;
51
+ const COMMITTEE_INDEX_SIZE = 8;
52
+ const ATTESTATION_DATA_SIZE = 128;
53
+ // MAX_COMMITTEES_PER_SLOT is in bit, need to convert to byte
54
+ const COMMITTEE_BITS_SIZE = Math.max(Math.ceil(MAX_COMMITTEES_PER_SLOT / 8), 1);
55
+ const SIGNATURE_SIZE = 96;
56
+ const SINGLE_ATTESTATION_ATTDATA_OFFSET = 8 + 8;
57
+ const SINGLE_ATTESTATION_SLOT_OFFSET = SINGLE_ATTESTATION_ATTDATA_OFFSET;
58
+ const SINGLE_ATTESTATION_COMMITTEE_INDEX_OFFSET = 0;
59
+ const SINGLE_ATTESTATION_ATTESTER_INDEX_OFFSET = 8;
60
+ const SINGLE_ATTESTATION_BEACON_BLOCK_ROOT_OFFSET = SINGLE_ATTESTATION_ATTDATA_OFFSET + 8 + 8;
61
+ const SINGLE_ATTESTATION_SIGNATURE_OFFSET = SINGLE_ATTESTATION_ATTDATA_OFFSET + ATTESTATION_DATA_SIZE;
62
+ const SINGLE_ATTESTATION_SIZE = SINGLE_ATTESTATION_SIGNATURE_OFFSET + SIGNATURE_SIZE;
63
+
64
+ // shared Buffers to convert bytes to hex/base64
65
+ const blockRootBuf = Buffer.alloc(ROOT_SIZE);
66
+ const attDataBuf = Buffer.alloc(ATTESTATION_DATA_SIZE);
67
+ const committeeBitsDataBuf = Buffer.alloc(COMMITTEE_BITS_SIZE);
68
+
69
+ /**
70
+ * Extract slot from attestation serialized bytes.
71
+ * Return null if data is not long enough to extract slot.
72
+ */
73
+ export function getSlotFromAttestationSerialized(data: Uint8Array): Slot | null {
74
+ if (data.length < VARIABLE_FIELD_OFFSET + SLOT_SIZE) {
75
+ return null;
76
+ }
77
+
78
+ return getSlotFromOffset(data, VARIABLE_FIELD_OFFSET);
79
+ }
80
+
81
+ /**
82
+ * Extract block root from attestation serialized bytes.
83
+ * Return null if data is not long enough to extract block root.
84
+ */
85
+ export function getBlockRootFromAttestationSerialized(data: Uint8Array): BlockRootHex | null {
86
+ if (data.length < ATTESTATION_BEACON_BLOCK_ROOT_OFFSET + ROOT_SIZE) {
87
+ return null;
88
+ }
89
+
90
+ blockRootBuf.set(
91
+ data.subarray(ATTESTATION_BEACON_BLOCK_ROOT_OFFSET, ATTESTATION_BEACON_BLOCK_ROOT_OFFSET + ROOT_SIZE)
92
+ );
93
+ return "0x" + blockRootBuf.toString("hex");
94
+ }
95
+
96
+ /**
97
+ * Extract attestation data base64 from all forks' attestation serialized bytes.
98
+ * Return null if data is not long enough to extract attestation data.
99
+ */
100
+ export function getAttDataFromAttestationSerialized(data: Uint8Array): AttDataBase64 | null {
101
+ if (data.length < VARIABLE_FIELD_OFFSET + ATTESTATION_DATA_SIZE) {
102
+ return null;
103
+ }
104
+
105
+ // base64 is a bit efficient than hex
106
+ attDataBuf.set(data.subarray(VARIABLE_FIELD_OFFSET, VARIABLE_FIELD_OFFSET + ATTESTATION_DATA_SIZE));
107
+ return attDataBuf.toString("base64");
108
+ }
109
+
110
+ /**
111
+ * Extract AttDataBase64 from `beacon_attestation` gossip message serialized bytes.
112
+ * This is used for GossipQueue.
113
+ */
114
+ export function getBeaconAttestationGossipIndex(fork: ForkName, data: Uint8Array): AttDataBase64 | null {
115
+ return ForkSeq[fork] >= ForkSeq.electra
116
+ ? getAttDataFromSingleAttestationSerialized(data)
117
+ : getAttDataFromAttestationSerialized(data);
118
+ }
119
+
120
+ /**
121
+ * Extract slot from `beacon_attestation` gossip message serialized bytes.
122
+ */
123
+ export function getSlotFromBeaconAttestationSerialized(fork: ForkName, data: Uint8Array): Slot | null {
124
+ return ForkSeq[fork] >= ForkSeq.electra
125
+ ? getSlotFromSingleAttestationSerialized(data)
126
+ : getSlotFromAttestationSerialized(data);
127
+ }
128
+
129
+ /**
130
+ * Extract block root from `beacon_attestation` gossip message serialized bytes.
131
+ */
132
+ export function getBlockRootFromBeaconAttestationSerialized(fork: ForkName, data: Uint8Array): BlockRootHex | null {
133
+ return ForkSeq[fork] >= ForkSeq.electra
134
+ ? getBlockRootFromSingleAttestationSerialized(data)
135
+ : getBlockRootFromAttestationSerialized(data);
136
+ }
137
+
138
+ /**
139
+ * Extract aggregation bits from attestation serialized bytes.
140
+ * Return null if data is not long enough to extract aggregation bits.
141
+ * Pre-electra attestation only
142
+ */
143
+ export function getAggregationBitsFromAttestationSerialized(data: Uint8Array): BitArray | null {
144
+ const aggregationBitsStartIndex = VARIABLE_FIELD_OFFSET + ATTESTATION_DATA_SIZE + SIGNATURE_SIZE;
145
+
146
+ if (data.length < aggregationBitsStartIndex) {
147
+ return null;
148
+ }
149
+
150
+ const {uint8Array, bitLen} = deserializeUint8ArrayBitListFromBytes(data, aggregationBitsStartIndex, data.length);
151
+ return new BitArray(uint8Array, bitLen);
152
+ }
153
+
154
+ /**
155
+ * Extract signature from attestation serialized bytes.
156
+ * Return null if data is not long enough to extract signature.
157
+ */
158
+ export function getSignatureFromAttestationSerialized(data: Uint8Array): BLSSignature | null {
159
+ const signatureStartIndex = VARIABLE_FIELD_OFFSET + ATTESTATION_DATA_SIZE;
160
+
161
+ if (data.length < signatureStartIndex + SIGNATURE_SIZE) {
162
+ return null;
163
+ }
164
+
165
+ return data.subarray(signatureStartIndex, signatureStartIndex + SIGNATURE_SIZE);
166
+ }
167
+
168
+ /**
169
+ * Extract slot from SingleAttestation serialized bytes.
170
+ * Return null if data is not long enough to extract slot.
171
+ */
172
+ export function getSlotFromSingleAttestationSerialized(data: Uint8Array): Slot | null {
173
+ if (data.length !== SINGLE_ATTESTATION_SIZE) {
174
+ return null;
175
+ }
176
+
177
+ return getSlotFromOffset(data, SINGLE_ATTESTATION_SLOT_OFFSET);
178
+ }
179
+
180
+ /**
181
+ * Extract committee index from SingleAttestation serialized bytes.
182
+ * Return null if data is not long enough to extract slot.
183
+ */
184
+ export function getCommitteeIndexFromSingleAttestationSerialized(
185
+ fork: ForkName,
186
+ data: Uint8Array
187
+ ): CommitteeIndex | null {
188
+ if (isForkPostElectra(fork)) {
189
+ if (data.length !== SINGLE_ATTESTATION_SIZE) {
190
+ return null;
191
+ }
192
+
193
+ return getIndexFromOffset(data, SINGLE_ATTESTATION_COMMITTEE_INDEX_OFFSET);
194
+ }
195
+
196
+ if (data.length < VARIABLE_FIELD_OFFSET + SLOT_SIZE + COMMITTEE_INDEX_SIZE) {
197
+ return null;
198
+ }
199
+
200
+ return getIndexFromOffset(data, VARIABLE_FIELD_OFFSET + SLOT_SIZE);
201
+ }
202
+
203
+ /**
204
+ * Extract attester index from SingleAttestation serialized bytes.
205
+ * Return null if data is not long enough to extract index.
206
+ */
207
+ export function getAttesterIndexFromSingleAttestationSerialized(data: Uint8Array): ValidatorIndex | null {
208
+ if (data.length !== SINGLE_ATTESTATION_SIZE) {
209
+ return null;
210
+ }
211
+
212
+ return getIndexFromOffset(data, SINGLE_ATTESTATION_ATTESTER_INDEX_OFFSET);
213
+ }
214
+
215
+ /**
216
+ * Extract block root from SingleAttestation serialized bytes.
217
+ * Return null if data is not long enough to extract block root.
218
+ */
219
+ export function getBlockRootFromSingleAttestationSerialized(data: Uint8Array): BlockRootHex | null {
220
+ if (data.length !== SINGLE_ATTESTATION_SIZE) {
221
+ return null;
222
+ }
223
+
224
+ blockRootBuf.set(
225
+ data.subarray(SINGLE_ATTESTATION_BEACON_BLOCK_ROOT_OFFSET, SINGLE_ATTESTATION_BEACON_BLOCK_ROOT_OFFSET + ROOT_SIZE)
226
+ );
227
+ return `0x${blockRootBuf.toString("hex")}`;
228
+ }
229
+
230
+ /**
231
+ * Extract attestation data base64 from SingleAttestation serialized bytes.
232
+ * Return null if data is not long enough to extract attestation data.
233
+ */
234
+ export function getAttDataFromSingleAttestationSerialized(data: Uint8Array): AttDataBase64 | null {
235
+ if (data.length !== SINGLE_ATTESTATION_SIZE) {
236
+ return null;
237
+ }
238
+
239
+ // base64 is a bit efficient than hex
240
+ attDataBuf.set(
241
+ data.subarray(SINGLE_ATTESTATION_ATTDATA_OFFSET, SINGLE_ATTESTATION_ATTDATA_OFFSET + ATTESTATION_DATA_SIZE)
242
+ );
243
+ return attDataBuf.toString("base64");
244
+ }
245
+
246
+ /**
247
+ * Extract signature from SingleAttestation serialized bytes.
248
+ * Return null if data is not long enough to extract signature.
249
+ */
250
+ export function getSignatureFromSingleAttestationSerialized(data: Uint8Array): BLSSignature | null {
251
+ if (data.length !== SINGLE_ATTESTATION_SIZE) {
252
+ return null;
253
+ }
254
+
255
+ return data.subarray(SINGLE_ATTESTATION_SIGNATURE_OFFSET, SINGLE_ATTESTATION_SIGNATURE_OFFSET + SIGNATURE_SIZE);
256
+ }
257
+
258
+ //
259
+ // class SignedAggregateAndProof(Container):
260
+ // message: AggregateAndProof - offset 4
261
+ // signature: BLSSignature - data 96
262
+
263
+ // class AggregateAndProof(Container)
264
+ // aggregatorIndex: ValidatorIndex - data 8
265
+ // aggregate: Attestation - offset 4
266
+ // selectionProof: BLSSignature - data 96
267
+
268
+ const AGGREGATE_AND_PROOF_OFFSET = 4 + 96;
269
+ const AGGREGATE_OFFSET = AGGREGATE_AND_PROOF_OFFSET + 8 + 4 + 96;
270
+ const SIGNED_AGGREGATE_AND_PROOF_SLOT_OFFSET = AGGREGATE_OFFSET + VARIABLE_FIELD_OFFSET;
271
+ const SIGNED_AGGREGATE_AND_PROOF_BLOCK_ROOT_OFFSET = SIGNED_AGGREGATE_AND_PROOF_SLOT_OFFSET + 8 + 8;
272
+
273
+ /**
274
+ * Extract slot from signed aggregate and proof serialized bytes
275
+ * Return null if data is not long enough to extract slot
276
+ * This works for both phase + electra
277
+ */
278
+ export function getSlotFromSignedAggregateAndProofSerialized(data: Uint8Array): Slot | null {
279
+ if (data.length < SIGNED_AGGREGATE_AND_PROOF_SLOT_OFFSET + SLOT_SIZE) {
280
+ return null;
281
+ }
282
+
283
+ return getSlotFromOffset(data, SIGNED_AGGREGATE_AND_PROOF_SLOT_OFFSET);
284
+ }
285
+
286
+ /**
287
+ * Extract block root from signed aggregate and proof serialized bytes
288
+ * Return null if data is not long enough to extract block root
289
+ * This works for both phase + electra
290
+ */
291
+ export function getBlockRootFromSignedAggregateAndProofSerialized(data: Uint8Array): BlockRootHex | null {
292
+ if (data.length < SIGNED_AGGREGATE_AND_PROOF_BLOCK_ROOT_OFFSET + ROOT_SIZE) {
293
+ return null;
294
+ }
295
+
296
+ blockRootBuf.set(
297
+ data.subarray(
298
+ SIGNED_AGGREGATE_AND_PROOF_BLOCK_ROOT_OFFSET,
299
+ SIGNED_AGGREGATE_AND_PROOF_BLOCK_ROOT_OFFSET + ROOT_SIZE
300
+ )
301
+ );
302
+ return "0x" + blockRootBuf.toString("hex");
303
+ }
304
+
305
+ /**
306
+ * Extract AttestationData base64 from SignedAggregateAndProof for electra
307
+ * Return null if data is not long enough
308
+ */
309
+ export function getAttDataFromSignedAggregateAndProofElectra(data: Uint8Array): AttDataBase64 | null {
310
+ const startIndex = SIGNED_AGGREGATE_AND_PROOF_SLOT_OFFSET;
311
+ const endIndex = startIndex + ATTESTATION_DATA_SIZE;
312
+
313
+ if (data.length < endIndex + SIGNATURE_SIZE + COMMITTEE_BITS_SIZE) {
314
+ return null;
315
+ }
316
+ attDataBuf.set(data.subarray(startIndex, endIndex));
317
+ return attDataBuf.toString("base64");
318
+ }
319
+
320
+ /**
321
+ * Extract CommitteeBits base64 from SignedAggregateAndProof for electra
322
+ * Return null if data is not long enough
323
+ */
324
+ export function getCommitteeBitsFromSignedAggregateAndProofElectra(data: Uint8Array): CommitteeBitsBase64 | null {
325
+ const startIndex = SIGNED_AGGREGATE_AND_PROOF_SLOT_OFFSET + ATTESTATION_DATA_SIZE + SIGNATURE_SIZE;
326
+ const endIndex = startIndex + COMMITTEE_BITS_SIZE;
327
+
328
+ if (data.length < endIndex) {
329
+ return null;
330
+ }
331
+
332
+ committeeBitsDataBuf.set(data.subarray(startIndex, endIndex));
333
+ return committeeBitsDataBuf.toString("base64");
334
+ }
335
+
336
+ /**
337
+ * Extract attestation data base64 from signed aggregate and proof serialized bytes.
338
+ * Return null if data is not long enough to extract attestation data.
339
+ */
340
+ export function getAttDataFromSignedAggregateAndProofPhase0(data: Uint8Array): AttDataBase64 | null {
341
+ if (data.length < SIGNED_AGGREGATE_AND_PROOF_SLOT_OFFSET + ATTESTATION_DATA_SIZE) {
342
+ return null;
343
+ }
344
+
345
+ // base64 is a bit efficient than hex
346
+ attDataBuf.set(
347
+ data.subarray(
348
+ SIGNED_AGGREGATE_AND_PROOF_SLOT_OFFSET,
349
+ SIGNED_AGGREGATE_AND_PROOF_SLOT_OFFSET + ATTESTATION_DATA_SIZE
350
+ )
351
+ );
352
+ return attDataBuf.toString("base64");
353
+ }
354
+
355
+ /**
356
+ * 4 + 96 = 100
357
+ * ```
358
+ * class SignedBeaconBlock(Container):
359
+ * message: BeaconBlock [offset - 4 bytes]
360
+ * signature: BLSSignature [fixed - 96 bytes]
361
+ *
362
+ * class BeaconBlock(Container):
363
+ * slot: Slot [fixed - 8 bytes]
364
+ * proposer_index: ValidatorIndex
365
+ * parent_root: Root
366
+ * state_root: Root
367
+ * body: BeaconBlockBody
368
+ * ```
369
+ */
370
+ const SLOT_BYTES_POSITION_IN_SIGNED_BEACON_BLOCK = VARIABLE_FIELD_OFFSET + SIGNATURE_SIZE;
371
+
372
+ export function getSlotFromSignedBeaconBlockSerialized(data: Uint8Array): Slot | null {
373
+ if (data.length < SLOT_BYTES_POSITION_IN_SIGNED_BEACON_BLOCK + SLOT_SIZE) {
374
+ return null;
375
+ }
376
+
377
+ return getSlotFromOffset(data, SLOT_BYTES_POSITION_IN_SIGNED_BEACON_BLOCK);
378
+ }
379
+
380
+ /**
381
+ * class BlobSidecar(Container):
382
+ * index: BlobIndex [fixed - 8 bytes ],
383
+ * blob: Blob, BYTES_PER_FIELD_ELEMENT * FIELD_ELEMENTS_PER_BLOB
384
+ * kzgCommitment: Bytes48,
385
+ * kzgProof: Bytes48,
386
+ * signedBlockHeader:
387
+ * slot: 8 bytes
388
+ */
389
+
390
+ const SLOT_BYTES_POSITION_IN_SIGNED_BLOB_SIDECAR = 8 + BYTES_PER_FIELD_ELEMENT * FIELD_ELEMENTS_PER_BLOB + 48 + 48;
391
+
392
+ export function getSlotFromBlobSidecarSerialized(data: Uint8Array): Slot | null {
393
+ if (data.length < SLOT_BYTES_POSITION_IN_SIGNED_BLOB_SIDECAR + SLOT_SIZE) {
394
+ return null;
395
+ }
396
+
397
+ return getSlotFromOffset(data, SLOT_BYTES_POSITION_IN_SIGNED_BLOB_SIDECAR);
398
+ }
399
+
400
+ /**
401
+ * {
402
+ index: ColumnIndex [ fixed - 8 bytes],
403
+ column: DataColumn BYTES_PER_FIELD_ELEMENT * FIELD_ELEMENTS_PER_CELL * <some non fixed length>,
404
+ kzgCommitments: denebSsz.BlobKzgCommitments,
405
+ kzgProofs: denebSsz.KZGProofs,
406
+ signedBlockHeader: phase0Ssz.SignedBeaconBlockHeader,
407
+ kzgCommitmentsInclusionProof: KzgCommitmentsInclusionProof,
408
+ }
409
+ */
410
+
411
+ const SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR = 20;
412
+ export function getSlotFromDataColumnSidecarSerialized(data: Uint8Array): Slot | null {
413
+ if (data.length < SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR + SLOT_SIZE) {
414
+ return null;
415
+ }
416
+
417
+ return getSlotFromOffset(data, SLOT_BYTES_POSITION_IN_SIGNED_DATA_COLUMN_SIDECAR);
418
+ }
419
+
420
+ /**
421
+ * Read only the first 4 bytes of Slot, max value is 4,294,967,295 will be reached 1634 years after genesis
422
+ *
423
+ * If the high bytes are not zero, return null
424
+ */
425
+ function getSlotFromOffset(data: Uint8Array, offset: number): Slot | null {
426
+ return checkSlotHighBytes(data, offset) ? getSlotFromOffsetTrusted(data, offset) : null;
427
+ }
428
+
429
+ /**
430
+ * Alias of `getSlotFromOffset` for readability
431
+ */
432
+ function getIndexFromOffset(data: Uint8Array, offset: number): (ValidatorIndex | CommitteeIndex) | null {
433
+ return getSlotFromOffset(data, offset);
434
+ }
435
+
436
+ /**
437
+ * Read only the first 4 bytes of Slot, max value is 4,294,967,295 will be reached 1634 years after genesis
438
+ */
439
+ function getSlotFromOffsetTrusted(data: Uint8Array, offset: number): Slot {
440
+ return (data[offset] | (data[offset + 1] << 8) | (data[offset + 2] << 16) | (data[offset + 3] << 24)) >>> 0;
441
+ }
442
+
443
+ function checkSlotHighBytes(data: Uint8Array, offset: number): boolean {
444
+ return (data[offset + 4] | data[offset + 5] | data[offset + 6] | data[offset + 7]) === 0;
445
+ }
446
+
447
+ export function getBlobKzgCommitmentsCountFromSignedBeaconBlockSerialized(
448
+ config: ChainForkConfig,
449
+ blockBytes: Uint8Array
450
+ ): number {
451
+ const slot = getSlotFromSignedBeaconBlockSerialized(blockBytes);
452
+ if (!slot) throw new Error("Can not parse the slot from block bytes");
453
+
454
+ if (config.getForkSeq(slot) < ForkSeq.deneb) return 0;
455
+
456
+ const {SignedBeaconBlock, BeaconBlock, BeaconBlockBody, KZGCommitment} =
457
+ ssz[config.getForkName(slot) as ForkPostDeneb];
458
+
459
+ const view = new DataView(blockBytes.buffer, blockBytes.byteOffset, blockBytes.byteLength);
460
+ const singedBlockFieldRanges = SignedBeaconBlock.getFieldRanges(view, 0, blockBytes.length);
461
+ const messageIndex = Object.keys(SignedBeaconBlock.fields).indexOf("message");
462
+ const messageRange = singedBlockFieldRanges[messageIndex];
463
+
464
+ const blockFieldRanges = BeaconBlock.getFieldRanges(view, messageRange.start, messageRange.end);
465
+ const bodyIndex = Object.keys(BeaconBlock.fields).indexOf("body");
466
+ const bodyRange = blockFieldRanges[bodyIndex];
467
+
468
+ const bodyFieldRanges = BeaconBlockBody.getFieldRanges(
469
+ view,
470
+ messageRange.start + bodyRange.start,
471
+ messageRange.end + bodyRange.end
472
+ );
473
+ const kzgCommitmentsIndex = Object.keys(BeaconBlockBody.fields).indexOf("blobKzgCommitments");
474
+ const kzgCommitmentsRange = bodyFieldRanges[kzgCommitmentsIndex];
475
+ const commitmentSize = KZGCommitment.fixedSize;
476
+
477
+ const end = messageRange.end + bodyRange.end + kzgCommitmentsRange.end;
478
+ const start = messageRange.start + bodyRange.start + kzgCommitmentsRange.start;
479
+
480
+ return Math.round(((end > blockBytes.byteLength ? blockBytes.byteLength : end) - start) / commitmentSize);
481
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Simplified version of `strict-event-emitter-types` where each event only emits one argument
3
+ */
4
+ export type StrictEventEmitterSingleArg<EventData> = {
5
+ on<K extends keyof EventData>(event: K, listener: (data: EventData[K]) => void): void;
6
+ off<K extends keyof EventData>(event: K, listener: (data: EventData[K]) => void): void;
7
+ emit<K extends keyof EventData>(event: K, data: EventData[K]): void;
8
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Render a time difference in human readable form
3
+ */
4
+ export function prettyTimeDiffSec(secDiff: number): string {
5
+ const minDiff = secDiff / 60;
6
+ const hourDiff = minDiff / 60;
7
+ const daysDiff = hourDiff / 24;
8
+
9
+ if (daysDiff > 1) return `${+daysDiff.toPrecision(2)} days`;
10
+ if (hourDiff > 1) return `${+hourDiff.toPrecision(2)} hours`;
11
+ if (minDiff > 1) return `${+minDiff.toPrecision(2)} minutes`;
12
+ return `${+secDiff.toPrecision(2)} seconds`;
13
+ }
@@ -0,0 +1,118 @@
1
+ type Point = [number, number]; // [x, y] or here [time, value]
2
+
3
+ export class TimeSeries {
4
+ private points: Point[] = [];
5
+ private startTimeSec: number;
6
+ private maxPoints: number;
7
+
8
+ constructor(opts?: {maxPoints?: number}) {
9
+ this.maxPoints = opts?.maxPoints ?? 1000;
10
+ this.startTimeSec = Date.now() / 1000;
11
+ }
12
+
13
+ /** Add TimeSeries entry for value at current time */
14
+ addPoint(value: number, timeSec = Math.floor(Date.now() / 1000)): void {
15
+ // Substract initial time so x values are not big and cause rounding errors
16
+ const time = timeSec - this.startTimeSec;
17
+ this.points.push([time, value]);
18
+
19
+ // Limit length by removing old entries
20
+ while (this.points.length > this.maxPoints) {
21
+ this.points.shift();
22
+ }
23
+ }
24
+
25
+ /** Compute the slope of all registered points assuming linear regression */
26
+ computeLinearSpeed(): number {
27
+ return linearRegression(this.points).m;
28
+ }
29
+
30
+ /**
31
+ * Compute x point at which y = 0.
32
+ * From eq `y = b + m*x` then solve for `0 = b + m*x`
33
+ */
34
+ computeY0Point(): number {
35
+ const {m, b} = linearRegression(this.points);
36
+ // The X cordinate system has been shifted left by startTimeSec, so return the
37
+ // projection in original coordinated system
38
+ return -b / m + this.startTimeSec;
39
+ }
40
+
41
+ /** Remove all entries */
42
+ clear(): void {
43
+ this.points = [];
44
+ }
45
+
46
+ numPoints(): number {
47
+ return this.points.length;
48
+ }
49
+ }
50
+
51
+ /**
52
+ * From https://github.com/simple-statistics/simple-statistics/blob/d0d177baf74976a2421638bce98ab028c5afb537/src/linear_regression.js
53
+ *
54
+ * [Simple linear regression](http://en.wikipedia.org/wiki/Simple_linear_regression)
55
+ * is a simple way to find a fitted line between a set of coordinates.
56
+ * This algorithm finds the slope and y-intercept of a regression line
57
+ * using the least sum of squares.
58
+ *
59
+ * @param data an array of two-element of arrays,
60
+ * like `[[0, 1], [2, 3]]`
61
+ * @returns object containing slope and intersect of regression line
62
+ * @example
63
+ * linearRegression([[0, 0], [1, 1]]); // => { m: 1, b: 0 }
64
+ */
65
+ function linearRegression(data: Point[]): {m: number; b: number} {
66
+ let m: number, b: number;
67
+
68
+ // Store data length in a local variable to reduce
69
+ // repeated object property lookups
70
+ const dataLength = data.length;
71
+
72
+ //if there's only one point, arbitrarily choose a slope of 0
73
+ //and a y-intercept of whatever the y of the initial point is
74
+ if (dataLength === 1) {
75
+ m = 0;
76
+ b = data[0][1];
77
+ } else {
78
+ // Initialize our sums and scope the `m` and `b`
79
+ // variables that define the line.
80
+ let sumX = 0,
81
+ sumY = 0,
82
+ sumXX = 0,
83
+ sumXY = 0;
84
+
85
+ // Use local variables to grab point values
86
+ // with minimal object property lookups
87
+ let point: Point, x: number, y: number;
88
+
89
+ // Gather the sum of all x values, the sum of all
90
+ // y values, and the sum of x^2 and (x*y) for each
91
+ // value.
92
+ //
93
+ // In math notation, these would be SS_x, SS_y, SS_xx, and SS_xy
94
+ for (let i = 0; i < dataLength; i++) {
95
+ point = data[i];
96
+ x = point[0];
97
+ y = point[1];
98
+
99
+ sumX += x;
100
+ sumY += y;
101
+
102
+ sumXX += x * x;
103
+ sumXY += x * y;
104
+ }
105
+
106
+ // `m` is the slope of the regression line
107
+ m = (dataLength * sumXY - sumX * sumY) / (dataLength * sumXX - sumX * sumX);
108
+
109
+ // `b` is the y-intercept of the line.
110
+ b = sumY / dataLength - (m * sumX) / dataLength;
111
+ }
112
+
113
+ // Return both values as an object.
114
+ return {
115
+ m: m,
116
+ b: b,
117
+ };
118
+ }
@@ -0,0 +1,31 @@
1
+ import {ContainerType, ListCompositeType, ValueOf} from "@chainsafe/ssz";
2
+ import {BeaconConfig} from "@lodestar/config";
3
+ import {ForkName, isForkPostDeneb, isForkPostElectra} from "@lodestar/params";
4
+ import {ssz} from "@lodestar/types";
5
+
6
+ // Misc SSZ types used only in the beacon-node package, no need to upstream to types
7
+
8
+ export const signedBLSToExecutionChangeVersionedType = new ContainerType(
9
+ {
10
+ // Assumes less than 256 forks, sounds reasonable in our lifetime
11
+ preCapella: ssz.Boolean,
12
+ data: ssz.capella.SignedBLSToExecutionChange,
13
+ },
14
+ {jsonCase: "eth2", typeName: "SignedBLSToExecutionChangeVersionedType"}
15
+ );
16
+ export type SignedBLSToExecutionChangeVersioned = ValueOf<typeof signedBLSToExecutionChangeVersionedType>;
17
+
18
+ export const BeaconBlocksByRootRequestType = (fork: ForkName, config: BeaconConfig) =>
19
+ new ListCompositeType(ssz.Root, isForkPostDeneb(fork) ? config.MAX_REQUEST_BLOCKS_DENEB : config.MAX_REQUEST_BLOCKS);
20
+ export type BeaconBlocksByRootRequest = ValueOf<ReturnType<typeof BeaconBlocksByRootRequestType>>;
21
+
22
+ export const BlobSidecarsByRootRequestType = (fork: ForkName, config: BeaconConfig) =>
23
+ new ListCompositeType(
24
+ ssz.deneb.BlobIdentifier,
25
+ isForkPostElectra(fork) ? config.MAX_REQUEST_BLOB_SIDECARS_ELECTRA : config.MAX_REQUEST_BLOB_SIDECARS
26
+ );
27
+ export type BlobSidecarsByRootRequest = ValueOf<ReturnType<typeof BlobSidecarsByRootRequestType>>;
28
+
29
+ export const DataColumnSidecarsByRootRequestType = (config: BeaconConfig) =>
30
+ new ListCompositeType(ssz.fulu.DataColumnsByRootIdentifier, config.MAX_REQUEST_BLOCKS_DENEB);
31
+ export type DataColumnSidecarsByRootRequest = ValueOf<ReturnType<typeof DataColumnSidecarsByRootRequestType>>;