@lodestar/beacon-node 1.35.0-dev.47c570ab76 → 1.35.0-dev.56313c7299

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 (500) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +46 -58
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/config/constants.d.ts +0 -5
  4. package/lib/api/impl/config/constants.js +1 -6
  5. package/lib/api/impl/config/constants.js.map +1 -1
  6. package/lib/api/impl/debug/index.js +1 -1
  7. package/lib/api/impl/debug/index.js.map +1 -1
  8. package/lib/api/impl/errors.js +0 -2
  9. package/lib/api/impl/errors.js.map +1 -1
  10. package/lib/api/impl/index.d.ts +3 -3
  11. package/lib/api/impl/index.js +3 -3
  12. package/lib/api/impl/index.js.map +1 -1
  13. package/lib/api/impl/lodestar/index.js +1 -1
  14. package/lib/api/impl/lodestar/index.js.map +1 -1
  15. package/lib/api/impl/validator/index.js +1 -2
  16. package/lib/api/impl/validator/index.js.map +1 -1
  17. package/lib/api/rest/activeSockets.js +2 -3
  18. package/lib/api/rest/activeSockets.js.map +1 -1
  19. package/lib/api/rest/base.d.ts +1 -1
  20. package/lib/api/rest/base.js +2 -6
  21. package/lib/api/rest/base.js.map +1 -1
  22. package/lib/api/rest/index.js +0 -2
  23. package/lib/api/rest/index.js.map +1 -1
  24. package/lib/api/rest/swaggerUI.js +2 -4
  25. package/lib/api/rest/swaggerUI.js.map +1 -1
  26. package/lib/chain/archiveStore/archiveStore.js +38 -49
  27. package/lib/chain/archiveStore/archiveStore.js.map +1 -1
  28. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +0 -3
  29. package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
  30. package/lib/chain/archiveStore/index.d.ts +1 -1
  31. package/lib/chain/archiveStore/index.js +1 -1
  32. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +0 -5
  33. package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
  34. package/lib/chain/balancesCache.js +3 -1
  35. package/lib/chain/balancesCache.js.map +1 -1
  36. package/lib/chain/beaconProposerCache.js +0 -1
  37. package/lib/chain/beaconProposerCache.js.map +1 -1
  38. package/lib/chain/blocks/blockInput/blockInput.d.ts +7 -19
  39. package/lib/chain/blocks/blockInput/blockInput.js +88 -132
  40. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  41. package/lib/chain/blocks/blockInput/index.d.ts +1 -1
  42. package/lib/chain/blocks/blockInput/index.js +1 -1
  43. package/lib/chain/blocks/blockInput/types.d.ts +10 -19
  44. package/lib/chain/blocks/blockInput/types.js +0 -1
  45. package/lib/chain/blocks/blockInput/types.js.map +1 -1
  46. package/lib/chain/blocks/blockInput/utils.d.ts +4 -0
  47. package/lib/chain/blocks/blockInput/utils.js +29 -6
  48. package/lib/chain/blocks/blockInput/utils.js.map +1 -1
  49. package/lib/chain/blocks/importBlock.js +12 -16
  50. package/lib/chain/blocks/importBlock.js.map +1 -1
  51. package/lib/chain/blocks/index.d.ts +5 -6
  52. package/lib/chain/blocks/index.js +4 -5
  53. package/lib/chain/blocks/index.js.map +1 -1
  54. package/lib/chain/blocks/types.d.ts +106 -3
  55. package/lib/chain/blocks/types.js +119 -0
  56. package/lib/chain/blocks/types.js.map +1 -1
  57. package/lib/chain/blocks/utils/chainSegment.d.ts +2 -2
  58. package/lib/chain/blocks/utils/chainSegment.js +2 -2
  59. package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
  60. package/lib/chain/blocks/verifyBlock.d.ts +3 -3
  61. package/lib/chain/blocks/verifyBlock.js +14 -15
  62. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  63. package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts +22 -7
  64. package/lib/chain/blocks/verifyBlocksDataAvailability.js +110 -18
  65. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  66. package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +3 -4
  67. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +22 -24
  68. package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
  69. package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts +3 -4
  70. package/lib/chain/blocks/verifyBlocksSanityChecks.js +2 -2
  71. package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
  72. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +2 -3
  73. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +2 -2
  74. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  75. package/lib/chain/blocks/writeBlockInputToDb.d.ts +3 -3
  76. package/lib/chain/blocks/writeBlockInputToDb.js +66 -61
  77. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  78. package/lib/chain/bls/multithread/index.js +163 -168
  79. package/lib/chain/bls/multithread/index.js.map +1 -1
  80. package/lib/chain/bls/singleThread.js +0 -1
  81. package/lib/chain/bls/singleThread.js.map +1 -1
  82. package/lib/chain/chain.d.ts +11 -13
  83. package/lib/chain/chain.js +20 -79
  84. package/lib/chain/chain.js.map +1 -1
  85. package/lib/chain/emitter.d.ts +2 -43
  86. package/lib/chain/emitter.js +0 -18
  87. package/lib/chain/emitter.js.map +1 -1
  88. package/lib/chain/errors/blobSidecarError.d.ts +0 -24
  89. package/lib/chain/errors/blobSidecarError.js +0 -10
  90. package/lib/chain/errors/blobSidecarError.js.map +1 -1
  91. package/lib/chain/errors/blockError.js +0 -1
  92. package/lib/chain/errors/blockError.js.map +1 -1
  93. package/lib/chain/errors/dataColumnSidecarError.d.ts +0 -42
  94. package/lib/chain/errors/dataColumnSidecarError.js +0 -14
  95. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  96. package/lib/chain/errors/gossipValidation.js +0 -1
  97. package/lib/chain/errors/gossipValidation.js.map +1 -1
  98. package/lib/chain/errors/index.d.ts +2 -2
  99. package/lib/chain/errors/index.js +2 -2
  100. package/lib/chain/errors/index.js.map +1 -1
  101. package/lib/chain/forkChoice/index.js.map +1 -1
  102. package/lib/chain/genesis/genesis.js +5 -16
  103. package/lib/chain/genesis/genesis.js.map +1 -1
  104. package/lib/chain/index.d.ts +2 -2
  105. package/lib/chain/index.js +2 -2
  106. package/lib/chain/index.js.map +1 -1
  107. package/lib/chain/interface.d.ts +9 -12
  108. package/lib/chain/interface.js.map +1 -1
  109. package/lib/chain/lightClient/index.js +9 -16
  110. package/lib/chain/lightClient/index.js.map +1 -1
  111. package/lib/chain/lightClient/proofs.js.map +1 -1
  112. package/lib/chain/opPools/aggregatedAttestationPool.js +9 -14
  113. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  114. package/lib/chain/opPools/attestationPool.js +3 -8
  115. package/lib/chain/opPools/attestationPool.js.map +1 -1
  116. package/lib/chain/opPools/index.d.ts +1 -1
  117. package/lib/chain/opPools/index.js +1 -1
  118. package/lib/chain/opPools/index.js.map +1 -1
  119. package/lib/chain/opPools/opPool.js +12 -10
  120. package/lib/chain/opPools/opPool.js.map +1 -1
  121. package/lib/chain/opPools/syncCommitteeMessagePool.js +6 -9
  122. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  123. package/lib/chain/opPools/syncContributionAndProofPool.js +2 -5
  124. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  125. package/lib/chain/options.js +1 -1
  126. package/lib/chain/options.js.map +1 -1
  127. package/lib/chain/prepareNextSlot.js +136 -141
  128. package/lib/chain/prepareNextSlot.js.map +1 -1
  129. package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
  130. package/lib/chain/produceBlock/produceBlockBody.js +10 -3
  131. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  132. package/lib/chain/regen/errors.js +0 -1
  133. package/lib/chain/regen/errors.js.map +1 -1
  134. package/lib/chain/regen/index.d.ts +1 -1
  135. package/lib/chain/regen/index.js +1 -1
  136. package/lib/chain/regen/index.js.map +1 -1
  137. package/lib/chain/regen/queued.js +28 -35
  138. package/lib/chain/regen/queued.js.map +1 -1
  139. package/lib/chain/regen/regen.js +0 -1
  140. package/lib/chain/regen/regen.js.map +1 -1
  141. package/lib/chain/reprocess.js +1 -3
  142. package/lib/chain/reprocess.js.map +1 -1
  143. package/lib/chain/seenCache/index.d.ts +1 -1
  144. package/lib/chain/seenCache/index.js +1 -1
  145. package/lib/chain/seenCache/index.js.map +1 -1
  146. package/lib/chain/seenCache/seenAggregateAndProof.js +6 -7
  147. package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
  148. package/lib/chain/seenCache/seenAttestationData.js +2 -5
  149. package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
  150. package/lib/chain/seenCache/seenAttesters.js +4 -2
  151. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  152. package/lib/chain/seenCache/seenBlockInput.d.ts +84 -0
  153. package/lib/chain/seenCache/seenBlockInput.js +225 -0
  154. package/lib/chain/seenCache/seenBlockInput.js.map +1 -0
  155. package/lib/chain/seenCache/seenBlockProposers.js +4 -2
  156. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  157. package/lib/chain/seenCache/seenCommittee.js +3 -1
  158. package/lib/chain/seenCache/seenCommittee.js.map +1 -1
  159. package/lib/chain/seenCache/seenCommitteeContribution.js +2 -3
  160. package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
  161. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +78 -74
  162. package/lib/chain/seenCache/seenGossipBlockInput.js +369 -235
  163. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  164. package/lib/chain/shufflingCache.js +2 -5
  165. package/lib/chain/shufflingCache.js.map +1 -1
  166. package/lib/chain/stateCache/blockStateCacheImpl.js +7 -13
  167. package/lib/chain/stateCache/blockStateCacheImpl.js.map +1 -1
  168. package/lib/chain/stateCache/datastore/db.js +0 -1
  169. package/lib/chain/stateCache/datastore/db.js.map +1 -1
  170. package/lib/chain/stateCache/datastore/file.js +0 -1
  171. package/lib/chain/stateCache/datastore/file.js.map +1 -1
  172. package/lib/chain/stateCache/datastore/index.d.ts +1 -1
  173. package/lib/chain/stateCache/datastore/index.js +1 -1
  174. package/lib/chain/stateCache/datastore/index.js.map +1 -1
  175. package/lib/chain/stateCache/fifoBlockStateCache.js +0 -10
  176. package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
  177. package/lib/chain/stateCache/inMemoryCheckpointsCache.js +4 -10
  178. package/lib/chain/stateCache/inMemoryCheckpointsCache.js.map +1 -1
  179. package/lib/chain/stateCache/index.d.ts +1 -1
  180. package/lib/chain/stateCache/index.js +1 -1
  181. package/lib/chain/stateCache/index.js.map +1 -1
  182. package/lib/chain/stateCache/mapMetrics.js +4 -4
  183. package/lib/chain/stateCache/mapMetrics.js.map +1 -1
  184. package/lib/chain/stateCache/persistentCheckpointsCache.js +6 -14
  185. package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
  186. package/lib/chain/validation/blobSidecar.d.ts +3 -8
  187. package/lib/chain/validation/blobSidecar.js +31 -73
  188. package/lib/chain/validation/blobSidecar.js.map +1 -1
  189. package/lib/chain/validation/dataColumnSidecar.d.ts +9 -7
  190. package/lib/chain/validation/dataColumnSidecar.js +57 -95
  191. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  192. package/lib/chain/validation/index.d.ts +1 -1
  193. package/lib/chain/validation/index.js +1 -1
  194. package/lib/chain/validation/index.js.map +1 -1
  195. package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +2 -1
  196. package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
  197. package/lib/chain/validatorMonitor.d.ts +3 -1
  198. package/lib/chain/validatorMonitor.js +1 -2
  199. package/lib/chain/validatorMonitor.js.map +1 -1
  200. package/lib/db/beacon.js +0 -24
  201. package/lib/db/beacon.js.map +1 -1
  202. package/lib/db/index.d.ts +1 -1
  203. package/lib/db/index.js.map +1 -1
  204. package/lib/db/repositories/blobSidecars.js.map +1 -1
  205. package/lib/db/repositories/blockArchive.js +3 -2
  206. package/lib/db/repositories/blockArchive.js.map +1 -1
  207. package/lib/db/repositories/dataColumnSidecar.js +1 -1
  208. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  209. package/lib/db/repositories/dataColumnSidecarArchive.js +1 -1
  210. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  211. package/lib/db/repositories/depositDataRoot.js +0 -1
  212. package/lib/db/repositories/depositDataRoot.js.map +1 -1
  213. package/lib/db/repositories/index.d.ts +10 -10
  214. package/lib/db/repositories/index.js +9 -9
  215. package/lib/db/repositories/index.js.map +1 -1
  216. package/lib/db/single/preGenesisState.js +0 -6
  217. package/lib/db/single/preGenesisState.js.map +1 -1
  218. package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -5
  219. package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +1 -1
  220. package/lib/eth1/eth1DataCache.js +0 -2
  221. package/lib/eth1/eth1DataCache.js.map +1 -1
  222. package/lib/eth1/eth1DepositDataTracker.js +5 -18
  223. package/lib/eth1/eth1DepositDataTracker.js.map +1 -1
  224. package/lib/eth1/eth1DepositsCache.js +0 -3
  225. package/lib/eth1/eth1DepositsCache.js.map +1 -1
  226. package/lib/eth1/eth1MergeBlockTracker.js +4 -10
  227. package/lib/eth1/eth1MergeBlockTracker.js.map +1 -1
  228. package/lib/eth1/index.js +0 -2
  229. package/lib/eth1/index.js.map +1 -1
  230. package/lib/eth1/provider/eth1Provider.d.ts +2 -1
  231. package/lib/eth1/provider/eth1Provider.js +2 -6
  232. package/lib/eth1/provider/eth1Provider.js.map +1 -1
  233. package/lib/eth1/provider/jsonRpcHttpClient.d.ts +1 -1
  234. package/lib/eth1/provider/jsonRpcHttpClient.js +2 -16
  235. package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -1
  236. package/lib/eth1/provider/jwt.js.map +1 -1
  237. package/lib/eth1/provider/utils.d.ts +0 -5
  238. package/lib/eth1/provider/utils.js +1 -9
  239. package/lib/eth1/provider/utils.js.map +1 -1
  240. package/lib/eth1/utils/deposits.js.map +1 -1
  241. package/lib/execution/builder/cache.js +0 -6
  242. package/lib/execution/builder/cache.js.map +1 -1
  243. package/lib/execution/builder/http.js +8 -14
  244. package/lib/execution/builder/http.js.map +1 -1
  245. package/lib/execution/builder/index.js.map +1 -1
  246. package/lib/execution/engine/disabled.js +4 -2
  247. package/lib/execution/engine/disabled.js.map +1 -1
  248. package/lib/execution/engine/http.d.ts +2 -2
  249. package/lib/execution/engine/http.js +11 -43
  250. package/lib/execution/engine/http.js.map +1 -1
  251. package/lib/execution/engine/interface.d.ts +2 -2
  252. package/lib/execution/engine/interface.js.map +1 -1
  253. package/lib/execution/engine/mock.d.ts +0 -1
  254. package/lib/execution/engine/mock.js +12 -16
  255. package/lib/execution/engine/mock.js.map +1 -1
  256. package/lib/execution/engine/payloadIdCache.js +3 -1
  257. package/lib/execution/engine/payloadIdCache.js.map +1 -1
  258. package/lib/execution/engine/types.d.ts +1 -5
  259. package/lib/execution/engine/types.js +8 -37
  260. package/lib/execution/engine/types.js.map +1 -1
  261. package/lib/execution/engine/utils.js +3 -3
  262. package/lib/execution/engine/utils.js.map +1 -1
  263. package/lib/execution/index.d.ts +2 -2
  264. package/lib/execution/index.js +2 -2
  265. package/lib/execution/index.js.map +1 -1
  266. package/lib/index.d.ts +6 -6
  267. package/lib/index.js +5 -5
  268. package/lib/index.js.map +1 -1
  269. package/lib/metrics/index.d.ts +1 -1
  270. package/lib/metrics/index.js +1 -1
  271. package/lib/metrics/index.js.map +1 -1
  272. package/lib/metrics/metrics/beacon.d.ts +5 -11
  273. package/lib/metrics/metrics/beacon.js +20 -40
  274. package/lib/metrics/metrics/beacon.js.map +1 -1
  275. package/lib/metrics/metrics/lodestar.d.ts +13 -55
  276. package/lib/metrics/metrics/lodestar.js +7 -84
  277. package/lib/metrics/metrics/lodestar.js.map +1 -1
  278. package/lib/metrics/metrics.d.ts +1 -1
  279. package/lib/metrics/metrics.js.map +1 -1
  280. package/lib/metrics/nodeJsMetrics.js +1 -1
  281. package/lib/metrics/nodeJsMetrics.js.map +1 -1
  282. package/lib/metrics/server/http.d.ts +1 -1
  283. package/lib/metrics/utils/avgMinMax.d.ts +1 -1
  284. package/lib/metrics/utils/avgMinMax.js +6 -10
  285. package/lib/metrics/utils/avgMinMax.js.map +1 -1
  286. package/lib/metrics/utils/gauge.d.ts +1 -1
  287. package/lib/metrics/utils/gauge.js +4 -1
  288. package/lib/metrics/utils/gauge.js.map +1 -1
  289. package/lib/metrics/utils/registryMetricCreator.d.ts +1 -1
  290. package/lib/metrics/utils/registryMetricCreator.js.map +1 -1
  291. package/lib/monitoring/properties.js +0 -4
  292. package/lib/monitoring/properties.js.map +1 -1
  293. package/lib/monitoring/service.js +1 -13
  294. package/lib/monitoring/service.js.map +1 -1
  295. package/lib/monitoring/system.js +27 -25
  296. package/lib/monitoring/system.js.map +1 -1
  297. package/lib/network/core/networkCore.d.ts +2 -2
  298. package/lib/network/core/networkCore.js +50 -67
  299. package/lib/network/core/networkCore.js.map +1 -1
  300. package/lib/network/core/networkCoreWorker.js +1 -1
  301. package/lib/network/core/networkCoreWorker.js.map +1 -1
  302. package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -2
  303. package/lib/network/core/networkCoreWorkerHandler.js +5 -14
  304. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  305. package/lib/network/discv5/index.d.ts +2 -2
  306. package/lib/network/discv5/index.js +3 -9
  307. package/lib/network/discv5/index.js.map +1 -1
  308. package/lib/network/discv5/worker.js +3 -3
  309. package/lib/network/discv5/worker.js.map +1 -1
  310. package/lib/network/events.d.ts +18 -2
  311. package/lib/network/events.js +7 -0
  312. package/lib/network/events.js.map +1 -1
  313. package/lib/network/gossip/encoding.d.ts +1 -1
  314. package/lib/network/gossip/encoding.js +2 -4
  315. package/lib/network/gossip/encoding.js.map +1 -1
  316. package/lib/network/gossip/errors.js +0 -1
  317. package/lib/network/gossip/errors.js.map +1 -1
  318. package/lib/network/gossip/gossipsub.d.ts +1 -2
  319. package/lib/network/gossip/gossipsub.js +17 -43
  320. package/lib/network/gossip/gossipsub.js.map +1 -1
  321. package/lib/network/gossip/index.d.ts +2 -2
  322. package/lib/network/gossip/index.js +2 -2
  323. package/lib/network/gossip/index.js.map +1 -1
  324. package/lib/network/gossip/interface.d.ts +2 -2
  325. package/lib/network/gossip/metrics.d.ts +7 -15
  326. package/lib/network/gossip/metrics.js +6 -16
  327. package/lib/network/gossip/metrics.js.map +1 -1
  328. package/lib/network/gossip/topic.d.ts +105 -125
  329. package/lib/network/gossip/topic.js +1 -2
  330. package/lib/network/gossip/topic.js.map +1 -1
  331. package/lib/network/index.d.ts +3 -3
  332. package/lib/network/index.js +3 -3
  333. package/lib/network/index.js.map +1 -1
  334. package/lib/network/interface.d.ts +2 -3
  335. package/lib/network/libp2p/index.js +3 -11
  336. package/lib/network/libp2p/index.js.map +1 -1
  337. package/lib/network/metadata.js +1 -6
  338. package/lib/network/metadata.js.map +1 -1
  339. package/lib/network/network.d.ts +2 -4
  340. package/lib/network/network.js +71 -89
  341. package/lib/network/network.js.map +1 -1
  342. package/lib/network/options.js +1 -1
  343. package/lib/network/options.js.map +1 -1
  344. package/lib/network/peers/datastore.d.ts +2 -2
  345. package/lib/network/peers/datastore.js +4 -10
  346. package/lib/network/peers/datastore.js.map +1 -1
  347. package/lib/network/peers/discover.js +66 -75
  348. package/lib/network/peers/discover.js.map +1 -1
  349. package/lib/network/peers/peerManager.js +130 -154
  350. package/lib/network/peers/peerManager.js.map +1 -1
  351. package/lib/network/peers/peersData.d.ts +1 -1
  352. package/lib/network/peers/peersData.js +3 -1
  353. package/lib/network/peers/peersData.js.map +1 -1
  354. package/lib/network/peers/score/index.d.ts +1 -1
  355. package/lib/network/peers/score/index.js +1 -1
  356. package/lib/network/peers/score/index.js.map +1 -1
  357. package/lib/network/peers/score/score.js +0 -6
  358. package/lib/network/peers/score/score.js.map +1 -1
  359. package/lib/network/peers/score/store.js +0 -3
  360. package/lib/network/peers/score/store.js.map +1 -1
  361. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  362. package/lib/network/peers/utils/subnetMap.js +4 -2
  363. package/lib/network/peers/utils/subnetMap.js.map +1 -1
  364. package/lib/network/processor/aggregatorTracker.js +3 -1
  365. package/lib/network/processor/aggregatorTracker.js.map +1 -1
  366. package/lib/network/processor/gossipHandlers.js +164 -145
  367. package/lib/network/processor/gossipHandlers.js.map +1 -1
  368. package/lib/network/processor/gossipQueues/indexed.js +9 -11
  369. package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
  370. package/lib/network/processor/gossipQueues/linear.js +8 -9
  371. package/lib/network/processor/gossipQueues/linear.js.map +1 -1
  372. package/lib/network/processor/index.d.ts +1 -2
  373. package/lib/network/processor/index.js +8 -22
  374. package/lib/network/processor/index.js.map +1 -1
  375. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +1 -1
  376. package/lib/network/reqresp/ReqRespBeaconNode.js +2 -11
  377. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  378. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +28 -0
  379. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +328 -0
  380. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -0
  381. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +49 -0
  382. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +499 -0
  383. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -0
  384. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -1
  385. package/lib/network/reqresp/index.d.ts +3 -1
  386. package/lib/network/reqresp/index.js +3 -1
  387. package/lib/network/reqresp/index.js.map +1 -1
  388. package/lib/network/reqresp/rateLimit.js +2 -2
  389. package/lib/network/reqresp/rateLimit.js.map +1 -1
  390. package/lib/network/reqresp/utils/dataColumnResponseValidation.js.map +1 -1
  391. package/lib/network/statusCache.js +0 -1
  392. package/lib/network/statusCache.js.map +1 -1
  393. package/lib/network/subnets/attnetsService.js +65 -73
  394. package/lib/network/subnets/attnetsService.js.map +1 -1
  395. package/lib/network/subnets/interface.js +1 -1
  396. package/lib/network/subnets/interface.js.map +1 -1
  397. package/lib/network/subnets/syncnetsService.js +22 -29
  398. package/lib/network/subnets/syncnetsService.js.map +1 -1
  399. package/lib/network/subnets/util.js +2 -1
  400. package/lib/network/subnets/util.js.map +1 -1
  401. package/lib/node/nodejs.d.ts +1 -1
  402. package/lib/node/nodejs.js +0 -15
  403. package/lib/node/nodejs.js.map +1 -1
  404. package/lib/node/notifier.js +2 -1
  405. package/lib/node/notifier.js.map +1 -1
  406. package/lib/node/options.js.map +1 -1
  407. package/lib/node/utils/interop/state.js +2 -1
  408. package/lib/node/utils/interop/state.js.map +1 -1
  409. package/lib/sync/backfill/backfill.d.ts +1 -1
  410. package/lib/sync/backfill/backfill.js +16 -58
  411. package/lib/sync/backfill/backfill.js.map +1 -1
  412. package/lib/sync/constants.d.ts +1 -2
  413. package/lib/sync/constants.js +1 -2
  414. package/lib/sync/constants.js.map +1 -1
  415. package/lib/sync/interface.d.ts +59 -1
  416. package/lib/sync/interface.js +20 -0
  417. package/lib/sync/interface.js.map +1 -1
  418. package/lib/sync/options.d.ts +1 -1
  419. package/lib/sync/range/batch.d.ts +32 -48
  420. package/lib/sync/range/batch.js +55 -201
  421. package/lib/sync/range/batch.js.map +1 -1
  422. package/lib/sync/range/chain.d.ts +10 -15
  423. package/lib/sync/range/chain.js +70 -141
  424. package/lib/sync/range/chain.js.map +1 -1
  425. package/lib/sync/range/range.d.ts +3 -3
  426. package/lib/sync/range/range.js +54 -86
  427. package/lib/sync/range/range.js.map +1 -1
  428. package/lib/sync/range/utils/hashBlocks.d.ts +2 -2
  429. package/lib/sync/range/utils/hashBlocks.js +4 -6
  430. package/lib/sync/range/utils/hashBlocks.js.map +1 -1
  431. package/lib/sync/range/utils/peerBalancer.js +13 -18
  432. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  433. package/lib/sync/sync.d.ts +2 -1
  434. package/lib/sync/sync.js +87 -95
  435. package/lib/sync/sync.js.map +1 -1
  436. package/lib/sync/unknownBlock.d.ts +28 -42
  437. package/lib/sync/unknownBlock.js +458 -405
  438. package/lib/sync/unknownBlock.js.map +1 -1
  439. package/lib/sync/utils/pendingBlocksTree.d.ts +6 -14
  440. package/lib/sync/utils/pendingBlocksTree.js +18 -24
  441. package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
  442. package/lib/util/array.js +3 -7
  443. package/lib/util/array.js.map +1 -1
  444. package/lib/util/asyncIterableToEvents.js +3 -6
  445. package/lib/util/asyncIterableToEvents.js.map +1 -1
  446. package/lib/util/binarySearch.js +0 -2
  447. package/lib/util/binarySearch.js.map +1 -1
  448. package/lib/util/blobs.d.ts +2 -2
  449. package/lib/util/blobs.js +4 -4
  450. package/lib/util/blobs.js.map +1 -1
  451. package/lib/util/bufferPool.js +2 -7
  452. package/lib/util/bufferPool.js.map +1 -1
  453. package/lib/util/clock.d.ts +1 -1
  454. package/lib/util/clock.js +18 -23
  455. package/lib/util/clock.js.map +1 -1
  456. package/lib/util/dataColumns.d.ts +10 -13
  457. package/lib/util/dataColumns.js +132 -90
  458. package/lib/util/dataColumns.js.map +1 -1
  459. package/lib/util/itTrigger.js +4 -4
  460. package/lib/util/itTrigger.js.map +1 -1
  461. package/lib/util/map.js +0 -2
  462. package/lib/util/map.js.map +1 -1
  463. package/lib/util/queue/index.d.ts +1 -1
  464. package/lib/util/queue/index.js +1 -1
  465. package/lib/util/queue/index.js.map +1 -1
  466. package/lib/util/queue/itemQueue.js +49 -52
  467. package/lib/util/queue/itemQueue.js.map +1 -1
  468. package/lib/util/serializedCache.js +3 -1
  469. package/lib/util/serializedCache.js.map +1 -1
  470. package/lib/util/set.js +0 -2
  471. package/lib/util/set.js.map +1 -1
  472. package/lib/util/sszBytes.d.ts +0 -1
  473. package/lib/util/sszBytes.js +1 -1
  474. package/lib/util/sszBytes.js.map +1 -1
  475. package/lib/util/timeSeries.js +1 -3
  476. package/lib/util/timeSeries.js.map +1 -1
  477. package/lib/util/types.d.ts +1 -1
  478. package/lib/util/wrapError.d.ts +0 -7
  479. package/package.json +18 -36
  480. package/lib/bun-wrappers/prometheus-gc-stats.d.ts +0 -2
  481. package/lib/bun-wrappers/prometheus-gc-stats.js +0 -8
  482. package/lib/bun-wrappers/prometheus-gc-stats.js.map +0 -1
  483. package/lib/chain/ColumnReconstructionTracker.d.ts +0 -32
  484. package/lib/chain/ColumnReconstructionTracker.js +0 -71
  485. package/lib/chain/ColumnReconstructionTracker.js.map +0 -1
  486. package/lib/chain/GetBlobsTracker.d.ts +0 -31
  487. package/lib/chain/GetBlobsTracker.js +0 -82
  488. package/lib/chain/GetBlobsTracker.js.map +0 -1
  489. package/lib/sync/types.d.ts +0 -44
  490. package/lib/sync/types.js +0 -34
  491. package/lib/sync/types.js.map +0 -1
  492. package/lib/sync/utils/downloadByRange.d.ts +0 -186
  493. package/lib/sync/utils/downloadByRange.js +0 -457
  494. package/lib/sync/utils/downloadByRange.js.map +0 -1
  495. package/lib/sync/utils/downloadByRoot.d.ts +0 -121
  496. package/lib/sync/utils/downloadByRoot.js +0 -346
  497. package/lib/sync/utils/downloadByRoot.js.map +0 -1
  498. package/lib/util/execution.d.ts +0 -20
  499. package/lib/util/execution.js +0 -165
  500. package/lib/util/execution.js.map +0 -1
@@ -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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"}
@@ -3,8 +3,7 @@ import { Logger } from "@lodestar/utils";
3
3
  import { Metrics } from "../../metrics/index.js";
4
4
  import { BlockProcessOpts } from "../options.js";
5
5
  import { ValidatorMonitor } from "../validatorMonitor.js";
6
- import { IBlockInput } from "./blockInput/index.js";
7
- import { ImportBlockOpts } from "./types.js";
6
+ import { BlockInput, ImportBlockOpts } from "./types.js";
8
7
  /**
9
8
  * Verifies 1 or more blocks are fully valid running the full state transition; from a linear sequence of blocks.
10
9
  *
@@ -13,7 +12,7 @@ import { ImportBlockOpts } from "./types.js";
13
12
  * - STFN - per_block_processing()
14
13
  * - Check state root matches
15
14
  */
16
- export declare function verifyBlocksStateTransitionOnly(preState0: CachedBeaconStateAllForks, blocks: IBlockInput[], dataAvailabilityStatuses: DataAvailabilityStatus[], logger: Logger, metrics: Metrics | null, validatorMonitor: ValidatorMonitor | null, signal: AbortSignal, opts: BlockProcessOpts & ImportBlockOpts): Promise<{
15
+ export declare function verifyBlocksStateTransitionOnly(preState0: CachedBeaconStateAllForks, blocks: BlockInput[], dataAvailabilityStatuses: DataAvailabilityStatus[], logger: Logger, metrics: Metrics | null, validatorMonitor: ValidatorMonitor | null, signal: AbortSignal, opts: BlockProcessOpts & ImportBlockOpts): Promise<{
17
16
  postStates: CachedBeaconStateAllForks[];
18
17
  proposerBalanceDeltas: number[];
19
18
  verifyStateTime: number;
@@ -17,7 +17,7 @@ export async function verifyBlocksStateTransitionOnly(preState0, blocks, dataAva
17
17
  const recvToValLatency = Date.now() / 1000 - (opts.seenTimestampSec ?? Date.now() / 1000);
18
18
  for (let i = 0; i < blocks.length; i++) {
19
19
  const { validProposerSignature, validSignatures } = opts;
20
- const block = blocks[i].getBlock();
20
+ const { block } = blocks[i];
21
21
  const preState = i === 0 ? preState0 : postStates[i - 1];
22
22
  const dataAvailabilityStatus = dataAvailabilityStatuses[i];
23
23
  // STFN - per_slot_processing() + per_block_processing()
@@ -65,7 +65,7 @@ export async function verifyBlocksStateTransitionOnly(preState0, blocks, dataAva
65
65
  }
66
66
  const verifyStateTime = Date.now();
67
67
  if (blocks.length === 1 && opts.seenTimestampSec !== undefined) {
68
- const slot = blocks[0].getBlock().message.slot;
68
+ const slot = blocks[0].block.message.slot;
69
69
  const recvToValidation = verifyStateTime / 1000 - opts.seenTimestampSec;
70
70
  const validationTime = recvToValidation - recvToValLatency;
71
71
  metrics?.gossipBlock.stateTransition.recvToValidation.observe(recvToValidation);
@@ -1 +1 @@
1
- {"version":3,"file":"verifyBlocksStateTransitionOnly.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksStateTransitionOnly.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifyBlocksStateTransitionOnly.js","sourceRoot":"","sources":["../../../src/chain/blocks/verifyBlocksStateTransitionOnly.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { BeaconChain } from "../chain.js";
2
- import { IBlockInput } from "./blockInput/index.js";
2
+ import { BlockInput } from "./types.js";
3
3
  /**
4
4
  * Persists block input data to DB. This operation must be eventually completed if a block is imported to the fork-choice.
5
5
  * Else the node will be in an inconsistent state that can lead to being stuck.
@@ -7,9 +7,9 @@ import { IBlockInput } from "./blockInput/index.js";
7
7
  * This operation may be performed before, during or after importing to the fork-choice. As long as errors
8
8
  * are handled properly for eventual consistency.
9
9
  */
10
- export declare function writeBlockInputToDb(this: BeaconChain, blocksInputs: IBlockInput[]): Promise<void>;
10
+ export declare function writeBlockInputToDb(this: BeaconChain, blocksInput: BlockInput[]): Promise<void>;
11
11
  /**
12
12
  * Prunes eagerly persisted block inputs only if not known to the fork-choice
13
13
  */
14
- export declare function removeEagerlyPersistedBlockInputs(this: BeaconChain, blockInputs: IBlockInput[]): Promise<void>;
14
+ export declare function removeEagerlyPersistedBlockInputs(this: BeaconChain, blockInputs: BlockInput[]): Promise<void>;
15
15
  //# sourceMappingURL=writeBlockInputToDb.d.ts.map
@@ -1,6 +1,6 @@
1
- import { prettyPrintIndices, toRootHex } from "@lodestar/utils";
2
- import { isBlockInputBlobs, isBlockInputColumns } from "./blockInput/index.js";
3
- import { BLOB_AVAILABILITY_TIMEOUT } from "./verifyBlocksDataAvailability.js";
1
+ import { ForkName, isForkPostDeneb, isForkPostFulu } from "@lodestar/params";
2
+ import { prettyPrintIndices, toHex, toRootHex } from "@lodestar/utils";
3
+ import { BlockInputType } from "./types.js";
4
4
  /**
5
5
  * Persists block input data to DB. This operation must be eventually completed if a block is imported to the fork-choice.
6
6
  * Else the node will be in an inconsistent state that can lead to being stuck.
@@ -8,14 +8,10 @@ import { BLOB_AVAILABILITY_TIMEOUT } from "./verifyBlocksDataAvailability.js";
8
8
  * This operation may be performed before, during or after importing to the fork-choice. As long as errors
9
9
  * are handled properly for eventual consistency.
10
10
  */
11
- export async function writeBlockInputToDb(blocksInputs) {
11
+ export async function writeBlockInputToDb(blocksInput) {
12
12
  const fnPromises = [];
13
- // track slots for logging
14
- const slots = [];
15
- for (const blockInput of blocksInputs) {
16
- const block = blockInput.getBlock();
17
- const slot = block.message.slot;
18
- slots.push(slot);
13
+ for (const blockInput of blocksInput) {
14
+ const { block } = blockInput;
19
15
  const blockRoot = this.config.getForkTypes(block.message.slot).BeaconBlock.hashTreeRoot(block.message);
20
16
  const blockRootHex = toRootHex(blockRoot);
21
17
  const blockBytes = this.serializedCache.get(block);
@@ -33,48 +29,53 @@ export async function writeBlockInputToDb(blocksInputs) {
33
29
  root: blockRootHex,
34
30
  inputType: blockInput.type,
35
31
  });
36
- if (!blockInput.hasAllData()) {
37
- await blockInput.waitForAllData(BLOB_AVAILABILITY_TIMEOUT);
38
- }
39
- // NOTE: Old data is pruned on archive
40
- if (isBlockInputColumns(blockInput)) {
41
- const { custodyColumns } = this.custodyConfig;
42
- const blobsLen = block.message.body.blobKzgCommitments.length;
43
- let dataColumnsLen;
44
- if (blobsLen === 0) {
45
- dataColumnsLen = 0;
46
- }
47
- else {
48
- dataColumnsLen = custodyColumns.length;
32
+ if (blockInput.type === BlockInputType.availableData || blockInput.type === BlockInputType.dataPromise) {
33
+ const blockData = blockInput.type === BlockInputType.availableData
34
+ ? blockInput.blockData
35
+ : await blockInput.cachedData.availabilityPromise;
36
+ // NOTE: Old data is pruned on archive
37
+ if (isForkPostFulu(blockData.fork)) {
38
+ const { custodyConfig } = this;
39
+ const { custodyColumns } = custodyConfig;
40
+ const blobsLen = block.message.body.blobKzgCommitments.length;
41
+ let dataColumnsLen;
42
+ if (blobsLen === 0) {
43
+ dataColumnsLen = 0;
44
+ }
45
+ else {
46
+ dataColumnsLen = custodyColumns.length;
47
+ }
48
+ const blockDataColumns = blockData.dataColumns;
49
+ const dataColumnSidecars = blockDataColumns.filter((dataColumnSidecar) => custodyColumns.includes(dataColumnSidecar.index));
50
+ if (dataColumnSidecars.length !== dataColumnsLen) {
51
+ throw Error(`Invalid dataColumnSidecars=${dataColumnSidecars.length} for custody expected custodyColumnsLen=${dataColumnsLen}`);
52
+ }
53
+ fnPromises.push(this.db.dataColumnSidecar.putMany(blockRoot, dataColumnSidecars));
54
+ this.logger.debug("Persisted dataColumnSidecars to hot DB", {
55
+ slot: block.message.slot,
56
+ root: blockRootHex,
57
+ blockDataColumns: blockDataColumns.length,
58
+ dataColumnSidecars: dataColumnSidecars.length,
59
+ numBlobs: blobsLen,
60
+ custodyColumns: custodyColumns.length,
61
+ });
49
62
  }
50
- const dataColumnSidecars = blockInput.getCustodyColumns();
51
- if (dataColumnSidecars.length !== dataColumnsLen) {
52
- this.logger.debug(`Invalid dataColumnSidecars=${dataColumnSidecars.length} for custody expected custodyColumnsLen=${dataColumnsLen}`);
63
+ else if (isForkPostDeneb(blockData.fork)) {
64
+ const blobSidecars = blockData.blobs;
65
+ fnPromises.push(this.db.blobSidecars.add({ blockRoot, slot: block.message.slot, blobSidecars }));
66
+ this.logger.debug("Persisted blobSidecars to hot DB", {
67
+ blobsLen: blobSidecars.length,
68
+ slot: block.message.slot,
69
+ root: blockRootHex,
70
+ });
53
71
  }
54
- fnPromises.push(this.db.dataColumnSidecar.putMany(blockRoot, dataColumnSidecars));
55
- this.logger.debug("Persisted dataColumnSidecars to hot DB", {
56
- slot: block.message.slot,
57
- root: blockRootHex,
58
- dataColumnSidecars: dataColumnSidecars.length,
59
- numBlobs: blobsLen,
60
- custodyColumns: custodyColumns.length,
61
- });
62
72
  }
63
- else if (isBlockInputBlobs(blockInput)) {
64
- const blobSidecars = blockInput.getBlobs();
65
- fnPromises.push(this.db.blobSidecars.add({ blockRoot, slot: block.message.slot, blobSidecars }));
66
- this.logger.debug("Persisted blobSidecars to hot DB", {
67
- blobsLen: blobSidecars.length,
68
- slot: block.message.slot,
69
- root: blockRootHex,
70
- });
71
- }
72
- await Promise.all(fnPromises);
73
- this.logger.debug("Persisted blocksInput to db", {
74
- blocksInput: blocksInputs.length,
75
- slots: prettyPrintIndices(slots),
76
- });
77
73
  }
74
+ await Promise.all(fnPromises);
75
+ this.logger.debug("Persisted blocksInput to db", {
76
+ blocksInput: blocksInput.length,
77
+ slots: prettyPrintIndices(blocksInput.map((blockInput) => blockInput.block.message.slot)),
78
+ });
78
79
  }
79
80
  /**
80
81
  * Prunes eagerly persisted block inputs only if not known to the fork-choice
@@ -84,24 +85,28 @@ export async function removeEagerlyPersistedBlockInputs(blockInputs) {
84
85
  const blobsToRemove = [];
85
86
  const dataColumnsToRemove = [];
86
87
  for (const blockInput of blockInputs) {
87
- const block = blockInput.getBlock();
88
+ const { block, type } = blockInput;
88
89
  const slot = block.message.slot;
89
90
  const blockRoot = this.config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block.message);
90
- const blockRootHex = toRootHex(blockRoot);
91
+ const blockRootHex = toHex(blockRoot);
91
92
  if (!this.forkChoice.hasBlockHex(blockRootHex)) {
92
93
  blockToRemove.push(block);
93
- if (isBlockInputColumns(blockInput)) {
94
- const { custodyColumns } = this.custodyConfig;
95
- const dataColumnsLen = custodyColumns.length;
96
- const dataColumnSidecars = blockInput.getCustodyColumns();
97
- if (dataColumnSidecars.length !== dataColumnsLen) {
98
- throw Error(`Invalid dataColumnSidecars=${dataColumnSidecars.length} for custody expected custodyColumnsLen=${dataColumnsLen}`);
94
+ if (type === BlockInputType.availableData) {
95
+ const { blockData } = blockInput;
96
+ if (blockData.fork === ForkName.deneb || blockData.fork === ForkName.electra) {
97
+ const blobSidecars = blockData.blobs;
98
+ blobsToRemove.push({ blockRoot, slot, blobSidecars });
99
+ }
100
+ else {
101
+ const { custodyConfig } = this;
102
+ const { custodyColumns } = custodyConfig;
103
+ const dataColumnsLen = custodyColumns.length;
104
+ const dataColumnSidecars = blockData.dataColumns.filter((dataColumnSidecar) => custodyColumns.includes(dataColumnSidecar.index));
105
+ if (dataColumnSidecars.length !== dataColumnsLen) {
106
+ throw Error(`Invalid dataColumnSidecars=${dataColumnSidecars.length} for custody expected custodyColumnsLen=${dataColumnsLen}`);
107
+ }
108
+ dataColumnsToRemove.push(blockRoot);
99
109
  }
100
- dataColumnsToRemove.push(blockRoot);
101
- }
102
- else if (isBlockInputBlobs(blockInput)) {
103
- const blobSidecars = blockInput.getBlobs();
104
- blobsToRemove.push({ blockRoot, slot, blobSidecars });
105
110
  }
106
111
  }
107
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"writeBlockInputToDb.js","sourceRoot":"","sources":["../../../src/chain/blocks/writeBlockInputToDb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writeBlockInputToDb.js","sourceRoot":"","sources":["../../../src/chain/blocks/writeBlockInputToDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAC,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAqD,cAAc,EAAC,MAAM,YAAY,CAAC;AAE9F;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAoB,WAAyB;IACpF,MAAM,UAAU,GAAoB,EAAE,CAAC;IAEvC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,EAAC,KAAK,EAAC,GAAG,UAAU,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvG,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,UAAU,EAAE,CAAC;YACf,8CAA8C;YAC9C,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,mCAAmC,CAAC,GAAG,EAAE,CAAC;YACpE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,iCAAiC,CAAC,GAAG,EAAE,CAAC;YAClE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;YAC3C,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;YACxB,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,UAAU,CAAC,IAAI;SAC3B,CAAC,CAAC;QAEH,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,aAAa,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,WAAW,EAAE,CAAC;YACvG,MAAM,SAAS,GACb,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,aAAa;gBAC9C,CAAC,CAAC,UAAU,CAAC,SAAS;gBACtB,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,mBAAmB,CAAC;YAEtD,sCAAsC;YACtC,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,EAAC,aAAa,EAAC,GAAG,IAAI,CAAC;gBAC7B,MAAM,EAAC,cAAc,EAAC,GAAG,aAAa,CAAC;gBACvC,MAAM,QAAQ,GAAI,KAAK,CAAC,OAA4B,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;gBACpF,IAAI,cAAsB,CAAC;gBAC3B,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;oBACnB,cAAc,GAAG,CAAC,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC;gBACzC,CAAC;gBAED,MAAM,gBAAgB,GAAI,SAAmC,CAAC,WAAW,CAAC;gBAC1E,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,EAAE,CACvE,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CACjD,CAAC;gBACF,IAAI,kBAAkB,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;oBACjD,MAAM,KAAK,CACT,8BAA8B,kBAAkB,CAAC,MAAM,2CAA2C,cAAc,EAAE,CACnH,CAAC;gBACJ,CAAC;gBAED,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;gBAClF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE;oBAC1D,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;oBACxB,IAAI,EAAE,YAAY;oBAClB,gBAAgB,EAAE,gBAAgB,CAAC,MAAM;oBACzC,kBAAkB,EAAE,kBAAkB,CAAC,MAAM;oBAC7C,QAAQ,EAAE,QAAQ;oBAClB,cAAc,EAAE,cAAc,CAAC,MAAM;iBACtC,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3C,MAAM,YAAY,GAAI,SAA6B,CAAC,KAAK,CAAC;gBAC1D,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC,CAAC;gBAC/F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE;oBACpD,QAAQ,EAAE,YAAY,CAAC,MAAM;oBAC7B,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;oBACxB,IAAI,EAAE,YAAY;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;QAC/C,WAAW,EAAE,WAAW,CAAC,MAAM;QAC/B,KAAK,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1F,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CAAoB,WAAyB;IAClG,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,MAAM,mBAAmB,GAAG,EAAE,CAAC;IAE/B,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,EAAC,KAAK,EAAE,IAAI,EAAC,GAAG,UAAU,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACzF,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/C,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAE1B,IAAI,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE,CAAC;gBAC1C,MAAM,EAAC,SAAS,EAAC,GAAG,UAAU,CAAC;gBAC/B,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;oBAC7E,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;oBACrC,aAAa,CAAC,IAAI,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC;gBACtD,CAAC;qBAAM,CAAC;oBACN,MAAM,EAAC,aAAa,EAAC,GAAG,IAAI,CAAC;oBAC7B,MAAM,EAAC,cAAc,EAAC,GAAG,aAAa,CAAC;oBACvC,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC;oBAC7C,MAAM,kBAAkB,GAAI,SAAmC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE,EAAE,CACvG,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,CACjD,CAAC;oBACF,IAAI,kBAAkB,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;wBACjD,MAAM,KAAK,CACT,8BAA8B,kBAAkB,CAAC,MAAM,2CAA2C,cAAc,EAAE,CACnH,CAAC;oBACJ,CAAC;oBAED,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,uEAAuE;QACvE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,aAAa,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,mBAAmB,CAAC;KAC1D,CAAC,CAAC;AACL,CAAC"}
@@ -64,15 +64,170 @@ var WorkerStatusCode;
64
64
  * sets into packages of work and send at once to a worker to distribute the latency cost
65
65
  */
66
66
  export class BlsMultiThreadWorkerPool {
67
- logger;
68
- metrics;
69
- workers;
70
- jobs = new LinkedList();
71
- bufferedJobs = null;
72
- blsVerifyAllMultiThread;
73
- closed = false;
74
- workersBusy = 0;
75
67
  constructor(options, modules) {
68
+ this.jobs = new LinkedList();
69
+ this.bufferedJobs = null;
70
+ this.closed = false;
71
+ this.workersBusy = 0;
72
+ /**
73
+ * Potentially submit jobs to an idle worker, only if there's a worker and jobs
74
+ */
75
+ this.runJob = async () => {
76
+ if (this.closed) {
77
+ return;
78
+ }
79
+ // Find idle worker
80
+ const worker = this.workers.find((worker) => worker.status.code === WorkerStatusCode.idle);
81
+ if (!worker || worker.status.code !== WorkerStatusCode.idle) {
82
+ return;
83
+ }
84
+ // Prepare work package
85
+ const jobsInput = this.prepareWork();
86
+ if (jobsInput.length === 0) {
87
+ return;
88
+ }
89
+ // TODO: After sending the work to the worker the main thread can drop the job arguments
90
+ // and free-up memory, only needs to keep the job's Promise handlers.
91
+ // Maybe it's not useful since all data referenced in jobs is likely referenced by others
92
+ const workerApi = worker.status.workerApi;
93
+ worker.status = { code: WorkerStatusCode.running, workerApi };
94
+ this.workersBusy++;
95
+ try {
96
+ let startedJobsDefault = 0;
97
+ let startedJobsSameMessage = 0;
98
+ let startedSetsDefault = 0;
99
+ let startedSetsSameMessage = 0;
100
+ const workReqs = [];
101
+ const jobsStarted = [];
102
+ for (const job of jobsInput) {
103
+ this.metrics?.blsThreadPool.jobWaitTime.observe((Date.now() - job.addedTimeMs) / 1000);
104
+ let workReq;
105
+ try {
106
+ // Note: This can throw, must be handled per-job.
107
+ // Pubkey and signature aggregation is defered here
108
+ workReq = await jobItemWorkReq(job, this.metrics);
109
+ }
110
+ catch (e) {
111
+ this.metrics?.blsThreadPool.errorAggregateSignatureSetsCount.inc({ type: job.type });
112
+ switch (job.type) {
113
+ case JobQueueItemType.default:
114
+ job.reject(e);
115
+ break;
116
+ case JobQueueItemType.sameMessage:
117
+ // there could be an invalid pubkey/signature, retry each individually
118
+ this.retryJobItemSameMessage(job);
119
+ break;
120
+ }
121
+ continue;
122
+ }
123
+ // Re-push all jobs with matching workReq for easier accounting of results
124
+ workReqs.push(workReq);
125
+ jobsStarted.push(job);
126
+ if (job.type === JobQueueItemType.sameMessage) {
127
+ startedJobsSameMessage += 1;
128
+ startedSetsSameMessage += job.sets.length;
129
+ }
130
+ else {
131
+ startedJobsDefault += 1;
132
+ startedSetsDefault += job.sets.length;
133
+ }
134
+ }
135
+ const startedSigSets = startedSetsDefault + startedSetsSameMessage;
136
+ this.metrics?.blsThreadPool.totalJobsGroupsStarted.inc(1);
137
+ this.metrics?.blsThreadPool.totalJobsStarted.inc({ type: JobQueueItemType.default }, startedJobsDefault);
138
+ this.metrics?.blsThreadPool.totalJobsStarted.inc({ type: JobQueueItemType.sameMessage }, startedJobsSameMessage);
139
+ this.metrics?.blsThreadPool.totalSigSetsStarted.inc({ type: JobQueueItemType.default }, startedSetsDefault);
140
+ this.metrics?.blsThreadPool.totalSigSetsStarted.inc({ type: JobQueueItemType.sameMessage }, startedSetsSameMessage);
141
+ // Send work package to the worker
142
+ // If the job, metrics or any code below throws: the job will reject never going stale.
143
+ // Only downside is the job promise may be resolved twice, but that's not an issue
144
+ const [jobStartSec, jobStartNs] = process.hrtime();
145
+ const workResult = await workerApi.verifyManySignatureSets(workReqs);
146
+ const [jobEndSec, jobEndNs] = process.hrtime();
147
+ const { workerId, batchRetries, batchSigsSuccess, workerStartTime, workerEndTime, results } = workResult;
148
+ const [workerStartSec, workerStartNs] = workerStartTime;
149
+ const [workerEndSec, workerEndNs] = workerEndTime;
150
+ let successCount = 0;
151
+ let errorCount = 0;
152
+ // Un-wrap work package
153
+ for (let i = 0; i < jobsStarted.length; i++) {
154
+ const job = jobsStarted[i];
155
+ const jobResult = results[i];
156
+ const sigSetCount = jobItemSigSets(job);
157
+ // TODO: enable exhaustive switch case checks lint rule
158
+ switch (job.type) {
159
+ case JobQueueItemType.default:
160
+ if (!jobResult || jobResult.code !== WorkResultCode.success) {
161
+ job.reject(getJobResultError(jobResult, i));
162
+ errorCount += sigSetCount;
163
+ }
164
+ else {
165
+ job.resolve(jobResult.result);
166
+ successCount += sigSetCount;
167
+ }
168
+ break;
169
+ // handle result of the verification of aggregated signature against aggregated pubkeys
170
+ case JobQueueItemType.sameMessage:
171
+ if (!jobResult || jobResult.code !== WorkResultCode.success) {
172
+ job.reject(getJobResultError(jobResult, i));
173
+ errorCount += 1;
174
+ }
175
+ else {
176
+ if (jobResult.result) {
177
+ // All are valid, most of the time it goes here
178
+ job.resolve(job.sets.map(() => true));
179
+ }
180
+ else {
181
+ // Retry each individually
182
+ this.retryJobItemSameMessage(job);
183
+ }
184
+ successCount += 1;
185
+ }
186
+ break;
187
+ }
188
+ }
189
+ const workerJobTimeSec = workerEndSec - workerStartSec + (workerEndNs - workerStartNs) / 1e9;
190
+ const latencyToWorkerSec = workerStartSec - jobStartSec + (workerStartNs - jobStartNs) / 1e9;
191
+ const latencyFromWorkerSec = jobEndSec - workerEndSec + Number(jobEndNs - workerEndNs) / 1e9;
192
+ this.metrics?.blsThreadPool.timePerSigSet.observe(workerJobTimeSec / startedSigSets);
193
+ this.metrics?.blsThreadPool.jobsWorkerTime.inc({ workerId }, workerJobTimeSec);
194
+ this.metrics?.blsThreadPool.latencyToWorker.observe(latencyToWorkerSec);
195
+ this.metrics?.blsThreadPool.latencyFromWorker.observe(latencyFromWorkerSec);
196
+ this.metrics?.blsThreadPool.successJobsSignatureSetsCount.inc(successCount);
197
+ this.metrics?.blsThreadPool.errorJobsSignatureSetsCount.inc(errorCount);
198
+ this.metrics?.blsThreadPool.batchRetries.inc(batchRetries);
199
+ this.metrics?.blsThreadPool.batchSigsSuccess.inc(batchSigsSuccess);
200
+ }
201
+ catch (e) {
202
+ // Worker communications should never reject
203
+ if (!this.closed) {
204
+ this.logger.error("BlsMultiThreadWorkerPool error", {}, e);
205
+ }
206
+ // Reject all
207
+ for (const job of jobsInput) {
208
+ job.reject(e);
209
+ }
210
+ }
211
+ worker.status = { code: WorkerStatusCode.idle, workerApi };
212
+ this.workersBusy--;
213
+ // Potentially run a new job
214
+ callInNextEventLoop(this.runJob);
215
+ };
216
+ /**
217
+ * Add all buffered jobs to the job queue and potentially run them immediately
218
+ */
219
+ this.runBufferedJobs = () => {
220
+ if (this.bufferedJobs) {
221
+ for (const job of this.bufferedJobs.jobs) {
222
+ this.jobs.push(job);
223
+ }
224
+ for (const job of this.bufferedJobs.prioritizedJobs) {
225
+ this.jobs.unshift(job);
226
+ }
227
+ this.bufferedJobs = null;
228
+ callInNextEventLoop(this.runJob);
229
+ }
230
+ };
76
231
  const { logger, metrics } = modules;
77
232
  this.logger = logger;
78
233
  this.metrics = metrics;
@@ -175,7 +330,6 @@ export class BlsMultiThreadWorkerPool {
175
330
  for (let i = 0; i < poolSize; i++) {
176
331
  const workerData = { workerId: i };
177
332
  const worker = new Worker(path.join(workerDir, "worker.js"), {
178
- suppressTranspileTS: Boolean(globalThis.Bun),
179
333
  workerData,
180
334
  });
181
335
  const workerDescriptor = {
@@ -251,150 +405,6 @@ export class BlsMultiThreadWorkerPool {
251
405
  callInNextEventLoop(this.runJob);
252
406
  }
253
407
  }
254
- /**
255
- * Potentially submit jobs to an idle worker, only if there's a worker and jobs
256
- */
257
- runJob = async () => {
258
- if (this.closed) {
259
- return;
260
- }
261
- // Find idle worker
262
- const worker = this.workers.find((worker) => worker.status.code === WorkerStatusCode.idle);
263
- if (!worker || worker.status.code !== WorkerStatusCode.idle) {
264
- return;
265
- }
266
- // Prepare work package
267
- const jobsInput = this.prepareWork();
268
- if (jobsInput.length === 0) {
269
- return;
270
- }
271
- // TODO: After sending the work to the worker the main thread can drop the job arguments
272
- // and free-up memory, only needs to keep the job's Promise handlers.
273
- // Maybe it's not useful since all data referenced in jobs is likely referenced by others
274
- const workerApi = worker.status.workerApi;
275
- worker.status = { code: WorkerStatusCode.running, workerApi };
276
- this.workersBusy++;
277
- try {
278
- let startedJobsDefault = 0;
279
- let startedJobsSameMessage = 0;
280
- let startedSetsDefault = 0;
281
- let startedSetsSameMessage = 0;
282
- const workReqs = [];
283
- const jobsStarted = [];
284
- for (const job of jobsInput) {
285
- this.metrics?.blsThreadPool.jobWaitTime.observe((Date.now() - job.addedTimeMs) / 1000);
286
- let workReq;
287
- try {
288
- // Note: This can throw, must be handled per-job.
289
- // Pubkey and signature aggregation is defered here
290
- workReq = await jobItemWorkReq(job, this.metrics);
291
- }
292
- catch (e) {
293
- this.metrics?.blsThreadPool.errorAggregateSignatureSetsCount.inc({ type: job.type });
294
- switch (job.type) {
295
- case JobQueueItemType.default:
296
- job.reject(e);
297
- break;
298
- case JobQueueItemType.sameMessage:
299
- // there could be an invalid pubkey/signature, retry each individually
300
- this.retryJobItemSameMessage(job);
301
- break;
302
- }
303
- continue;
304
- }
305
- // Re-push all jobs with matching workReq for easier accounting of results
306
- workReqs.push(workReq);
307
- jobsStarted.push(job);
308
- if (job.type === JobQueueItemType.sameMessage) {
309
- startedJobsSameMessage += 1;
310
- startedSetsSameMessage += job.sets.length;
311
- }
312
- else {
313
- startedJobsDefault += 1;
314
- startedSetsDefault += job.sets.length;
315
- }
316
- }
317
- const startedSigSets = startedSetsDefault + startedSetsSameMessage;
318
- this.metrics?.blsThreadPool.totalJobsGroupsStarted.inc(1);
319
- this.metrics?.blsThreadPool.totalJobsStarted.inc({ type: JobQueueItemType.default }, startedJobsDefault);
320
- this.metrics?.blsThreadPool.totalJobsStarted.inc({ type: JobQueueItemType.sameMessage }, startedJobsSameMessage);
321
- this.metrics?.blsThreadPool.totalSigSetsStarted.inc({ type: JobQueueItemType.default }, startedSetsDefault);
322
- this.metrics?.blsThreadPool.totalSigSetsStarted.inc({ type: JobQueueItemType.sameMessage }, startedSetsSameMessage);
323
- // Send work package to the worker
324
- // If the job, metrics or any code below throws: the job will reject never going stale.
325
- // Only downside is the job promise may be resolved twice, but that's not an issue
326
- const [jobStartSec, jobStartNs] = process.hrtime();
327
- const workResult = await workerApi.verifyManySignatureSets(workReqs);
328
- const [jobEndSec, jobEndNs] = process.hrtime();
329
- const { workerId, batchRetries, batchSigsSuccess, workerStartTime, workerEndTime, results } = workResult;
330
- const [workerStartSec, workerStartNs] = workerStartTime;
331
- const [workerEndSec, workerEndNs] = workerEndTime;
332
- let successCount = 0;
333
- let errorCount = 0;
334
- // Un-wrap work package
335
- for (let i = 0; i < jobsStarted.length; i++) {
336
- const job = jobsStarted[i];
337
- const jobResult = results[i];
338
- const sigSetCount = jobItemSigSets(job);
339
- // TODO: enable exhaustive switch case checks lint rule
340
- switch (job.type) {
341
- case JobQueueItemType.default:
342
- if (!jobResult || jobResult.code !== WorkResultCode.success) {
343
- job.reject(getJobResultError(jobResult, i));
344
- errorCount += sigSetCount;
345
- }
346
- else {
347
- job.resolve(jobResult.result);
348
- successCount += sigSetCount;
349
- }
350
- break;
351
- // handle result of the verification of aggregated signature against aggregated pubkeys
352
- case JobQueueItemType.sameMessage:
353
- if (!jobResult || jobResult.code !== WorkResultCode.success) {
354
- job.reject(getJobResultError(jobResult, i));
355
- errorCount += 1;
356
- }
357
- else {
358
- if (jobResult.result) {
359
- // All are valid, most of the time it goes here
360
- job.resolve(job.sets.map(() => true));
361
- }
362
- else {
363
- // Retry each individually
364
- this.retryJobItemSameMessage(job);
365
- }
366
- successCount += 1;
367
- }
368
- break;
369
- }
370
- }
371
- const workerJobTimeSec = workerEndSec - workerStartSec + (workerEndNs - workerStartNs) / 1e9;
372
- const latencyToWorkerSec = workerStartSec - jobStartSec + (workerStartNs - jobStartNs) / 1e9;
373
- const latencyFromWorkerSec = jobEndSec - workerEndSec + Number(jobEndNs - workerEndNs) / 1e9;
374
- this.metrics?.blsThreadPool.timePerSigSet.observe(workerJobTimeSec / startedSigSets);
375
- this.metrics?.blsThreadPool.jobsWorkerTime.inc({ workerId }, workerJobTimeSec);
376
- this.metrics?.blsThreadPool.latencyToWorker.observe(latencyToWorkerSec);
377
- this.metrics?.blsThreadPool.latencyFromWorker.observe(latencyFromWorkerSec);
378
- this.metrics?.blsThreadPool.successJobsSignatureSetsCount.inc(successCount);
379
- this.metrics?.blsThreadPool.errorJobsSignatureSetsCount.inc(errorCount);
380
- this.metrics?.blsThreadPool.batchRetries.inc(batchRetries);
381
- this.metrics?.blsThreadPool.batchSigsSuccess.inc(batchSigsSuccess);
382
- }
383
- catch (e) {
384
- // Worker communications should never reject
385
- if (!this.closed) {
386
- this.logger.error("BlsMultiThreadWorkerPool error", {}, e);
387
- }
388
- // Reject all
389
- for (const job of jobsInput) {
390
- job.reject(e);
391
- }
392
- }
393
- worker.status = { code: WorkerStatusCode.idle, workerApi };
394
- this.workersBusy--;
395
- // Potentially run a new job
396
- callInNextEventLoop(this.runJob);
397
- };
398
408
  /**
399
409
  * Grab pending work up to a max number of signatures
400
410
  */
@@ -411,21 +421,6 @@ export class BlsMultiThreadWorkerPool {
411
421
  }
412
422
  return jobs;
413
423
  }
414
- /**
415
- * Add all buffered jobs to the job queue and potentially run them immediately
416
- */
417
- runBufferedJobs = () => {
418
- if (this.bufferedJobs) {
419
- for (const job of this.bufferedJobs.jobs) {
420
- this.jobs.push(job);
421
- }
422
- for (const job of this.bufferedJobs.prioritizedJobs) {
423
- this.jobs.unshift(job);
424
- }
425
- this.bufferedJobs = null;
426
- callInNextEventLoop(this.runJob);
427
- }
428
- };
429
424
  retryJobItemSameMessage(job) {
430
425
  // Create new jobs for each pubkey set, and Promise.all all the results
431
426
  for (const j of jobItemSameMessageToMultiSet(job)) {