@lodestar/beacon-node 1.47.0-dev.268215c3da → 1.47.0-dev.2fba076c28

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 (333) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +6 -8
  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 +12 -22
  18. package/lib/api/impl/validator/index.js.map +1 -1
  19. package/lib/api/impl/validator/utils.d.ts +5 -0
  20. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  21. package/lib/api/impl/validator/utils.js +18 -12
  22. package/lib/api/impl/validator/utils.js.map +1 -1
  23. package/lib/api/rest/base.d.ts.map +1 -1
  24. package/lib/api/rest/base.js +7 -0
  25. package/lib/api/rest/base.js.map +1 -1
  26. package/lib/chain/archiveStore/archiveStore.js +1 -1
  27. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  28. package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +1 -1
  29. package/lib/chain/archiveStore/historicalState/metrics.js +21 -0
  30. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  31. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  32. package/lib/chain/blocks/importBlock.js +2 -7
  33. package/lib/chain/blocks/importBlock.js.map +1 -1
  34. package/lib/chain/blocks/importExecutionPayload.d.ts +3 -2
  35. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  36. package/lib/chain/blocks/importExecutionPayload.js +11 -9
  37. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  38. package/lib/chain/blocks/index.d.ts.map +1 -1
  39. package/lib/chain/blocks/index.js +14 -6
  40. package/lib/chain/blocks/index.js.map +1 -1
  41. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +2 -1
  42. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
  43. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +6 -2
  44. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
  45. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +14 -5
  46. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  47. package/lib/chain/blocks/payloadEnvelopeInput/types.js +5 -0
  48. package/lib/chain/blocks/payloadEnvelopeInput/types.js.map +1 -1
  49. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  50. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +22 -12
  51. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  52. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +2 -2
  53. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -1
  54. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +2 -2
  55. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -1
  56. package/lib/chain/bls/index.d.ts +1 -1
  57. package/lib/chain/bls/index.d.ts.map +1 -1
  58. package/lib/chain/bls/interface.d.ts +5 -5
  59. package/lib/chain/bls/interface.d.ts.map +1 -1
  60. package/lib/chain/bls/multithread/index.d.ts +5 -11
  61. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  62. package/lib/chain/bls/multithread/index.js +116 -101
  63. package/lib/chain/bls/multithread/index.js.map +1 -1
  64. package/lib/chain/bls/multithread/jobItem.d.ts +5 -19
  65. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
  66. package/lib/chain/bls/multithread/jobItem.js +10 -65
  67. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  68. package/lib/chain/bls/multithread/types.d.ts +29 -8
  69. package/lib/chain/bls/multithread/types.d.ts.map +1 -1
  70. package/lib/chain/bls/multithread/types.js +12 -0
  71. package/lib/chain/bls/multithread/types.js.map +1 -1
  72. package/lib/chain/bls/multithread/utils.d.ts +4 -0
  73. package/lib/chain/bls/multithread/utils.d.ts.map +1 -1
  74. package/lib/chain/bls/multithread/utils.js +10 -0
  75. package/lib/chain/bls/multithread/utils.js.map +1 -1
  76. package/lib/chain/bls/multithread/worker.js +49 -23
  77. package/lib/chain/bls/multithread/worker.js.map +1 -1
  78. package/lib/chain/bls/singleThread.d.ts +4 -10
  79. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  80. package/lib/chain/bls/singleThread.js +8 -45
  81. package/lib/chain/bls/singleThread.js.map +1 -1
  82. package/lib/chain/bls/utils.d.ts +4 -4
  83. package/lib/chain/bls/utils.d.ts.map +1 -1
  84. package/lib/chain/bls/utils.js +18 -19
  85. package/lib/chain/bls/utils.js.map +1 -1
  86. package/lib/chain/builderCircuitBreaker.d.ts +6 -5
  87. package/lib/chain/builderCircuitBreaker.d.ts.map +1 -1
  88. package/lib/chain/builderCircuitBreaker.js +28 -15
  89. package/lib/chain/builderCircuitBreaker.js.map +1 -1
  90. package/lib/chain/chain.d.ts +5 -3
  91. package/lib/chain/chain.d.ts.map +1 -1
  92. package/lib/chain/chain.js +18 -7
  93. package/lib/chain/chain.js.map +1 -1
  94. package/lib/chain/errors/blockError.d.ts +1 -0
  95. package/lib/chain/errors/blockError.d.ts.map +1 -1
  96. package/lib/chain/errors/blockError.js +6 -1
  97. package/lib/chain/errors/blockError.js.map +1 -1
  98. package/lib/chain/errors/proposerPreferences.d.ts +6 -0
  99. package/lib/chain/errors/proposerPreferences.d.ts.map +1 -1
  100. package/lib/chain/errors/proposerPreferences.js +1 -0
  101. package/lib/chain/errors/proposerPreferences.js.map +1 -1
  102. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  103. package/lib/chain/forkChoice/index.js +4 -0
  104. package/lib/chain/forkChoice/index.js.map +1 -1
  105. package/lib/chain/interface.d.ts +4 -2
  106. package/lib/chain/interface.d.ts.map +1 -1
  107. package/lib/chain/interface.js.map +1 -1
  108. package/lib/chain/opPools/aggregatedAttestationPool.js +1 -1
  109. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  110. package/lib/chain/opPools/attestationPool.d.ts +1 -1
  111. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  112. package/lib/chain/opPools/attestationPool.js +1 -1
  113. package/lib/chain/opPools/attestationPool.js.map +1 -1
  114. package/lib/chain/opPools/deferredVoluntaryExitPool.d.ts +16 -0
  115. package/lib/chain/opPools/deferredVoluntaryExitPool.d.ts.map +1 -0
  116. package/lib/chain/opPools/deferredVoluntaryExitPool.js +57 -0
  117. package/lib/chain/opPools/deferredVoluntaryExitPool.js.map +1 -0
  118. package/lib/chain/opPools/index.d.ts +1 -0
  119. package/lib/chain/opPools/index.d.ts.map +1 -1
  120. package/lib/chain/opPools/index.js +1 -0
  121. package/lib/chain/opPools/index.js.map +1 -1
  122. package/lib/chain/opPools/payloadAttestationPool.js +3 -3
  123. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  124. package/lib/chain/opPools/syncCommitteeMessagePool.js +1 -1
  125. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  126. package/lib/chain/opPools/syncContributionAndProofPool.js +1 -1
  127. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  128. package/lib/chain/opPools/utils.d.ts +1 -1
  129. package/lib/chain/opPools/utils.d.ts.map +1 -1
  130. package/lib/chain/opPools/utils.js +1 -1
  131. package/lib/chain/opPools/utils.js.map +1 -1
  132. package/lib/chain/options.d.ts +1 -1
  133. package/lib/chain/options.d.ts.map +1 -1
  134. package/lib/chain/prepareNextSlot.d.ts.map +1 -1
  135. package/lib/chain/prepareNextSlot.js +24 -6
  136. package/lib/chain/prepareNextSlot.js.map +1 -1
  137. package/lib/chain/produceBlock/produceBlockBody.d.ts +2 -0
  138. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  139. package/lib/chain/produceBlock/produceBlockBody.js +6 -1
  140. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  141. package/lib/chain/regen/interface.d.ts +4 -2
  142. package/lib/chain/regen/interface.d.ts.map +1 -1
  143. package/lib/chain/regen/interface.js +2 -0
  144. package/lib/chain/regen/interface.js.map +1 -1
  145. package/lib/chain/regen/queued.d.ts +2 -2
  146. package/lib/chain/regen/queued.d.ts.map +1 -1
  147. package/lib/chain/regen/queued.js +5 -5
  148. package/lib/chain/regen/queued.js.map +1 -1
  149. package/lib/chain/seenCache/seenAttesters.d.ts +9 -5
  150. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  151. package/lib/chain/seenCache/seenAttesters.js +25 -4
  152. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  153. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +28 -1
  154. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  155. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +121 -13
  156. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  157. package/lib/chain/stateCache/fifoBlockStateCache.d.ts +5 -1
  158. package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -1
  159. package/lib/chain/stateCache/fifoBlockStateCache.js +6 -0
  160. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  161. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +47 -5
  162. package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
  163. package/lib/chain/stateCache/persistentCheckpointsCache.js +117 -7
  164. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  165. package/lib/chain/stateCache/types.d.ts +3 -3
  166. package/lib/chain/stateCache/types.d.ts.map +1 -1
  167. package/lib/chain/validation/attestation.d.ts.map +1 -1
  168. package/lib/chain/validation/attestation.js +1 -4
  169. package/lib/chain/validation/attestation.js.map +1 -1
  170. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  171. package/lib/chain/validation/attesterSlashing.js +1 -1
  172. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  173. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  174. package/lib/chain/validation/executionPayloadBid.js +1 -2
  175. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  176. package/lib/chain/validation/executionPayloadEnvelope.js +1 -1
  177. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  178. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
  179. package/lib/chain/validation/payloadAttestationMessage.js +5 -14
  180. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  181. package/lib/chain/validation/proposerPreferences.d.ts +1 -1
  182. package/lib/chain/validation/proposerPreferences.d.ts.map +1 -1
  183. package/lib/chain/validation/proposerPreferences.js +13 -4
  184. package/lib/chain/validation/proposerPreferences.js.map +1 -1
  185. package/lib/chain/validation/proposerSlashing.js +1 -1
  186. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  187. package/lib/chain/validation/voluntaryExit.d.ts +9 -1
  188. package/lib/chain/validation/voluntaryExit.d.ts.map +1 -1
  189. package/lib/chain/validation/voluntaryExit.js +46 -1
  190. package/lib/chain/validation/voluntaryExit.js.map +1 -1
  191. package/lib/execution/builder/http.d.ts +10 -7
  192. package/lib/execution/builder/http.d.ts.map +1 -1
  193. package/lib/execution/builder/http.js +11 -8
  194. package/lib/execution/builder/http.js.map +1 -1
  195. package/lib/metrics/metrics/beacon.d.ts +3 -3
  196. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  197. package/lib/metrics/metrics/beacon.js +9 -9
  198. package/lib/metrics/metrics/beacon.js.map +1 -1
  199. package/lib/metrics/metrics/lodestar.d.ts +72 -22
  200. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  201. package/lib/metrics/metrics/lodestar.js +130 -52
  202. package/lib/metrics/metrics/lodestar.js.map +1 -1
  203. package/lib/network/gossip/topic.d.ts +13 -0
  204. package/lib/network/gossip/topic.d.ts.map +1 -1
  205. package/lib/network/gossip/topic.js +37 -0
  206. package/lib/network/gossip/topic.js.map +1 -1
  207. package/lib/network/libp2p/index.d.ts.map +1 -1
  208. package/lib/network/libp2p/index.js +10 -2
  209. package/lib/network/libp2p/index.js.map +1 -1
  210. package/lib/network/network.d.ts.map +1 -1
  211. package/lib/network/network.js +22 -43
  212. package/lib/network/network.js.map +1 -1
  213. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  214. package/lib/network/processor/gossipHandlers.js +12 -3
  215. package/lib/network/processor/gossipHandlers.js.map +1 -1
  216. package/lib/network/reqresp/score.d.ts.map +1 -1
  217. package/lib/network/reqresp/score.js +5 -11
  218. package/lib/network/reqresp/score.js.map +1 -1
  219. package/lib/network/util.d.ts +0 -1
  220. package/lib/network/util.d.ts.map +1 -1
  221. package/lib/network/util.js +0 -4
  222. package/lib/network/util.js.map +1 -1
  223. package/lib/node/deferredVoluntaryExitPublisher.d.ts +15 -0
  224. package/lib/node/deferredVoluntaryExitPublisher.d.ts.map +1 -0
  225. package/lib/node/deferredVoluntaryExitPublisher.js +38 -0
  226. package/lib/node/deferredVoluntaryExitPublisher.js.map +1 -0
  227. package/lib/node/nodejs.d.ts +2 -1
  228. package/lib/node/nodejs.d.ts.map +1 -1
  229. package/lib/node/nodejs.js +2 -0
  230. package/lib/node/nodejs.js.map +1 -1
  231. package/lib/sync/range/batch.d.ts +23 -5
  232. package/lib/sync/range/batch.d.ts.map +1 -1
  233. package/lib/sync/range/batch.js +61 -22
  234. package/lib/sync/range/batch.js.map +1 -1
  235. package/lib/sync/range/chain.d.ts +2 -1
  236. package/lib/sync/range/chain.d.ts.map +1 -1
  237. package/lib/sync/range/chain.js +23 -10
  238. package/lib/sync/range/chain.js.map +1 -1
  239. package/lib/sync/types.d.ts +32 -0
  240. package/lib/sync/types.d.ts.map +1 -1
  241. package/lib/sync/types.js +33 -0
  242. package/lib/sync/types.js.map +1 -1
  243. package/lib/sync/unknownBlock.d.ts +9 -0
  244. package/lib/sync/unknownBlock.d.ts.map +1 -1
  245. package/lib/sync/unknownBlock.js +187 -47
  246. package/lib/sync/unknownBlock.js.map +1 -1
  247. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  248. package/lib/sync/utils/downloadByRange.js +16 -11
  249. package/lib/sync/utils/downloadByRange.js.map +1 -1
  250. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  251. package/lib/sync/utils/downloadByRoot.js +3 -1
  252. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  253. package/package.json +35 -35
  254. package/src/api/impl/beacon/blocks/index.ts +7 -8
  255. package/src/api/impl/beacon/pool/index.ts +27 -2
  256. package/src/api/impl/beacon/state/utils.ts +2 -1
  257. package/src/api/impl/events/index.ts +12 -4
  258. package/src/api/impl/lodestar/index.ts +1 -1
  259. package/src/api/impl/validator/index.ts +22 -27
  260. package/src/api/impl/validator/utils.ts +30 -15
  261. package/src/api/rest/base.ts +7 -0
  262. package/src/chain/archiveStore/archiveStore.ts +1 -1
  263. package/src/chain/archiveStore/historicalState/metrics.ts +22 -0
  264. package/src/chain/blocks/importBlock.ts +1 -6
  265. package/src/chain/blocks/importExecutionPayload.ts +12 -11
  266. package/src/chain/blocks/index.ts +18 -6
  267. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +8 -2
  268. package/src/chain/blocks/payloadEnvelopeInput/types.ts +17 -4
  269. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +25 -16
  270. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +1 -9
  271. package/src/chain/bls/index.ts +1 -1
  272. package/src/chain/bls/interface.ts +7 -3
  273. package/src/chain/bls/multithread/index.ts +148 -120
  274. package/src/chain/bls/multithread/jobItem.ts +12 -82
  275. package/src/chain/bls/multithread/types.ts +33 -8
  276. package/src/chain/bls/multithread/utils.ts +11 -0
  277. package/src/chain/bls/multithread/worker.ts +85 -27
  278. package/src/chain/bls/singleThread.ts +11 -55
  279. package/src/chain/bls/utils.ts +23 -24
  280. package/src/chain/builderCircuitBreaker.ts +31 -17
  281. package/src/chain/chain.ts +19 -6
  282. package/src/chain/errors/blockError.ts +8 -2
  283. package/src/chain/errors/proposerPreferences.ts +7 -0
  284. package/src/chain/forkChoice/index.ts +4 -0
  285. package/src/chain/interface.ts +4 -1
  286. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  287. package/src/chain/opPools/attestationPool.ts +1 -1
  288. package/src/chain/opPools/deferredVoluntaryExitPool.ts +65 -0
  289. package/src/chain/opPools/index.ts +1 -0
  290. package/src/chain/opPools/payloadAttestationPool.ts +3 -3
  291. package/src/chain/opPools/syncCommitteeMessagePool.ts +1 -1
  292. package/src/chain/opPools/syncContributionAndProofPool.ts +1 -1
  293. package/src/chain/opPools/utils.ts +1 -1
  294. package/src/chain/options.ts +1 -1
  295. package/src/chain/prepareNextSlot.ts +24 -6
  296. package/src/chain/produceBlock/produceBlockBody.ts +13 -0
  297. package/src/chain/regen/interface.ts +4 -2
  298. package/src/chain/regen/queued.ts +5 -5
  299. package/src/chain/seenCache/seenAttesters.ts +31 -5
  300. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +143 -14
  301. package/src/chain/stateCache/fifoBlockStateCache.ts +8 -1
  302. package/src/chain/stateCache/persistentCheckpointsCache.ts +133 -8
  303. package/src/chain/stateCache/types.ts +3 -3
  304. package/src/chain/validation/attestation.ts +1 -7
  305. package/src/chain/validation/attesterSlashing.ts +1 -8
  306. package/src/chain/validation/executionPayloadBid.ts +1 -2
  307. package/src/chain/validation/executionPayloadEnvelope.ts +0 -1
  308. package/src/chain/validation/payloadAttestationMessage.ts +6 -17
  309. package/src/chain/validation/proposerPreferences.ts +15 -5
  310. package/src/chain/validation/proposerSlashing.ts +1 -1
  311. package/src/chain/validation/voluntaryExit.ts +59 -2
  312. package/src/execution/builder/http.ts +11 -11
  313. package/src/metrics/metrics/beacon.ts +9 -9
  314. package/src/metrics/metrics/lodestar.ts +142 -57
  315. package/src/network/gossip/topic.ts +38 -0
  316. package/src/network/libp2p/index.ts +11 -2
  317. package/src/network/network.ts +27 -55
  318. package/src/network/processor/gossipHandlers.ts +14 -1
  319. package/src/network/reqresp/score.ts +5 -11
  320. package/src/network/util.ts +0 -5
  321. package/src/node/deferredVoluntaryExitPublisher.ts +54 -0
  322. package/src/node/nodejs.ts +5 -1
  323. package/src/sync/range/batch.ts +83 -28
  324. package/src/sync/range/chain.ts +26 -11
  325. package/src/sync/types.ts +36 -1
  326. package/src/sync/unknownBlock.ts +212 -53
  327. package/src/sync/utils/downloadByRange.ts +21 -12
  328. package/src/sync/utils/downloadByRoot.ts +3 -1
  329. package/lib/chain/bls/maybeBatch.d.ts +0 -12
  330. package/lib/chain/bls/maybeBatch.d.ts.map +0 -1
  331. package/lib/chain/bls/maybeBatch.js +0 -35
  332. package/lib/chain/bls/maybeBatch.js.map +0 -1
  333. package/src/chain/bls/maybeBatch.ts +0 -45
@@ -8,7 +8,7 @@ import {BlockError, BlockErrorCode, isBlockErrorAborted} from "../errors/index.j
8
8
  import {BlockProcessOpts} from "../options.js";
9
9
  import {IBlockInput} from "./blockInput/types.js";
10
10
  import {importBlock} from "./importBlock.js";
11
- import {importExecutionPayload} from "./importExecutionPayload.js";
11
+ import {PayloadError, importExecutionPayload} from "./importExecutionPayload.js";
12
12
  import {PayloadEnvelopeInput} from "./payloadEnvelopeInput/payloadEnvelopeInput.js";
13
13
  import {FullyVerifiedBlock, ImportBlockOpts} from "./types.js";
14
14
  import {assertLinearChainSegment} from "./utils/chainSegment.js";
@@ -164,13 +164,21 @@ export async function processBlocks(
164
164
  return; // Ignore
165
165
  }
166
166
 
167
- // above functions should only throw BlockError
168
- const err = getBlockError(e, blocks[0].getBlock());
167
+ // above functions should only throw BlockError, or PayloadError from the gloas payload import
168
+ const err = getBlockOrPayloadError(e, blocks[0].getBlock());
169
169
 
170
170
  // TODO: De-duplicate with logic above
171
171
  // ChainEvent.errorBlock
172
- if (!(err instanceof BlockError)) {
173
- this.logger.debug("Non BlockError received", {}, err);
172
+ if (!(err instanceof BlockError) && !(err instanceof PayloadError)) {
173
+ this.logger.debug("Neither BlockError nor PayloadError received", {}, err);
174
+ } else if (err instanceof PayloadError) {
175
+ if (!opts.disableOnBlockError) {
176
+ this.logger.debug(
177
+ "Payload error",
178
+ {slot: err.payloadInput.slot, blockRoot: err.payloadInput.blockRootHex},
179
+ err
180
+ );
181
+ }
174
182
  } else if (!opts.disableOnBlockError) {
175
183
  this.logger.debug("Block error", {slot: err.signedBlock.message.slot}, err);
176
184
 
@@ -201,11 +209,15 @@ export async function processBlocks(
201
209
  }
202
210
  }
203
211
 
204
- function getBlockError(e: unknown, block: SignedBeaconBlock): BlockError {
212
+ function getBlockOrPayloadError(e: unknown, block: SignedBeaconBlock): BlockError | PayloadError {
205
213
  if (e instanceof BlockError) {
206
214
  return e;
207
215
  }
208
216
 
217
+ if (e instanceof PayloadError) {
218
+ return e;
219
+ }
220
+
209
221
  if (e instanceof Error) {
210
222
  const blockError = new BlockError(block, {code: BlockErrorCode.BEACON_CHAIN_ERROR, error: e});
211
223
  blockError.stack = e.stack;
@@ -9,6 +9,7 @@ import {
9
9
  ColumnWithSource,
10
10
  CreateFromBidProps,
11
11
  CreateFromBlockProps,
12
+ PayloadEnvelopeInputSource,
12
13
  SourceMeta,
13
14
  } from "./types.js";
14
15
 
@@ -71,6 +72,7 @@ export class PayloadEnvelopeInput {
71
72
  readonly bid: gloas.ExecutionPayloadBid;
72
73
  readonly versionedHashes: VersionedHashes;
73
74
  readonly daOutOfRange: boolean;
75
+ readonly source: PayloadEnvelopeInputSource;
74
76
 
75
77
  private columnsCache = new Map<ColumnIndex, ColumnWithSource>();
76
78
 
@@ -95,6 +97,7 @@ export class PayloadEnvelopeInput {
95
97
  custodyColumns: ColumnIndex[];
96
98
  timeCreatedSec: number;
97
99
  daOutOfRange: boolean;
100
+ source: PayloadEnvelopeInputSource;
98
101
  }) {
99
102
  this.blockRootHex = props.blockRootHex;
100
103
  this.slot = props.slot;
@@ -106,6 +109,7 @@ export class PayloadEnvelopeInput {
106
109
  this.custodyColumns = props.custodyColumns;
107
110
  this.timeCreatedSec = props.timeCreatedSec;
108
111
  this.daOutOfRange = props.daOutOfRange;
112
+ this.source = props.source;
109
113
  this.payloadEnvelopeDataPromise = createPromise();
110
114
  this.allDataPromise = createPromise();
111
115
  this.columnsDataPromise = createPromise();
@@ -133,8 +137,9 @@ export class PayloadEnvelopeInput {
133
137
  bid,
134
138
  sampledColumns: props.sampledColumns,
135
139
  custodyColumns: props.custodyColumns,
136
- timeCreatedSec: props.timeCreatedSec,
140
+ timeCreatedSec: props.seenTimestampSec,
137
141
  daOutOfRange: props.daOutOfRange,
142
+ source: props.source,
138
143
  });
139
144
  }
140
145
 
@@ -153,8 +158,9 @@ export class PayloadEnvelopeInput {
153
158
  bid: props.bid,
154
159
  sampledColumns: props.sampledColumns,
155
160
  custodyColumns: props.custodyColumns,
156
- timeCreatedSec: props.timeCreatedSec,
161
+ timeCreatedSec: props.seenTimestampSec,
157
162
  daOutOfRange: props.daOutOfRange,
163
+ source: props.source,
158
164
  });
159
165
  }
160
166
 
@@ -7,9 +7,24 @@ export enum PayloadEnvelopeInputSource {
7
7
  engine = "engine",
8
8
  byRange = "req_resp_by_range",
9
9
  byRoot = "req_resp_by_root",
10
+ // Data-column reconstruction (KZG cell recovery), NOT a cache reload
10
11
  recovery = "recovery",
12
+ // Entry reconstructed from the hot DB by SeenPayloadEnvelopeInput.getOrReload
13
+ reload = "reload",
14
+ // Entry seeded from a checkpoint anchor state's latestExecutionPayloadBid at chain init
15
+ anchorState = "anchor_state",
11
16
  }
12
17
 
18
+ /**
19
+ * Reason a PayloadEnvelopeInput is evicted from SeenPayloadEnvelopeInput. Used for the `pruned` metric
20
+ * label and the eviction log.
21
+ * - belowParent: pruned below the new head's parent (canonical, FULL, all-columns)
22
+ * - finalized: below the finalized slot
23
+ * - prune: explicit prune by root
24
+ * - cap: insertion-order backstop cap (MAX_PAYLOAD_ENVELOPE_INPUT_CACHE_SIZE)
25
+ */
26
+ export type PayloadEnvelopeInputPruneReason = "belowParent" | "finalized" | "prune" | "cap";
27
+
13
28
  export type SourceMeta = {
14
29
  source: PayloadEnvelopeInputSource;
15
30
  seenTimestampSec: number;
@@ -20,13 +35,12 @@ export type ColumnWithSource = SourceMeta & {
20
35
  columnSidecar: gloas.DataColumnSidecar;
21
36
  };
22
37
 
23
- export type CreateFromBlockProps = {
38
+ export type CreateFromBlockProps = SourceMeta & {
24
39
  blockRootHex: RootHex;
25
40
  block: SignedBeaconBlock<ForkPostGloas>;
26
41
  forkName: ForkName;
27
42
  sampledColumns: ColumnIndex[];
28
43
  custodyColumns: ColumnIndex[];
29
- timeCreatedSec: number;
30
44
  daOutOfRange: boolean;
31
45
  };
32
46
 
@@ -35,7 +49,7 @@ export type CreateFromBlockProps = {
35
49
  * the chain from a checkpoint anchor state — we have the bid via the state but not the
36
50
  * full SignedBeaconBlock).
37
51
  */
38
- export type CreateFromBidProps = {
52
+ export type CreateFromBidProps = SourceMeta & {
39
53
  blockRootHex: RootHex;
40
54
  slot: number;
41
55
  forkName: ForkName;
@@ -43,7 +57,6 @@ export type CreateFromBidProps = {
43
57
  bid: gloas.ExecutionPayloadBid;
44
58
  sampledColumns: ColumnIndex[];
45
59
  custodyColumns: ColumnIndex[];
46
- timeCreatedSec: number;
47
60
  daOutOfRange: boolean;
48
61
  };
49
62
 
@@ -44,22 +44,31 @@ export async function verifyBlocksStateTransitionOnly(
44
44
  // STFN - per_slot_processing() + per_block_processing()
45
45
  // NOTE: `regen.getPreState()` should have dialed forward the state already caching checkpoint states
46
46
  const useBlsBatchVerify = !opts?.disableBlsBatchVerify;
47
- const postState = preState.stateTransition(
48
- block,
49
- {
50
- // NOTE: Assume valid for now while sending payload to execution engine in parallel
51
- // Latter verifyBlocksInEpoch() will make sure that payload is indeed valid
52
- executionPayloadStatus: ExecutionPayloadStatus.valid,
53
- dataAvailabilityStatus,
54
- // false because it's verified below with better error typing
55
- verifyStateRoot: false,
56
- // if block is trusted don't verify proposer or op signature
57
- verifyProposer: !useBlsBatchVerify && !validSignatures && !validProposerSignature,
58
- verifySignatures: !useBlsBatchVerify && !validSignatures,
59
- dontTransferCache: false,
60
- },
61
- {metrics, validatorMonitor}
62
- );
47
+ let postState: IBeaconStateView;
48
+ try {
49
+ postState = preState.stateTransition(
50
+ block,
51
+ {
52
+ // NOTE: Assume valid for now while sending payload to execution engine in parallel
53
+ // Latter verifyBlocksInEpoch() will make sure that payload is indeed valid
54
+ executionPayloadStatus: ExecutionPayloadStatus.valid,
55
+ dataAvailabilityStatus,
56
+ // false because it's verified below with better error typing
57
+ verifyStateRoot: false,
58
+ // if block is trusted don't verify proposer or op signature
59
+ verifyProposer: !useBlsBatchVerify && !validSignatures && !validProposerSignature,
60
+ verifySignatures: !useBlsBatchVerify && !validSignatures,
61
+ dontTransferCache: false,
62
+ },
63
+ {metrics, validatorMonitor}
64
+ );
65
+ } catch (e) {
66
+ throw new BlockError(block, {
67
+ code: BlockErrorCode.PER_BLOCK_PROCESSING_ERROR,
68
+ blockRoot: blocks[i].blockRootHex,
69
+ error: e as Error,
70
+ });
71
+ }
63
72
 
64
73
  const hashTreeRootTimer = metrics?.stateHashTreeRootTime.startTimer({
65
74
  source: StateHashTreeRootSource.blockTransition,
@@ -1,7 +1,6 @@
1
1
  import {BeaconConfig} from "@lodestar/config";
2
2
  import {
3
3
  type IBeaconStateViewGloas,
4
- type PubkeyCache,
5
4
  computeTimeAtSlot,
6
5
  getExecutionPayloadEnvelopeSignatureSet,
7
6
  } from "@lodestar/state-transition";
@@ -119,17 +118,10 @@ export function verifyExecutionPayloadEnvelope(
119
118
  export async function verifyExecutionPayloadEnvelopeSignature(
120
119
  config: BeaconConfig,
121
120
  state: IBeaconStateViewGloas,
122
- pubkeyCache: PubkeyCache,
123
121
  signedEnvelope: gloas.SignedExecutionPayloadEnvelope,
124
122
  proposerIndex: number,
125
123
  bls: IBlsVerifier
126
124
  ): Promise<boolean> {
127
- const signatureSet = getExecutionPayloadEnvelopeSignatureSet(
128
- config,
129
- pubkeyCache,
130
- state,
131
- signedEnvelope,
132
- proposerIndex
133
- );
125
+ const signatureSet = getExecutionPayloadEnvelopeSignatureSet(config, state, signedEnvelope, proposerIndex);
134
126
  return bls.verifySignatureSets([signatureSet]);
135
127
  }
@@ -1,4 +1,4 @@
1
- export type {IBlsVerifier} from "./interface.js";
1
+ export type {IBlsVerifier, SameMessageSignatureSet} from "./interface.js";
2
2
  export type {BlsMultiThreadWorkerPoolModules, JobQueueItemType} from "./multithread/index.js";
3
3
  export {BlsMultiThreadWorkerPool} from "./multithread/index.js";
4
4
  export {BlsSingleThreadVerifier} from "./singleThread.js";
@@ -1,6 +1,10 @@
1
- import {PublicKey} from "@chainsafe/blst";
2
1
  import {ISignatureSet} from "@lodestar/state-transition";
3
2
 
3
+ export type SameMessageSignatureSet = {
4
+ index: number;
5
+ signature: Uint8Array;
6
+ };
7
+
4
8
  export type VerifySignatureOpts = {
5
9
  /**
6
10
  * A batchable set MAY be verified with more sets to reduce the verification costs.
@@ -53,8 +57,8 @@ export interface IBlsVerifier {
53
57
  * - only support `batchable` option
54
58
  */
55
59
  verifySignatureSetsSameMessage(
56
- sets: {publicKey: PublicKey; signature: Uint8Array}[],
57
- messsage: Uint8Array,
60
+ sets: SameMessageSignatureSet[],
61
+ message: Uint8Array,
58
62
  opts?: Omit<VerifySignatureOpts, "verifyOnMainThread">
59
63
  ): Promise<boolean[]>;
60
64