@lodestar/beacon-node 1.47.0-dev.ec596194e2 → 1.47.0-dev.f0f26cd2b6

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 (357) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +47 -18
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/pool/index.js +25 -2
  6. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  7. package/lib/api/impl/beacon/state/utils.d.ts +2 -1
  8. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  9. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  10. package/lib/api/impl/events/index.d.ts +1 -1
  11. package/lib/api/impl/events/index.d.ts.map +1 -1
  12. package/lib/api/impl/events/index.js +12 -3
  13. package/lib/api/impl/events/index.js.map +1 -1
  14. package/lib/api/impl/lodestar/index.js +1 -1
  15. package/lib/api/impl/lodestar/index.js.map +1 -1
  16. package/lib/api/impl/validator/index.d.ts.map +1 -1
  17. package/lib/api/impl/validator/index.js +232 -49
  18. package/lib/api/impl/validator/index.js.map +1 -1
  19. package/lib/api/impl/validator/utils.js +1 -1
  20. package/lib/api/impl/validator/utils.js.map +1 -1
  21. package/lib/api/rest/base.d.ts.map +1 -1
  22. package/lib/api/rest/base.js +7 -0
  23. package/lib/api/rest/base.js.map +1 -1
  24. package/lib/chain/archiveStore/archiveStore.js +1 -1
  25. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  26. package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +1 -1
  27. package/lib/chain/archiveStore/historicalState/metrics.js +21 -0
  28. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  29. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  30. package/lib/chain/blocks/importBlock.js +2 -7
  31. package/lib/chain/blocks/importBlock.js.map +1 -1
  32. package/lib/chain/blocks/importExecutionPayload.d.ts +3 -2
  33. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  34. package/lib/chain/blocks/importExecutionPayload.js +11 -9
  35. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  36. package/lib/chain/blocks/index.d.ts.map +1 -1
  37. package/lib/chain/blocks/index.js +21 -13
  38. package/lib/chain/blocks/index.js.map +1 -1
  39. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +2 -1
  40. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
  41. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +6 -2
  42. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
  43. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +14 -5
  44. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  45. package/lib/chain/blocks/payloadEnvelopeInput/types.js +5 -0
  46. package/lib/chain/blocks/payloadEnvelopeInput/types.js.map +1 -1
  47. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  48. package/lib/chain/blocks/verifyBlock.js +5 -2
  49. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  50. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  51. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +22 -12
  52. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  53. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +2 -2
  54. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -1
  55. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +2 -2
  56. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -1
  57. package/lib/chain/bls/index.d.ts +1 -1
  58. package/lib/chain/bls/index.d.ts.map +1 -1
  59. package/lib/chain/bls/interface.d.ts +5 -5
  60. package/lib/chain/bls/interface.d.ts.map +1 -1
  61. package/lib/chain/bls/multithread/index.d.ts +5 -11
  62. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  63. package/lib/chain/bls/multithread/index.js +116 -101
  64. package/lib/chain/bls/multithread/index.js.map +1 -1
  65. package/lib/chain/bls/multithread/jobItem.d.ts +5 -19
  66. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
  67. package/lib/chain/bls/multithread/jobItem.js +10 -65
  68. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  69. package/lib/chain/bls/multithread/types.d.ts +29 -8
  70. package/lib/chain/bls/multithread/types.d.ts.map +1 -1
  71. package/lib/chain/bls/multithread/types.js +12 -0
  72. package/lib/chain/bls/multithread/types.js.map +1 -1
  73. package/lib/chain/bls/multithread/utils.d.ts +4 -0
  74. package/lib/chain/bls/multithread/utils.d.ts.map +1 -1
  75. package/lib/chain/bls/multithread/utils.js +10 -0
  76. package/lib/chain/bls/multithread/utils.js.map +1 -1
  77. package/lib/chain/bls/multithread/worker.js +49 -23
  78. package/lib/chain/bls/multithread/worker.js.map +1 -1
  79. package/lib/chain/bls/singleThread.d.ts +4 -10
  80. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  81. package/lib/chain/bls/singleThread.js +8 -45
  82. package/lib/chain/bls/singleThread.js.map +1 -1
  83. package/lib/chain/bls/utils.d.ts +4 -4
  84. package/lib/chain/bls/utils.d.ts.map +1 -1
  85. package/lib/chain/bls/utils.js +18 -19
  86. package/lib/chain/bls/utils.js.map +1 -1
  87. package/lib/chain/chain.d.ts +9 -4
  88. package/lib/chain/chain.d.ts.map +1 -1
  89. package/lib/chain/chain.js +22 -8
  90. package/lib/chain/chain.js.map +1 -1
  91. package/lib/chain/errors/blockError.d.ts +1 -0
  92. package/lib/chain/errors/blockError.d.ts.map +1 -1
  93. package/lib/chain/errors/blockError.js +6 -1
  94. package/lib/chain/errors/blockError.js.map +1 -1
  95. package/lib/chain/errors/proposerPreferences.d.ts +6 -0
  96. package/lib/chain/errors/proposerPreferences.d.ts.map +1 -1
  97. package/lib/chain/errors/proposerPreferences.js +1 -0
  98. package/lib/chain/errors/proposerPreferences.js.map +1 -1
  99. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  100. package/lib/chain/forkChoice/index.js +4 -0
  101. package/lib/chain/forkChoice/index.js.map +1 -1
  102. package/lib/chain/interface.d.ts +8 -4
  103. package/lib/chain/interface.d.ts.map +1 -1
  104. package/lib/chain/interface.js.map +1 -1
  105. package/lib/chain/opPools/aggregatedAttestationPool.js +1 -1
  106. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  107. package/lib/chain/opPools/attestationPool.d.ts +1 -1
  108. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  109. package/lib/chain/opPools/attestationPool.js +1 -1
  110. package/lib/chain/opPools/attestationPool.js.map +1 -1
  111. package/lib/chain/opPools/deferredVoluntaryExitPool.d.ts +16 -0
  112. package/lib/chain/opPools/deferredVoluntaryExitPool.d.ts.map +1 -0
  113. package/lib/chain/opPools/deferredVoluntaryExitPool.js +57 -0
  114. package/lib/chain/opPools/deferredVoluntaryExitPool.js.map +1 -0
  115. package/lib/chain/opPools/executionPayloadBidPool.d.ts +7 -2
  116. package/lib/chain/opPools/executionPayloadBidPool.d.ts.map +1 -1
  117. package/lib/chain/opPools/executionPayloadBidPool.js +4 -4
  118. package/lib/chain/opPools/executionPayloadBidPool.js.map +1 -1
  119. package/lib/chain/opPools/index.d.ts +2 -1
  120. package/lib/chain/opPools/index.d.ts.map +1 -1
  121. package/lib/chain/opPools/index.js +1 -0
  122. package/lib/chain/opPools/index.js.map +1 -1
  123. package/lib/chain/opPools/payloadAttestationPool.js +3 -3
  124. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  125. package/lib/chain/opPools/syncCommitteeMessagePool.js +1 -1
  126. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  127. package/lib/chain/opPools/syncContributionAndProofPool.js +1 -1
  128. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  129. package/lib/chain/opPools/utils.d.ts +1 -1
  130. package/lib/chain/opPools/utils.d.ts.map +1 -1
  131. package/lib/chain/opPools/utils.js +1 -1
  132. package/lib/chain/opPools/utils.js.map +1 -1
  133. package/lib/chain/prepareNextSlot.d.ts +5 -0
  134. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  135. package/lib/chain/prepareNextSlot.js +47 -6
  136. package/lib/chain/prepareNextSlot.js.map +1 -1
  137. package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -1
  138. package/lib/chain/produceBlock/computeNewStateRoot.js +3 -25
  139. package/lib/chain/produceBlock/computeNewStateRoot.js.map +1 -1
  140. package/lib/chain/produceBlock/produceBlockBody.js +1 -1
  141. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  142. package/lib/chain/regen/interface.d.ts +5 -2
  143. package/lib/chain/regen/interface.d.ts.map +1 -1
  144. package/lib/chain/regen/interface.js +3 -0
  145. package/lib/chain/regen/interface.js.map +1 -1
  146. package/lib/chain/regen/queued.d.ts +2 -2
  147. package/lib/chain/regen/queued.d.ts.map +1 -1
  148. package/lib/chain/regen/queued.js +5 -5
  149. package/lib/chain/regen/queued.js.map +1 -1
  150. package/lib/chain/seenCache/seenAttesters.d.ts +9 -5
  151. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  152. package/lib/chain/seenCache/seenAttesters.js +25 -4
  153. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  154. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +28 -1
  155. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  156. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +121 -13
  157. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  158. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +5 -1
  159. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  160. package/lib/chain/stateCache/fifoBlockStateCache.js +6 -0
  161. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  162. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +47 -5
  163. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  164. package/lib/chain/stateCache/persistentCheckpointsCache.js +117 -7
  165. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  166. package/lib/chain/stateCache/types.d.ts +3 -3
  167. package/lib/chain/stateCache/types.d.ts.map +1 -1
  168. package/lib/chain/validation/attestation.d.ts.map +1 -1
  169. package/lib/chain/validation/attestation.js +1 -4
  170. package/lib/chain/validation/attestation.js.map +1 -1
  171. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  172. package/lib/chain/validation/attesterSlashing.js +1 -1
  173. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  174. package/lib/chain/validation/block.d.ts.map +1 -1
  175. package/lib/chain/validation/block.js +40 -10
  176. package/lib/chain/validation/block.js.map +1 -1
  177. package/lib/chain/validation/executionPayloadBid.d.ts +13 -3
  178. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  179. package/lib/chain/validation/executionPayloadBid.js +147 -12
  180. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  181. package/lib/chain/validation/executionPayloadEnvelope.js +1 -1
  182. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  183. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
  184. package/lib/chain/validation/payloadAttestationMessage.js +5 -14
  185. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  186. package/lib/chain/validation/proposerPreferences.d.ts +1 -1
  187. package/lib/chain/validation/proposerPreferences.d.ts.map +1 -1
  188. package/lib/chain/validation/proposerPreferences.js +13 -4
  189. package/lib/chain/validation/proposerPreferences.js.map +1 -1
  190. package/lib/chain/validation/proposerSlashing.js +1 -1
  191. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  192. package/lib/chain/validation/voluntaryExit.d.ts +9 -1
  193. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
  194. package/lib/chain/validation/voluntaryExit.js +46 -1
  195. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  196. package/lib/execution/builder/apiClient.d.ts +70 -0
  197. package/lib/execution/builder/apiClient.d.ts.map +1 -0
  198. package/lib/execution/builder/apiClient.js +202 -0
  199. package/lib/execution/builder/apiClient.js.map +1 -0
  200. package/lib/execution/builder/validateBid.d.ts +22 -0
  201. package/lib/execution/builder/validateBid.d.ts.map +1 -0
  202. package/lib/execution/builder/validateBid.js +111 -0
  203. package/lib/execution/builder/validateBid.js.map +1 -0
  204. package/lib/metrics/metrics/lodestar.d.ts +94 -23
  205. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  206. package/lib/metrics/metrics/lodestar.js +177 -55
  207. package/lib/metrics/metrics/lodestar.js.map +1 -1
  208. package/lib/network/gossip/topic.d.ts +13 -0
  209. package/lib/network/gossip/topic.d.ts.map +1 -1
  210. package/lib/network/gossip/topic.js +37 -0
  211. package/lib/network/gossip/topic.js.map +1 -1
  212. package/lib/network/libp2p/index.d.ts.map +1 -1
  213. package/lib/network/libp2p/index.js +10 -2
  214. package/lib/network/libp2p/index.js.map +1 -1
  215. package/lib/network/network.d.ts.map +1 -1
  216. package/lib/network/network.js +23 -43
  217. package/lib/network/network.js.map +1 -1
  218. package/lib/network/processor/constants.d.ts +7 -0
  219. package/lib/network/processor/constants.d.ts.map +1 -0
  220. package/lib/network/processor/constants.js +7 -0
  221. package/lib/network/processor/constants.js.map +1 -0
  222. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  223. package/lib/network/processor/gossipHandlers.js +13 -4
  224. package/lib/network/processor/gossipHandlers.js.map +1 -1
  225. package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -1
  226. package/lib/network/processor/gossipQueues/indexed.js +0 -1
  227. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  228. package/lib/network/processor/index.d.ts +3 -0
  229. package/lib/network/processor/index.d.ts.map +1 -1
  230. package/lib/network/processor/index.js +52 -23
  231. package/lib/network/processor/index.js.map +1 -1
  232. package/lib/network/reqresp/score.d.ts.map +1 -1
  233. package/lib/network/reqresp/score.js +5 -11
  234. package/lib/network/reqresp/score.js.map +1 -1
  235. package/lib/network/util.d.ts +0 -1
  236. package/lib/network/util.d.ts.map +1 -1
  237. package/lib/network/util.js +0 -4
  238. package/lib/network/util.js.map +1 -1
  239. package/lib/node/deferredVoluntaryExitPublisher.d.ts +15 -0
  240. package/lib/node/deferredVoluntaryExitPublisher.d.ts.map +1 -0
  241. package/lib/node/deferredVoluntaryExitPublisher.js +38 -0
  242. package/lib/node/deferredVoluntaryExitPublisher.js.map +1 -0
  243. package/lib/node/nodejs.d.ts +2 -1
  244. package/lib/node/nodejs.d.ts.map +1 -1
  245. package/lib/node/nodejs.js +7 -0
  246. package/lib/node/nodejs.js.map +1 -1
  247. package/lib/sync/range/batch.d.ts +23 -5
  248. package/lib/sync/range/batch.d.ts.map +1 -1
  249. package/lib/sync/range/batch.js +61 -22
  250. package/lib/sync/range/batch.js.map +1 -1
  251. package/lib/sync/range/chain.d.ts +2 -1
  252. package/lib/sync/range/chain.d.ts.map +1 -1
  253. package/lib/sync/range/chain.js +32 -12
  254. package/lib/sync/range/chain.js.map +1 -1
  255. package/lib/sync/range/range.js +1 -1
  256. package/lib/sync/range/range.js.map +1 -1
  257. package/lib/sync/types.d.ts +32 -0
  258. package/lib/sync/types.d.ts.map +1 -1
  259. package/lib/sync/types.js +33 -0
  260. package/lib/sync/types.js.map +1 -1
  261. package/lib/sync/unknownBlock.d.ts +15 -2
  262. package/lib/sync/unknownBlock.d.ts.map +1 -1
  263. package/lib/sync/unknownBlock.js +220 -61
  264. package/lib/sync/unknownBlock.js.map +1 -1
  265. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  266. package/lib/sync/utils/downloadByRange.js +16 -11
  267. package/lib/sync/utils/downloadByRange.js.map +1 -1
  268. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  269. package/lib/sync/utils/downloadByRoot.js +3 -1
  270. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  271. package/package.json +35 -35
  272. package/src/api/impl/beacon/blocks/index.ts +55 -21
  273. package/src/api/impl/beacon/pool/index.ts +27 -2
  274. package/src/api/impl/beacon/state/utils.ts +2 -1
  275. package/src/api/impl/events/index.ts +12 -4
  276. package/src/api/impl/lodestar/index.ts +1 -1
  277. package/src/api/impl/validator/index.ts +285 -49
  278. package/src/api/impl/validator/utils.ts +1 -1
  279. package/src/api/rest/base.ts +7 -0
  280. package/src/chain/archiveStore/archiveStore.ts +1 -1
  281. package/src/chain/archiveStore/historicalState/metrics.ts +22 -0
  282. package/src/chain/blocks/importBlock.ts +1 -6
  283. package/src/chain/blocks/importExecutionPayload.ts +12 -11
  284. package/src/chain/blocks/index.ts +25 -13
  285. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +8 -2
  286. package/src/chain/blocks/payloadEnvelopeInput/types.ts +17 -4
  287. package/src/chain/blocks/verifyBlock.ts +5 -2
  288. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +25 -16
  289. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +1 -9
  290. package/src/chain/bls/index.ts +1 -1
  291. package/src/chain/bls/interface.ts +7 -3
  292. package/src/chain/bls/multithread/index.ts +148 -120
  293. package/src/chain/bls/multithread/jobItem.ts +12 -82
  294. package/src/chain/bls/multithread/types.ts +33 -8
  295. package/src/chain/bls/multithread/utils.ts +11 -0
  296. package/src/chain/bls/multithread/worker.ts +85 -27
  297. package/src/chain/bls/singleThread.ts +11 -55
  298. package/src/chain/bls/utils.ts +23 -24
  299. package/src/chain/chain.ts +25 -7
  300. package/src/chain/errors/blockError.ts +8 -2
  301. package/src/chain/errors/proposerPreferences.ts +7 -0
  302. package/src/chain/forkChoice/index.ts +4 -0
  303. package/src/chain/interface.ts +8 -3
  304. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  305. package/src/chain/opPools/attestationPool.ts +1 -1
  306. package/src/chain/opPools/deferredVoluntaryExitPool.ts +65 -0
  307. package/src/chain/opPools/executionPayloadBidPool.ts +13 -7
  308. package/src/chain/opPools/index.ts +2 -1
  309. package/src/chain/opPools/payloadAttestationPool.ts +3 -3
  310. package/src/chain/opPools/syncCommitteeMessagePool.ts +1 -1
  311. package/src/chain/opPools/syncContributionAndProofPool.ts +1 -1
  312. package/src/chain/opPools/utils.ts +1 -1
  313. package/src/chain/prepareNextSlot.ts +49 -6
  314. package/src/chain/produceBlock/computeNewStateRoot.ts +3 -38
  315. package/src/chain/produceBlock/produceBlockBody.ts +1 -1
  316. package/src/chain/regen/interface.ts +5 -2
  317. package/src/chain/regen/queued.ts +5 -5
  318. package/src/chain/seenCache/seenAttesters.ts +31 -5
  319. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +143 -14
  320. package/src/chain/stateCache/fifoBlockStateCache.ts +8 -1
  321. package/src/chain/stateCache/persistentCheckpointsCache.ts +133 -8
  322. package/src/chain/stateCache/types.ts +3 -3
  323. package/src/chain/validation/attestation.ts +1 -7
  324. package/src/chain/validation/attesterSlashing.ts +1 -8
  325. package/src/chain/validation/block.ts +43 -10
  326. package/src/chain/validation/executionPayloadBid.ts +168 -14
  327. package/src/chain/validation/executionPayloadEnvelope.ts +0 -1
  328. package/src/chain/validation/payloadAttestationMessage.ts +6 -17
  329. package/src/chain/validation/proposerPreferences.ts +15 -5
  330. package/src/chain/validation/proposerSlashing.ts +1 -1
  331. package/src/chain/validation/voluntaryExit.ts +59 -2
  332. package/src/execution/builder/apiClient.ts +264 -0
  333. package/src/execution/builder/validateBid.ts +166 -0
  334. package/src/metrics/metrics/lodestar.ts +192 -61
  335. package/src/network/gossip/topic.ts +38 -0
  336. package/src/network/libp2p/index.ts +11 -2
  337. package/src/network/network.ts +29 -54
  338. package/src/network/processor/constants.ts +6 -0
  339. package/src/network/processor/gossipHandlers.ts +15 -2
  340. package/src/network/processor/gossipQueues/indexed.ts +0 -1
  341. package/src/network/processor/index.ts +67 -30
  342. package/src/network/reqresp/score.ts +5 -11
  343. package/src/network/util.ts +0 -5
  344. package/src/node/deferredVoluntaryExitPublisher.ts +54 -0
  345. package/src/node/nodejs.ts +10 -1
  346. package/src/sync/range/batch.ts +83 -28
  347. package/src/sync/range/chain.ts +35 -13
  348. package/src/sync/range/range.ts +1 -1
  349. package/src/sync/types.ts +36 -1
  350. package/src/sync/unknownBlock.ts +258 -68
  351. package/src/sync/utils/downloadByRange.ts +21 -12
  352. package/src/sync/utils/downloadByRoot.ts +3 -1
  353. package/lib/chain/bls/maybeBatch.d.ts +0 -12
  354. package/lib/chain/bls/maybeBatch.d.ts.map +0 -1
  355. package/lib/chain/bls/maybeBatch.js +0 -35
  356. package/lib/chain/bls/maybeBatch.js.map +0 -1
  357. package/src/chain/bls/maybeBatch.ts +0 -45
@@ -37,15 +37,15 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
37
37
  }),
38
38
  jobTime: register.histogram({
39
39
  name: "lodestar_gossip_validation_queue_job_time_seconds",
40
- help: "Time to process gossip validation queue job in seconds",
40
+ help: "Time to process gossip validation queue job in seconds (accepted messages only)",
41
41
  labelNames: ["topic"],
42
- buckets: [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10],
42
+ buckets: [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2],
43
43
  }),
44
44
  jobWaitTime: register.histogram({
45
45
  name: "lodestar_gossip_validation_queue_job_wait_time_seconds",
46
46
  help: "Time from job added to the queue to starting the job in seconds",
47
47
  labelNames: ["topic"],
48
- buckets: [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10],
48
+ buckets: [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2],
49
49
  }),
50
50
  concurrency: register.gauge({
51
51
  name: "lodestar_gossip_validation_queue_concurrency",
@@ -61,6 +61,7 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
61
61
  queueTime: register.histogram({
62
62
  name: "lodestar_gossip_validation_queue_time_seconds",
63
63
  help: "Total time an item stays in queue until it is processed in seconds",
64
+ labelNames: ["topic"],
64
65
  buckets: [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 5],
65
66
  }),
66
67
  },
@@ -342,85 +343,107 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
342
343
  }),
343
344
  // BLS verifier thread pool and queue
344
345
  bls: {
345
- aggregatedPubkeys: register.gauge({
346
+ aggregatedPubkeys: register.counter({
346
347
  name: "lodestar_bls_aggregated_pubkeys_total",
347
- help: "Total aggregated pubkeys for BLS validation",
348
+ help: "Total validator public keys used as inputs to aggregate signature sets",
349
+ }),
350
+ pubkeyCacheSize: register.gauge({
351
+ name: "lodestar_bls_pubkey_cache_size",
352
+ help: "Current number of validator public keys in the native cache",
353
+ }),
354
+ pubkeyCacheCapacity: register.gauge({
355
+ name: "lodestar_bls_pubkey_cache_capacity",
356
+ help: "Number of validator public keys the native cache can hold without growing",
348
357
  }),
349
358
  },
350
359
  blsThreadPool: {
351
- jobsWorkerTime: register.gauge({
360
+ jobsWorkerTime: register.counter({
352
361
  name: "lodestar_bls_thread_pool_time_seconds_sum",
353
- help: "Total time spent verifying signature sets measured on the worker",
362
+ help: "Cumulative wall time spent processing BLS dispatch groups by worker",
354
363
  labelNames: ["workerId"],
355
364
  }),
356
- successJobsSignatureSetsCount: register.gauge({
365
+ successJobsSignatureSetsCount: register.counter({
357
366
  name: "lodestar_bls_thread_pool_success_jobs_signature_sets_count",
358
- help: "Count of total verified signature sets",
367
+ help: "Count of signature sets completed without an operational error",
359
368
  }),
360
- errorAggregateSignatureSetsCount: register.gauge({
361
- name: "lodestar_bls_thread_pool_error_aggregate_signature_sets_count",
362
- help: "Count of error when aggregating pubkeys or signatures",
363
- labelNames: ["type"],
364
- }),
365
- errorJobsSignatureSetsCount: register.gauge({
369
+ errorJobsSignatureSetsCount: register.counter({
366
370
  name: "lodestar_bls_thread_pool_error_jobs_signature_sets_count",
367
- help: "Count of total error-ed signature sets",
371
+ help: "Count of signature sets that ended in an input, binding, or worker error",
368
372
  }),
369
373
  jobWaitTime: register.histogram({
370
374
  name: "lodestar_bls_thread_pool_queue_job_wait_time_seconds",
371
- help: "Time from job added to the queue to starting the job in seconds",
372
- buckets: [0.01, 0.02, 0.1, 0.3, 0.5, 1],
375
+ help: "Time from adding a BLS job until it is selected for a worker dispatch group",
376
+ labelNames: ["type"],
377
+ buckets: [0.005, 0.01, 0.025, 0.05, 0.1, 0.2, 0.5, 1, 2],
378
+ }),
379
+ jobDuration: register.histogram({
380
+ name: "lodestar_bls_thread_pool_job_duration_seconds",
381
+ help: "End-to-end duration of a BLS job from submission through completion",
382
+ labelNames: ["type"],
383
+ buckets: [0.005, 0.01, 0.025, 0.05, 0.1, 0.2, 0.5, 1, 2],
384
+ }),
385
+ jobResults: register.counter({
386
+ name: "lodestar_bls_thread_pool_job_results_total",
387
+ help: "Count of completed BLS jobs by cryptographic or operational outcome",
388
+ labelNames: ["type", "outcome"],
373
389
  }),
374
390
  queueLength: register.gauge({
375
391
  name: "lodestar_bls_thread_pool_queue_length",
376
- help: "Count of total block processor queue length",
392
+ help: "Count of ready BLS jobs waiting for a worker",
393
+ }),
394
+ bufferedQueueLength: register.gauge({
395
+ name: "lodestar_bls_thread_pool_buffered_queue_length",
396
+ help: "Count of BLS jobs waiting in the intentional batching buffer",
377
397
  }),
378
398
  workersBusy: register.gauge({
379
399
  name: "lodestar_bls_thread_pool_workers_busy",
380
400
  help: "Count of current busy workers",
381
401
  }),
382
- totalJobsGroupsStarted: register.gauge({
402
+ totalJobsGroupsStarted: register.counter({
383
403
  name: "lodestar_bls_thread_pool_job_groups_started_total",
384
- help: "Count of total jobs groups started in bls thread pool, job groups include +1 jobs",
404
+ help: "Count of worker dispatch groups started by the BLS thread pool",
385
405
  }),
386
- totalJobsStarted: register.gauge({
406
+ totalJobsStarted: register.counter({
387
407
  name: "lodestar_bls_thread_pool_jobs_started_total",
388
- help: "Count of total jobs started in bls thread pool, jobs include +1 signature sets",
408
+ help: "Count of jobs started by the BLS thread pool",
389
409
  labelNames: ["type"],
390
410
  }),
391
- totalSigSetsStarted: register.gauge({
411
+ totalSigSetsStarted: register.counter({
392
412
  name: "lodestar_bls_thread_pool_sig_sets_started_total",
393
- help: "Count of total signature sets started in bls thread pool, sig sets include 1 pk, msg, sig",
413
+ help: "Count of signature sets started by the BLS thread pool",
394
414
  labelNames: ["type"],
395
415
  }),
396
416
  // Re-verifying a batch means doing double work. This number must be very low or it can be a waste of CPU resources
397
- batchRetries: register.gauge({
417
+ batchRetries: register.counter({
398
418
  name: "lodestar_bls_thread_pool_batch_retries_total",
399
- help: "Count of total batches that failed and had to be verified again.",
419
+ help: "Count of combined batches that failed and required per-job fallback",
400
420
  }),
401
421
  // To count how many sigs are being validated with the optimization of batching them
402
- batchSigsSuccess: register.gauge({
422
+ batchSigsSuccess: register.counter({
403
423
  name: "lodestar_bls_thread_pool_batch_sigs_success_total",
404
- help: "Count of total batches that failed and had to be verified again.",
424
+ help: "Count of signature sets accepted by combined batch verification without fallback",
405
425
  }),
406
- sameMessageRetryJobs: register.gauge({
407
- name: "lodestar_bls_thread_pool_same_message_jobs_retries_total",
408
- help: "Count of total same message jobs that failed and had to be verified again.",
426
+ bufferFlushes: register.counter({
427
+ name: "lodestar_bls_thread_pool_buffer_flushes_total",
428
+ help: "Count of batching-buffer flushes by trigger",
429
+ labelNames: ["reason"],
409
430
  }),
410
- sameMessageRetrySets: register.gauge({
411
- name: "lodestar_bls_thread_pool_same_message_sets_retries_total",
412
- help: "Count of total same message sets that failed and had to be verified again.",
431
+ bufferedSignatureSets: register.histogram({
432
+ name: "lodestar_bls_thread_pool_buffered_signature_sets",
433
+ help: "Count of signature sets included in each batching-buffer flush",
434
+ buckets: [1, 8, 16, 24, 28, 32, 36, 40, 44, 48, 64, 128],
413
435
  }),
414
436
  // To measure the time cost of main thread <-> worker message passing
415
437
  latencyToWorker: register.histogram({
416
438
  name: "lodestar_bls_thread_pool_latency_to_worker",
417
439
  help: "Time from sending the job to the worker and the worker receiving it",
418
- buckets: [0.001, 0.003, 0.01, 0.03, 0.1],
440
+ // The dashboard treats 20ms as slow; values above 100ms only need severe-stall classification.
441
+ buckets: [0.00025, 0.001, 0.005, 0.02, 0.1],
419
442
  }),
420
443
  latencyFromWorker: register.histogram({
421
444
  name: "lodestar_bls_thread_pool_latency_from_worker",
422
445
  help: "Time from the worker sending the result and the main thread receiving it",
423
- buckets: [0.001, 0.003, 0.01, 0.03, 0.1],
446
+ buckets: [0.00025, 0.001, 0.005, 0.02, 0.1],
424
447
  }),
425
448
  mainThreadDurationInThreadPool: register.histogram({
426
449
  name: "lodestar_bls_thread_pool_main_thread_time_seconds",
@@ -430,32 +453,40 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
430
453
  }),
431
454
  timePerSigSet: register.histogram({
432
455
  name: "lodestar_bls_worker_thread_time_per_sigset_seconds",
433
- help: "Time to verify each sigset with worker thread mode",
456
+ help: "Average BLS worker dispatch wall time per original signature set",
434
457
  // Time per sig ~0.9ms on good machines
435
- buckets: [0.5e-3, 0.75e-3, 1e-3, 1.5e-3, 2e-3, 5e-3],
436
- }),
437
- totalSigSets: register.gauge({
458
+ buckets: [0.5e-3, 0.75e-3, 1e-3, 1.5e-3, 2e-3, 5e-3, 10e-3, 20e-3, 50e-3, 100e-3],
459
+ }),
460
+ workRequestPreparationDuration: register.histogram({
461
+ name: "lodestar_bls_thread_pool_work_request_preparation_duration_seconds",
462
+ help: "Main-thread time spent converting one worker dispatch group to binding inputs",
463
+ // Normal requests take microseconds; the dashboard treats 1ms as a main-thread stall.
464
+ buckets: [0.000005, 0.000025, 0.0001, 0.0005, 0.001, 0.005, 0.025],
465
+ }),
466
+ verificationCallDuration: register.histogram({
467
+ name: "lodestar_bls_thread_pool_verification_call_duration_seconds",
468
+ help: "Duration of one worker-side lodestar-z verification binding call, including input conversion",
469
+ labelNames: ["operation"],
470
+ // Verification ranges from sub-millisecond calls to large batches; above 500ms is uniformly severe.
471
+ buckets: [0.00025, 0.001, 0.005, 0.02, 0.1, 0.5],
472
+ }),
473
+ verificationCallSignatureSets: register.counter({
474
+ name: "lodestar_bls_thread_pool_verification_call_signature_sets_total",
475
+ help: "Count of signature sets passed to worker-side lodestar-z verification binding calls",
476
+ labelNames: ["operation"],
477
+ }),
478
+ totalSigSets: register.counter({
438
479
  name: "lodestar_bls_thread_pool_sig_sets_total",
439
480
  help: "Count of total signature sets",
440
481
  }),
441
- prioritizedSigSets: register.gauge({
482
+ prioritizedSigSets: register.counter({
442
483
  name: "lodestar_bls_thread_pool_prioritized_sig_sets_total",
443
484
  help: "Count of total prioritized signature sets",
444
485
  }),
445
- batchableSigSets: register.gauge({
486
+ batchableSigSets: register.counter({
446
487
  name: "lodestar_bls_thread_pool_batchable_sig_sets_total",
447
488
  help: "Count of total batchable signature sets",
448
489
  }),
449
- aggregateWithRandomnessAsyncDuration: register.histogram({
450
- name: "lodestar_bls_thread_pool_aggregate_with_randomness_async_time_seconds",
451
- help: "Total time performing aggregateWithRandomness async",
452
- buckets: [0.001, 0.005, 0.01, 0.1, 0.3],
453
- }),
454
- pubkeysAggregationMainThreadDuration: register.histogram({
455
- name: "lodestar_bls_thread_pool_pubkeys_aggregation_main_thread_time_seconds",
456
- help: "Total time spent aggregating pubkeys on main thread",
457
- buckets: [0.001, 0.005, 0.01, 0.1],
458
- }),
459
490
  },
460
491
  // BLS time on single thread mode
461
492
  blsSingleThread: {
@@ -585,7 +616,13 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
585
616
  }),
586
617
  removedBlocks: register.gauge({
587
618
  name: "lodestar_sync_unknown_block_removed_blocks_total",
588
- help: "Total number of removed bad blocks in UnknownBlockSync",
619
+ help: "Total pending blocks dropped from BlockInputSync without completing, by reason",
620
+ labelNames: ["reason"],
621
+ }),
622
+ removedPayloads: register.gauge({
623
+ name: "lodestar_sync_unknown_block_removed_payloads_total",
624
+ help: "Total pending payloads dropped from BlockInputSync without completing, by reason",
625
+ labelNames: ["reason"],
589
626
  }),
590
627
  elapsedTimeTillReceived: register.histogram({
591
628
  name: "lodestar_sync_unknown_block_elapsed_time_till_received",
@@ -810,6 +847,11 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
810
847
  help: "Count of errors, by error type, while processing blocks",
811
848
  labelNames: ["error"],
812
849
  }),
850
+ preStateSource: register.counter({
851
+ name: "lodestar_gossip_block_validation_pre_state_source_total",
852
+ help: "Source of the pre-state used for gossip block validation",
853
+ labelNames: ["source"],
854
+ }),
813
855
  },
814
856
  gossipBlob: {
815
857
  recvToValidation: register.histogram({
@@ -841,6 +883,22 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
841
883
  labelNames: ["error"],
842
884
  }),
843
885
  },
886
+ gossipExecutionPayloadBid: {
887
+ elapsedTimeTillReceived: register.histogram({
888
+ name: "lodestar_gossip_execution_payload_bid_elapsed_time_till_received_seconds",
889
+ help: "Time elapsed between the bid's slot start and the time the execution payload bid was received (negative = received before its slot, broadcast in the previous slot; positive = received during its own slot, late)",
890
+ labelNames: ["source"],
891
+ buckets: [-6, -3, -1, 0, 3],
892
+ }),
893
+ },
894
+ gossipPayloadAttestationMessage: {
895
+ elapsedTimeTillReceived: register.histogram({
896
+ name: "lodestar_gossip_payload_attestation_message_elapsed_time_till_received_seconds",
897
+ help: "Time elapsed between slot time and the time the payload attestation message was received",
898
+ labelNames: ["source"],
899
+ buckets: [3, 6, 9, 12],
900
+ }),
901
+ },
844
902
  // recovery in the case of specific blob rows required
845
903
  recoverBlobSidecars: {
846
904
  blobsReconstructed: register.counter({
@@ -1107,6 +1165,12 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
1107
1165
  name: "lodestar_oppool_attester_slashing_pool_size",
1108
1166
  help: "Current size of the AttesterSlashingPool",
1109
1167
  }),
1168
+ deferredVoluntaryExitPool: {
1169
+ size: register.gauge({
1170
+ name: "lodestar_oppool_deferred_voluntary_exit_pool_size",
1171
+ help: "Current size of the DeferredVoluntaryExitPool",
1172
+ }),
1173
+ },
1110
1174
  proposerSlashingPoolSize: register.gauge({
1111
1175
  name: "lodestar_oppool_proposer_slashing_pool_size",
1112
1176
  help: "Current size of the ProposerSlashingPool",
@@ -1217,6 +1281,11 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
1217
1281
  help: "Total number of InsertOutcome as a result of adding an execution payload bid from api to the pool",
1218
1282
  labelNames: ["insertOutcome"],
1219
1283
  }),
1284
+ apiValidationTime: register.histogram({
1285
+ name: "lodestar_api_execution_payload_bid_validation_time_seconds",
1286
+ help: "Time elapsed for signed execution payload bid validation - api path",
1287
+ buckets: [0.005, 0.01, 0.025, 0.05, 0.1, 0.5],
1288
+ }),
1220
1289
  },
1221
1290
  },
1222
1291
  chain: {
@@ -1305,6 +1374,16 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
1305
1374
  help: "Checkpoint state cache size",
1306
1375
  labelNames: ["type"],
1307
1376
  }),
1377
+ persistentTierEpochs: register.gauge({
1378
+ name: "lodestar_cp_state_cache_persistent_tier_epochs",
1379
+ help: "Number of epoch keys retained in each on-disk checkpoint state retention tier",
1380
+ labelNames: ["tier"],
1381
+ }),
1382
+ persistentTierStates: register.gauge({
1383
+ name: "lodestar_cp_state_cache_persistent_tier_states",
1384
+ help: "Number of persisted checkpoint states retained in each on-disk retention tier",
1385
+ labelNames: ["tier"],
1386
+ }),
1308
1387
  reads: register.avgMinMax({
1309
1388
  name: "lodestar_cp_state_epoch_reads",
1310
1389
  help: "Avg min max of all state cache items total read count",
@@ -1518,7 +1597,13 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
1518
1597
  }),
1519
1598
  created: register.counter({
1520
1599
  name: "lodestar_seen_payload_envelope_input_cache_items_created_total",
1521
- help: "Number of PayloadEnvelopeInputs created",
1600
+ help: "Number of PayloadEnvelopeInputs created by source",
1601
+ labelNames: ["source"],
1602
+ }),
1603
+ pruned: register.counter({
1604
+ name: "lodestar_seen_payload_envelope_input_cache_items_pruned_total",
1605
+ help: "Number of PayloadEnvelopeInputs evicted by reason",
1606
+ labelNames: ["reason"],
1522
1607
  }),
1523
1608
  },
1524
1609
  },
@@ -1624,6 +1709,10 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
1624
1709
  name: "lodestar_precompute_next_epoch_transition_waste_total",
1625
1710
  help: "Total number of precomputing next epoch transition wasted",
1626
1711
  }),
1712
+ predictedReorg: register.counter({
1713
+ name: "lodestar_precompute_next_epoch_transition_predicted_reorg_total",
1714
+ help: "Predicted epoch-boundary reorgs where the strong parent was dialed instead of the weak head",
1715
+ }),
1627
1716
  duration: register.histogram({
1628
1717
  name: "lodestar_precompute_next_epoch_transition_duration_seconds",
1629
1718
  help: "Duration of precomputeNextEpochTransition, including epoch transition and hashTreeRoot",
@@ -1854,6 +1943,39 @@ export function createLodestarMetrics(register, metadata, genesisTime) {
1854
1943
  labelNames: ["urlIndex", "baseUrl"],
1855
1944
  }),
1856
1945
  },
1946
+ builderApi: {
1947
+ statusChecks: register.counter({
1948
+ name: "lodestar_builder_api_status_checks_total",
1949
+ help: "Total count of status checks sent to external builders ahead of a proposal",
1950
+ labelNames: ["status"],
1951
+ }),
1952
+ bidRequests: register.counter({
1953
+ name: "lodestar_builder_api_bid_requests_total",
1954
+ help: "Total count of execution payload bid requests sent to external builders",
1955
+ }),
1956
+ bidRequestErrors: register.counter({
1957
+ name: "lodestar_builder_api_bid_request_errors_total",
1958
+ help: "Total count of failed execution payload bid requests to external builders",
1959
+ }),
1960
+ bidsReceived: register.counter({
1961
+ name: "lodestar_builder_api_bids_received_total",
1962
+ help: "Total count of execution payload bids received from external builders",
1963
+ }),
1964
+ bidsDiscarded: register.counter({
1965
+ name: "lodestar_builder_api_bids_discarded_total",
1966
+ help: "Total count of execution payload bids from external builders discarded due to failed validation",
1967
+ }),
1968
+ blockSubmissions: register.counter({
1969
+ name: "lodestar_builder_api_block_submissions_total",
1970
+ help: "Total count of signed beacon blocks submitted to external builders",
1971
+ labelNames: ["status"],
1972
+ }),
1973
+ preferencesForwarded: register.counter({
1974
+ name: "lodestar_builder_api_preferences_forwarded_total",
1975
+ help: "Total count of builder preferences forwarded to external builders",
1976
+ labelNames: ["status"],
1977
+ }),
1978
+ },
1857
1979
  db: {
1858
1980
  dbReadReq: register.gauge({
1859
1981
  name: "lodestar_db_read_req_total",