@lodestar/beacon-node 1.23.0-dev.58dea7543c → 1.23.0-dev.5adb4ef364

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 (348) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +15 -19
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/beacon/blocks/utils.js +1 -1
  4. package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
  5. package/lib/api/impl/beacon/pool/index.js +13 -23
  6. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  7. package/lib/api/impl/beacon/state/index.d.ts +1 -1
  8. package/lib/api/impl/beacon/state/index.js +40 -4
  9. package/lib/api/impl/beacon/state/index.js.map +1 -1
  10. package/lib/api/impl/beacon/state/utils.d.ts +2 -6
  11. package/lib/api/impl/beacon/state/utils.js +24 -36
  12. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  13. package/lib/api/impl/config/constants.js +0 -1
  14. package/lib/api/impl/config/constants.js.map +1 -1
  15. package/lib/api/impl/debug/index.js +30 -0
  16. package/lib/api/impl/debug/index.js.map +1 -1
  17. package/lib/api/impl/errors.d.ts +8 -0
  18. package/lib/api/impl/errors.js +7 -0
  19. package/lib/api/impl/errors.js.map +1 -1
  20. package/lib/api/impl/events/index.js +1 -2
  21. package/lib/api/impl/events/index.js.map +1 -1
  22. package/lib/api/impl/lodestar/index.js +3 -3
  23. package/lib/api/impl/lodestar/index.js.map +1 -1
  24. package/lib/api/impl/node/index.js +2 -4
  25. package/lib/api/impl/node/index.js.map +1 -1
  26. package/lib/api/impl/node/utils.js +1 -0
  27. package/lib/api/impl/node/utils.js.map +1 -1
  28. package/lib/api/impl/validator/index.js +88 -85
  29. package/lib/api/impl/validator/index.js.map +1 -1
  30. package/lib/api/rest/activeSockets.js +1 -1
  31. package/lib/api/rest/activeSockets.js.map +1 -1
  32. package/lib/api/rest/base.d.ts +1 -0
  33. package/lib/api/rest/base.js +31 -4
  34. package/lib/api/rest/base.js.map +1 -1
  35. package/lib/api/rest/index.js +1 -0
  36. package/lib/api/rest/index.js.map +1 -1
  37. package/lib/api/rest/swaggerUI.js +1 -4
  38. package/lib/api/rest/swaggerUI.js.map +1 -1
  39. package/lib/chain/archiver/archiveStates.d.ts +3 -2
  40. package/lib/chain/archiver/archiveStates.js +8 -4
  41. package/lib/chain/archiver/archiveStates.js.map +1 -1
  42. package/lib/chain/archiver/index.d.ts +3 -1
  43. package/lib/chain/archiver/index.js +3 -2
  44. package/lib/chain/archiver/index.js.map +1 -1
  45. package/lib/chain/balancesCache.js +1 -1
  46. package/lib/chain/balancesCache.js.map +1 -1
  47. package/lib/chain/blocks/importBlock.js +2 -1
  48. package/lib/chain/blocks/importBlock.js.map +1 -1
  49. package/lib/chain/blocks/index.js +3 -5
  50. package/lib/chain/blocks/index.js.map +1 -1
  51. package/lib/chain/blocks/verifyBlocksDataAvailability.js +2 -2
  52. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  53. package/lib/chain/blocks/verifyBlocksSanityChecks.js +5 -13
  54. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  55. package/lib/chain/blocks/writeBlockInputToDb.js +1 -1
  56. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  57. package/lib/chain/bls/multithread/index.js +3 -3
  58. package/lib/chain/bls/multithread/index.js.map +1 -1
  59. package/lib/chain/bls/multithread/poolSize.js +1 -1
  60. package/lib/chain/bls/multithread/poolSize.js.map +1 -1
  61. package/lib/chain/bls/multithread/worker.js +1 -1
  62. package/lib/chain/bls/multithread/worker.js.map +1 -1
  63. package/lib/chain/chain.d.ts +4 -2
  64. package/lib/chain/chain.js +34 -37
  65. package/lib/chain/chain.js.map +1 -1
  66. package/lib/chain/emitter.d.ts +1 -1
  67. package/lib/chain/emitter.js +1 -1
  68. package/lib/chain/emitter.js.map +1 -1
  69. package/lib/chain/forkChoice/index.d.ts +4 -0
  70. package/lib/chain/forkChoice/index.js +5 -0
  71. package/lib/chain/forkChoice/index.js.map +1 -1
  72. package/lib/chain/genesis/genesis.js +2 -6
  73. package/lib/chain/genesis/genesis.js.map +1 -1
  74. package/lib/chain/historicalState/getHistoricalState.d.ts +2 -1
  75. package/lib/chain/historicalState/getHistoricalState.js +3 -0
  76. package/lib/chain/historicalState/getHistoricalState.js.map +1 -1
  77. package/lib/chain/historicalState/worker.js +1 -1
  78. package/lib/chain/historicalState/worker.js.map +1 -1
  79. package/lib/chain/initState.d.ts +1 -1
  80. package/lib/chain/initState.js +1 -1
  81. package/lib/chain/initState.js.map +1 -1
  82. package/lib/chain/interface.d.ts +4 -2
  83. package/lib/chain/interface.js.map +1 -1
  84. package/lib/chain/lightClient/index.js +3 -5
  85. package/lib/chain/lightClient/index.js.map +1 -1
  86. package/lib/chain/opPools/aggregatedAttestationPool.js +32 -36
  87. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  88. package/lib/chain/opPools/attestationPool.js +3 -5
  89. package/lib/chain/opPools/attestationPool.js.map +1 -1
  90. package/lib/chain/opPools/opPool.js +2 -4
  91. package/lib/chain/opPools/opPool.js.map +1 -1
  92. package/lib/chain/opPools/syncCommitteeMessagePool.js +3 -5
  93. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  94. package/lib/chain/opPools/syncContributionAndProofPool.js +2 -4
  95. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  96. package/lib/chain/options.js +1 -1
  97. package/lib/chain/options.js.map +1 -1
  98. package/lib/chain/prepareNextSlot.js +2 -1
  99. package/lib/chain/prepareNextSlot.js.map +1 -1
  100. package/lib/chain/produceBlock/produceBlockBody.js +11 -16
  101. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  102. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +1 -1
  103. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +1 -1
  104. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  105. package/lib/chain/regen/queued.js.map +1 -1
  106. package/lib/chain/regen/regen.js +1 -1
  107. package/lib/chain/regen/regen.js.map +1 -1
  108. package/lib/chain/rewards/attestationsRewards.d.ts +1 -1
  109. package/lib/chain/rewards/attestationsRewards.js +3 -2
  110. package/lib/chain/rewards/attestationsRewards.js.map +1 -1
  111. package/lib/chain/rewards/blockRewards.js +1 -3
  112. package/lib/chain/rewards/blockRewards.js.map +1 -1
  113. package/lib/chain/rewards/syncCommitteeRewards.js +1 -3
  114. package/lib/chain/rewards/syncCommitteeRewards.js.map +1 -1
  115. package/lib/chain/seenCache/seenGossipBlockInput.js +21 -25
  116. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  117. package/lib/chain/serializeState.js +63 -10
  118. package/lib/chain/serializeState.js.map +1 -1
  119. package/lib/chain/shufflingCache.js +11 -11
  120. package/lib/chain/shufflingCache.js.map +1 -1
  121. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  122. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +7 -2
  123. package/lib/chain/stateCache/fifoBlockStateCache.js +7 -2
  124. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  125. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +4 -3
  126. package/lib/chain/stateCache/persistentCheckpointsCache.js +25 -20
  127. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  128. package/lib/chain/validation/aggregateAndProof.d.ts +1 -1
  129. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  130. package/lib/chain/validation/attestation.d.ts +3 -17
  131. package/lib/chain/validation/attestation.js +28 -53
  132. package/lib/chain/validation/attestation.js.map +1 -1
  133. package/lib/chain/validation/attesterSlashing.d.ts +1 -1
  134. package/lib/chain/validation/blsToExecutionChange.d.ts +1 -1
  135. package/lib/chain/validation/lightClientFinalityUpdate.js +1 -1
  136. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  137. package/lib/chain/validation/lightClientOptimisticUpdate.js +1 -1
  138. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  139. package/lib/chain/validation/proposerSlashing.d.ts +1 -1
  140. package/lib/chain/validation/voluntaryExit.d.ts +1 -1
  141. package/lib/db/buckets.js +3 -5
  142. package/lib/db/buckets.js.map +1 -1
  143. package/lib/db/repositories/backfilledRanges.d.ts +1 -1
  144. package/lib/db/repositories/backfilledRanges.js +1 -2
  145. package/lib/db/repositories/backfilledRanges.js.map +1 -1
  146. package/lib/db/repositories/blockArchive.js +1 -1
  147. package/lib/db/repositories/blockArchive.js.map +1 -1
  148. package/lib/db/repositories/blockArchiveIndex.js +1 -1
  149. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  150. package/lib/db/repositories/checkpointState.js +0 -1
  151. package/lib/db/repositories/checkpointState.js.map +1 -1
  152. package/lib/db/repositories/depositDataRoot.d.ts +1 -1
  153. package/lib/db/repositories/depositDataRoot.js +2 -3
  154. package/lib/db/repositories/depositDataRoot.js.map +1 -1
  155. package/lib/db/repositories/eth1Data.d.ts +1 -1
  156. package/lib/db/repositories/eth1Data.js +1 -2
  157. package/lib/db/repositories/eth1Data.js.map +1 -1
  158. package/lib/db/repositories/stateArchive.js +1 -1
  159. package/lib/db/repositories/stateArchive.js.map +1 -1
  160. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +1 -1
  161. package/lib/db/single/preGenesisStateLastProcessedBlock.js +1 -1
  162. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +1 -1
  163. package/lib/eth1/eth1DataCache.js +1 -1
  164. package/lib/eth1/eth1DataCache.js.map +1 -1
  165. package/lib/eth1/eth1DepositDataTracker.js +9 -13
  166. package/lib/eth1/eth1DepositDataTracker.js.map +1 -1
  167. package/lib/eth1/eth1DepositsCache.js +2 -2
  168. package/lib/eth1/eth1DepositsCache.js.map +1 -1
  169. package/lib/eth1/eth1MergeBlockTracker.js +40 -50
  170. package/lib/eth1/eth1MergeBlockTracker.js.map +1 -1
  171. package/lib/eth1/index.js +4 -8
  172. package/lib/eth1/index.js.map +1 -1
  173. package/lib/eth1/provider/eth1Provider.js.map +1 -1
  174. package/lib/eth1/provider/jsonRpcHttpClient.d.ts +1 -1
  175. package/lib/eth1/provider/jsonRpcHttpClient.js +6 -12
  176. package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -1
  177. package/lib/eth1/provider/jwt.js +0 -1
  178. package/lib/eth1/provider/jwt.js.map +1 -1
  179. package/lib/eth1/provider/utils.js +1 -1
  180. package/lib/eth1/provider/utils.js.map +1 -1
  181. package/lib/eth1/utils/deposits.js +1 -1
  182. package/lib/eth1/utils/deposits.js.map +1 -1
  183. package/lib/eth1/utils/eth1Vote.js +3 -5
  184. package/lib/eth1/utils/eth1Vote.js.map +1 -1
  185. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +1 -3
  186. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +1 -1
  187. package/lib/execution/builder/http.js +6 -1
  188. package/lib/execution/builder/http.js.map +1 -1
  189. package/lib/execution/builder/index.js +1 -0
  190. package/lib/execution/builder/index.js.map +1 -1
  191. package/lib/execution/engine/http.d.ts +2 -2
  192. package/lib/execution/engine/http.js +4 -8
  193. package/lib/execution/engine/http.js.map +1 -1
  194. package/lib/execution/engine/index.js +1 -0
  195. package/lib/execution/engine/index.js.map +1 -1
  196. package/lib/execution/engine/mock.js +8 -11
  197. package/lib/execution/engine/mock.js.map +1 -1
  198. package/lib/execution/engine/types.js.map +1 -1
  199. package/lib/execution/engine/utils.js +1 -1
  200. package/lib/execution/engine/utils.js.map +1 -1
  201. package/lib/metrics/metrics/beacon.d.ts +1 -1
  202. package/lib/metrics/metrics/beacon.js +2 -3
  203. package/lib/metrics/metrics/beacon.js.map +1 -1
  204. package/lib/metrics/metrics/lodestar.d.ts +3 -1
  205. package/lib/metrics/metrics/lodestar.js +6 -6
  206. package/lib/metrics/metrics/lodestar.js.map +1 -1
  207. package/lib/metrics/validatorMonitor.js +37 -49
  208. package/lib/metrics/validatorMonitor.js.map +1 -1
  209. package/lib/monitoring/properties.js +2 -4
  210. package/lib/monitoring/properties.js.map +1 -1
  211. package/lib/monitoring/service.js +3 -5
  212. package/lib/monitoring/service.js.map +1 -1
  213. package/lib/monitoring/system.js +0 -1
  214. package/lib/monitoring/system.js.map +1 -1
  215. package/lib/network/core/metrics.js +0 -2
  216. package/lib/network/core/metrics.js.map +1 -1
  217. package/lib/network/core/networkCore.d.ts +3 -3
  218. package/lib/network/core/networkCore.js +16 -5
  219. package/lib/network/core/networkCore.js.map +1 -1
  220. package/lib/network/core/networkCoreWorker.js +5 -4
  221. package/lib/network/core/networkCoreWorker.js.map +1 -1
  222. package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -2
  223. package/lib/network/core/networkCoreWorkerHandler.js +4 -4
  224. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  225. package/lib/network/core/types.d.ts +1 -1
  226. package/lib/network/discv5/index.d.ts +3 -4
  227. package/lib/network/discv5/index.js +5 -6
  228. package/lib/network/discv5/index.js.map +1 -1
  229. package/lib/network/discv5/types.d.ts +1 -1
  230. package/lib/network/discv5/worker.js +7 -7
  231. package/lib/network/discv5/worker.js.map +1 -1
  232. package/lib/network/events.js +1 -1
  233. package/lib/network/events.js.map +1 -1
  234. package/lib/network/forks.js +0 -1
  235. package/lib/network/forks.js.map +1 -1
  236. package/lib/network/gossip/encoding.js +1 -3
  237. package/lib/network/gossip/encoding.js.map +1 -1
  238. package/lib/network/gossip/gossipsub.js +10 -7
  239. package/lib/network/gossip/gossipsub.js.map +1 -1
  240. package/lib/network/gossip/interface.d.ts +8 -6
  241. package/lib/network/gossip/interface.js.map +1 -1
  242. package/lib/network/gossip/metrics.js +0 -1
  243. package/lib/network/gossip/metrics.js.map +1 -1
  244. package/lib/network/gossip/scoringParameters.js +0 -1
  245. package/lib/network/gossip/scoringParameters.js.map +1 -1
  246. package/lib/network/gossip/topic.js +3 -4
  247. package/lib/network/gossip/topic.js.map +1 -1
  248. package/lib/network/interface.d.ts +3 -2
  249. package/lib/network/libp2p/index.d.ts +2 -2
  250. package/lib/network/libp2p/index.js +9 -9
  251. package/lib/network/libp2p/index.js.map +1 -1
  252. package/lib/network/network.d.ts +4 -4
  253. package/lib/network/network.js +7 -5
  254. package/lib/network/network.js.map +1 -1
  255. package/lib/network/options.js +0 -2
  256. package/lib/network/options.js.map +1 -1
  257. package/lib/network/peers/datastore.d.ts +2 -1
  258. package/lib/network/peers/datastore.js +2 -3
  259. package/lib/network/peers/datastore.js.map +1 -1
  260. package/lib/network/peers/discover.d.ts +2 -0
  261. package/lib/network/peers/discover.js +10 -16
  262. package/lib/network/peers/discover.js.map +1 -1
  263. package/lib/network/peers/peerManager.d.ts +2 -1
  264. package/lib/network/peers/peerManager.js +11 -8
  265. package/lib/network/peers/peerManager.js.map +1 -1
  266. package/lib/network/peers/utils/getConnectedPeerIds.js +2 -2
  267. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  268. package/lib/network/processor/gossipHandlers.d.ts +0 -2
  269. package/lib/network/processor/gossipHandlers.js +15 -62
  270. package/lib/network/processor/gossipHandlers.js.map +1 -1
  271. package/lib/network/processor/gossipQueues/index.d.ts +1 -1
  272. package/lib/network/processor/gossipQueues/index.js +7 -22
  273. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  274. package/lib/network/processor/gossipQueues/indexed.js +1 -3
  275. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  276. package/lib/network/processor/gossipQueues/linear.js +5 -7
  277. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  278. package/lib/network/processor/gossipQueues/types.d.ts +1 -2
  279. package/lib/network/processor/gossipQueues/types.js +0 -6
  280. package/lib/network/processor/gossipQueues/types.js.map +1 -1
  281. package/lib/network/processor/index.js +4 -2
  282. package/lib/network/processor/index.js.map +1 -1
  283. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +5 -5
  284. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  285. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  286. package/lib/network/reqresp/handlers/lightClientBootstrap.js +1 -3
  287. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  288. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js +6 -8
  289. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  290. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js +6 -8
  291. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  292. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js +1 -3
  293. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  294. package/lib/network/reqresp/protocols.js +0 -1
  295. package/lib/network/reqresp/protocols.js.map +1 -1
  296. package/lib/network/reqresp/rateLimit.js +1 -1
  297. package/lib/network/reqresp/rateLimit.js.map +1 -1
  298. package/lib/network/reqresp/score.js +0 -1
  299. package/lib/network/reqresp/score.js.map +1 -1
  300. package/lib/network/reqresp/types.js +3 -7
  301. package/lib/network/reqresp/types.js.map +1 -1
  302. package/lib/network/util.d.ts +4 -1
  303. package/lib/network/util.js +2 -2
  304. package/lib/network/util.js.map +1 -1
  305. package/lib/node/nodejs.d.ts +3 -3
  306. package/lib/node/nodejs.js +3 -3
  307. package/lib/node/nodejs.js.map +1 -1
  308. package/lib/node/notifier.js +16 -26
  309. package/lib/node/notifier.js.map +1 -1
  310. package/lib/sync/backfill/backfill.d.ts +2 -2
  311. package/lib/sync/backfill/backfill.js +4 -2
  312. package/lib/sync/backfill/backfill.js.map +1 -1
  313. package/lib/sync/range/range.d.ts +1 -1
  314. package/lib/sync/range/range.js +3 -7
  315. package/lib/sync/range/range.js.map +1 -1
  316. package/lib/sync/range/utils/batches.js +1 -3
  317. package/lib/sync/range/utils/batches.js.map +1 -1
  318. package/lib/sync/sync.js +24 -24
  319. package/lib/sync/sync.js.map +1 -1
  320. package/lib/sync/unknownBlock.js +2 -6
  321. package/lib/sync/unknownBlock.js.map +1 -1
  322. package/lib/sync/utils/remoteSyncType.js +25 -36
  323. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  324. package/lib/util/asyncIterableToEvents.js +0 -2
  325. package/lib/util/asyncIterableToEvents.js.map +1 -1
  326. package/lib/util/binarySearch.js +1 -1
  327. package/lib/util/binarySearch.js.map +1 -1
  328. package/lib/util/bitArray.js +1 -2
  329. package/lib/util/bitArray.js.map +1 -1
  330. package/lib/util/kzg.js +1 -4
  331. package/lib/util/kzg.js.map +1 -1
  332. package/lib/util/map.js +0 -1
  333. package/lib/util/map.js.map +1 -1
  334. package/lib/util/peerId.js +1 -1
  335. package/lib/util/peerId.js.map +1 -1
  336. package/lib/util/profile.js +1 -1
  337. package/lib/util/profile.js.map +1 -1
  338. package/lib/util/queue/errors.d.ts +0 -1
  339. package/lib/util/queue/errors.js +0 -3
  340. package/lib/util/queue/errors.js.map +1 -1
  341. package/lib/util/queue/fnQueue.js +1 -1
  342. package/lib/util/queue/fnQueue.js.map +1 -1
  343. package/lib/util/queue/itemQueue.js +1 -1
  344. package/lib/util/queue/itemQueue.js.map +1 -1
  345. package/package.json +34 -34
  346. package/lib/network/processor/gossipQueues/indexedAvgTime.d.ts +0 -31
  347. package/lib/network/processor/gossipQueues/indexedAvgTime.js +0 -115
  348. package/lib/network/processor/gossipQueues/indexedAvgTime.js.map +0 -1
@@ -1,3 +1,5 @@
1
+ import { ExecutionStatus } from "@lodestar/fork-choice";
2
+ import { ZERO_HASH_HEX } from "@lodestar/params";
1
3
  import { getStateResponseWithRegen } from "../beacon/state/utils.js";
2
4
  import { isOptimisticBlock } from "../../../util/forkChoice.js";
3
5
  import { getStateSlotFromBytes } from "../../../util/multifork.js";
@@ -13,6 +15,34 @@ export function getDebugApi({ chain, config, }) {
13
15
  })),
14
16
  };
15
17
  },
18
+ async getDebugForkChoice() {
19
+ return {
20
+ data: {
21
+ justifiedCheckpoint: chain.forkChoice.getJustifiedCheckpoint(),
22
+ finalizedCheckpoint: chain.forkChoice.getFinalizedCheckpoint(),
23
+ forkChoiceNodes: chain.forkChoice.getAllNodes().map((node) => ({
24
+ slot: node.slot,
25
+ blockRoot: node.blockRoot,
26
+ parentRoot: node.parentRoot,
27
+ justifiedEpoch: node.justifiedEpoch,
28
+ finalizedEpoch: node.finalizedEpoch,
29
+ weight: node.weight,
30
+ validity: (() => {
31
+ switch (node.executionStatus) {
32
+ case ExecutionStatus.Valid:
33
+ return "valid";
34
+ case ExecutionStatus.Invalid:
35
+ return "invalid";
36
+ case ExecutionStatus.Syncing:
37
+ case ExecutionStatus.PreMerge:
38
+ return "optimistic";
39
+ }
40
+ })(),
41
+ executionBlockHash: node.executionPayloadBlockHash ?? ZERO_HASH_HEX,
42
+ })),
43
+ },
44
+ };
45
+ },
16
46
  async getProtoArrayNodes() {
17
47
  const nodes = chain.forkChoice.getAllNodes().map((node) => ({
18
48
  // if node has executionPayloadNumber, it will overwrite the below default
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/debug/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,yBAAyB,EAAC,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AAEjE,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,MAAM,GAC+B;IACrC,OAAO;QACL,KAAK,CAAC,oBAAoB;YACxB,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,KAAK,CAAC,SAAS;oBACrB,mBAAmB,EAAE,iBAAiB,CAAC,KAAK,CAAC;iBAC9C,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,kBAAkB;YACtB,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC1D,0EAA0E;gBAC1E,sBAAsB,EAAE,CAAC;gBACzB,GAAG,IAAI;gBACP,yBAAyB,EAAE,IAAI,CAAC,yBAAyB,IAAI,EAAE;gBAC/D,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC3B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;gBACjC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;aAC5C,CAAC,CAAC,CAAC;YACJ,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;QACvB,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,EAAC,OAAO,EAAC,EAAE,OAAO;YACjC,MAAM,EAAC,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAC,GAAG,MAAM,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAChG,IAAI,IAAY,EAAE,IAA8B,CAAC;YACjD,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;gBAChC,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,GAAG,KAAK,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBAClB,IAAI,GAAG,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACpE,CAAC;YACD,OAAO;gBACL,IAAI;gBACJ,IAAI,EAAE;oBACJ,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;oBACjC,mBAAmB;oBACnB,SAAS;iBACV;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/debug/index.ts"],"names":[],"mappings":"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"}
@@ -16,4 +16,12 @@ export declare class NodeIsSyncing extends ApiError {
16
16
  export declare class OnlySupportedByDVT extends ApiError {
17
17
  constructor();
18
18
  }
19
+ export declare class IndexedError extends ApiError {
20
+ failures: FailureList;
21
+ constructor(message: string, failures: FailureList);
22
+ }
23
+ export type FailureList = {
24
+ index: number;
25
+ message: string;
26
+ }[];
19
27
  //# sourceMappingURL=errors.d.ts.map
@@ -29,4 +29,11 @@ export class OnlySupportedByDVT extends ApiError {
29
29
  super(501, "Only supported by distributed validator middleware clients");
30
30
  }
31
31
  }
32
+ // Error thrown when processing multiple items failed - https://github.com/ethereum/beacon-APIs/blob/e7f7d70423b0abfe9d9f33b701be2ec03e44eb02/types/http.yaml#L175
33
+ export class IndexedError extends ApiError {
34
+ constructor(message, failures) {
35
+ super(400, message);
36
+ this.failures = failures.sort((a, b) => a.index - b.index);
37
+ }
38
+ }
32
39
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/api/impl/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAC,QAAQ,EAAC,CAAC;AAElB,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACzC;QACE,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAChC,CAAC;CACF;AACD,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAC5C;QACE,KAAK,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;IAChD,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAE3C,YAAY,OAAgB,EAAE,QAAiB;QAC7C,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,gIAAgI;AAChI,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACzC,YAAY,SAAiB;QAC3B,KAAK,CAAC,GAAG,EAAE,qBAAqB,SAAS,EAAE,CAAC,CAAC;IAC/C,CAAC;CACF;AAED,uGAAuG;AACvG,oJAAoJ;AACpJ,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IAC9C;QACE,KAAK,CAAC,GAAG,EAAE,4DAA4D,CAAC,CAAC;IAC3E,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/api/impl/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAC,QAAQ,EAAC,CAAC;AAElB,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACzC;QACE,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAChC,CAAC;CACF;AACD,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAC5C;QACE,KAAK,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;IAChD,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAE3C,YAAY,OAAgB,EAAE,QAAiB;QAC7C,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,gIAAgI;AAChI,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACzC,YAAY,SAAiB;QAC3B,KAAK,CAAC,GAAG,EAAE,qBAAqB,SAAS,EAAE,CAAC,CAAC;IAC/C,CAAC;CACF;AAED,uGAAuG;AACvG,oJAAoJ;AACpJ,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IAC9C;QACE,KAAK,CAAC,GAAG,EAAE,4DAA4D,CAAC,CAAC;IAC3E,CAAC;CACF;AAED,kKAAkK;AAClK,MAAM,OAAO,YAAa,SAAQ,QAAQ;IAGxC,YAAY,OAAe,EAAE,QAAqB;QAChD,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;CACF"}
@@ -3,10 +3,9 @@ export function getEventsApi({ chain, }) {
3
3
  async eventstream({ topics, signal, onEvent }) {
4
4
  const onAbortFns = [];
5
5
  for (const topic of topics) {
6
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
7
7
  const handler = (data) => {
8
8
  // TODO: What happens if this handler throws? Does it break the other chain.emitter listeners?
9
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
10
9
  onEvent({ type: topic, message: data });
11
10
  };
12
11
  chain.emitter.on(topic, handler);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/events/index.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,GACgC;IACrC,OAAO;QACL,KAAK,CAAC,WAAW,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAC;YACzC,MAAM,UAAU,GAAmB,EAAE,CAAC;YAEtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,8DAA8D;gBAC9D,MAAM,OAAO,GAAG,CAAC,IAAS,EAAQ,EAAE;oBAClC,8FAA8F;oBAE9F,mEAAmE;oBACnE,OAAO,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;gBACxC,CAAC,CAAC;gBAEF,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACjC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,CAAC,gBAAgB,CACrB,OAAO,EACP,GAAG,EAAE;gBACH,KAAK,MAAM,OAAO,IAAI,UAAU;oBAAE,OAAO,EAAE,CAAC;YAC9C,CAAC,EACD,EAAC,IAAI,EAAE,IAAI,EAAC,CACb,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/events/index.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,GACgC;IACrC,OAAO;QACL,KAAK,CAAC,WAAW,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAC;YACzC,MAAM,UAAU,GAAmB,EAAE,CAAC;YAEtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,4DAA4D;gBAC5D,MAAM,OAAO,GAAG,CAAC,IAAS,EAAQ,EAAE;oBAClC,8FAA8F;oBAE9F,OAAO,CAAC,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;gBACxC,CAAC,CAAC;gBAEF,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACjC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,CAAC,gBAAgB,CACrB,OAAO,EACP,GAAG,EAAE;gBACH,KAAK,MAAM,OAAO,IAAI,UAAU;oBAAE,OAAO,EAAE,CAAC;YAC9C,CAAC,EACD,EAAC,IAAI,EAAE,IAAI,EAAC,CACb,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -87,6 +87,7 @@ export function getLodestarApi({ chain, config, db, network, sync, }) {
87
87
  },
88
88
  async getBlockProcessorQueueItems() {
89
89
  return {
90
+ // biome-ignore lint/complexity/useLiteralKeys: The `blockProcessor` is a protected attribute
90
91
  data: chain["blockProcessor"].jobQueue.getItems().map((item) => {
91
92
  const [blockInputs, opts] = item.args;
92
93
  return {
@@ -138,6 +139,7 @@ export function getLodestarApi({ chain, config, db, network, sync, }) {
138
139
  async dumpDbBucketKeys({ bucket }) {
139
140
  for (const repo of Object.values(db)) {
140
141
  if (repo instanceof Repository) {
142
+ // biome-ignore lint/complexity/useLiteralKeys: `bucket` is protected and `bucketId` is private
141
143
  if (String(repo["bucket"]) === bucket || repo["bucketId"] === bucket) {
142
144
  return { data: stringifyKeys(await repo.keys()) };
143
145
  }
@@ -177,9 +179,7 @@ function stringifyKeys(keys) {
177
179
  if (key instanceof Uint8Array) {
178
180
  return toHex(key);
179
181
  }
180
- else {
181
- return `${key}`;
182
- }
182
+ return `${key}`;
183
183
  });
184
184
  }
185
185
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/lodestar/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/lodestar/index.ts"],"names":[],"mappings":"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"}
@@ -56,10 +56,8 @@ export function getNodeApi(opts, { network, sync }) {
56
56
  // 206: Node is syncing but can serve incomplete data
57
57
  return { status: syncingStatus ?? routes.node.NodeHealth.SYNCING };
58
58
  }
59
- else {
60
- // 200: Node is ready
61
- return { status: routes.node.NodeHealth.READY };
62
- }
59
+ // 200: Node is ready
60
+ return { status: routes.node.NodeHealth.READY };
63
61
  // else {
64
62
  // 503: Node not initialized or having issues
65
63
  // NOTE: Lodestar does not start its API until fully initialized, so this status can never be served
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/node/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/impl/node/index.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,7 @@ function getPeerState(status) {
39
39
  case "closing":
40
40
  return "disconnecting";
41
41
  case "closed":
42
+ return "disconnected";
42
43
  default:
43
44
  return "disconnected";
44
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/api/impl/node/utils.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,WAAyB;IACzE,MAAM,IAAI,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAEhD,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;QACrD,0CAA0C;QAC1C,GAAG,EAAE,EAAE;QACP,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;QAC1D,SAAS,EAAE,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,SAAuC,CAAC,CAAC,CAAC,IAAI;QACtE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc;KACzD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAyB;IAC7D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;AAC3F,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,MAAoB;IACxC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,eAAe,CAAC;QACzB,KAAK,QAAQ,CAAC;QACd;YACE,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/api/impl/node/utils.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,WAAyB;IACzE,MAAM,IAAI,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAEhD,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;QACrD,0CAA0C;QAC1C,GAAG,EAAE,EAAE;QACP,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;QAC1D,SAAS,EAAE,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,SAAuC,CAAC,CAAC,CAAC,IAAI;QACtE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc;KACzD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAyB;IAC7D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;AAC3F,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,MAAoB;IACxC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,eAAe,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,cAAc,CAAC;QACxB;YACE,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -1,8 +1,9 @@
1
+ import { PubkeyIndexMap } from "@chainsafe/pubkey-index-map";
1
2
  import { routes } from "@lodestar/api";
2
- import { computeStartSlotAtEpoch, calculateCommitteeAssignments, proposerShufflingDecisionRoot, attesterShufflingDecisionRoot, getBlockRootAtSlot, computeEpochAtSlot, getCurrentSlot, beaconBlockToBlinded, } from "@lodestar/state-transition";
3
+ import { computeStartSlotAtEpoch, calculateCommitteeAssignments, proposerShufflingDecisionRoot, attesterShufflingDecisionRoot, getBlockRootAtSlot, computeEpochAtSlot, getCurrentSlot, beaconBlockToBlinded, createCachedBeaconState, loadState, } from "@lodestar/state-transition";
3
4
  import { GENESIS_SLOT, SLOTS_PER_EPOCH, SLOTS_PER_HISTORICAL_ROOT, SYNC_COMMITTEE_SUBNET_SIZE, isForkBlobs, isForkExecution, ForkSeq, isForkPostElectra, } from "@lodestar/params";
4
5
  import { MAX_BUILDER_BOOST_FACTOR } from "@lodestar/validator";
5
- import { ssz, ProducedBlockSource, isBlindedBeaconBlock, isBlockContents, } from "@lodestar/types";
6
+ import { ssz, ProducedBlockSource, isBlindedBeaconBlock, isBlockContents, getValidatorStatus, } from "@lodestar/types";
6
7
  import { ExecutionStatus, DataAvailabilityStatus } from "@lodestar/fork-choice";
7
8
  import { fromHex, toHex, resolveOrRacePromises, prettyWeiToEth, toRootHex } from "@lodestar/utils";
8
9
  import { AttestationError, AttestationErrorCode, GossipAction, SyncCommitteeError, SyncCommitteeErrorCode, } from "../../../chain/errors/index.js";
@@ -14,7 +15,7 @@ import { getDefaultGraffiti, toGraffitiBuffer } from "../../../util/graffiti.js"
14
15
  import { ApiError, NodeIsSyncing, OnlySupportedByDVT } from "../errors.js";
15
16
  import { validateSyncCommitteeGossipContributionAndProof } from "../../../chain/validation/syncCommitteeContributionAndProof.js";
16
17
  import { RegenCaller } from "../../../chain/regen/index.js";
17
- import { getValidatorStatus } from "../beacon/state/utils.js";
18
+ import { getStateResponseWithRegen } from "../beacon/state/utils.js";
18
19
  import { validateGossipFnRetryUnknownRoot } from "../../../network/processor/gossipHandlers.js";
19
20
  import { SCHEDULER_LOOKAHEAD_FACTOR } from "../../../chain/prepareNextSlot.js";
20
21
  import { ChainEvent } from "../../../chain/index.js";
@@ -35,7 +36,7 @@ import { computeSubnetForCommitteesAtSlot, getPubkeysForIndices, selectBlockProd
35
36
  */
36
37
  export const SYNC_TOLERANCE_EPOCHS = 1;
37
38
  /**
38
- * Cutoff time to wait for execution and builder block production apis to resolve
39
+ * Cutoff time to wait from start of the slot for execution and builder block production apis to resolve
39
40
  * Post this time, race execution and builder to pick whatever resolves first
40
41
  *
41
42
  * Empirically the builder block resolves in ~1.5+ seconds, and execution should resolve <1 sec.
@@ -90,7 +91,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
90
91
  if (msToSlot > MAX_API_CLOCK_DISPARITY_MS) {
91
92
  throw Error(`Requested slot ${slot} is in the future`);
92
93
  }
93
- else if (msToSlot > 0) {
94
+ if (msToSlot > 0) {
94
95
  await chain.clock.waitForSlot(slot);
95
96
  }
96
97
  // else, clock already in slot or slot is in the past
@@ -129,20 +130,18 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
129
130
  blockTotalValue: prettyWeiToEth(totalValue),
130
131
  };
131
132
  }
132
- else if (source === ProducedBlockSource.builder) {
133
+ if (source === ProducedBlockSource.builder) {
133
134
  return {
134
135
  builderExecutionPayloadValue: prettyWeiToEth(executionValue),
135
136
  builderConsensusBlockValue: prettyWeiToEth(consensusValue),
136
137
  builderBlockTotalValue: prettyWeiToEth(totalValue),
137
138
  };
138
139
  }
139
- else {
140
- return {
141
- engineExecutionPayloadValue: prettyWeiToEth(executionValue),
142
- engineConsensusBlockValue: prettyWeiToEth(consensusValue),
143
- engineBlockTotalValue: prettyWeiToEth(totalValue),
144
- };
145
- }
140
+ return {
141
+ engineExecutionPayloadValue: prettyWeiToEth(executionValue),
142
+ engineConsensusBlockValue: prettyWeiToEth(consensusValue),
143
+ engineBlockTotalValue: prettyWeiToEth(totalValue),
144
+ };
146
145
  }
147
146
  /**
148
147
  * This function is called 1s before next epoch, usually at that time PrepareNextSlotScheduler finishes
@@ -204,9 +203,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
204
203
  if (currentSlot - headSlot > SYNC_TOLERANCE_EPOCHS * SLOTS_PER_EPOCH) {
205
204
  throw new NodeIsSyncing(`headSlot ${headSlot} currentSlot ${currentSlot}`);
206
205
  }
207
- else {
208
- return;
209
- }
206
+ return;
210
207
  }
211
208
  case SyncState.Synced:
212
209
  return;
@@ -269,10 +266,6 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
269
266
  if (skipHeadChecksAndUpdate !== true) {
270
267
  notWhileSyncing();
271
268
  await waitForSlot(slot); // Must never request for a future slot > currentSlot
272
- // Process the queued attestations in the forkchoice for correct head estimation
273
- // forkChoice.updateTime() might have already been called by the onSlot clock
274
- // handler, in which case this should just return.
275
- chain.forkChoice.updateTime(slot);
276
269
  parentBlockRoot = fromHex(chain.getProposerHead(slot).blockRoot);
277
270
  }
278
271
  else {
@@ -314,10 +307,6 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
314
307
  if (skipHeadChecksAndUpdate !== true) {
315
308
  notWhileSyncing();
316
309
  await waitForSlot(slot); // Must never request for a future slot > currentSlot
317
- // Process the queued attestations in the forkchoice for correct head estimation
318
- // forkChoice.updateTime() might have already been called by the onSlot clock
319
- // handler, in which case this should just return.
320
- chain.forkChoice.updateTime(slot);
321
310
  parentBlockRoot = fromHex(chain.getProposerHead(slot).blockRoot);
322
311
  }
323
312
  else {
@@ -367,9 +356,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
367
356
  shouldOverrideBuilder,
368
357
  };
369
358
  }
370
- else {
371
- return { data: block, version, executionPayloadValue, consensusBlockValue, shouldOverrideBuilder };
372
- }
359
+ return { data: block, version, executionPayloadValue, consensusBlockValue, shouldOverrideBuilder };
373
360
  }
374
361
  finally {
375
362
  if (timer)
@@ -381,10 +368,6 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
381
368
  _skipRandaoVerification, builderBoostFactor, { feeRecipient, builderSelection, strictFeeRecipientCheck } = {}) {
382
369
  notWhileSyncing();
383
370
  await waitForSlot(slot); // Must never request for a future slot > currentSlot
384
- // Process the queued attestations in the forkchoice for correct head estimation
385
- // forkChoice.updateTime() might have already been called by the onSlot clock
386
- // handler, in which case this should just return.
387
- chain.forkChoice.updateTime(slot);
388
371
  const parentBlockRoot = fromHex(chain.getProposerHead(slot).blockRoot);
389
372
  notOnOutOfRangeData(parentBlockRoot);
390
373
  const fork = config.getForkName(slot);
@@ -470,7 +453,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
470
453
  })
471
454
  : Promise.reject(new Error("Engine disabled"));
472
455
  const [builder, engine] = await resolveOrRacePromises([builderPromise, enginePromise], {
473
- resolveTimeoutMs: BLOCK_PRODUCTION_RACE_CUTOFF_MS,
456
+ resolveTimeoutMs: Math.max(0, BLOCK_PRODUCTION_RACE_CUTOFF_MS - Math.round(chain.clock.secFromSlot(slot) * 1000)),
474
457
  raceTimeoutMs: BLOCK_PRODUCTION_RACE_TIMEOUT_MS,
475
458
  signal: controller.signal,
476
459
  });
@@ -539,13 +522,11 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
539
522
  executionPayloadSource,
540
523
  };
541
524
  }
542
- else {
543
- return {
544
- ...builder.value,
545
- executionPayloadBlinded: true,
546
- executionPayloadSource,
547
- };
548
- }
525
+ return {
526
+ ...builder.value,
527
+ executionPayloadBlinded: true,
528
+ executionPayloadSource,
529
+ };
549
530
  }
550
531
  throw Error("Unreachable error occurred during the builder and execution block production");
551
532
  }
@@ -560,27 +541,21 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
560
541
  if (meta.executionPayloadBlinded) {
561
542
  return { data, meta };
562
543
  }
563
- else {
564
- if (isBlockContents(data)) {
565
- const { block } = data;
566
- const blindedBlock = beaconBlockToBlinded(config, block);
567
- return {
568
- data: blindedBlock,
569
- meta: { ...meta, executionPayloadBlinded: true },
570
- };
571
- }
572
- else {
573
- const blindedBlock = beaconBlockToBlinded(config, data);
574
- return {
575
- data: blindedBlock,
576
- meta: { ...meta, executionPayloadBlinded: true },
577
- };
578
- }
544
+ if (isBlockContents(data)) {
545
+ const { block } = data;
546
+ const blindedBlock = beaconBlockToBlinded(config, block);
547
+ return {
548
+ data: blindedBlock,
549
+ meta: { ...meta, executionPayloadBlinded: true },
550
+ };
579
551
  }
552
+ const blindedBlock = beaconBlockToBlinded(config, data);
553
+ return {
554
+ data: blindedBlock,
555
+ meta: { ...meta, executionPayloadBlinded: true },
556
+ };
580
557
  }
581
- else {
582
- return { data, meta };
583
- }
558
+ return { data, meta };
584
559
  },
585
560
  async produceBlindedBlock({ slot, randaoReveal, graffiti }) {
586
561
  const { data, version } = await produceEngineOrBuilderBlock(slot, randaoReveal, graffiti);
@@ -592,13 +567,11 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
592
567
  const blindedBlock = beaconBlockToBlinded(config, block);
593
568
  return { data: blindedBlock, meta: { version } };
594
569
  }
595
- else if (isBlindedBeaconBlock(data)) {
570
+ if (isBlindedBeaconBlock(data)) {
596
571
  return { data, meta: { version } };
597
572
  }
598
- else {
599
- const blindedBlock = beaconBlockToBlinded(config, data);
600
- return { data: blindedBlock, meta: { version } };
601
- }
573
+ const blindedBlock = beaconBlockToBlinded(config, data);
574
+ return { data: blindedBlock, meta: { version } };
602
575
  },
603
576
  async produceAttestationData({ committeeIndex, slot }) {
604
577
  notWhileSyncing();
@@ -674,14 +647,15 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
674
647
  },
675
648
  async getProposerDuties({ epoch }) {
676
649
  notWhileSyncing();
677
- // Early check that epoch is within [current_epoch, current_epoch + 1], or allow for pre-genesis
650
+ // Early check that epoch is no more than current_epoch + 1, or allow for pre-genesis
678
651
  const currentEpoch = currentEpochWithDisparity();
679
652
  const nextEpoch = currentEpoch + 1;
680
- if (currentEpoch >= 0 && epoch !== currentEpoch && epoch !== nextEpoch) {
681
- throw Error(`Requested epoch ${epoch} must equal current ${currentEpoch} or next epoch ${nextEpoch}`);
653
+ if (currentEpoch >= 0 && epoch > nextEpoch) {
654
+ throw new ApiError(400, `Requested epoch ${epoch} must not be more than one epoch in the future`);
682
655
  }
683
656
  const head = chain.forkChoice.getHead();
684
657
  let state = undefined;
658
+ const startSlot = computeStartSlotAtEpoch(epoch);
685
659
  const slotMs = config.SECONDS_PER_SLOT * 1000;
686
660
  const prepareNextSlotLookAheadMs = slotMs / SCHEDULER_LOOKAHEAD_FACTOR;
687
661
  const toNextEpochMs = msToNextEpoch();
@@ -699,28 +673,59 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
699
673
  }
700
674
  }
701
675
  if (!state) {
702
- state = await chain.getHeadStateAtCurrentEpoch(RegenCaller.getDuties);
676
+ if (epoch >= currentEpoch - 1) {
677
+ // Cached beacon state stores proposers for previous, current and next epoch. The
678
+ // requested epoch is within that range, we can use the head state at current epoch
679
+ state = await chain.getHeadStateAtCurrentEpoch(RegenCaller.getDuties);
680
+ }
681
+ else {
682
+ const res = await getStateResponseWithRegen(chain, startSlot);
683
+ const stateViewDU = res.state instanceof Uint8Array
684
+ ? loadState(config, chain.getHeadState(), res.state).state
685
+ : res.state.clone();
686
+ state = createCachedBeaconState(stateViewDU, {
687
+ config: chain.config,
688
+ // Not required to compute proposers
689
+ pubkey2index: new PubkeyIndexMap(),
690
+ index2pubkey: [],
691
+ }, { skipSyncPubkeys: true, skipSyncCommitteeCache: true });
692
+ if (state.epochCtx.epoch !== epoch) {
693
+ throw Error(`Loaded state epoch ${state.epochCtx.epoch} does not match requested epoch ${epoch}`);
694
+ }
695
+ }
703
696
  }
704
697
  const stateEpoch = state.epochCtx.epoch;
705
698
  let indexes = [];
706
- if (epoch === stateEpoch) {
707
- indexes = state.epochCtx.getBeaconProposers();
708
- }
709
- else if (epoch === stateEpoch + 1) {
710
- // Requesting duties for next epoch is allow since they can be predicted with high probabilities.
711
- // @see `epochCtx.getBeaconProposersNextEpoch` JSDocs for rationale.
712
- indexes = state.epochCtx.getBeaconProposersNextEpoch();
713
- }
714
- else {
715
- // Should never happen, epoch is checked to be in bounds above
716
- throw Error(`Proposer duties for epoch ${epoch} not supported, current epoch ${stateEpoch}`);
699
+ switch (epoch) {
700
+ case stateEpoch:
701
+ indexes = state.epochCtx.getBeaconProposers();
702
+ break;
703
+ case stateEpoch + 1:
704
+ // make sure shuffling is calculated and ready for next call to calculate nextProposers
705
+ await chain.shufflingCache.get(state.epochCtx.nextEpoch, state.epochCtx.nextDecisionRoot);
706
+ // Requesting duties for next epoch is allowed since they can be predicted with high probabilities.
707
+ // @see `epochCtx.getBeaconProposersNextEpoch` JSDocs for rationale.
708
+ indexes = state.epochCtx.getBeaconProposersNextEpoch();
709
+ break;
710
+ case stateEpoch - 1: {
711
+ const indexesPrevEpoch = state.epochCtx.getBeaconProposersPrevEpoch();
712
+ if (indexesPrevEpoch === null) {
713
+ // Should not happen as previous proposer duties should be initialized for head state
714
+ // and if we load state from `Uint8Array` it will always be the state of requested epoch
715
+ throw Error(`Proposer duties for previous epoch ${epoch} not yet initialized`);
716
+ }
717
+ indexes = indexesPrevEpoch;
718
+ break;
719
+ }
720
+ default:
721
+ // Should never happen, epoch is checked to be in bounds above
722
+ throw Error(`Proposer duties for epoch ${epoch} not supported, current epoch ${stateEpoch}`);
717
723
  }
718
724
  // NOTE: this is the fastest way of getting compressed pubkeys.
719
725
  // See benchmark -> packages/lodestar/test/perf/api/impl/validator/attester.test.ts
720
726
  // After dropping the flat caches attached to the CachedBeaconState it's no longer available.
721
727
  // TODO: Add a flag to just send 0x00 as pubkeys since the Lodestar validator does not need them.
722
728
  const pubkeys = getPubkeysForIndices(state.validators, indexes);
723
- const startSlot = computeStartSlotAtEpoch(epoch);
724
729
  const duties = [];
725
730
  for (let i = 0; i < SLOTS_PER_EPOCH; i++) {
726
731
  duties.push({ slot: startSlot + i, validatorIndex: indexes[i], pubkey: pubkeys[i] });
@@ -873,7 +878,6 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
873
878
  await Promise.all(signedAggregateAndProofs.map(async (signedAggregateAndProof, i) => {
874
879
  try {
875
880
  // TODO: Validate in batch
876
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
877
881
  const validateFn = () => validateApiAggregateAndProof(fork, chain, signedAggregateAndProof);
878
882
  const { slot, beaconBlockRoot } = signedAggregateAndProof.message.aggregate.data;
879
883
  // when a validator is configured with multiple beacon node urls, this attestation may come from another beacon node
@@ -903,7 +907,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
903
907
  if (errors.length > 1) {
904
908
  throw Error("Multiple errors on publishAggregateAndProofs\n" + errors.map((e) => e.message).join("\n"));
905
909
  }
906
- else if (errors.length === 1) {
910
+ if (errors.length === 1) {
907
911
  throw errors[0];
908
912
  }
909
913
  },
@@ -945,7 +949,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
945
949
  if (errors.length > 1) {
946
950
  throw Error("Multiple errors on publishContributionAndProofs\n" + errors.map((e) => e.message).join("\n"));
947
951
  }
948
- else if (errors.length === 1) {
952
+ if (errors.length === 1) {
949
953
  throw errors[0];
950
954
  }
951
955
  },
@@ -1036,12 +1040,11 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
1036
1040
  const filteredRegistrations = registrations.filter((registration) => {
1037
1041
  const { pubkey } = registration.message;
1038
1042
  const validatorIndex = headState.epochCtx.pubkey2index.get(pubkey);
1039
- if (validatorIndex === undefined)
1043
+ if (validatorIndex === null)
1040
1044
  return false;
1041
1045
  const validator = headState.validators.getReadonly(validatorIndex);
1042
1046
  const status = getValidatorStatus(validator, currentEpoch);
1043
- return (status === "active" ||
1044
- status === "active_exiting" ||
1047
+ return (status === "active_exiting" ||
1045
1048
  status === "active_ongoing" ||
1046
1049
  status === "active_slashed" ||
1047
1050
  status === "pending_initialized" ||