@lodestar/beacon-node 1.23.0-dev.d69d809e7a → 1.23.0-dev.de0d6ab89b

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 (340) 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.js +5 -3
  8. package/lib/api/impl/beacon/state/index.js.map +1 -1
  9. package/lib/api/impl/beacon/state/utils.d.ts +2 -6
  10. package/lib/api/impl/beacon/state/utils.js +24 -36
  11. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  12. package/lib/api/impl/config/constants.js +0 -1
  13. package/lib/api/impl/config/constants.js.map +1 -1
  14. package/lib/api/impl/debug/index.js +30 -0
  15. package/lib/api/impl/debug/index.js.map +1 -1
  16. package/lib/api/impl/errors.d.ts +8 -0
  17. package/lib/api/impl/errors.js +7 -0
  18. package/lib/api/impl/errors.js.map +1 -1
  19. package/lib/api/impl/events/index.js +1 -2
  20. package/lib/api/impl/events/index.js.map +1 -1
  21. package/lib/api/impl/lodestar/index.js +3 -3
  22. package/lib/api/impl/lodestar/index.js.map +1 -1
  23. package/lib/api/impl/node/index.js +2 -4
  24. package/lib/api/impl/node/index.js.map +1 -1
  25. package/lib/api/impl/node/utils.js +1 -0
  26. package/lib/api/impl/node/utils.js.map +1 -1
  27. package/lib/api/impl/validator/index.js +91 -86
  28. package/lib/api/impl/validator/index.js.map +1 -1
  29. package/lib/api/rest/activeSockets.js +1 -1
  30. package/lib/api/rest/activeSockets.js.map +1 -1
  31. package/lib/api/rest/base.d.ts +1 -0
  32. package/lib/api/rest/base.js +31 -4
  33. package/lib/api/rest/base.js.map +1 -1
  34. package/lib/api/rest/index.js +1 -0
  35. package/lib/api/rest/index.js.map +1 -1
  36. package/lib/api/rest/swaggerUI.js +1 -4
  37. package/lib/api/rest/swaggerUI.js.map +1 -1
  38. package/lib/chain/balancesCache.js +1 -1
  39. package/lib/chain/balancesCache.js.map +1 -1
  40. package/lib/chain/blocks/importBlock.js +2 -1
  41. package/lib/chain/blocks/importBlock.js.map +1 -1
  42. package/lib/chain/blocks/index.js +3 -5
  43. package/lib/chain/blocks/index.js.map +1 -1
  44. package/lib/chain/blocks/verifyBlocksDataAvailability.js +2 -2
  45. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  46. package/lib/chain/blocks/verifyBlocksSanityChecks.js +5 -13
  47. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  48. package/lib/chain/blocks/writeBlockInputToDb.js +1 -1
  49. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  50. package/lib/chain/bls/multithread/index.js +3 -3
  51. package/lib/chain/bls/multithread/index.js.map +1 -1
  52. package/lib/chain/bls/multithread/poolSize.js +1 -1
  53. package/lib/chain/bls/multithread/poolSize.js.map +1 -1
  54. package/lib/chain/bls/multithread/worker.js +1 -1
  55. package/lib/chain/bls/multithread/worker.js.map +1 -1
  56. package/lib/chain/chain.d.ts +4 -2
  57. package/lib/chain/chain.js +33 -36
  58. package/lib/chain/chain.js.map +1 -1
  59. package/lib/chain/emitter.d.ts +1 -1
  60. package/lib/chain/emitter.js +1 -1
  61. package/lib/chain/emitter.js.map +1 -1
  62. package/lib/chain/forkChoice/index.d.ts +4 -0
  63. package/lib/chain/forkChoice/index.js +5 -0
  64. package/lib/chain/forkChoice/index.js.map +1 -1
  65. package/lib/chain/genesis/genesis.js +2 -6
  66. package/lib/chain/genesis/genesis.js.map +1 -1
  67. package/lib/chain/historicalState/getHistoricalState.d.ts +2 -1
  68. package/lib/chain/historicalState/getHistoricalState.js +3 -0
  69. package/lib/chain/historicalState/getHistoricalState.js.map +1 -1
  70. package/lib/chain/historicalState/worker.js +1 -1
  71. package/lib/chain/historicalState/worker.js.map +1 -1
  72. package/lib/chain/initState.d.ts +1 -1
  73. package/lib/chain/initState.js +1 -1
  74. package/lib/chain/initState.js.map +1 -1
  75. package/lib/chain/interface.d.ts +4 -2
  76. package/lib/chain/interface.js.map +1 -1
  77. package/lib/chain/lightClient/index.js +3 -5
  78. package/lib/chain/lightClient/index.js.map +1 -1
  79. package/lib/chain/opPools/aggregatedAttestationPool.js +32 -36
  80. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  81. package/lib/chain/opPools/attestationPool.js +3 -5
  82. package/lib/chain/opPools/attestationPool.js.map +1 -1
  83. package/lib/chain/opPools/opPool.js +2 -4
  84. package/lib/chain/opPools/opPool.js.map +1 -1
  85. package/lib/chain/opPools/syncCommitteeMessagePool.js +3 -5
  86. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  87. package/lib/chain/opPools/syncContributionAndProofPool.js +2 -4
  88. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  89. package/lib/chain/options.js +1 -1
  90. package/lib/chain/options.js.map +1 -1
  91. package/lib/chain/prepareNextSlot.js +2 -1
  92. package/lib/chain/prepareNextSlot.js.map +1 -1
  93. package/lib/chain/produceBlock/produceBlockBody.js +11 -16
  94. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  95. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +1 -1
  96. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +1 -1
  97. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  98. package/lib/chain/regen/queued.js.map +1 -1
  99. package/lib/chain/regen/regen.js +1 -1
  100. package/lib/chain/regen/regen.js.map +1 -1
  101. package/lib/chain/rewards/attestationsRewards.d.ts +1 -1
  102. package/lib/chain/rewards/attestationsRewards.js +3 -2
  103. package/lib/chain/rewards/attestationsRewards.js.map +1 -1
  104. package/lib/chain/rewards/blockRewards.js +1 -3
  105. package/lib/chain/rewards/blockRewards.js.map +1 -1
  106. package/lib/chain/rewards/syncCommitteeRewards.js +1 -3
  107. package/lib/chain/rewards/syncCommitteeRewards.js.map +1 -1
  108. package/lib/chain/seenCache/seenGossipBlockInput.js +21 -25
  109. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  110. package/lib/chain/shufflingCache.js +11 -11
  111. package/lib/chain/shufflingCache.js.map +1 -1
  112. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  113. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +7 -2
  114. package/lib/chain/stateCache/fifoBlockStateCache.js +7 -2
  115. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  116. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +4 -3
  117. package/lib/chain/stateCache/persistentCheckpointsCache.js +4 -3
  118. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  119. package/lib/chain/validation/aggregateAndProof.d.ts +1 -1
  120. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  121. package/lib/chain/validation/attestation.d.ts +3 -17
  122. package/lib/chain/validation/attestation.js +28 -53
  123. package/lib/chain/validation/attestation.js.map +1 -1
  124. package/lib/chain/validation/attesterSlashing.d.ts +1 -1
  125. package/lib/chain/validation/blsToExecutionChange.d.ts +1 -1
  126. package/lib/chain/validation/lightClientFinalityUpdate.js +1 -1
  127. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  128. package/lib/chain/validation/lightClientOptimisticUpdate.js +1 -1
  129. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  130. package/lib/chain/validation/proposerSlashing.d.ts +1 -1
  131. package/lib/chain/validation/voluntaryExit.d.ts +1 -1
  132. package/lib/db/buckets.js +3 -5
  133. package/lib/db/buckets.js.map +1 -1
  134. package/lib/db/repositories/backfilledRanges.d.ts +1 -1
  135. package/lib/db/repositories/backfilledRanges.js +1 -2
  136. package/lib/db/repositories/backfilledRanges.js.map +1 -1
  137. package/lib/db/repositories/blockArchive.js +1 -1
  138. package/lib/db/repositories/blockArchive.js.map +1 -1
  139. package/lib/db/repositories/blockArchiveIndex.js +1 -1
  140. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  141. package/lib/db/repositories/checkpointState.js +1 -1
  142. package/lib/db/repositories/checkpointState.js.map +1 -1
  143. package/lib/db/repositories/depositDataRoot.d.ts +1 -1
  144. package/lib/db/repositories/depositDataRoot.js +2 -3
  145. package/lib/db/repositories/depositDataRoot.js.map +1 -1
  146. package/lib/db/repositories/eth1Data.d.ts +1 -1
  147. package/lib/db/repositories/eth1Data.js +1 -2
  148. package/lib/db/repositories/eth1Data.js.map +1 -1
  149. package/lib/db/repositories/stateArchive.js +1 -1
  150. package/lib/db/repositories/stateArchive.js.map +1 -1
  151. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +1 -1
  152. package/lib/db/single/preGenesisStateLastProcessedBlock.js +1 -1
  153. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +1 -1
  154. package/lib/eth1/eth1DataCache.js +1 -1
  155. package/lib/eth1/eth1DataCache.js.map +1 -1
  156. package/lib/eth1/eth1DepositDataTracker.js +9 -13
  157. package/lib/eth1/eth1DepositDataTracker.js.map +1 -1
  158. package/lib/eth1/eth1DepositsCache.js +2 -2
  159. package/lib/eth1/eth1DepositsCache.js.map +1 -1
  160. package/lib/eth1/eth1MergeBlockTracker.js +40 -50
  161. package/lib/eth1/eth1MergeBlockTracker.js.map +1 -1
  162. package/lib/eth1/index.js +4 -8
  163. package/lib/eth1/index.js.map +1 -1
  164. package/lib/eth1/provider/eth1Provider.js.map +1 -1
  165. package/lib/eth1/provider/jsonRpcHttpClient.d.ts +1 -1
  166. package/lib/eth1/provider/jsonRpcHttpClient.js +6 -12
  167. package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -1
  168. package/lib/eth1/provider/jwt.js +0 -1
  169. package/lib/eth1/provider/jwt.js.map +1 -1
  170. package/lib/eth1/provider/utils.js +1 -1
  171. package/lib/eth1/provider/utils.js.map +1 -1
  172. package/lib/eth1/utils/deposits.js +1 -1
  173. package/lib/eth1/utils/deposits.js.map +1 -1
  174. package/lib/eth1/utils/eth1Vote.js +3 -5
  175. package/lib/eth1/utils/eth1Vote.js.map +1 -1
  176. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +1 -3
  177. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +1 -1
  178. package/lib/execution/builder/http.js +7 -2
  179. package/lib/execution/builder/http.js.map +1 -1
  180. package/lib/execution/builder/index.js +1 -0
  181. package/lib/execution/builder/index.js.map +1 -1
  182. package/lib/execution/engine/http.d.ts +2 -2
  183. package/lib/execution/engine/http.js +4 -8
  184. package/lib/execution/engine/http.js.map +1 -1
  185. package/lib/execution/engine/index.js +1 -0
  186. package/lib/execution/engine/index.js.map +1 -1
  187. package/lib/execution/engine/mock.js +8 -11
  188. package/lib/execution/engine/mock.js.map +1 -1
  189. package/lib/execution/engine/types.js.map +1 -1
  190. package/lib/execution/engine/utils.js +1 -1
  191. package/lib/execution/engine/utils.js.map +1 -1
  192. package/lib/metrics/metrics/beacon.d.ts +1 -1
  193. package/lib/metrics/metrics/beacon.js +2 -3
  194. package/lib/metrics/metrics/beacon.js.map +1 -1
  195. package/lib/metrics/metrics/lodestar.js +0 -1
  196. package/lib/metrics/metrics/lodestar.js.map +1 -1
  197. package/lib/metrics/validatorMonitor.js +37 -49
  198. package/lib/metrics/validatorMonitor.js.map +1 -1
  199. package/lib/monitoring/properties.js +2 -4
  200. package/lib/monitoring/properties.js.map +1 -1
  201. package/lib/monitoring/service.js +3 -5
  202. package/lib/monitoring/service.js.map +1 -1
  203. package/lib/monitoring/system.js +0 -1
  204. package/lib/monitoring/system.js.map +1 -1
  205. package/lib/network/core/metrics.js +0 -2
  206. package/lib/network/core/metrics.js.map +1 -1
  207. package/lib/network/core/networkCore.d.ts +3 -3
  208. package/lib/network/core/networkCore.js +16 -5
  209. package/lib/network/core/networkCore.js.map +1 -1
  210. package/lib/network/core/networkCoreWorker.js +5 -4
  211. package/lib/network/core/networkCoreWorker.js.map +1 -1
  212. package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -2
  213. package/lib/network/core/networkCoreWorkerHandler.js +4 -4
  214. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  215. package/lib/network/core/types.d.ts +1 -1
  216. package/lib/network/discv5/index.d.ts +3 -4
  217. package/lib/network/discv5/index.js +5 -6
  218. package/lib/network/discv5/index.js.map +1 -1
  219. package/lib/network/discv5/types.d.ts +1 -1
  220. package/lib/network/discv5/utils.js +1 -0
  221. package/lib/network/discv5/utils.js.map +1 -1
  222. package/lib/network/discv5/worker.js +7 -7
  223. package/lib/network/discv5/worker.js.map +1 -1
  224. package/lib/network/events.js +1 -1
  225. package/lib/network/events.js.map +1 -1
  226. package/lib/network/forks.js +0 -1
  227. package/lib/network/forks.js.map +1 -1
  228. package/lib/network/gossip/encoding.js +1 -3
  229. package/lib/network/gossip/encoding.js.map +1 -1
  230. package/lib/network/gossip/gossipsub.js +10 -7
  231. package/lib/network/gossip/gossipsub.js.map +1 -1
  232. package/lib/network/gossip/interface.d.ts +8 -6
  233. package/lib/network/gossip/interface.js.map +1 -1
  234. package/lib/network/gossip/metrics.js +0 -1
  235. package/lib/network/gossip/metrics.js.map +1 -1
  236. package/lib/network/gossip/scoringParameters.js +0 -1
  237. package/lib/network/gossip/scoringParameters.js.map +1 -1
  238. package/lib/network/gossip/topic.js +3 -4
  239. package/lib/network/gossip/topic.js.map +1 -1
  240. package/lib/network/interface.d.ts +3 -2
  241. package/lib/network/libp2p/index.d.ts +2 -2
  242. package/lib/network/libp2p/index.js +9 -9
  243. package/lib/network/libp2p/index.js.map +1 -1
  244. package/lib/network/network.d.ts +4 -4
  245. package/lib/network/network.js +7 -5
  246. package/lib/network/network.js.map +1 -1
  247. package/lib/network/options.js +0 -2
  248. package/lib/network/options.js.map +1 -1
  249. package/lib/network/peers/datastore.d.ts +2 -1
  250. package/lib/network/peers/datastore.js +2 -3
  251. package/lib/network/peers/datastore.js.map +1 -1
  252. package/lib/network/peers/discover.d.ts +2 -0
  253. package/lib/network/peers/discover.js +10 -16
  254. package/lib/network/peers/discover.js.map +1 -1
  255. package/lib/network/peers/peerManager.d.ts +2 -1
  256. package/lib/network/peers/peerManager.js +11 -8
  257. package/lib/network/peers/peerManager.js.map +1 -1
  258. package/lib/network/peers/utils/getConnectedPeerIds.js +2 -2
  259. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  260. package/lib/network/processor/gossipHandlers.d.ts +0 -2
  261. package/lib/network/processor/gossipHandlers.js +15 -62
  262. package/lib/network/processor/gossipHandlers.js.map +1 -1
  263. package/lib/network/processor/gossipQueues/index.d.ts +1 -1
  264. package/lib/network/processor/gossipQueues/index.js +7 -22
  265. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  266. package/lib/network/processor/gossipQueues/indexed.js +1 -3
  267. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  268. package/lib/network/processor/gossipQueues/linear.js +5 -7
  269. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  270. package/lib/network/processor/gossipQueues/types.d.ts +1 -2
  271. package/lib/network/processor/gossipQueues/types.js +0 -6
  272. package/lib/network/processor/gossipQueues/types.js.map +1 -1
  273. package/lib/network/processor/index.js +4 -2
  274. package/lib/network/processor/index.js.map +1 -1
  275. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +5 -5
  276. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  277. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  278. package/lib/network/reqresp/handlers/lightClientBootstrap.js +1 -3
  279. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  280. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js +6 -8
  281. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  282. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js +6 -8
  283. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  284. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js +1 -3
  285. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  286. package/lib/network/reqresp/protocols.js +0 -1
  287. package/lib/network/reqresp/protocols.js.map +1 -1
  288. package/lib/network/reqresp/rateLimit.js +1 -1
  289. package/lib/network/reqresp/rateLimit.js.map +1 -1
  290. package/lib/network/reqresp/score.js +0 -1
  291. package/lib/network/reqresp/score.js.map +1 -1
  292. package/lib/network/reqresp/types.js +3 -7
  293. package/lib/network/reqresp/types.js.map +1 -1
  294. package/lib/network/util.d.ts +4 -1
  295. package/lib/network/util.js +2 -2
  296. package/lib/network/util.js.map +1 -1
  297. package/lib/node/nodejs.d.ts +3 -3
  298. package/lib/node/nodejs.js +3 -3
  299. package/lib/node/nodejs.js.map +1 -1
  300. package/lib/node/notifier.js +16 -26
  301. package/lib/node/notifier.js.map +1 -1
  302. package/lib/sync/backfill/backfill.d.ts +2 -2
  303. package/lib/sync/backfill/backfill.js +4 -2
  304. package/lib/sync/backfill/backfill.js.map +1 -1
  305. package/lib/sync/range/range.d.ts +1 -1
  306. package/lib/sync/range/range.js +3 -7
  307. package/lib/sync/range/range.js.map +1 -1
  308. package/lib/sync/range/utils/batches.js +1 -3
  309. package/lib/sync/range/utils/batches.js.map +1 -1
  310. package/lib/sync/sync.js +24 -24
  311. package/lib/sync/sync.js.map +1 -1
  312. package/lib/sync/unknownBlock.js +2 -6
  313. package/lib/sync/unknownBlock.js.map +1 -1
  314. package/lib/sync/utils/remoteSyncType.js +25 -36
  315. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  316. package/lib/util/asyncIterableToEvents.js +0 -2
  317. package/lib/util/asyncIterableToEvents.js.map +1 -1
  318. package/lib/util/binarySearch.js +1 -1
  319. package/lib/util/binarySearch.js.map +1 -1
  320. package/lib/util/bitArray.js +1 -2
  321. package/lib/util/bitArray.js.map +1 -1
  322. package/lib/util/kzg.js +3 -4
  323. package/lib/util/kzg.js.map +1 -1
  324. package/lib/util/map.js +0 -1
  325. package/lib/util/map.js.map +1 -1
  326. package/lib/util/peerId.js +1 -1
  327. package/lib/util/peerId.js.map +1 -1
  328. package/lib/util/profile.js +1 -1
  329. package/lib/util/profile.js.map +1 -1
  330. package/lib/util/queue/errors.d.ts +0 -1
  331. package/lib/util/queue/errors.js +0 -3
  332. package/lib/util/queue/errors.js.map +1 -1
  333. package/lib/util/queue/fnQueue.js +1 -1
  334. package/lib/util/queue/fnQueue.js.map +1 -1
  335. package/lib/util/queue/itemQueue.js +1 -1
  336. package/lib/util/queue/itemQueue.js.map +1 -1
  337. package/package.json +34 -34
  338. package/lib/network/processor/gossipQueues/indexedAvgTime.d.ts +0 -31
  339. package/lib/network/processor/gossipQueues/indexedAvgTime.js +0 -115
  340. package/lib/network/processor/gossipQueues/indexedAvgTime.js.map +0 -1
@@ -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":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,KAAK,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAC,wCAAwC,EAAC,MAAM,4BAA4B,CAAC;AAEpF,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAMjD,OAAO,EAAC,aAAa,EAAE,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAE1E,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,MAAM,EACN,EAAE,EACF,OAAO,EACP,IAAI,GAC6D;IACjE,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,MAAM,gBAAgB,GAAG,eAAe,GAAG,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAE1E,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,EAAC,MAAM,GAAG,MAAM,EAAE,OAAO,GAAG,GAAG,EAAC;YAClD,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,CAAC;gBACH,eAAe,GAAG,IAAI,CAAC;gBACvB,IAAI,QAAgB,CAAC;gBACrB,QAAQ,MAAM,EAAE,CAAC;oBACf,KAAK,SAAS;wBACZ,QAAQ,GAAG,MAAM,OAAO,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;wBAC7E,MAAM;oBACR,KAAK,QAAQ;wBACX,QAAQ,GAAG,MAAM,OAAO,CAAC,uBAAuB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;wBAC3E,MAAM;oBACR;wBACE,cAAc;wBACd,QAAQ,GAAG,MAAM,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;wBAC3D,MAAM;gBACV,CAAC;gBACD,OAAO,EAAC,IAAI,EAAE,EAAC,QAAQ,EAAC,EAAC,CAAC;YAC5B,CAAC;oBAAS,CAAC;gBACT,eAAe,GAAG,KAAK,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,EAAC,MAAM,GAAG,SAAS,EAAE,QAAQ,GAAG,gBAAgB,EAAE,OAAO,GAAG,GAAG,EAAC;YACjF,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACjD,CAAC;YACD,cAAc,GAAG,IAAI,CAAC;YAEtB,IAAI,CAAC;gBACH,IAAI,QAAgB,CAAC;gBACrB,IAAI,OAAe,CAAC;gBACpB,QAAQ,MAAM,EAAE,CAAC;oBACf,KAAK,SAAS;wBACZ,QAAQ,GAAG,MAAM,OAAO,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBACtE,MAAM;oBACR,KAAK,QAAQ;wBACX,QAAQ,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBAC/D,MAAM;oBACR;wBACE,cAAc;wBACd,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;wBACxC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;wBACpF,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBACpC,MAAM;gBACV,CAAC;gBACD,OAAO,EAAC,IAAI,EAAE,EAAC,QAAQ,EAAC,EAAC,CAAC;YAC5B,CAAC;oBAAS,CAAC;gBACT,cAAc,GAAG,KAAK,CAAC;YACzB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,wCAAwC;YAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YACnC,OAAO,EAAC,IAAI,EAAE,wCAAwC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAC,CAAC;QACzE,CAAC;QAED,KAAK,CAAC,uBAAuB;YAC3B,OAAO,EAAC,IAAI,EAAE,IAAI,CAAC,uBAAuB,EAAE,EAAC,CAAC;QAChD,CAAC;QAED,KAAK,CAAC,mBAAmB,CAAC,EAAC,UAAU,EAAC;YACpC,OAAO;gBACL,IAAI,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,UAAwB,CAAC;aAC9D,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,kBAAkB;YACtB,OAAO;gBACL,IAAI,EAAG,KAAK,CAAC,KAAgC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC/E,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG;oBACrB,IAAI,EAAE,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC9C,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,2BAA2B;YAC/B,OAAO;gBACL,6FAA6F;gBAC7F,IAAI,EAAG,KAAqB,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBAC9E,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;oBACtC,OAAO;wBACL,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;wBAC1E,OAAO,EAAE,IAAI;wBACb,WAAW,EAAE,IAAI,CAAC,WAAW;qBAC9B,CAAC;gBACJ,CAAC,CAAC;aACH,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,kBAAkB;YACtB,OAAO,EAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAC,CAAC;QAChD,CAAC;QAED,KAAK,CAAC,uBAAuB;YAC3B,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,GAAG,KAAK,EAAC,CAAC,CAAC;aAC9G,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,yBAAyB;YAC7B,OAAO,EAAC,IAAI,EAAE,MAAM,OAAO,CAAC,kBAAkB,EAAE,EAAC,CAAC;QACpD,CAAC;QAED,KAAK,CAAC,KAAK;YACT,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,MAAM,KAAK,CAAC,wEAAwE,CAAC,CAAC;YACtG,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,CAAC;QAED,KAAK,CAAC,cAAc;YAClB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAC1B,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,EAAC,MAAM,EAAE,UAAU,EAAC;YACpC,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,EAAC,MAAM,EAAC;YAC3B,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,EAAC,KAAK,EAAE,SAAS,EAAC;YAC/B,MAAM,KAAK,GAAG,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAC9C,CAAC,QAAQ,EAAE,EAAE,CACX,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChE,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAC3G,CAAC;YAEF,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,EAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAC;aAC5B,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,kBAAkB;YACtB,OAAO;gBACL,IAAI,EAAE,MAAM,OAAO,CAAC,mBAAmB,EAAE;aAC1C,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,EAAC,MAAM,EAAC;YAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAiC,EAAE,CAAC;gBACrE,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;oBAC/B,+FAA+F;oBAC/F,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,MAAM,EAAE,CAAC;wBACrE,OAAO,EAAC,IAAI,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,EAAC,CAAC;oBAClD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,KAAK,CAAC,mBAAmB,MAAM,GAAG,CAAC,CAAC;QAC5C,CAAC;QAED,KAAK,CAAC,gBAAgB;YACpB,OAAO,EAAC,IAAI,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAC,CAAC;QAC9D,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAuB,EAAE,YAA0B;IAC7E,QAAQ,YAAY,CAAC,GAAG,EAAE,CAAC;QACzB,KAAK,mBAAmB;YACtB,OAAO;gBACL,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC1B,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;aAC3B,CAAC;QAEJ,KAAK,oBAAoB;YACvB,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5D,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACvC,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzF,IAAI;aACL,CAAC;QACJ,CAAC;QAED,KAAK,UAAU;YACb,OAAO;gBACL,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;aAC3B,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAsC;IAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,GAAG,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -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);
@@ -429,9 +412,11 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
429
412
  graffiti: toGraffitiBuffer(graffiti ?? getDefaultGraffiti(getLodestarClientVersion(opts), chain.executionEngine.clientVersion, opts)),
430
413
  });
431
414
  logger.debug("Produced common block body", loggerContext);
415
+ // Calculate cutoff time based on start of the slot
416
+ const cutoffMs = Math.max(0, BLOCK_PRODUCTION_RACE_CUTOFF_MS - Math.round(chain.clock.secFromSlot(slot) * 1000));
432
417
  logger.verbose("Block production race (builder vs execution) starting", {
433
418
  ...loggerContext,
434
- cutoffMs: BLOCK_PRODUCTION_RACE_CUTOFF_MS,
419
+ cutoffMs,
435
420
  timeoutMs: BLOCK_PRODUCTION_RACE_TIMEOUT_MS,
436
421
  });
437
422
  // use abort controller to stop waiting for both block sources
@@ -470,7 +455,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
470
455
  })
471
456
  : Promise.reject(new Error("Engine disabled"));
472
457
  const [builder, engine] = await resolveOrRacePromises([builderPromise, enginePromise], {
473
- resolveTimeoutMs: BLOCK_PRODUCTION_RACE_CUTOFF_MS,
458
+ resolveTimeoutMs: cutoffMs,
474
459
  raceTimeoutMs: BLOCK_PRODUCTION_RACE_TIMEOUT_MS,
475
460
  signal: controller.signal,
476
461
  });
@@ -539,13 +524,11 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
539
524
  executionPayloadSource,
540
525
  };
541
526
  }
542
- else {
543
- return {
544
- ...builder.value,
545
- executionPayloadBlinded: true,
546
- executionPayloadSource,
547
- };
548
- }
527
+ return {
528
+ ...builder.value,
529
+ executionPayloadBlinded: true,
530
+ executionPayloadSource,
531
+ };
549
532
  }
550
533
  throw Error("Unreachable error occurred during the builder and execution block production");
551
534
  }
@@ -560,27 +543,21 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
560
543
  if (meta.executionPayloadBlinded) {
561
544
  return { data, meta };
562
545
  }
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
- }
546
+ if (isBlockContents(data)) {
547
+ const { block } = data;
548
+ const blindedBlock = beaconBlockToBlinded(config, block);
549
+ return {
550
+ data: blindedBlock,
551
+ meta: { ...meta, executionPayloadBlinded: true },
552
+ };
579
553
  }
554
+ const blindedBlock = beaconBlockToBlinded(config, data);
555
+ return {
556
+ data: blindedBlock,
557
+ meta: { ...meta, executionPayloadBlinded: true },
558
+ };
580
559
  }
581
- else {
582
- return { data, meta };
583
- }
560
+ return { data, meta };
584
561
  },
585
562
  async produceBlindedBlock({ slot, randaoReveal, graffiti }) {
586
563
  const { data, version } = await produceEngineOrBuilderBlock(slot, randaoReveal, graffiti);
@@ -592,13 +569,11 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
592
569
  const blindedBlock = beaconBlockToBlinded(config, block);
593
570
  return { data: blindedBlock, meta: { version } };
594
571
  }
595
- else if (isBlindedBeaconBlock(data)) {
572
+ if (isBlindedBeaconBlock(data)) {
596
573
  return { data, meta: { version } };
597
574
  }
598
- else {
599
- const blindedBlock = beaconBlockToBlinded(config, data);
600
- return { data: blindedBlock, meta: { version } };
601
- }
575
+ const blindedBlock = beaconBlockToBlinded(config, data);
576
+ return { data: blindedBlock, meta: { version } };
602
577
  },
603
578
  async produceAttestationData({ committeeIndex, slot }) {
604
579
  notWhileSyncing();
@@ -674,14 +649,15 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
674
649
  },
675
650
  async getProposerDuties({ epoch }) {
676
651
  notWhileSyncing();
677
- // Early check that epoch is within [current_epoch, current_epoch + 1], or allow for pre-genesis
652
+ // Early check that epoch is no more than current_epoch + 1, or allow for pre-genesis
678
653
  const currentEpoch = currentEpochWithDisparity();
679
654
  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}`);
655
+ if (currentEpoch >= 0 && epoch > nextEpoch) {
656
+ throw new ApiError(400, `Requested epoch ${epoch} must not be more than one epoch in the future`);
682
657
  }
683
658
  const head = chain.forkChoice.getHead();
684
659
  let state = undefined;
660
+ const startSlot = computeStartSlotAtEpoch(epoch);
685
661
  const slotMs = config.SECONDS_PER_SLOT * 1000;
686
662
  const prepareNextSlotLookAheadMs = slotMs / SCHEDULER_LOOKAHEAD_FACTOR;
687
663
  const toNextEpochMs = msToNextEpoch();
@@ -699,28 +675,59 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
699
675
  }
700
676
  }
701
677
  if (!state) {
702
- state = await chain.getHeadStateAtCurrentEpoch(RegenCaller.getDuties);
678
+ if (epoch >= currentEpoch - 1) {
679
+ // Cached beacon state stores proposers for previous, current and next epoch. The
680
+ // requested epoch is within that range, we can use the head state at current epoch
681
+ state = await chain.getHeadStateAtCurrentEpoch(RegenCaller.getDuties);
682
+ }
683
+ else {
684
+ const res = await getStateResponseWithRegen(chain, startSlot);
685
+ const stateViewDU = res.state instanceof Uint8Array
686
+ ? loadState(config, chain.getHeadState(), res.state).state
687
+ : res.state.clone();
688
+ state = createCachedBeaconState(stateViewDU, {
689
+ config: chain.config,
690
+ // Not required to compute proposers
691
+ pubkey2index: new PubkeyIndexMap(),
692
+ index2pubkey: [],
693
+ }, { skipSyncPubkeys: true, skipSyncCommitteeCache: true });
694
+ if (state.epochCtx.epoch !== epoch) {
695
+ throw Error(`Loaded state epoch ${state.epochCtx.epoch} does not match requested epoch ${epoch}`);
696
+ }
697
+ }
703
698
  }
704
699
  const stateEpoch = state.epochCtx.epoch;
705
700
  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}`);
701
+ switch (epoch) {
702
+ case stateEpoch:
703
+ indexes = state.epochCtx.getBeaconProposers();
704
+ break;
705
+ case stateEpoch + 1:
706
+ // make sure shuffling is calculated and ready for next call to calculate nextProposers
707
+ await chain.shufflingCache.get(state.epochCtx.nextEpoch, state.epochCtx.nextDecisionRoot);
708
+ // Requesting duties for next epoch is allowed since they can be predicted with high probabilities.
709
+ // @see `epochCtx.getBeaconProposersNextEpoch` JSDocs for rationale.
710
+ indexes = state.epochCtx.getBeaconProposersNextEpoch();
711
+ break;
712
+ case stateEpoch - 1: {
713
+ const indexesPrevEpoch = state.epochCtx.getBeaconProposersPrevEpoch();
714
+ if (indexesPrevEpoch === null) {
715
+ // Should not happen as previous proposer duties should be initialized for head state
716
+ // and if we load state from `Uint8Array` it will always be the state of requested epoch
717
+ throw Error(`Proposer duties for previous epoch ${epoch} not yet initialized`);
718
+ }
719
+ indexes = indexesPrevEpoch;
720
+ break;
721
+ }
722
+ default:
723
+ // Should never happen, epoch is checked to be in bounds above
724
+ throw Error(`Proposer duties for epoch ${epoch} not supported, current epoch ${stateEpoch}`);
717
725
  }
718
726
  // NOTE: this is the fastest way of getting compressed pubkeys.
719
727
  // See benchmark -> packages/lodestar/test/perf/api/impl/validator/attester.test.ts
720
728
  // After dropping the flat caches attached to the CachedBeaconState it's no longer available.
721
729
  // TODO: Add a flag to just send 0x00 as pubkeys since the Lodestar validator does not need them.
722
730
  const pubkeys = getPubkeysForIndices(state.validators, indexes);
723
- const startSlot = computeStartSlotAtEpoch(epoch);
724
731
  const duties = [];
725
732
  for (let i = 0; i < SLOTS_PER_EPOCH; i++) {
726
733
  duties.push({ slot: startSlot + i, validatorIndex: indexes[i], pubkey: pubkeys[i] });
@@ -873,7 +880,6 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
873
880
  await Promise.all(signedAggregateAndProofs.map(async (signedAggregateAndProof, i) => {
874
881
  try {
875
882
  // TODO: Validate in batch
876
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
877
883
  const validateFn = () => validateApiAggregateAndProof(fork, chain, signedAggregateAndProof);
878
884
  const { slot, beaconBlockRoot } = signedAggregateAndProof.message.aggregate.data;
879
885
  // when a validator is configured with multiple beacon node urls, this attestation may come from another beacon node
@@ -903,7 +909,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
903
909
  if (errors.length > 1) {
904
910
  throw Error("Multiple errors on publishAggregateAndProofs\n" + errors.map((e) => e.message).join("\n"));
905
911
  }
906
- else if (errors.length === 1) {
912
+ if (errors.length === 1) {
907
913
  throw errors[0];
908
914
  }
909
915
  },
@@ -945,7 +951,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
945
951
  if (errors.length > 1) {
946
952
  throw Error("Multiple errors on publishContributionAndProofs\n" + errors.map((e) => e.message).join("\n"));
947
953
  }
948
- else if (errors.length === 1) {
954
+ if (errors.length === 1) {
949
955
  throw errors[0];
950
956
  }
951
957
  },
@@ -1036,12 +1042,11 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
1036
1042
  const filteredRegistrations = registrations.filter((registration) => {
1037
1043
  const { pubkey } = registration.message;
1038
1044
  const validatorIndex = headState.epochCtx.pubkey2index.get(pubkey);
1039
- if (validatorIndex === undefined)
1045
+ if (validatorIndex === null)
1040
1046
  return false;
1041
1047
  const validator = headState.validators.getReadonly(validatorIndex);
1042
1048
  const status = getValidatorStatus(validator, currentEpoch);
1043
- return (status === "active" ||
1044
- status === "active_exiting" ||
1049
+ return (status === "active_exiting" ||
1045
1050
  status === "active_ongoing" ||
1046
1051
  status === "active_slashed" ||
1047
1052
  status === "pending_initialized" ||