@lodestar/beacon-node 1.23.0-dev.f1a77eadb7 → 1.23.0-dev.fa969ca6fd

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 (366) 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.d.ts +0 -1
  14. package/lib/api/impl/config/constants.js +1 -3
  15. package/lib/api/impl/config/constants.js.map +1 -1
  16. package/lib/api/impl/debug/index.js +30 -0
  17. package/lib/api/impl/debug/index.js.map +1 -1
  18. package/lib/api/impl/errors.d.ts +8 -0
  19. package/lib/api/impl/errors.js +7 -0
  20. package/lib/api/impl/errors.js.map +1 -1
  21. package/lib/api/impl/events/index.js +1 -2
  22. package/lib/api/impl/events/index.js.map +1 -1
  23. package/lib/api/impl/lodestar/index.js +3 -3
  24. package/lib/api/impl/lodestar/index.js.map +1 -1
  25. package/lib/api/impl/node/index.js +2 -4
  26. package/lib/api/impl/node/index.js.map +1 -1
  27. package/lib/api/impl/node/utils.js +1 -0
  28. package/lib/api/impl/node/utils.js.map +1 -1
  29. package/lib/api/impl/validator/index.js +104 -90
  30. package/lib/api/impl/validator/index.js.map +1 -1
  31. package/lib/api/rest/activeSockets.js +1 -1
  32. package/lib/api/rest/activeSockets.js.map +1 -1
  33. package/lib/api/rest/base.d.ts +1 -0
  34. package/lib/api/rest/base.js +31 -4
  35. package/lib/api/rest/base.js.map +1 -1
  36. package/lib/api/rest/index.js +1 -0
  37. package/lib/api/rest/index.js.map +1 -1
  38. package/lib/api/rest/swaggerUI.js +1 -4
  39. package/lib/api/rest/swaggerUI.js.map +1 -1
  40. package/lib/chain/archiver/archiver.d.ts +40 -0
  41. package/lib/chain/archiver/archiver.js +117 -0
  42. package/lib/chain/archiver/archiver.js.map +1 -0
  43. package/lib/chain/archiver/index.d.ts +2 -52
  44. package/lib/chain/archiver/index.js +2 -103
  45. package/lib/chain/archiver/index.js.map +1 -1
  46. package/lib/chain/archiver/interface.d.ts +39 -0
  47. package/lib/chain/archiver/interface.js +8 -0
  48. package/lib/chain/archiver/interface.js.map +1 -0
  49. package/lib/chain/archiver/{archiveStates.d.ts → strategies/frequencyStateArchiveStrategy.d.ts} +17 -14
  50. package/lib/chain/archiver/{archiveStates.js → strategies/frequencyStateArchiveStrategy.js} +16 -10
  51. package/lib/chain/archiver/strategies/frequencyStateArchiveStrategy.js.map +1 -0
  52. package/lib/chain/balancesCache.js +1 -1
  53. package/lib/chain/balancesCache.js.map +1 -1
  54. package/lib/chain/blocks/importBlock.js +2 -1
  55. package/lib/chain/blocks/importBlock.js.map +1 -1
  56. package/lib/chain/blocks/index.js +3 -5
  57. package/lib/chain/blocks/index.js.map +1 -1
  58. package/lib/chain/blocks/verifyBlocksDataAvailability.js +2 -2
  59. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  60. package/lib/chain/blocks/verifyBlocksSanityChecks.js +5 -13
  61. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  62. package/lib/chain/blocks/writeBlockInputToDb.js +1 -1
  63. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  64. package/lib/chain/bls/multithread/index.js +3 -3
  65. package/lib/chain/bls/multithread/index.js.map +1 -1
  66. package/lib/chain/bls/multithread/poolSize.js +1 -1
  67. package/lib/chain/bls/multithread/poolSize.js.map +1 -1
  68. package/lib/chain/bls/multithread/worker.js +1 -1
  69. package/lib/chain/bls/multithread/worker.js.map +1 -1
  70. package/lib/chain/chain.d.ts +4 -2
  71. package/lib/chain/chain.js +35 -38
  72. package/lib/chain/chain.js.map +1 -1
  73. package/lib/chain/emitter.d.ts +1 -1
  74. package/lib/chain/emitter.js +1 -1
  75. package/lib/chain/emitter.js.map +1 -1
  76. package/lib/chain/forkChoice/index.d.ts +4 -0
  77. package/lib/chain/forkChoice/index.js +5 -0
  78. package/lib/chain/forkChoice/index.js.map +1 -1
  79. package/lib/chain/genesis/genesis.js +2 -6
  80. package/lib/chain/genesis/genesis.js.map +1 -1
  81. package/lib/chain/historicalState/getHistoricalState.d.ts +2 -1
  82. package/lib/chain/historicalState/getHistoricalState.js +3 -0
  83. package/lib/chain/historicalState/getHistoricalState.js.map +1 -1
  84. package/lib/chain/historicalState/worker.js +1 -1
  85. package/lib/chain/historicalState/worker.js.map +1 -1
  86. package/lib/chain/initState.d.ts +1 -1
  87. package/lib/chain/initState.js +1 -1
  88. package/lib/chain/initState.js.map +1 -1
  89. package/lib/chain/interface.d.ts +4 -2
  90. package/lib/chain/interface.js.map +1 -1
  91. package/lib/chain/lightClient/index.js +3 -5
  92. package/lib/chain/lightClient/index.js.map +1 -1
  93. package/lib/chain/opPools/aggregatedAttestationPool.js +32 -36
  94. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  95. package/lib/chain/opPools/attestationPool.js +3 -5
  96. package/lib/chain/opPools/attestationPool.js.map +1 -1
  97. package/lib/chain/opPools/opPool.js +2 -4
  98. package/lib/chain/opPools/opPool.js.map +1 -1
  99. package/lib/chain/opPools/syncCommitteeMessagePool.js +3 -5
  100. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  101. package/lib/chain/opPools/syncContributionAndProofPool.js +2 -4
  102. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  103. package/lib/chain/options.d.ts +3 -1
  104. package/lib/chain/options.js +5 -1
  105. package/lib/chain/options.js.map +1 -1
  106. package/lib/chain/prepareNextSlot.js +2 -1
  107. package/lib/chain/prepareNextSlot.js.map +1 -1
  108. package/lib/chain/produceBlock/produceBlockBody.js +18 -17
  109. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  110. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +1 -1
  111. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +1 -1
  112. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  113. package/lib/chain/regen/queued.js.map +1 -1
  114. package/lib/chain/regen/regen.js +1 -1
  115. package/lib/chain/regen/regen.js.map +1 -1
  116. package/lib/chain/rewards/attestationsRewards.d.ts +1 -1
  117. package/lib/chain/rewards/attestationsRewards.js +3 -2
  118. package/lib/chain/rewards/attestationsRewards.js.map +1 -1
  119. package/lib/chain/rewards/blockRewards.js +1 -3
  120. package/lib/chain/rewards/blockRewards.js.map +1 -1
  121. package/lib/chain/rewards/syncCommitteeRewards.js +1 -3
  122. package/lib/chain/rewards/syncCommitteeRewards.js.map +1 -1
  123. package/lib/chain/seenCache/seenGossipBlockInput.js +21 -25
  124. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  125. package/lib/chain/serializeState.js +63 -10
  126. package/lib/chain/serializeState.js.map +1 -1
  127. package/lib/chain/shufflingCache.js +11 -11
  128. package/lib/chain/shufflingCache.js.map +1 -1
  129. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  130. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +7 -2
  131. package/lib/chain/stateCache/fifoBlockStateCache.js +7 -2
  132. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  133. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +4 -3
  134. package/lib/chain/stateCache/persistentCheckpointsCache.js +25 -20
  135. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  136. package/lib/chain/validation/aggregateAndProof.d.ts +1 -1
  137. package/lib/chain/validation/aggregateAndProof.js.map +1 -1
  138. package/lib/chain/validation/attestation.d.ts +3 -17
  139. package/lib/chain/validation/attestation.js +28 -53
  140. package/lib/chain/validation/attestation.js.map +1 -1
  141. package/lib/chain/validation/attesterSlashing.d.ts +1 -1
  142. package/lib/chain/validation/blsToExecutionChange.d.ts +1 -1
  143. package/lib/chain/validation/lightClientFinalityUpdate.js +1 -1
  144. package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
  145. package/lib/chain/validation/lightClientOptimisticUpdate.js +1 -1
  146. package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
  147. package/lib/chain/validation/proposerSlashing.d.ts +1 -1
  148. package/lib/chain/validation/voluntaryExit.d.ts +1 -1
  149. package/lib/db/buckets.js +3 -5
  150. package/lib/db/buckets.js.map +1 -1
  151. package/lib/db/repositories/backfilledRanges.d.ts +1 -1
  152. package/lib/db/repositories/backfilledRanges.js +1 -2
  153. package/lib/db/repositories/backfilledRanges.js.map +1 -1
  154. package/lib/db/repositories/blockArchive.js +1 -1
  155. package/lib/db/repositories/blockArchive.js.map +1 -1
  156. package/lib/db/repositories/blockArchiveIndex.js +1 -1
  157. package/lib/db/repositories/blockArchiveIndex.js.map +1 -1
  158. package/lib/db/repositories/checkpointState.js +1 -1
  159. package/lib/db/repositories/checkpointState.js.map +1 -1
  160. package/lib/db/repositories/depositDataRoot.d.ts +1 -1
  161. package/lib/db/repositories/depositDataRoot.js +2 -3
  162. package/lib/db/repositories/depositDataRoot.js.map +1 -1
  163. package/lib/db/repositories/eth1Data.d.ts +1 -1
  164. package/lib/db/repositories/eth1Data.js +1 -2
  165. package/lib/db/repositories/eth1Data.js.map +1 -1
  166. package/lib/db/repositories/stateArchive.js +1 -1
  167. package/lib/db/repositories/stateArchive.js.map +1 -1
  168. package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +1 -1
  169. package/lib/db/single/preGenesisStateLastProcessedBlock.js +1 -1
  170. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +1 -1
  171. package/lib/eth1/eth1DataCache.js +1 -1
  172. package/lib/eth1/eth1DataCache.js.map +1 -1
  173. package/lib/eth1/eth1DepositDataTracker.js +9 -13
  174. package/lib/eth1/eth1DepositDataTracker.js.map +1 -1
  175. package/lib/eth1/eth1DepositsCache.js +2 -2
  176. package/lib/eth1/eth1DepositsCache.js.map +1 -1
  177. package/lib/eth1/eth1MergeBlockTracker.js +40 -50
  178. package/lib/eth1/eth1MergeBlockTracker.js.map +1 -1
  179. package/lib/eth1/index.js +4 -8
  180. package/lib/eth1/index.js.map +1 -1
  181. package/lib/eth1/provider/eth1Provider.js.map +1 -1
  182. package/lib/eth1/provider/jsonRpcHttpClient.d.ts +1 -1
  183. package/lib/eth1/provider/jsonRpcHttpClient.js +6 -12
  184. package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -1
  185. package/lib/eth1/provider/jwt.js +0 -1
  186. package/lib/eth1/provider/jwt.js.map +1 -1
  187. package/lib/eth1/provider/utils.js +1 -1
  188. package/lib/eth1/provider/utils.js.map +1 -1
  189. package/lib/eth1/utils/deposits.js +1 -1
  190. package/lib/eth1/utils/deposits.js.map +1 -1
  191. package/lib/eth1/utils/eth1Vote.js +3 -5
  192. package/lib/eth1/utils/eth1Vote.js.map +1 -1
  193. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +1 -3
  194. package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +1 -1
  195. package/lib/execution/builder/http.d.ts +16 -1
  196. package/lib/execution/builder/http.js +31 -6
  197. package/lib/execution/builder/http.js.map +1 -1
  198. package/lib/execution/builder/index.js +1 -0
  199. package/lib/execution/builder/index.js.map +1 -1
  200. package/lib/execution/builder/interface.d.ts +2 -1
  201. package/lib/execution/engine/http.d.ts +2 -2
  202. package/lib/execution/engine/http.js +4 -8
  203. package/lib/execution/engine/http.js.map +1 -1
  204. package/lib/execution/engine/index.js +1 -0
  205. package/lib/execution/engine/index.js.map +1 -1
  206. package/lib/execution/engine/mock.js +8 -11
  207. package/lib/execution/engine/mock.js.map +1 -1
  208. package/lib/execution/engine/types.d.ts +16 -24
  209. package/lib/execution/engine/types.js +31 -52
  210. package/lib/execution/engine/types.js.map +1 -1
  211. package/lib/execution/engine/utils.js +1 -1
  212. package/lib/execution/engine/utils.js.map +1 -1
  213. package/lib/metrics/metrics/beacon.d.ts +1 -1
  214. package/lib/metrics/metrics/beacon.js +2 -3
  215. package/lib/metrics/metrics/beacon.js.map +1 -1
  216. package/lib/metrics/metrics/lodestar.d.ts +3 -1
  217. package/lib/metrics/metrics/lodestar.js +6 -6
  218. package/lib/metrics/metrics/lodestar.js.map +1 -1
  219. package/lib/metrics/validatorMonitor.js +37 -49
  220. package/lib/metrics/validatorMonitor.js.map +1 -1
  221. package/lib/monitoring/properties.js +2 -4
  222. package/lib/monitoring/properties.js.map +1 -1
  223. package/lib/monitoring/service.js +3 -5
  224. package/lib/monitoring/service.js.map +1 -1
  225. package/lib/monitoring/system.js +0 -1
  226. package/lib/monitoring/system.js.map +1 -1
  227. package/lib/network/core/metrics.js +0 -2
  228. package/lib/network/core/metrics.js.map +1 -1
  229. package/lib/network/core/networkCore.d.ts +3 -3
  230. package/lib/network/core/networkCore.js +16 -5
  231. package/lib/network/core/networkCore.js.map +1 -1
  232. package/lib/network/core/networkCoreWorker.js +5 -4
  233. package/lib/network/core/networkCoreWorker.js.map +1 -1
  234. package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -2
  235. package/lib/network/core/networkCoreWorkerHandler.js +4 -4
  236. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  237. package/lib/network/core/types.d.ts +1 -1
  238. package/lib/network/discv5/index.d.ts +3 -4
  239. package/lib/network/discv5/index.js +5 -6
  240. package/lib/network/discv5/index.js.map +1 -1
  241. package/lib/network/discv5/types.d.ts +1 -1
  242. package/lib/network/discv5/utils.js +1 -0
  243. package/lib/network/discv5/utils.js.map +1 -1
  244. package/lib/network/discv5/worker.js +7 -7
  245. package/lib/network/discv5/worker.js.map +1 -1
  246. package/lib/network/events.js +1 -1
  247. package/lib/network/events.js.map +1 -1
  248. package/lib/network/forks.js +0 -1
  249. package/lib/network/forks.js.map +1 -1
  250. package/lib/network/gossip/encoding.js +1 -3
  251. package/lib/network/gossip/encoding.js.map +1 -1
  252. package/lib/network/gossip/gossipsub.js +10 -7
  253. package/lib/network/gossip/gossipsub.js.map +1 -1
  254. package/lib/network/gossip/interface.d.ts +8 -6
  255. package/lib/network/gossip/interface.js.map +1 -1
  256. package/lib/network/gossip/metrics.js +0 -1
  257. package/lib/network/gossip/metrics.js.map +1 -1
  258. package/lib/network/gossip/scoringParameters.js +0 -1
  259. package/lib/network/gossip/scoringParameters.js.map +1 -1
  260. package/lib/network/gossip/topic.js +3 -4
  261. package/lib/network/gossip/topic.js.map +1 -1
  262. package/lib/network/interface.d.ts +3 -2
  263. package/lib/network/libp2p/index.d.ts +2 -2
  264. package/lib/network/libp2p/index.js +9 -9
  265. package/lib/network/libp2p/index.js.map +1 -1
  266. package/lib/network/network.d.ts +4 -4
  267. package/lib/network/network.js +7 -5
  268. package/lib/network/network.js.map +1 -1
  269. package/lib/network/options.js +0 -2
  270. package/lib/network/options.js.map +1 -1
  271. package/lib/network/peers/datastore.d.ts +2 -1
  272. package/lib/network/peers/datastore.js +2 -3
  273. package/lib/network/peers/datastore.js.map +1 -1
  274. package/lib/network/peers/discover.d.ts +2 -0
  275. package/lib/network/peers/discover.js +10 -16
  276. package/lib/network/peers/discover.js.map +1 -1
  277. package/lib/network/peers/peerManager.d.ts +2 -1
  278. package/lib/network/peers/peerManager.js +11 -8
  279. package/lib/network/peers/peerManager.js.map +1 -1
  280. package/lib/network/peers/utils/getConnectedPeerIds.js +2 -2
  281. package/lib/network/peers/utils/getConnectedPeerIds.js.map +1 -1
  282. package/lib/network/processor/gossipHandlers.d.ts +0 -2
  283. package/lib/network/processor/gossipHandlers.js +15 -62
  284. package/lib/network/processor/gossipHandlers.js.map +1 -1
  285. package/lib/network/processor/gossipQueues/index.d.ts +1 -1
  286. package/lib/network/processor/gossipQueues/index.js +7 -22
  287. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  288. package/lib/network/processor/gossipQueues/indexed.js +1 -3
  289. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  290. package/lib/network/processor/gossipQueues/linear.js +5 -7
  291. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  292. package/lib/network/processor/gossipQueues/types.d.ts +1 -2
  293. package/lib/network/processor/gossipQueues/types.js +0 -6
  294. package/lib/network/processor/gossipQueues/types.js.map +1 -1
  295. package/lib/network/processor/index.js +4 -2
  296. package/lib/network/processor/index.js.map +1 -1
  297. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +5 -5
  298. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  299. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  300. package/lib/network/reqresp/handlers/lightClientBootstrap.js +1 -3
  301. package/lib/network/reqresp/handlers/lightClientBootstrap.js.map +1 -1
  302. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js +6 -8
  303. package/lib/network/reqresp/handlers/lightClientFinalityUpdate.js.map +1 -1
  304. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js +6 -8
  305. package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.js.map +1 -1
  306. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js +1 -3
  307. package/lib/network/reqresp/handlers/lightClientUpdatesByRange.js.map +1 -1
  308. package/lib/network/reqresp/protocols.js +0 -1
  309. package/lib/network/reqresp/protocols.js.map +1 -1
  310. package/lib/network/reqresp/rateLimit.js +1 -1
  311. package/lib/network/reqresp/rateLimit.js.map +1 -1
  312. package/lib/network/reqresp/score.js +0 -1
  313. package/lib/network/reqresp/score.js.map +1 -1
  314. package/lib/network/reqresp/types.js +3 -7
  315. package/lib/network/reqresp/types.js.map +1 -1
  316. package/lib/network/util.d.ts +4 -1
  317. package/lib/network/util.js +2 -2
  318. package/lib/network/util.js.map +1 -1
  319. package/lib/node/nodejs.d.ts +3 -3
  320. package/lib/node/nodejs.js +3 -3
  321. package/lib/node/nodejs.js.map +1 -1
  322. package/lib/node/notifier.js +16 -26
  323. package/lib/node/notifier.js.map +1 -1
  324. package/lib/node/options.d.ts +2 -2
  325. package/lib/node/options.js +2 -2
  326. package/lib/node/options.js.map +1 -1
  327. package/lib/sync/backfill/backfill.d.ts +2 -2
  328. package/lib/sync/backfill/backfill.js +4 -2
  329. package/lib/sync/backfill/backfill.js.map +1 -1
  330. package/lib/sync/range/range.d.ts +1 -1
  331. package/lib/sync/range/range.js +3 -7
  332. package/lib/sync/range/range.js.map +1 -1
  333. package/lib/sync/range/utils/batches.js +1 -3
  334. package/lib/sync/range/utils/batches.js.map +1 -1
  335. package/lib/sync/sync.js +26 -25
  336. package/lib/sync/sync.js.map +1 -1
  337. package/lib/sync/unknownBlock.js +2 -6
  338. package/lib/sync/unknownBlock.js.map +1 -1
  339. package/lib/sync/utils/remoteSyncType.js +25 -36
  340. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  341. package/lib/util/asyncIterableToEvents.js +0 -2
  342. package/lib/util/asyncIterableToEvents.js.map +1 -1
  343. package/lib/util/binarySearch.js +1 -1
  344. package/lib/util/binarySearch.js.map +1 -1
  345. package/lib/util/bitArray.js +1 -2
  346. package/lib/util/bitArray.js.map +1 -1
  347. package/lib/util/kzg.js +3 -4
  348. package/lib/util/kzg.js.map +1 -1
  349. package/lib/util/map.js +0 -1
  350. package/lib/util/map.js.map +1 -1
  351. package/lib/util/peerId.js +1 -1
  352. package/lib/util/peerId.js.map +1 -1
  353. package/lib/util/profile.js +1 -1
  354. package/lib/util/profile.js.map +1 -1
  355. package/lib/util/queue/errors.d.ts +0 -1
  356. package/lib/util/queue/errors.js +0 -3
  357. package/lib/util/queue/errors.js.map +1 -1
  358. package/lib/util/queue/fnQueue.js +1 -1
  359. package/lib/util/queue/fnQueue.js.map +1 -1
  360. package/lib/util/queue/itemQueue.js +1 -1
  361. package/lib/util/queue/itemQueue.js.map +1 -1
  362. package/package.json +35 -35
  363. package/lib/chain/archiver/archiveStates.js.map +0 -1
  364. package/lib/network/processor/gossipQueues/indexedAvgTime.d.ts +0 -31
  365. package/lib/network/processor/gossipQueues/indexedAvgTime.js +0 -115
  366. package/lib/network/processor/gossipQueues/indexedAvgTime.js.map +0 -1
@@ -1,5 +1,4 @@
1
- import { GENESIS_SLOT, GENESIS_EPOCH, FAR_FUTURE_EPOCH, BASE_REWARDS_PER_EPOCH, DEPOSIT_CONTRACT_TREE_DEPTH, JUSTIFICATION_BITS_LENGTH, BLS_WITHDRAWAL_PREFIX, ETH1_ADDRESS_WITHDRAWAL_PREFIX, DOMAIN_BEACON_PROPOSER, DOMAIN_BEACON_ATTESTER, DOMAIN_RANDAO, DOMAIN_DEPOSIT, DOMAIN_VOLUNTARY_EXIT, DOMAIN_SELECTION_PROOF, DOMAIN_AGGREGATE_AND_PROOF, DOMAIN_SYNC_COMMITTEE, DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF, DOMAIN_CONTRIBUTION_AND_PROOF, DOMAIN_BLS_TO_EXECUTION_CHANGE, DOMAIN_APPLICATION_BUILDER, TIMELY_SOURCE_FLAG_INDEX, TIMELY_TARGET_FLAG_INDEX, TIMELY_HEAD_FLAG_INDEX, TIMELY_SOURCE_WEIGHT, TIMELY_TARGET_WEIGHT, TIMELY_HEAD_WEIGHT, SYNC_REWARD_WEIGHT, PROPOSER_WEIGHT, WEIGHT_DENOMINATOR, TARGET_AGGREGATORS_PER_COMMITTEE, RANDOM_SUBNETS_PER_VALIDATOR, EPOCHS_PER_RANDOM_SUBNET_SUBSCRIPTION, ATTESTATION_SUBNET_COUNT, TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE, SYNC_COMMITTEE_SUBNET_COUNT, BLOB_TX_TYPE, VERSIONED_HASH_VERSION_KZG, COMPOUNDING_WITHDRAWAL_PREFIX, DOMAIN_CONSOLIDATION, UNSET_DEPOSIT_REQUESTS_START_INDEX, FULL_EXIT_REQUEST_AMOUNT, } from "@lodestar/params";
2
- /* eslint-disable @typescript-eslint/naming-convention */
1
+ import { GENESIS_SLOT, GENESIS_EPOCH, FAR_FUTURE_EPOCH, BASE_REWARDS_PER_EPOCH, DEPOSIT_CONTRACT_TREE_DEPTH, JUSTIFICATION_BITS_LENGTH, BLS_WITHDRAWAL_PREFIX, ETH1_ADDRESS_WITHDRAWAL_PREFIX, DOMAIN_BEACON_PROPOSER, DOMAIN_BEACON_ATTESTER, DOMAIN_RANDAO, DOMAIN_DEPOSIT, DOMAIN_VOLUNTARY_EXIT, DOMAIN_SELECTION_PROOF, DOMAIN_AGGREGATE_AND_PROOF, DOMAIN_SYNC_COMMITTEE, DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF, DOMAIN_CONTRIBUTION_AND_PROOF, DOMAIN_BLS_TO_EXECUTION_CHANGE, DOMAIN_APPLICATION_BUILDER, TIMELY_SOURCE_FLAG_INDEX, TIMELY_TARGET_FLAG_INDEX, TIMELY_HEAD_FLAG_INDEX, TIMELY_SOURCE_WEIGHT, TIMELY_TARGET_WEIGHT, TIMELY_HEAD_WEIGHT, SYNC_REWARD_WEIGHT, PROPOSER_WEIGHT, WEIGHT_DENOMINATOR, TARGET_AGGREGATORS_PER_COMMITTEE, RANDOM_SUBNETS_PER_VALIDATOR, EPOCHS_PER_RANDOM_SUBNET_SUBSCRIPTION, ATTESTATION_SUBNET_COUNT, TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE, SYNC_COMMITTEE_SUBNET_COUNT, BLOB_TX_TYPE, VERSIONED_HASH_VERSION_KZG, COMPOUNDING_WITHDRAWAL_PREFIX, UNSET_DEPOSIT_REQUESTS_START_INDEX, FULL_EXIT_REQUEST_AMOUNT, } from "@lodestar/params";
3
2
  /**
4
3
  * Hand-picked list of constants declared in consensus-spec .md files.
5
4
  * This list is asserted to be up-to-date with the test `test/e2e/api/impl/config.test.ts`
@@ -27,7 +26,6 @@ export const specConstants = {
27
26
  DOMAIN_SELECTION_PROOF,
28
27
  DOMAIN_AGGREGATE_AND_PROOF,
29
28
  DOMAIN_APPLICATION_BUILDER,
30
- DOMAIN_CONSOLIDATION,
31
29
  // phase0/validator.md
32
30
  TARGET_AGGREGATORS_PER_COMMITTEE,
33
31
  RANDOM_SUBNETS_PER_VALIDATOR,
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/api/impl/config/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,EACrB,8BAA8B,EAC9B,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,qCAAqC,EACrC,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,gCAAgC,EAChC,4BAA4B,EAC5B,qCAAqC,EACrC,wBAAwB,EACxB,wCAAwC,EACxC,2BAA2B,EAC3B,YAAY,EACZ,0BAA0B,EAC1B,6BAA6B,EAC7B,oBAAoB,EACpB,kCAAkC,EAClC,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,yDAAyD;AAEzD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,yBAAyB;IACzB,UAAU;IACV,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,sBAAsB;IACtB,2BAA2B;IAC3B,yBAAyB;IACzB,UAAU,EAAE,QAAQ;IACpB,yBAAyB;IACzB,qBAAqB;IACrB,8BAA8B;IAC9B,6BAA6B;IAC7B,kBAAkB;IAClB,sBAAsB;IACtB,sBAAsB;IACtB,aAAa;IACb,cAAc;IACd,qBAAqB;IACrB,sBAAsB;IACtB,0BAA0B;IAC1B,0BAA0B;IAC1B,oBAAoB;IAEpB,sBAAsB;IACtB,gCAAgC;IAChC,4BAA4B;IAC5B,qCAAqC;IACrC,wBAAwB;IAExB,yBAAyB;IACzB,gCAAgC;IAChC,wBAAwB;IACxB,wBAAwB;IACxB,sBAAsB;IACtB,6BAA6B;IAC7B,oBAAoB;IACpB,oBAAoB;IACpB,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,qBAAqB;IACrB,qCAAqC;IACrC,6BAA6B;IAE7B,sBAAsB;IACtB,wCAAwC;IACxC,2BAA2B;IAE3B,0BAA0B;IAC1B,8BAA8B;IAE9B,cAAc;IACd,YAAY;IACZ,0BAA0B;IAE1B,UAAU;IACV,kCAAkC;IAClC,wBAAwB;CACzB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/api/impl/config/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,EACrB,8BAA8B,EAC9B,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,qCAAqC,EACrC,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,gCAAgC,EAChC,4BAA4B,EAC5B,qCAAqC,EACrC,wBAAwB,EACxB,wCAAwC,EACxC,2BAA2B,EAC3B,YAAY,EACZ,0BAA0B,EAC1B,6BAA6B,EAC7B,kCAAkC,EAClC,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,yBAAyB;IACzB,UAAU;IACV,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,sBAAsB;IACtB,2BAA2B;IAC3B,yBAAyB;IACzB,UAAU,EAAE,QAAQ;IACpB,yBAAyB;IACzB,qBAAqB;IACrB,8BAA8B;IAC9B,6BAA6B;IAC7B,kBAAkB;IAClB,sBAAsB;IACtB,sBAAsB;IACtB,aAAa;IACb,cAAc;IACd,qBAAqB;IACrB,sBAAsB;IACtB,0BAA0B;IAC1B,0BAA0B;IAE1B,sBAAsB;IACtB,gCAAgC;IAChC,4BAA4B;IAC5B,qCAAqC;IACrC,wBAAwB;IAExB,yBAAyB;IACzB,gCAAgC;IAChC,wBAAwB;IACxB,wBAAwB;IACxB,sBAAsB;IACtB,6BAA6B;IAC7B,oBAAoB;IACpB,oBAAoB;IACpB,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,qBAAqB;IACrB,qCAAqC;IACrC,6BAA6B;IAE7B,sBAAsB;IACtB,wCAAwC;IACxC,2BAA2B;IAE3B,0BAA0B;IAC1B,8BAA8B;IAE9B,cAAc;IACd,YAAY;IACZ,0BAA0B;IAE1B,UAAU;IACV,kCAAkC;IAClC,wBAAwB;CACzB,CAAC"}
@@ -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,10 +15,11 @@ 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";
22
+ import { NoBidReceived } from "../../../execution/builder/http.js";
21
23
  import { getLodestarClientVersion } from "../../../util/metadata.js";
22
24
  import { computeSubnetForCommitteesAtSlot, getPubkeysForIndices, selectBlockProductionSource } from "./utils.js";
23
25
  /**
@@ -35,7 +37,7 @@ import { computeSubnetForCommitteesAtSlot, getPubkeysForIndices, selectBlockProd
35
37
  */
36
38
  export const SYNC_TOLERANCE_EPOCHS = 1;
37
39
  /**
38
- * Cutoff time to wait for execution and builder block production apis to resolve
40
+ * Cutoff time to wait from start of the slot for execution and builder block production apis to resolve
39
41
  * Post this time, race execution and builder to pick whatever resolves first
40
42
  *
41
43
  * Empirically the builder block resolves in ~1.5+ seconds, and execution should resolve <1 sec.
@@ -90,7 +92,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
90
92
  if (msToSlot > MAX_API_CLOCK_DISPARITY_MS) {
91
93
  throw Error(`Requested slot ${slot} is in the future`);
92
94
  }
93
- else if (msToSlot > 0) {
95
+ if (msToSlot > 0) {
94
96
  await chain.clock.waitForSlot(slot);
95
97
  }
96
98
  // else, clock already in slot or slot is in the past
@@ -129,20 +131,18 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
129
131
  blockTotalValue: prettyWeiToEth(totalValue),
130
132
  };
131
133
  }
132
- else if (source === ProducedBlockSource.builder) {
134
+ if (source === ProducedBlockSource.builder) {
133
135
  return {
134
136
  builderExecutionPayloadValue: prettyWeiToEth(executionValue),
135
137
  builderConsensusBlockValue: prettyWeiToEth(consensusValue),
136
138
  builderBlockTotalValue: prettyWeiToEth(totalValue),
137
139
  };
138
140
  }
139
- else {
140
- return {
141
- engineExecutionPayloadValue: prettyWeiToEth(executionValue),
142
- engineConsensusBlockValue: prettyWeiToEth(consensusValue),
143
- engineBlockTotalValue: prettyWeiToEth(totalValue),
144
- };
145
- }
141
+ return {
142
+ engineExecutionPayloadValue: prettyWeiToEth(executionValue),
143
+ engineConsensusBlockValue: prettyWeiToEth(consensusValue),
144
+ engineBlockTotalValue: prettyWeiToEth(totalValue),
145
+ };
146
146
  }
147
147
  /**
148
148
  * This function is called 1s before next epoch, usually at that time PrepareNextSlotScheduler finishes
@@ -204,9 +204,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
204
204
  if (currentSlot - headSlot > SYNC_TOLERANCE_EPOCHS * SLOTS_PER_EPOCH) {
205
205
  throw new NodeIsSyncing(`headSlot ${headSlot} currentSlot ${currentSlot}`);
206
206
  }
207
- else {
208
- return;
209
- }
207
+ return;
210
208
  }
211
209
  case SyncState.Synced:
212
210
  return;
@@ -269,10 +267,6 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
269
267
  if (skipHeadChecksAndUpdate !== true) {
270
268
  notWhileSyncing();
271
269
  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
270
  parentBlockRoot = fromHex(chain.getProposerHead(slot).blockRoot);
277
271
  }
278
272
  else {
@@ -314,10 +308,6 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
314
308
  if (skipHeadChecksAndUpdate !== true) {
315
309
  notWhileSyncing();
316
310
  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
311
  parentBlockRoot = fromHex(chain.getProposerHead(slot).blockRoot);
322
312
  }
323
313
  else {
@@ -367,9 +357,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
367
357
  shouldOverrideBuilder,
368
358
  };
369
359
  }
370
- else {
371
- return { data: block, version, executionPayloadValue, consensusBlockValue, shouldOverrideBuilder };
372
- }
360
+ return { data: block, version, executionPayloadValue, consensusBlockValue, shouldOverrideBuilder };
373
361
  }
374
362
  finally {
375
363
  if (timer)
@@ -381,10 +369,6 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
381
369
  _skipRandaoVerification, builderBoostFactor, { feeRecipient, builderSelection, strictFeeRecipientCheck } = {}) {
382
370
  notWhileSyncing();
383
371
  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
372
  const parentBlockRoot = fromHex(chain.getProposerHead(slot).blockRoot);
389
373
  notOnOutOfRangeData(parentBlockRoot);
390
374
  const fork = config.getForkName(slot);
@@ -429,9 +413,11 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
429
413
  graffiti: toGraffitiBuffer(graffiti ?? getDefaultGraffiti(getLodestarClientVersion(opts), chain.executionEngine.clientVersion, opts)),
430
414
  });
431
415
  logger.debug("Produced common block body", loggerContext);
416
+ // Calculate cutoff time based on start of the slot
417
+ const cutoffMs = Math.max(0, BLOCK_PRODUCTION_RACE_CUTOFF_MS - Math.round(chain.clock.secFromSlot(slot) * 1000));
432
418
  logger.verbose("Block production race (builder vs execution) starting", {
433
419
  ...loggerContext,
434
- cutoffMs: BLOCK_PRODUCTION_RACE_CUTOFF_MS,
420
+ cutoffMs,
435
421
  timeoutMs: BLOCK_PRODUCTION_RACE_TIMEOUT_MS,
436
422
  });
437
423
  // use abort controller to stop waiting for both block sources
@@ -470,7 +456,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
470
456
  })
471
457
  : Promise.reject(new Error("Engine disabled"));
472
458
  const [builder, engine] = await resolveOrRacePromises([builderPromise, enginePromise], {
473
- resolveTimeoutMs: BLOCK_PRODUCTION_RACE_CUTOFF_MS,
459
+ resolveTimeoutMs: cutoffMs,
474
460
  raceTimeoutMs: BLOCK_PRODUCTION_RACE_TIMEOUT_MS,
475
461
  signal: controller.signal,
476
462
  });
@@ -484,10 +470,18 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
484
470
  }, engine.reason);
485
471
  }
486
472
  if (builder.status === "rejected" && isBuilderEnabled) {
487
- logger.warn("Builder failed to produce the block", {
488
- ...loggerContext,
489
- durationMs: builder.durationMs,
490
- }, builder.reason);
473
+ if (builder.reason instanceof NoBidReceived) {
474
+ logger.info("Builder did not provide a bid", {
475
+ ...loggerContext,
476
+ durationMs: builder.durationMs,
477
+ });
478
+ }
479
+ else {
480
+ logger.warn("Builder failed to produce the block", {
481
+ ...loggerContext,
482
+ durationMs: builder.durationMs,
483
+ }, builder.reason);
484
+ }
491
485
  }
492
486
  if (builder.status === "rejected" && engine.status === "rejected") {
493
487
  throw Error(`${isBuilderEnabled && isEngineEnabled ? "Builder and engine both" : isBuilderEnabled ? "Builder" : "Engine"} failed to produce the block`);
@@ -539,13 +533,11 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
539
533
  executionPayloadSource,
540
534
  };
541
535
  }
542
- else {
543
- return {
544
- ...builder.value,
545
- executionPayloadBlinded: true,
546
- executionPayloadSource,
547
- };
548
- }
536
+ return {
537
+ ...builder.value,
538
+ executionPayloadBlinded: true,
539
+ executionPayloadSource,
540
+ };
549
541
  }
550
542
  throw Error("Unreachable error occurred during the builder and execution block production");
551
543
  }
@@ -560,27 +552,21 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
560
552
  if (meta.executionPayloadBlinded) {
561
553
  return { data, meta };
562
554
  }
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
- }
555
+ if (isBlockContents(data)) {
556
+ const { block } = data;
557
+ const blindedBlock = beaconBlockToBlinded(config, block);
558
+ return {
559
+ data: blindedBlock,
560
+ meta: { ...meta, executionPayloadBlinded: true },
561
+ };
579
562
  }
563
+ const blindedBlock = beaconBlockToBlinded(config, data);
564
+ return {
565
+ data: blindedBlock,
566
+ meta: { ...meta, executionPayloadBlinded: true },
567
+ };
580
568
  }
581
- else {
582
- return { data, meta };
583
- }
569
+ return { data, meta };
584
570
  },
585
571
  async produceBlindedBlock({ slot, randaoReveal, graffiti }) {
586
572
  const { data, version } = await produceEngineOrBuilderBlock(slot, randaoReveal, graffiti);
@@ -592,13 +578,11 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
592
578
  const blindedBlock = beaconBlockToBlinded(config, block);
593
579
  return { data: blindedBlock, meta: { version } };
594
580
  }
595
- else if (isBlindedBeaconBlock(data)) {
581
+ if (isBlindedBeaconBlock(data)) {
596
582
  return { data, meta: { version } };
597
583
  }
598
- else {
599
- const blindedBlock = beaconBlockToBlinded(config, data);
600
- return { data: blindedBlock, meta: { version } };
601
- }
584
+ const blindedBlock = beaconBlockToBlinded(config, data);
585
+ return { data: blindedBlock, meta: { version } };
602
586
  },
603
587
  async produceAttestationData({ committeeIndex, slot }) {
604
588
  notWhileSyncing();
@@ -674,14 +658,15 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
674
658
  },
675
659
  async getProposerDuties({ epoch }) {
676
660
  notWhileSyncing();
677
- // Early check that epoch is within [current_epoch, current_epoch + 1], or allow for pre-genesis
661
+ // Early check that epoch is no more than current_epoch + 1, or allow for pre-genesis
678
662
  const currentEpoch = currentEpochWithDisparity();
679
663
  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}`);
664
+ if (currentEpoch >= 0 && epoch > nextEpoch) {
665
+ throw new ApiError(400, `Requested epoch ${epoch} must not be more than one epoch in the future`);
682
666
  }
683
667
  const head = chain.forkChoice.getHead();
684
668
  let state = undefined;
669
+ const startSlot = computeStartSlotAtEpoch(epoch);
685
670
  const slotMs = config.SECONDS_PER_SLOT * 1000;
686
671
  const prepareNextSlotLookAheadMs = slotMs / SCHEDULER_LOOKAHEAD_FACTOR;
687
672
  const toNextEpochMs = msToNextEpoch();
@@ -699,28 +684,59 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
699
684
  }
700
685
  }
701
686
  if (!state) {
702
- state = await chain.getHeadStateAtCurrentEpoch(RegenCaller.getDuties);
687
+ if (epoch >= currentEpoch - 1) {
688
+ // Cached beacon state stores proposers for previous, current and next epoch. The
689
+ // requested epoch is within that range, we can use the head state at current epoch
690
+ state = await chain.getHeadStateAtCurrentEpoch(RegenCaller.getDuties);
691
+ }
692
+ else {
693
+ const res = await getStateResponseWithRegen(chain, startSlot);
694
+ const stateViewDU = res.state instanceof Uint8Array
695
+ ? loadState(config, chain.getHeadState(), res.state).state
696
+ : res.state.clone();
697
+ state = createCachedBeaconState(stateViewDU, {
698
+ config: chain.config,
699
+ // Not required to compute proposers
700
+ pubkey2index: new PubkeyIndexMap(),
701
+ index2pubkey: [],
702
+ }, { skipSyncPubkeys: true, skipSyncCommitteeCache: true });
703
+ if (state.epochCtx.epoch !== epoch) {
704
+ throw Error(`Loaded state epoch ${state.epochCtx.epoch} does not match requested epoch ${epoch}`);
705
+ }
706
+ }
703
707
  }
704
708
  const stateEpoch = state.epochCtx.epoch;
705
709
  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}`);
710
+ switch (epoch) {
711
+ case stateEpoch:
712
+ indexes = state.epochCtx.getBeaconProposers();
713
+ break;
714
+ case stateEpoch + 1:
715
+ // make sure shuffling is calculated and ready for next call to calculate nextProposers
716
+ await chain.shufflingCache.get(state.epochCtx.nextEpoch, state.epochCtx.nextDecisionRoot);
717
+ // Requesting duties for next epoch is allowed since they can be predicted with high probabilities.
718
+ // @see `epochCtx.getBeaconProposersNextEpoch` JSDocs for rationale.
719
+ indexes = state.epochCtx.getBeaconProposersNextEpoch();
720
+ break;
721
+ case stateEpoch - 1: {
722
+ const indexesPrevEpoch = state.epochCtx.getBeaconProposersPrevEpoch();
723
+ if (indexesPrevEpoch === null) {
724
+ // Should not happen as previous proposer duties should be initialized for head state
725
+ // and if we load state from `Uint8Array` it will always be the state of requested epoch
726
+ throw Error(`Proposer duties for previous epoch ${epoch} not yet initialized`);
727
+ }
728
+ indexes = indexesPrevEpoch;
729
+ break;
730
+ }
731
+ default:
732
+ // Should never happen, epoch is checked to be in bounds above
733
+ throw Error(`Proposer duties for epoch ${epoch} not supported, current epoch ${stateEpoch}`);
717
734
  }
718
735
  // NOTE: this is the fastest way of getting compressed pubkeys.
719
736
  // See benchmark -> packages/lodestar/test/perf/api/impl/validator/attester.test.ts
720
737
  // After dropping the flat caches attached to the CachedBeaconState it's no longer available.
721
738
  // TODO: Add a flag to just send 0x00 as pubkeys since the Lodestar validator does not need them.
722
739
  const pubkeys = getPubkeysForIndices(state.validators, indexes);
723
- const startSlot = computeStartSlotAtEpoch(epoch);
724
740
  const duties = [];
725
741
  for (let i = 0; i < SLOTS_PER_EPOCH; i++) {
726
742
  duties.push({ slot: startSlot + i, validatorIndex: indexes[i], pubkey: pubkeys[i] });
@@ -873,7 +889,6 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
873
889
  await Promise.all(signedAggregateAndProofs.map(async (signedAggregateAndProof, i) => {
874
890
  try {
875
891
  // TODO: Validate in batch
876
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
877
892
  const validateFn = () => validateApiAggregateAndProof(fork, chain, signedAggregateAndProof);
878
893
  const { slot, beaconBlockRoot } = signedAggregateAndProof.message.aggregate.data;
879
894
  // when a validator is configured with multiple beacon node urls, this attestation may come from another beacon node
@@ -903,7 +918,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
903
918
  if (errors.length > 1) {
904
919
  throw Error("Multiple errors on publishAggregateAndProofs\n" + errors.map((e) => e.message).join("\n"));
905
920
  }
906
- else if (errors.length === 1) {
921
+ if (errors.length === 1) {
907
922
  throw errors[0];
908
923
  }
909
924
  },
@@ -945,7 +960,7 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
945
960
  if (errors.length > 1) {
946
961
  throw Error("Multiple errors on publishContributionAndProofs\n" + errors.map((e) => e.message).join("\n"));
947
962
  }
948
- else if (errors.length === 1) {
963
+ if (errors.length === 1) {
949
964
  throw errors[0];
950
965
  }
951
966
  },
@@ -1036,12 +1051,11 @@ export function getValidatorApi(opts, { chain, config, logger, metrics, network,
1036
1051
  const filteredRegistrations = registrations.filter((registration) => {
1037
1052
  const { pubkey } = registration.message;
1038
1053
  const validatorIndex = headState.epochCtx.pubkey2index.get(pubkey);
1039
- if (validatorIndex === undefined)
1054
+ if (validatorIndex === null)
1040
1055
  return false;
1041
1056
  const validator = headState.validators.getReadonly(validatorIndex);
1042
1057
  const status = getValidatorStatus(validator, currentEpoch);
1043
- return (status === "active" ||
1044
- status === "active_exiting" ||
1058
+ return (status === "active_exiting" ||
1045
1059
  status === "active_ongoing" ||
1046
1060
  status === "active_slashed" ||
1047
1061
  status === "pending_initialized" ||