@lodestar/beacon-node 1.51.0-dev.e22f67e7bc → 1.51.0-dev.e2bf489dd3

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 (402) hide show
  1. package/lib/api/impl/api.js +1 -1
  2. package/lib/api/impl/api.js.map +1 -1
  3. package/lib/api/impl/beacon/blocks/index.d.ts +2 -1
  4. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/blocks/index.js +29 -34
  6. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  7. package/lib/api/impl/beacon/index.d.ts +2 -1
  8. package/lib/api/impl/beacon/index.d.ts.map +1 -1
  9. package/lib/api/impl/beacon/index.js +2 -2
  10. package/lib/api/impl/beacon/index.js.map +1 -1
  11. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  12. package/lib/api/impl/beacon/pool/index.js +5 -2
  13. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  14. package/lib/api/impl/beacon/state/utils.d.ts +1 -1
  15. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  16. package/lib/api/impl/validator/index.d.ts +6 -0
  17. package/lib/api/impl/validator/index.d.ts.map +1 -1
  18. package/lib/api/impl/validator/index.js +42 -26
  19. package/lib/api/impl/validator/index.js.map +1 -1
  20. package/lib/api/options.d.ts +2 -0
  21. package/lib/api/options.d.ts.map +1 -1
  22. package/lib/api/options.js +1 -0
  23. package/lib/api/options.js.map +1 -1
  24. package/lib/chain/GetBlobsTracker.d.ts +13 -2
  25. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  26. package/lib/chain/GetBlobsTracker.js +85 -27
  27. package/lib/chain/GetBlobsTracker.js.map +1 -1
  28. package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
  29. package/lib/chain/archiveStore/archiveStore.js +1 -0
  30. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  31. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +4 -0
  32. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
  33. package/lib/chain/archiveStore/utils/archiveBlocks.js +61 -97
  34. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  35. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  36. package/lib/chain/blocks/importBlock.js +21 -50
  37. package/lib/chain/blocks/importBlock.js.map +1 -1
  38. package/lib/chain/blocks/importExecutionPayload.d.ts +10 -11
  39. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  40. package/lib/chain/blocks/importExecutionPayload.js +34 -19
  41. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  42. package/lib/chain/blocks/index.d.ts.map +1 -1
  43. package/lib/chain/blocks/index.js +4 -4
  44. package/lib/chain/blocks/index.js.map +1 -1
  45. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +12 -9
  46. package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
  47. package/lib/chain/blocks/payloadEnvelopeProcessor.js +24 -19
  48. package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
  49. package/lib/chain/blocks/types.d.ts +4 -1
  50. package/lib/chain/blocks/types.d.ts.map +1 -1
  51. package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
  52. package/lib/chain/blocks/verifyBlock.js +18 -7
  53. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  54. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
  55. package/lib/chain/blocks/verifyBlocksDataAvailability.js +8 -1
  56. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  57. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -1
  58. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
  59. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
  60. package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -0
  61. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  62. package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
  63. package/lib/chain/blocks/verifyBlocksSignatures.js +7 -5
  64. package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
  65. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +3 -3
  66. package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
  67. package/lib/chain/blocks/verifyPayloadsDataAvailability.js +11 -6
  68. package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
  69. package/lib/chain/bls/interface.d.ts +2 -0
  70. package/lib/chain/bls/interface.d.ts.map +1 -1
  71. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  72. package/lib/chain/bls/multithread/index.js +13 -11
  73. package/lib/chain/bls/multithread/index.js.map +1 -1
  74. package/lib/chain/bls/multithread/types.d.ts +1 -1
  75. package/lib/chain/bls/multithread/types.d.ts.map +1 -1
  76. package/lib/chain/bls/multithread/worker.js +1 -1
  77. package/lib/chain/bls/multithread/worker.js.map +1 -1
  78. package/lib/chain/bls/singleThread.js +1 -1
  79. package/lib/chain/bls/singleThread.js.map +1 -1
  80. package/lib/chain/bls/utils.js +1 -1
  81. package/lib/chain/bls/utils.js.map +1 -1
  82. package/lib/chain/chain.d.ts +8 -2
  83. package/lib/chain/chain.d.ts.map +1 -1
  84. package/lib/chain/chain.js +57 -7
  85. package/lib/chain/chain.js.map +1 -1
  86. package/lib/chain/errors/blockError.d.ts +1 -1
  87. package/lib/chain/errors/blockError.d.ts.map +1 -1
  88. package/lib/chain/errors/blockError.js +1 -1
  89. package/lib/chain/errors/blockError.js.map +1 -1
  90. package/lib/chain/errors/executionPayloadEnvelope.d.ts +7 -0
  91. package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
  92. package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
  93. package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
  94. package/lib/chain/forkChoice/index.d.ts +11 -1
  95. package/lib/chain/forkChoice/index.d.ts.map +1 -1
  96. package/lib/chain/forkChoice/index.js +11 -0
  97. package/lib/chain/forkChoice/index.js.map +1 -1
  98. package/lib/chain/forkChoiceExecutionEngine.d.ts +53 -0
  99. package/lib/chain/forkChoiceExecutionEngine.d.ts.map +1 -0
  100. package/lib/chain/forkChoiceExecutionEngine.js +121 -0
  101. package/lib/chain/forkChoiceExecutionEngine.js.map +1 -0
  102. package/lib/chain/interface.d.ts +5 -5
  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.d.ts.map +1 -1
  106. package/lib/chain/opPools/aggregatedAttestationPool.js +23 -10
  107. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  108. package/lib/chain/opPools/attestationPool.d.ts +1 -1
  109. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  110. package/lib/chain/opPools/attestationPool.js +15 -4
  111. package/lib/chain/opPools/attestationPool.js.map +1 -1
  112. package/lib/chain/opPools/inclusionListStore.d.ts.map +1 -1
  113. package/lib/chain/opPools/inclusionListStore.js +2 -2
  114. package/lib/chain/opPools/inclusionListStore.js.map +1 -1
  115. package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
  116. package/lib/chain/opPools/payloadAttestationPool.js +17 -7
  117. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  118. package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
  119. package/lib/chain/opPools/syncCommitteeMessagePool.js +9 -3
  120. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  121. package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
  122. package/lib/chain/opPools/syncContributionAndProofPool.js +11 -3
  123. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  124. package/lib/chain/opPools/utils.d.ts +1 -1
  125. package/lib/chain/opPools/utils.d.ts.map +1 -1
  126. package/lib/chain/opPools/utils.js +1 -1
  127. package/lib/chain/opPools/utils.js.map +1 -1
  128. package/lib/chain/options.d.ts +0 -1
  129. package/lib/chain/options.d.ts.map +1 -1
  130. package/lib/chain/options.js +0 -1
  131. package/lib/chain/options.js.map +1 -1
  132. package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -2
  133. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  134. package/lib/chain/produceBlock/produceBlockBody.js +1 -2
  135. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  136. package/lib/chain/regen/interface.d.ts +1 -2
  137. package/lib/chain/regen/interface.d.ts.map +1 -1
  138. package/lib/chain/regen/interface.js +0 -1
  139. package/lib/chain/regen/interface.js.map +1 -1
  140. package/lib/chain/regen/queued.d.ts +1 -1
  141. package/lib/chain/regen/queued.d.ts.map +1 -1
  142. package/lib/chain/regen/queued.js +5 -3
  143. package/lib/chain/regen/queued.js.map +1 -1
  144. package/lib/chain/validation/executionPayloadBid.d.ts +0 -15
  145. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  146. package/lib/chain/validation/executionPayloadBid.js +13 -166
  147. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  148. package/lib/chain/validation/executionPayloadEnvelope.d.ts +6 -0
  149. package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
  150. package/lib/chain/validation/executionPayloadEnvelope.js +53 -0
  151. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  152. package/lib/chain/validation/inclusionList.d.ts.map +1 -1
  153. package/lib/chain/validation/inclusionList.js +11 -2
  154. package/lib/chain/validation/inclusionList.js.map +1 -1
  155. package/lib/db/beacon.d.ts +7 -0
  156. package/lib/db/beacon.d.ts.map +1 -1
  157. package/lib/db/beacon.js +34 -0
  158. package/lib/db/beacon.js.map +1 -1
  159. package/lib/db/dataColumnStore.d.ts +1 -1
  160. package/lib/db/dataColumnStore.d.ts.map +1 -1
  161. package/lib/db/dataColumnStore.js +1 -4
  162. package/lib/db/dataColumnStore.js.map +1 -1
  163. package/lib/db/flatFileStore/flatFileStore.js +5 -5
  164. package/lib/db/flatFileStore/flatFileStore.js.map +1 -1
  165. package/lib/db/flatFileStore/slotIndex.d.ts.map +1 -1
  166. package/lib/db/flatFileStore/slotIndex.js +2 -2
  167. package/lib/db/flatFileStore/slotIndex.js.map +1 -1
  168. package/lib/db/interface.d.ts +1 -0
  169. package/lib/db/interface.d.ts.map +1 -1
  170. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +6 -0
  171. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  172. package/lib/db/repositories/dataColumnSidecarArchive.js +19 -0
  173. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  174. package/lib/execution/builder/apiClient.d.ts +14 -8
  175. package/lib/execution/builder/apiClient.d.ts.map +1 -1
  176. package/lib/execution/builder/apiClient.js +12 -10
  177. package/lib/execution/builder/apiClient.js.map +1 -1
  178. package/lib/execution/builder/http.d.ts +2 -0
  179. package/lib/execution/builder/http.d.ts.map +1 -1
  180. package/lib/execution/builder/http.js +2 -0
  181. package/lib/execution/builder/http.js.map +1 -1
  182. package/lib/execution/engine/blobVersionedHashes.d.ts +1 -1
  183. package/lib/execution/engine/blobVersionedHashes.d.ts.map +1 -1
  184. package/lib/execution/engine/blobVersionedHashes.js.map +1 -1
  185. package/lib/execution/engine/http.d.ts +2 -2
  186. package/lib/execution/engine/http.d.ts.map +1 -1
  187. package/lib/execution/engine/http.js +5 -5
  188. package/lib/execution/engine/http.js.map +1 -1
  189. package/lib/execution/engine/index.d.ts +1 -1
  190. package/lib/execution/engine/index.d.ts.map +1 -1
  191. package/lib/execution/engine/index.js +1 -1
  192. package/lib/execution/engine/index.js.map +1 -1
  193. package/lib/execution/engine/interface.d.ts +17 -3
  194. package/lib/execution/engine/interface.d.ts.map +1 -1
  195. package/lib/execution/engine/interface.js.map +1 -1
  196. package/lib/execution/engine/jsonRpcTransport.d.ts +2 -2
  197. package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -1
  198. package/lib/execution/engine/jsonRpcTransport.js +1 -1
  199. package/lib/execution/engine/jsonRpcTransport.js.map +1 -1
  200. package/lib/execution/engine/mock.d.ts.map +1 -1
  201. package/lib/execution/engine/mock.js +6 -4
  202. package/lib/execution/engine/mock.js.map +1 -1
  203. package/lib/execution/engine/payloadIdCache.d.ts +1 -2
  204. package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
  205. package/lib/execution/engine/payloadIdCache.js +3 -3
  206. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  207. package/lib/execution/engine/restTransport.d.ts +2 -2
  208. package/lib/execution/engine/restTransport.d.ts.map +1 -1
  209. package/lib/execution/engine/restTransport.js.map +1 -1
  210. package/lib/execution/engine/sszTypes.d.ts +38 -38
  211. package/lib/execution/engine/transport.d.ts +1 -12
  212. package/lib/execution/engine/transport.d.ts.map +1 -1
  213. package/lib/execution/engine/types.d.ts +1 -1
  214. package/lib/execution/engine/types.d.ts.map +1 -1
  215. package/lib/execution/engine/types.js +9 -8
  216. package/lib/execution/engine/types.js.map +1 -1
  217. package/lib/execution/engine/utils.d.ts.map +1 -1
  218. package/lib/execution/engine/utils.js +3 -2
  219. package/lib/execution/engine/utils.js.map +1 -1
  220. package/lib/index.d.ts +1 -0
  221. package/lib/index.d.ts.map +1 -1
  222. package/lib/index.js +2 -0
  223. package/lib/index.js.map +1 -1
  224. package/lib/metrics/metrics/lodestar.d.ts +7 -0
  225. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  226. package/lib/metrics/metrics/lodestar.js +15 -0
  227. package/lib/metrics/metrics/lodestar.js.map +1 -1
  228. package/lib/metrics/server/http.js +5 -5
  229. package/lib/metrics/server/http.js.map +1 -1
  230. package/lib/monitoring/service.js +1 -1
  231. package/lib/monitoring/service.js.map +1 -1
  232. package/lib/network/core/networkCore.d.ts +2 -0
  233. package/lib/network/core/networkCore.d.ts.map +1 -1
  234. package/lib/network/core/networkCore.js +3 -0
  235. package/lib/network/core/networkCore.js.map +1 -1
  236. package/lib/network/core/networkCoreWorker.js +1 -0
  237. package/lib/network/core/networkCoreWorker.js.map +1 -1
  238. package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -0
  239. package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
  240. package/lib/network/core/networkCoreWorkerHandler.js +3 -0
  241. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  242. package/lib/network/core/types.d.ts +2 -0
  243. package/lib/network/core/types.d.ts.map +1 -1
  244. package/lib/network/gossip/gossipsub.d.ts +1 -0
  245. package/lib/network/gossip/gossipsub.d.ts.map +1 -1
  246. package/lib/network/gossip/gossipsub.js +10 -0
  247. package/lib/network/gossip/gossipsub.js.map +1 -1
  248. package/lib/network/gossip/topic.d.ts +6 -6
  249. package/lib/network/interface.d.ts +2 -0
  250. package/lib/network/interface.d.ts.map +1 -1
  251. package/lib/network/libp2p/index.d.ts.map +1 -1
  252. package/lib/network/libp2p/index.js +5 -1
  253. package/lib/network/libp2p/index.js.map +1 -1
  254. package/lib/network/network.d.ts +4 -1
  255. package/lib/network/network.d.ts.map +1 -1
  256. package/lib/network/network.js +45 -15
  257. package/lib/network/network.js.map +1 -1
  258. package/lib/network/options.d.ts +2 -0
  259. package/lib/network/options.d.ts.map +1 -1
  260. package/lib/network/options.js.map +1 -1
  261. package/lib/network/peers/peerManager.d.ts +2 -1
  262. package/lib/network/peers/peerManager.d.ts.map +1 -1
  263. package/lib/network/peers/peerManager.js +28 -1
  264. package/lib/network/peers/peerManager.js.map +1 -1
  265. package/lib/network/peers/utils/assertPeerRelevance.d.ts +9 -1
  266. package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -1
  267. package/lib/network/peers/utils/assertPeerRelevance.js +32 -21
  268. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  269. package/lib/network/peers/utils/prioritizePeers.d.ts +4 -1
  270. package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
  271. package/lib/network/peers/utils/prioritizePeers.js +8 -16
  272. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  273. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  274. package/lib/network/processor/gossipHandlers.js +60 -37
  275. package/lib/network/processor/gossipHandlers.js.map +1 -1
  276. package/lib/network/processor/index.d.ts +6 -0
  277. package/lib/network/processor/index.d.ts.map +1 -1
  278. package/lib/network/processor/index.js +29 -3
  279. package/lib/network/processor/index.js.map +1 -1
  280. package/lib/node/nodejs.d.ts +3 -1
  281. package/lib/node/nodejs.d.ts.map +1 -1
  282. package/lib/node/nodejs.js +47 -21
  283. package/lib/node/nodejs.js.map +1 -1
  284. package/lib/node/options.d.ts +3 -1
  285. package/lib/node/options.d.ts.map +1 -1
  286. package/lib/node/options.js +4 -2
  287. package/lib/node/options.js.map +1 -1
  288. package/lib/sync/interface.d.ts.map +1 -1
  289. package/lib/sync/interface.js.map +1 -1
  290. package/lib/sync/sync.d.ts +7 -0
  291. package/lib/sync/sync.d.ts.map +1 -1
  292. package/lib/sync/sync.js +61 -3
  293. package/lib/sync/sync.js.map +1 -1
  294. package/lib/sync/unknownBlock.d.ts.map +1 -1
  295. package/lib/sync/unknownBlock.js +42 -18
  296. package/lib/sync/unknownBlock.js.map +1 -1
  297. package/lib/util/execution.d.ts +4 -4
  298. package/lib/util/execution.d.ts.map +1 -1
  299. package/lib/util/execution.js.map +1 -1
  300. package/lib/util/file.d.ts.map +1 -1
  301. package/lib/util/file.js +8 -9
  302. package/lib/util/file.js.map +1 -1
  303. package/lib/util/queue/itemQueue.js +1 -1
  304. package/lib/util/queue/itemQueue.js.map +1 -1
  305. package/lib/util/sszBytes.d.ts +5 -0
  306. package/lib/util/sszBytes.d.ts.map +1 -1
  307. package/lib/util/sszBytes.js +35 -2
  308. package/lib/util/sszBytes.js.map +1 -1
  309. package/package.json +31 -32
  310. package/src/api/impl/api.ts +1 -1
  311. package/src/api/impl/beacon/blocks/index.ts +57 -62
  312. package/src/api/impl/beacon/index.ts +3 -1
  313. package/src/api/impl/beacon/pool/index.ts +5 -1
  314. package/src/api/impl/beacon/state/utils.ts +1 -1
  315. package/src/api/impl/validator/index.ts +47 -30
  316. package/src/api/options.ts +3 -0
  317. package/src/chain/GetBlobsTracker.ts +99 -40
  318. package/src/chain/archiveStore/archiveStore.ts +1 -0
  319. package/src/chain/archiveStore/utils/archiveBlocks.ts +76 -130
  320. package/src/chain/blocks/importBlock.ts +40 -71
  321. package/src/chain/blocks/importExecutionPayload.ts +57 -35
  322. package/src/chain/blocks/index.ts +11 -4
  323. package/src/chain/blocks/payloadEnvelopeProcessor.ts +35 -24
  324. package/src/chain/blocks/types.ts +4 -1
  325. package/src/chain/blocks/verifyBlock.ts +31 -16
  326. package/src/chain/blocks/verifyBlocksDataAvailability.ts +10 -1
  327. package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +1 -1
  328. package/src/chain/blocks/verifyBlocksSanityChecks.ts +4 -1
  329. package/src/chain/blocks/verifyBlocksSignatures.ts +7 -5
  330. package/src/chain/blocks/verifyPayloadsDataAvailability.ts +14 -6
  331. package/src/chain/bls/interface.ts +2 -0
  332. package/src/chain/bls/multithread/index.ts +14 -10
  333. package/src/chain/bls/multithread/types.ts +1 -1
  334. package/src/chain/bls/multithread/worker.ts +1 -5
  335. package/src/chain/bls/singleThread.ts +1 -1
  336. package/src/chain/bls/utils.ts +1 -1
  337. package/src/chain/chain.ts +67 -8
  338. package/src/chain/errors/blockError.ts +1 -1
  339. package/src/chain/errors/executionPayloadEnvelope.ts +8 -0
  340. package/src/chain/forkChoice/index.ts +11 -0
  341. package/src/chain/forkChoiceExecutionEngine.ts +197 -0
  342. package/src/chain/interface.ts +5 -5
  343. package/src/chain/opPools/aggregatedAttestationPool.ts +25 -9
  344. package/src/chain/opPools/attestationPool.ts +16 -4
  345. package/src/chain/opPools/inclusionListStore.ts +3 -3
  346. package/src/chain/opPools/payloadAttestationPool.ts +18 -7
  347. package/src/chain/opPools/syncCommitteeMessagePool.ts +10 -3
  348. package/src/chain/opPools/syncContributionAndProofPool.ts +13 -3
  349. package/src/chain/opPools/utils.ts +1 -1
  350. package/src/chain/options.ts +0 -2
  351. package/src/chain/produceBlock/produceBlockBody.ts +4 -3
  352. package/src/chain/regen/interface.ts +1 -2
  353. package/src/chain/regen/queued.ts +6 -4
  354. package/src/chain/validation/executionPayloadBid.ts +14 -193
  355. package/src/chain/validation/executionPayloadEnvelope.ts +68 -1
  356. package/src/chain/validation/inclusionList.ts +11 -2
  357. package/src/db/beacon.ts +44 -0
  358. package/src/db/dataColumnStore.ts +2 -4
  359. package/src/db/flatFileStore/flatFileStore.ts +7 -7
  360. package/src/db/flatFileStore/slotIndex.ts +4 -3
  361. package/src/db/interface.ts +2 -0
  362. package/src/db/repositories/dataColumnSidecarArchive.ts +20 -0
  363. package/src/execution/builder/apiClient.ts +16 -13
  364. package/src/execution/builder/http.ts +4 -0
  365. package/src/execution/engine/blobVersionedHashes.ts +1 -1
  366. package/src/execution/engine/http.ts +12 -14
  367. package/src/execution/engine/index.ts +1 -1
  368. package/src/execution/engine/interface.ts +19 -3
  369. package/src/execution/engine/jsonRpcTransport.ts +10 -2
  370. package/src/execution/engine/mock.ts +6 -4
  371. package/src/execution/engine/payloadIdCache.ts +6 -7
  372. package/src/execution/engine/restTransport.ts +3 -1
  373. package/src/execution/engine/transport.ts +8 -14
  374. package/src/execution/engine/types.ts +11 -9
  375. package/src/execution/engine/utils.ts +4 -2
  376. package/src/index.ts +2 -0
  377. package/src/metrics/metrics/lodestar.ts +15 -0
  378. package/src/metrics/server/http.ts +5 -5
  379. package/src/monitoring/service.ts +1 -1
  380. package/src/network/core/networkCore.ts +5 -0
  381. package/src/network/core/networkCoreWorker.ts +1 -0
  382. package/src/network/core/networkCoreWorkerHandler.ts +4 -0
  383. package/src/network/core/types.ts +2 -0
  384. package/src/network/gossip/gossipsub.ts +11 -0
  385. package/src/network/interface.ts +2 -0
  386. package/src/network/libp2p/index.ts +5 -1
  387. package/src/network/network.ts +45 -19
  388. package/src/network/options.ts +2 -0
  389. package/src/network/peers/peerManager.ts +28 -3
  390. package/src/network/peers/utils/assertPeerRelevance.ts +39 -23
  391. package/src/network/peers/utils/prioritizePeers.ts +14 -22
  392. package/src/network/processor/gossipHandlers.ts +72 -40
  393. package/src/network/processor/index.ts +25 -3
  394. package/src/node/nodejs.ts +58 -22
  395. package/src/node/options.ts +9 -6
  396. package/src/sync/interface.ts +1 -0
  397. package/src/sync/sync.ts +65 -4
  398. package/src/sync/unknownBlock.ts +47 -28
  399. package/src/util/execution.ts +6 -6
  400. package/src/util/file.ts +8 -9
  401. package/src/util/queue/itemQueue.ts +1 -1
  402. package/src/util/sszBytes.ts +42 -2
@@ -1,38 +1,36 @@
1
1
  import { JobItemQueue } from "../../util/queue/index.js";
2
- import { processExecutionPayload } from "./importExecutionPayload.js";
2
+ import { importExecutionPayload } from "./importExecutionPayload.js";
3
+ import { verifyPayloadsDataAvailability } from "./verifyPayloadsDataAvailability.js";
3
4
  // TODO GLOAS: Set to be equal to DEFAULT_MAX_PENDING_UNFINALIZED_PAYLOAD_ENVELOPE_WRITES for now
4
5
  const QUEUE_MAX_LENGTH = 16;
5
6
  /**
6
- * PayloadEnvelopeProcessor processes payload envelope jobs in a queued fashion, one after the other.
7
+ * PayloadEnvelopeProcessor imports payload envelopes in a queued fashion, one after the other.
7
8
  *
8
- * Jobs are enqueued only on envelope arrival (gossip or API). The envelope may reach us before
9
- * the sampled data columns; importExecutionPayload awaits `verifyPayloadsDataAvailability`
10
- * internally, so a queued job can pend for up to `PAYLOAD_DATA_AVAILABILITY_TIMEOUT` while
11
- * waiting for columns. Duplicate triggers for the same payloadInput are deduped by sharing the
12
- * in-flight import promise: every caller observes the real import outcome. Resolving duplicates
13
- * early instead would let BlockInputSync mark a still-pending payload as processed, re-queue it,
14
- * and spin re-processing the same root until OOM while the import is blocked (e.g. EL syncing).
9
+ * Jobs are triggered only on envelope arrival (gossip or API). The envelope may reach us before the
10
+ * sampled data columns, the data availability wait runs before the job is queued. Duplicate
11
+ * triggers for the same payloadInput are deduped by sharing the in-flight promise: every caller
12
+ * observes the real import outcome. Resolving duplicates early instead would let
13
+ * BlockInputSync mark a still-pending payload as processed, re-queue it, and spin re-processing
14
+ * the same root until OOM while the import is blocked (e.g. EL syncing).
15
15
  */
16
16
  export class PayloadEnvelopeProcessor {
17
+ chain;
18
+ signal;
17
19
  jobQueue;
18
20
  imports = new WeakMap();
19
21
  constructor(chain, metrics, signal) {
20
- this.jobQueue = new JobItemQueue((payloadInput, opts) => {
21
- return processExecutionPayload.call(chain, payloadInput, signal, opts);
22
+ this.chain = chain;
23
+ this.signal = signal;
24
+ this.jobQueue = new JobItemQueue((payloadInput, dataAvailabilityStatus, opts) => {
25
+ return importExecutionPayload.call(chain, payloadInput, dataAvailabilityStatus, opts);
22
26
  }, { maxLength: QUEUE_MAX_LENGTH, noYieldIfOneItem: true, signal }, metrics?.payloadEnvelopeProcessorQueue ?? undefined);
23
27
  }
24
28
  async processPayloadEnvelopeJob(payloadInput, opts = {}) {
25
29
  const existing = this.imports.get(payloadInput);
26
- if (existing) {
30
+ if (existing !== undefined) {
27
31
  return existing;
28
32
  }
29
- await this.jobQueue.waitForSpace();
30
- // Re-check after await, as another call may have queued this payload.
31
- const queued = this.imports.get(payloadInput);
32
- if (queued) {
33
- return queued;
34
- }
35
- const importPromise = this.jobQueue.push(payloadInput, opts);
33
+ const importPromise = this.waitForDataAndImport(payloadInput, opts);
36
34
  this.imports.set(payloadInput, importPromise);
37
35
  try {
38
36
  await importPromise;
@@ -44,5 +42,12 @@ export class PayloadEnvelopeProcessor {
44
42
  throw e;
45
43
  }
46
44
  }
45
+ async waitForDataAndImport(payloadInput, opts) {
46
+ const { dataAvailabilityStatuses } = await verifyPayloadsDataAvailability(this.chain.config, [payloadInput], this.signal);
47
+ while (this.jobQueue.jobLen >= QUEUE_MAX_LENGTH) {
48
+ await this.jobQueue.waitForSpace();
49
+ }
50
+ return this.jobQueue.push(payloadInput, dataAvailabilityStatuses[0], opts);
51
+ }
47
52
  }
48
53
  //# sourceMappingURL=payloadEnvelopeProcessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payloadEnvelopeProcessor.js","sourceRoot":"","sources":["../../../src/chain/blocks/payloadEnvelopeProcessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAC,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AAGpE,iGAAiG;AACjG,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B;;;;;;;;;;GAUG;AACH,MAAM,OAAO,wBAAwB;IAC1B,QAAQ,CAAgE;IAChE,OAAO,GAAG,IAAI,OAAO,EAAuC,CAAC;IAE9E,YAAY,KAAkB,EAAE,OAAuB,EAAE,MAAmB;QAC1E,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAC9B,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE;YACrB,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACzE,CAAC,EACD,EAAC,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAC,EAC7D,OAAO,EAAE,6BAA6B,IAAI,SAAS,CACpD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,YAAkC,EAAE,IAAI,GAAsB,EAAE;QAC9F,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QAEnC,sEAAsE;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,aAAa,CAAC;QACtB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,yFAAyF;YACzF,uEAAuE;YACvE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAClC,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"payloadEnvelopeProcessor.js","sourceRoot":"","sources":["../../../src/chain/blocks/payloadEnvelopeProcessor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAGvD,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAC,8BAA8B,EAAC,MAAM,qCAAqC,CAAC;AAEnF,iGAAiG;AACjG,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B;;;;;;;;;GASG;AACH,MAAM,OAAO,wBAAwB;IAKhB,KAAK;IAEL,MAAM;IANhB,QAAQ,CAAwF;IACxF,OAAO,GAAG,IAAI,OAAO,EAAuC,CAAC;IAE9E,YACmB,KAAkB,EACnC,OAAuB,EACN,MAAmB;qBAFnB,KAAK;sBAEL,MAAM;QAEvB,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAC9B,CAAC,YAAY,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAAE;YAC7C,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAC;QACxF,CAAC,EACD,EAAC,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAC,EAC7D,OAAO,EAAE,6BAA6B,IAAI,SAAS,CACpD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,YAAkC,EAAE,IAAI,GAAsB,EAAE;QAC9F,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,aAAa,CAAC;QACtB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,yFAAyF;YACzF,uEAAuE;YACvE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAClC,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,YAAkC,EAAE,IAAuB;QAC5F,MAAM,EAAC,wBAAwB,EAAC,GAAG,MAAM,8BAA8B,CACrE,IAAI,CAAC,KAAK,CAAC,MAAM,EACjB,CAAC,YAAY,CAAC,EACd,IAAI,CAAC,MAAM,CACZ,CAAC;QAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QACrC,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;CACF"}
@@ -93,7 +93,10 @@ export type FullyVerifiedBlock = {
93
93
  parentBlockSlot: Slot;
94
94
  proposerBalanceDelta: number;
95
95
  dataAvailabilityStatus: DataAvailabilityStatus;
96
- /** Pre-computed indexed attestations from signature verification to avoid duplicate work */
96
+ /**
97
+ * Pre-computed indexed attestations from signature verification to avoid duplicate work.
98
+ * Their `attestingIndices` are in committee order, not sorted, so they are not spec-valid `IndexedAttestation`s.
99
+ */
97
100
  indexedAttestations: IndexedAttestation[];
98
101
  /** Seen timestamp seconds */
99
102
  seenTimestampSec: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAC,oBAAoB,EAAE,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAExF,OAAO,EAAC,sBAAsB,EAAE,gBAAgB,EAAqB,MAAM,4BAA4B,CAAC;AACxG,OAAO,KAAK,EAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,uBAAuB,EAAC,MAAM,yBAAyB,CAAC;AAEhE,oBAAY,iBAAiB;IAC3B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,UAAU,gBAAgB;CAC3B;AAED,oBAAY,mBAAmB;IAC7B,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAED,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC;IACnC,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;CACpC,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE9D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAMrG;AAED,oBAAY,oBAAoB;IAC9B,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,oBAAY,qBAAqB;IAC/B,gFAAgF;IAChF,UAAU,IAAA;IACV;;;;OAIG;IACH,IAAI,IAAA;CACL;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAC1C;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,6BAA6B;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,WAAW,CAAC;IACxB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,eAAe,EAAE,IAAI,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,4FAA4F;IAC5F,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,0GAA0G;IAC1G,eAAe,EAAE,oBAAoB,GAAG,sBAAsB,CAAC;CAChE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAC,oBAAoB,EAAE,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAExF,OAAO,EAAC,sBAAsB,EAAE,gBAAgB,EAAqB,MAAM,4BAA4B,CAAC;AACxG,OAAO,KAAK,EAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,uBAAuB,EAAC,MAAM,yBAAyB,CAAC;AAEhE,oBAAY,iBAAiB;IAC3B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,UAAU,gBAAgB;CAC3B;AAED,oBAAY,mBAAmB;IAC7B,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAED,KAAK,cAAc,GAAG;IACpB,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC;IACnC,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;CACpC,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE9D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAMrG;AAED,oBAAY,oBAAoB;IAC9B,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,oBAAY,qBAAqB;IAC/B,gFAAgF;IAChF,UAAU,IAAA;IACV;;;;OAIG;IACH,IAAI,IAAA;CACL;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAC1C;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,qBAAqB,CAAC;IAC1C,6BAA6B;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,WAAW,CAAC;IACxB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,eAAe,EAAE,IAAI,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C;;;OAGG;IACH,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,0GAA0G;IAC1G,eAAe,EAAE,oBAAoB,GAAG,sBAAsB,CAAC;CAChE,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlock.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAElE,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAIjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAE,IAAI,EAAQ,MAAM,iBAAiB,CAAC;AAGhE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAS,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,oBAAoB,EAAC,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAO3C,OAAO,EAAC,iBAAiB,EAA+B,MAAM,oCAAoC,CAAC;AAKnG;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,WAAW,EAAE,EAC1B,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,EACxD,IAAI,EAAE,gBAAgB,GAAG,eAAe,GACvC,OAAO,CAAC;IACT,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,eAAe,EAAE,sBAAsB,EAAE,CAAC;IAC1C,iBAAiB,EAAE,GAAG,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IACrD,0BAA0B,EAAE,kBAAkB,EAAE,EAAE,CAAC;CACpD,CAAC,CA6QD"}
1
+ {"version":3,"file":"verifyBlock.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAElE,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAIjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAE,IAAI,EAAQ,MAAM,iBAAiB,CAAC;AAGhE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAS,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,oBAAoB,EAAC,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAO3C,OAAO,EAAC,iBAAiB,EAA+B,MAAM,oCAAoC,CAAC;AAKnG;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,WAAW,EAAE,EAC1B,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,EACxD,IAAI,EAAE,gBAAgB,GAAG,eAAe,GACvC,OAAO,CAAC;IACT,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,eAAe,EAAE,sBAAsB,EAAE,CAAC;IAC1C,iBAAiB,EAAE,GAAG,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IACrD,0BAA0B,EAAE,kBAAkB,EAAE,EAAE,CAAC;CACpD,CAAC,CA4RD"}
@@ -1,6 +1,6 @@
1
1
  import { ExecutionStatus } from "@lodestar/fork-choice";
2
2
  import { ForkName, ForkSeq, isForkPostFulu } from "@lodestar/params";
3
- import { DataAvailabilityStatus, computeEpochAtSlot, getIndexedAttestation, signedBlockToSignedHeader, } from "@lodestar/state-transition";
3
+ import { DataAvailabilityStatus, computeEpochAtSlot, getAttestingIndices, signedBlockToSignedHeader, } from "@lodestar/state-transition";
4
4
  import { getBlobKzgCommitments } from "../../util/dataColumns.js";
5
5
  import { callInNextEventLoop } from "../../util/eventLoop.js";
6
6
  import { BlockError, BlockErrorCode } from "../errors/index.js";
@@ -83,7 +83,13 @@ export async function verifyBlocksInEpoch(parentBlock, blockInputs, payloadEnvel
83
83
  // we should have the shuffling inside ShufflingCache most of the time
84
84
  const shuffling = this.shufflingCache.getSync(attEpoch, preState0.getShufflingDecisionRoot(attEpoch)) ??
85
85
  preState0.getShufflingAtEpoch(attEpoch);
86
- return getIndexedAttestation(shuffling, fork, attestation);
86
+ // Unlike getIndexedAttestation, keep attestingIndices in committee order: sorting them dominates building
87
+ // these on mainnet blocks. See FullyVerifiedBlock.indexedAttestations.
88
+ return {
89
+ attestingIndices: getAttestingIndices(shuffling, fork, attestation),
90
+ data: attestation.data,
91
+ signature: attestation.signature,
92
+ };
87
93
  });
88
94
  }
89
95
  // Pick the data-availability source by fork:
@@ -99,7 +105,7 @@ export async function verifyBlocksInEpoch(parentBlock, blockInputs, payloadEnvel
99
105
  const payloadInputsForDa = payloadEnvelopes !== null
100
106
  ? Array.from(payloadEnvelopes.values()).filter((payloadInput) => payloadInput.hasPayloadEnvelope())
101
107
  : [];
102
- const { dataAvailabilityStatuses, availableTime } = await verifyPayloadsDataAvailability(payloadInputsForDa, abortController.signal);
108
+ const { dataAvailabilityStatuses, availableTime } = await verifyPayloadsDataAvailability(this.config, payloadInputsForDa, abortController.signal);
103
109
  const payloadDAStatuses = new Map();
104
110
  for (let i = 0; i < payloadInputsForDa.length; i++) {
105
111
  payloadDAStatuses.set(payloadInputsForDa[i].slot, dataAvailabilityStatuses[i]);
@@ -120,20 +126,25 @@ export async function verifyBlocksInEpoch(parentBlock, blockInputs, payloadEnvel
120
126
  };
121
127
  })();
122
128
  // batch all I/O operations to reduce overhead
123
- const [segmentExecStatus, { blockDAStatuses, payloadDAStatuses, availableTime }, { postStates, proposerBalanceDeltas, verifyStateTime }, { verifySignaturesTime },] = await Promise.all([
129
+ const [segmentExecStatus, { blockDAStatuses, payloadDAStatuses, availableTime }, { verifySignaturesTime }, { postStates, proposerBalanceDeltas, verifyStateTime },] = await Promise.all([
124
130
  verifyExecutionPayloadsPromise,
125
131
  // data availability (fork-specific; see daAvailabilityPromise above)
126
132
  daAvailabilityPromise,
133
+ // All signatures at once. Must be called before verifyBlocksStateTransitionOnly()
134
+ // so we hand the BLS job to the worker pool before the main thread
135
+ // is busy with the state transition.
136
+ verifyBlocksSignatures(this.config, this.bls, this.logger, this.metrics, preState0, blocks, indexedAttestationsByBlock, opts),
127
137
  // Run state transition only
128
- // TODO: Ensure it yields to allow flushing to workers and engine API
129
138
  verifyBlocksStateTransitionOnly(preState0, blockInputs,
130
139
  // hack availability for state transition eval as availability is separately determined
131
140
  blocks.map(() => DataAvailabilityStatus.Available), this.serializedCache, this.logger, this.metrics, this.validatorMonitor, abortController.signal, opts),
132
- // All signatures at once
133
- verifyBlocksSignatures(this.config, this.bls, this.logger, this.metrics, preState0, blocks, indexedAttestationsByBlock, opts),
134
141
  // TODO GLOAS: can verify payload signatures in batch too
135
142
  // maybe chain with the above verifyBlocksSignatures()
136
143
  ]);
144
+ if (blockInputs.length === 1 && opts.seenTimestampSec !== undefined) {
145
+ const consensusVerifiedTime = Math.max(verifyStateTime, verifySignaturesTime);
146
+ this.metrics?.gossipBlock.receivedToConsensusVerifiedTime.observe(consensusVerifiedTime / 1000 - opts.seenTimestampSec);
147
+ }
137
148
  for (const blockInput of blockInputs) {
138
149
  const block = blockInput.getBlock();
139
150
  const { slot, proposerIndex } = block.message;
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlock.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifyBlock.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlock.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlocksDataAvailability.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksDataAvailability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAiB,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAIlE,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAEhD;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IACT,wBAAwB,EAAE,sBAAsB,EAAE,CAAC;IACnD,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAyBD"}
1
+ {"version":3,"file":"verifyBlocksDataAvailability.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksDataAvailability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAGlE,OAAO,EAAiB,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAIlE,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAEhD;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,WAAW,EAAE,EACrB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IACT,wBAAwB,EAAE,sBAAsB,EAAE,CAAC;IACnD,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAgCD"}
@@ -1,4 +1,6 @@
1
1
  import { DataAvailabilityStatus } from "@lodestar/state-transition";
2
+ import { TimeoutError } from "@lodestar/utils";
3
+ import { BlockError, BlockErrorCode } from "../errors/index.js";
2
4
  import { DAType } from "./blockInput/index.js";
3
5
  // we can now wait for full 12 seconds because unavailable block sync will try pulling
4
6
  // the blobs from the network anyway after 500ms of seeing the block
@@ -14,7 +16,12 @@ export async function verifyBlocksDataAvailability(blocks, signal) {
14
16
  for (const blockInput of blocks) {
15
17
  // block verification is triggered on a verified gossip block so we only need to wait for all data
16
18
  if (!blockInput.hasAllData()) {
17
- promises.push(blockInput.waitForAllData(BLOB_AVAILABILITY_TIMEOUT, signal));
19
+ promises.push(blockInput.waitForAllData(BLOB_AVAILABILITY_TIMEOUT, signal).catch((e) => {
20
+ if (e instanceof TimeoutError) {
21
+ throw new BlockError(blockInput.getBlock(), { code: BlockErrorCode.DATA_UNAVAILABLE });
22
+ }
23
+ throw e;
24
+ }));
18
25
  }
19
26
  }
20
27
  await Promise.all(promises);
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlocksDataAvailability.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksDataAvailability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAS,MAAM,EAAc,MAAM,uBAAuB,CAAC;AAElE,sFAAsF;AACtF,oEAAoE;AACpE,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,MAAqB,EACrB,MAAmB;IAKnB,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;QAChC,kGAAkG;QAClG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IACzG,MAAM,wBAAwB,GAA6B,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACnF,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YACtC,OAAO,sBAAsB,CAAC,WAAW,CAAC;QAC5C,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,OAAO,sBAAsB,CAAC,OAAO,CAAC;QACxC,CAAC;QACD,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;YAC5B,OAAO,sBAAsB,CAAC,UAAU,CAAC;QAC3C,CAAC;QACD,OAAO,sBAAsB,CAAC,SAAS,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,OAAO,EAAC,wBAAwB,EAAE,aAAa,EAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"verifyBlocksDataAvailability.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksDataAvailability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAS,MAAM,EAAc,MAAM,uBAAuB,CAAC;AAElE,sFAAsF;AACtF,oEAAoE;AACpE,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,MAAqB,EACrB,MAAmB;IAKnB,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;QAChC,kGAAkG;QAClG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CACX,UAAU,CAAC,cAAc,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACvE,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;oBAC9B,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAC,IAAI,EAAE,cAAc,CAAC,gBAAgB,EAAC,CAAC,CAAC;gBACvF,CAAC;gBACD,MAAM,CAAC,CAAC;YACV,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IACzG,MAAM,wBAAwB,GAA6B,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACnF,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YACtC,OAAO,sBAAsB,CAAC,WAAW,CAAC;QAC5C,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;YACvC,OAAO,sBAAsB,CAAC,OAAO,CAAC;QACxC,CAAC;QACD,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;YAC5B,OAAO,sBAAsB,CAAC,UAAU,CAAC;QAC3C,CAAC;QACD,OAAO,sBAAsB,CAAC,SAAS,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,OAAO,EAAC,wBAAwB,EAAE,aAAa,EAAC,CAAC;AACnD,CAAC"}
@@ -10,7 +10,7 @@ import { BlockProcessOpts } from "../options.js";
10
10
  import { IBlockInput } from "./blockInput/types.js";
11
11
  import { ImportBlockOpts } from "./types.js";
12
12
  export type VerifyBlockExecutionPayloadModules = {
13
- executionEngine: IExecutionEngine;
13
+ executionEngine: Pick<IExecutionEngine, "notifyNewPayload">;
14
14
  clock: IClock;
15
15
  logger: Logger;
16
16
  metrics: Metrics | null;
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlocksExecutionPayloads.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksExecutionPayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAC,gBAAgB,EAAiD,MAAM,4BAA4B,CAAC;AAE5G,OAAO,EAAe,MAAM,EAAY,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAyB,gBAAgB,EAAC,MAAM,qCAAqC,CAAC;AAC7F,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAC,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,kCAAkC,GAAG;IAC/C,eAAe,EAAE,gBAAgB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,KAAK,aAAa,GAAG;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,CAAC;AACjE,MAAM,MAAM,iBAAiB,GACzB;IACE,WAAW,EAAE,IAAI,CAAC;IAClB,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IAAC,WAAW,EAAE,aAAa,CAAC;IAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAA;CAAC,CAAC;AAEzE,KAAK,4BAA4B,GAC7B;IAAC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC;IAAC,WAAW,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,GAClG;IAAC,eAAe,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,CAAC;AAE3E,KAAK,4BAA4B,GAC7B,4BAA4B,GAC5B;IAAC,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC;IAAC,WAAW,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAC,GACxF;IAAC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAC,GAC3F;IAAC,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAC,CAAC;AAEzF;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,kCAAkC,EACzC,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,WAAW,EAAE,EAC1B,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,gBAAgB,GAAG,eAAe,GACvC,OAAO,CAAC,iBAAiB,CAAC,CAwE5B;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,kCAAkC,EACzC,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,4BAA4B,CAAC,CAqGvC"}
1
+ {"version":3,"file":"verifyBlocksExecutionPayloads.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksExecutionPayloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAC,gBAAgB,EAAiD,MAAM,4BAA4B,CAAC;AAE5G,OAAO,EAAe,MAAM,EAAY,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAyB,gBAAgB,EAAC,MAAM,qCAAqC,CAAC;AAC7F,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAC,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAC,gBAAgB,EAAC,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,kCAAkC,GAAG;IAC/C,eAAe,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,KAAK,aAAa,GAAG;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,CAAC;AACjE,MAAM,MAAM,iBAAiB,GACzB;IACE,WAAW,EAAE,IAAI,CAAC;IAClB,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;CACvB,GACD;IAAC,WAAW,EAAE,aAAa,CAAC;IAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAA;CAAC,CAAC;AAEzE,KAAK,4BAA4B,GAC7B;IAAC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC;IAAC,WAAW,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,GAClG;IAAC,eAAe,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,UAAU,CAAA;CAAC,CAAC;AAE3E,KAAK,4BAA4B,GAC7B,4BAA4B,GAC5B;IAAC,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC;IAAC,WAAW,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAC,GACxF;IAAC,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAC,GAC3F;IAAC,eAAe,EAAE,eAAe,CAAC,QAAQ,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAC,CAAC;AAEzF;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,kCAAkC,EACzC,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,WAAW,EAAE,EAC1B,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,gBAAgB,GAAG,eAAe,GACvC,OAAO,CAAC,iBAAiB,CAAC,CAwE5B;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,kCAAkC,EACzC,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,4BAA4B,CAAC,CAqGvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlocksSanityChecks.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSanityChecks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,WAAW,EAAE,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAC,OAAO,EAAE,IAAI,EAAqB,MAAM,iBAAiB,CAAC;AAElE,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,oBAAoB,EAAC,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE;IACL,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,iBAAiB,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;CAC9C,EACD,MAAM,EAAE,WAAW,EAAE,EACrB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,EACxD,IAAI,EAAE,eAAe,GACpB;IACD,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;CAChC,CAiHA"}
1
+ {"version":3,"file":"verifyBlocksSanityChecks.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSanityChecks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAkB,WAAW,EAAE,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAC,OAAO,EAAE,IAAI,EAAqB,MAAM,iBAAiB,CAAC;AAElE,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAE3C,OAAO,EAAC,aAAa,EAAC,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAC,oBAAoB,EAAC,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE;IACL,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,iBAAiB,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;CAC9C,EACD,MAAM,EAAE,WAAW,EAAE,EACrB,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,GAAG,IAAI,EACxD,IAAI,EAAE,eAAe,GACpB;IACD,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC;CAChC,CAoHA"}
@@ -1,3 +1,4 @@
1
+ import { ExecutionStatus } from "@lodestar/fork-choice";
1
2
  import { computeStartSlotAtEpoch } from "@lodestar/state-transition";
2
3
  import { isGloasBeaconBlock } from "@lodestar/types";
3
4
  import { toRootHex } from "@lodestar/utils";
@@ -88,6 +89,9 @@ export function verifyBlocksSanityChecks(chain, blocks, payloadEnvelopes, opts)
88
89
  parentBlock = parentBlockWithPayload;
89
90
  }
90
91
  }
92
+ if (parentBlock.executionStatus === ExecutionStatus.Invalid) {
93
+ throw new BlockError(block, { code: BlockErrorCode.PARENT_EXECUTION_INVALID, parentRoot });
94
+ }
91
95
  // Parent is known to the fork-choice
92
96
  parentBlockSlot = parentBlock.slot;
93
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlocksSanityChecks.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSanityChecks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifyBlocksSanityChecks.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSanityChecks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlocksSignatures.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSignatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAIjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,iBAAiB,EAAE,EAC3B,0BAA0B,EAAE,kBAAkB,EAAE,EAAE,EAClD,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAC,CAAC,CAuDzC;AAED,KAAK,WAAW,GAAG;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAoB3G"}
1
+ {"version":3,"file":"verifyBlocksSignatures.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSignatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAIjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,iBAAiB,EAAE,EAC3B,0BAA0B,EAAE,kBAAkB,EAAE,EAAE,EAClD,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAC,CAAC,CAyDzC;AAED,KAAK,WAAW,GAAG;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAC,GAAG;IAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAoB3G"}
@@ -14,10 +14,9 @@ export async function verifyBlocksSignatures(config, bls, logger, metrics, preSt
14
14
  const currentSyncCommitteeIndexed = isStatePostAltair(preState0)
15
15
  ? preState0.currentSyncCommitteeIndexed
16
16
  : new SyncCommitteeCacheEmpty();
17
- // Verifies signatures after running state transition, so all SyncCommittee signed roots are known at this point.
18
- // We must ensure block.slot <= state.slot before running getAllBlockSignatureSets().
19
- // NOTE: If in the future multiple blocks signatures are verified at once, all blocks must be in the same epoch
20
- // so the attester and proposer shufflings are correct.
17
+ // Runs concurrently with the state transition. Signature sets are built from preState0, which
18
+ // verifyBlocksInEpoch() guarantees is in the same epoch as every block, so the proposer and attester shufflings
19
+ // and the sync committee are the ones the blocks were signed under.
21
20
  for (const [i, block] of blocks.entries()) {
22
21
  // Use [i] to make clear that the index has to be correct to blame the right block below on BlockError()
23
22
  isValidPromises[i] = opts.validSignatures
@@ -27,7 +26,10 @@ export async function verifyBlocksSignatures(config, bls, logger, metrics, preSt
27
26
  // Verify signatures per block to track which block is invalid
28
27
  bls.verifySignatureSets(getBlockSignatureSets(config, currentSyncCommitteeIndexed, preState0, block, indexedAttestationsByBlock[i], {
29
28
  skipProposerSignature: opts.validProposerSignature,
30
- }));
29
+ }),
30
+ // Prioritize block verification over attestations, since
31
+ // attestations already buffer up to `MAX_BUFFER_WAIT_MS`
32
+ { priority: true });
31
33
  // getBlockSignatureSets() takes 45ms in benchmarks for 2022Q2 mainnet blocks (100 sigs). When syncing a 32 blocks
32
34
  // segments it will block the event loop for 1400 ms, which is too much. This call will allow the event loop to
33
35
  // yield, which will cause one block's state transition to run. However, the tradeoff is okay and doesn't slow sync
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlocksSignatures.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSignatures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifyBlocksSignatures.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksSignatures.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
+ import { ChainForkConfig } from "@lodestar/config";
1
2
  import { DataAvailabilityStatus } from "@lodestar/state-transition";
2
3
  import { PayloadEnvelopeInput } from "../seenCache/seenPayloadEnvelopeInput.js";
3
- export declare const PAYLOAD_DATA_AVAILABILITY_TIMEOUT = 12000;
4
4
  /**
5
5
  * Verifies that all payload envelope inputs have their data columns available.
6
- * - Waits a max of PAYLOAD_DATA_AVAILABILITY_TIMEOUT for all data to be available
6
+ * - Waits a max of one slot duration of the payload's fork for all data to be available
7
7
  * - Returns the time at which all data was available
8
8
  * - Returns the data availability status for each payload input
9
9
  */
10
- export declare function verifyPayloadsDataAvailability(payloadInputs: PayloadEnvelopeInput[], signal: AbortSignal): Promise<{
10
+ export declare function verifyPayloadsDataAvailability(config: ChainForkConfig, payloadInputs: PayloadEnvelopeInput[], signal: AbortSignal): Promise<{
11
11
  dataAvailabilityStatuses: DataAvailabilityStatus[];
12
12
  availableTime: number;
13
13
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"verifyPayloadsDataAvailability.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyPayloadsDataAvailability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAC,oBAAoB,EAAC,MAAM,0CAA0C,CAAC;AAI9E,eAAO,MAAM,iCAAiC,QAAS,CAAC;AAExD;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,aAAa,EAAE,oBAAoB,EAAE,EACrC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IACT,wBAAwB,EAAE,sBAAsB,EAAE,CAAC;IACnD,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAoBD"}
1
+ {"version":3,"file":"verifyPayloadsDataAvailability.d.ts","sourceRoot":"","sources":["../../../src/chain/blocks/verifyPayloadsDataAvailability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAGlE,OAAO,EAAC,oBAAoB,EAAC,MAAM,0CAA0C,CAAC;AAG9E;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,oBAAoB,EAAE,EACrC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IACT,wBAAwB,EAAE,sBAAsB,EAAE,CAAC;IACnD,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CA4BD"}
@@ -1,18 +1,23 @@
1
1
  import { DataAvailabilityStatus } from "@lodestar/state-transition";
2
- // we can now wait for full 12 seconds because sync and reconstruction will try pulling
3
- // the data columns from the network anyway while the envelope is being processed
4
- export const PAYLOAD_DATA_AVAILABILITY_TIMEOUT = 12_000;
2
+ import { TimeoutError } from "@lodestar/utils";
3
+ import { PayloadError, PayloadErrorCode } from "./importExecutionPayload.js";
5
4
  /**
6
5
  * Verifies that all payload envelope inputs have their data columns available.
7
- * - Waits a max of PAYLOAD_DATA_AVAILABILITY_TIMEOUT for all data to be available
6
+ * - Waits a max of one slot duration of the payload's fork for all data to be available
8
7
  * - Returns the time at which all data was available
9
8
  * - Returns the data availability status for each payload input
10
9
  */
11
- export async function verifyPayloadsDataAvailability(payloadInputs, signal) {
10
+ export async function verifyPayloadsDataAvailability(config, payloadInputs, signal) {
12
11
  const promises = [];
13
12
  for (const payloadInput of payloadInputs) {
14
13
  if (!payloadInput.hasAllData()) {
15
- promises.push(payloadInput.waitForAllData(PAYLOAD_DATA_AVAILABILITY_TIMEOUT, signal));
14
+ // Sync and reconstruction keep pulling the data columns from the network while we wait
15
+ promises.push(payloadInput.waitForAllData(config.getSlotDurationMs(payloadInput.forkName), signal).catch((e) => {
16
+ if (e instanceof TimeoutError) {
17
+ throw new PayloadError(payloadInput, { code: PayloadErrorCode.DATA_UNAVAILABLE });
18
+ }
19
+ throw e;
20
+ }));
16
21
  }
17
22
  }
18
23
  await Promise.all(promises);
@@ -1 +1 @@
1
- {"version":3,"file":"verifyPayloadsDataAvailability.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyPayloadsDataAvailability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAIlE,uFAAuF;AACvF,iFAAiF;AACjF,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC;AAExD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,aAAqC,EACrC,MAAmB;IAKnB,MAAM,QAAQ,GAAyC,EAAE,CAAC;IAC1D,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IACpH,MAAM,wBAAwB,GAA6B,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;QAC5F,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;YAC9B,OAAO,sBAAsB,CAAC,UAAU,CAAC;QAC3C,CAAC;QACD,OAAO,YAAY,CAAC,qBAAqB,EAAE,CAAC,MAAM,KAAK,CAAC;YACtD,CAAC,CAAC,sBAAsB,CAAC,WAAW;YACpC,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,OAAO,EAAC,wBAAwB,EAAE,aAAa,EAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"verifyPayloadsDataAvailability.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyPayloadsDataAvailability.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,MAAuB,EACvB,aAAqC,EACrC,MAAmB;IAKnB,MAAM,QAAQ,GAAyC,EAAE,CAAC;IAC1D,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;YAC/B,uFAAuF;YACvF,QAAQ,CAAC,IAAI,CACX,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC/F,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;oBAC9B,MAAM,IAAI,YAAY,CAAC,YAAY,EAAE,EAAC,IAAI,EAAE,gBAAgB,CAAC,gBAAgB,EAAC,CAAC,CAAC;gBAClF,CAAC;gBACD,MAAM,CAAC,CAAC;YACV,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IACpH,MAAM,wBAAwB,GAA6B,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;QAC5F,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;YAC9B,OAAO,sBAAsB,CAAC,UAAU,CAAC;QAC3C,CAAC;QACD,OAAO,YAAY,CAAC,qBAAqB,EAAE,CAAC,MAAM,KAAK,CAAC;YACtD,CAAC,CAAC,sBAAsB,CAAC,WAAW;YACpC,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,OAAO,EAAC,wBAAwB,EAAE,aAAa,EAAC,CAAC;AACnD,CAAC"}
@@ -19,6 +19,8 @@ export type VerifySignatureOpts = {
19
19
  verifyOnMainThread?: boolean;
20
20
  /**
21
21
  * Some signature sets are more important than others, and should be verified first.
22
+ * Non-batchable priority jobs are posted to an idle worker before this call returns, so the caller
23
+ * can run synchronous work right after without delaying the verification.
22
24
  */
23
25
  priority?: boolean;
24
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/chain/bls/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AAEzD,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzF;;;;;OAKG;IACH,8BAA8B,CAC5B,IAAI,EAAE,uBAAuB,EAAE,EAC/B,OAAO,EAAE,UAAU,EACnB,IAAI,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,GACrD,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEtB,0DAA0D;IAC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC;CAC1B"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/chain/bls/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AAEzD,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzF;;;;;OAKG;IACH,8BAA8B,CAC5B,IAAI,EAAE,uBAAuB,EAAE,EAC/B,OAAO,EAAE,UAAU,EACnB,IAAI,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,GACrD,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEtB,0DAA0D;IAC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC;CAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,2BAA2B,CAAC;AAIlD,OAAO,EAAC,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAI3F,OAAO,EAGL,gBAAgB,EAKjB,MAAM,YAAY,CAAC;AAMpB,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,YAAY,EAAC,gBAAgB,EAAC,CAAC;AAiE/B;;;;;;;GAOG;AACH,qBAAa,wBAAyB,YAAW,YAAY;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkC;IACvD,OAAO,CAAC,YAAY,CAMJ;IAChB,OAAO,CAAC,uBAAuB,CAAU;IACzC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAK;IAExB,YAAY,OAAO,EAAE,+BAA+B,EAAE,OAAO,EAAE,+BAA+B,EAgB7F;IAED,aAAa,IAAI,OAAO,CAMvB;IAEK,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,CA2CjG;IAED;;OAEG;IACG,8BAA8B,CAClC,IAAI,EAAE,uBAAuB,EAAE,EAC/B,OAAO,EAAE,UAAU,EACnB,IAAI,GAAE,IAAI,CAAC,mBAAmB,EAAE,oBAAoB,CAAM,GACzD,OAAO,CAAC,OAAO,EAAE,CAAC,CAoBpB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB3B;IAED,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAoDpB;;OAEG;IACH,OAAO,CAAC,MAAM,CAuJZ;IAEF;;OAEG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;IACH,OAAO,CAAC,eAAe,CAarB;IAEF,OAAO,CAAC,oBAAoB;IAK5B,kBAAkB;IAClB,UAAgB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQnD;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,2BAA2B,CAAC;AAIlD,OAAO,EAAC,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAI3F,OAAO,EAGL,gBAAgB,EAKjB,MAAM,YAAY,CAAC;AAMpB,MAAM,MAAM,+BAA+B,GAAG;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,YAAY,EAAC,gBAAgB,EAAC,CAAC;AAiE/B;;;;;;;GAOG;AACH,qBAAa,wBAAyB,YAAW,YAAY;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkC;IACvD,OAAO,CAAC,YAAY,CAMJ;IAChB,OAAO,CAAC,uBAAuB,CAAU;IACzC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAK;IAExB,YAAY,OAAO,EAAE,+BAA+B,EAAE,OAAO,EAAE,+BAA+B,EAgB7F;IAED,aAAa,IAAI,OAAO,CAMvB;IAEK,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,CA2CjG;IAED;;OAEG;IACG,8BAA8B,CAClC,IAAI,EAAE,uBAAuB,EAAE,EAC/B,OAAO,EAAE,UAAU,EACnB,IAAI,GAAE,IAAI,CAAC,mBAAmB,EAAE,oBAAoB,CAAM,GACzD,OAAO,CAAC,OAAO,EAAE,CAAC,CAoBpB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB3B;IAED,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAwDpB;;OAEG;IACH,OAAO,CAAC,MAAM,CAuJZ;IAEF;;OAEG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;IACH,OAAO,CAAC,eAAe,CAarB;IAEF,OAAO,CAAC,oBAAoB;IAK5B,kBAAkB;IAClB,UAAgB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQnD;CACF"}
@@ -234,17 +234,19 @@ export class BlsMultiThreadWorkerPool {
234
234
  this.runBufferedJobs("size");
235
235
  }
236
236
  }
237
+ // First hand work to an idle worker before returning to the caller.
238
+ // Deferring the post to the next macrotask would make the worker
239
+ // sit idle while waiting for the next synchronous work
240
+ else if (job.opts.priority) {
241
+ this.jobs.unshift(job);
242
+ void this.runJob();
243
+ }
237
244
  // Push job and schedule to call `runJob` in the next macro event loop cycle.
238
245
  // This is useful to allow batching job submitted from a synchronous for loop,
239
246
  // and to prevent large stacks since runJob may be called recursively.
240
247
  else {
241
- if (job.opts.priority) {
242
- this.jobs.unshift(job);
243
- }
244
- else {
245
- this.jobs.push(job);
246
- }
247
- callInNextEventLoop(this.runJob);
248
+ this.jobs.push(job);
249
+ callInNextEventLoop(() => void this.runJob());
248
250
  }
249
251
  }
250
252
  /**
@@ -273,7 +275,7 @@ export class BlsMultiThreadWorkerPool {
273
275
  const jobsStarted = [];
274
276
  let completedJobsCount = 0;
275
277
  if (this.jobs.length > 0) {
276
- callInNextEventLoop(this.runJob);
278
+ callInNextEventLoop(() => void this.runJob());
277
279
  }
278
280
  try {
279
281
  let startedJobsDefault = 0;
@@ -314,7 +316,7 @@ export class BlsMultiThreadWorkerPool {
314
316
  if (workReqs.length === 0) {
315
317
  worker.status = { code: WorkerStatusCode.idle, workerApi };
316
318
  this.workersBusy--;
317
- callInNextEventLoop(this.runJob);
319
+ callInNextEventLoop(() => void this.runJob());
318
320
  return;
319
321
  }
320
322
  this.metrics?.blsThreadPool.totalJobsGroupsStarted.inc(1);
@@ -381,7 +383,7 @@ export class BlsMultiThreadWorkerPool {
381
383
  worker.status = { code: WorkerStatusCode.idle, workerApi };
382
384
  this.workersBusy--;
383
385
  // Potentially run a new job
384
- callInNextEventLoop(this.runJob);
386
+ callInNextEventLoop(() => void this.runJob());
385
387
  };
386
388
  /**
387
389
  * Grab pending work up to a max number of signatures
@@ -418,7 +420,7 @@ export class BlsMultiThreadWorkerPool {
418
420
  this.jobs.unshift(job);
419
421
  }
420
422
  this.bufferedJobs = null;
421
- callInNextEventLoop(this.runJob);
423
+ callInNextEventLoop(() => void this.runJob());
422
424
  }
423
425
  };
424
426
  observeJobCompletion(job, outcome) {