@lodestar/beacon-node 1.47.0-dev.d9c16ea16f → 1.47.0-dev.da8dfeabda

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 (258) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +4 -7
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  5. package/lib/api/impl/beacon/pool/index.js +12 -1
  6. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  7. package/lib/api/impl/beacon/state/utils.d.ts +2 -1
  8. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  9. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  10. package/lib/api/impl/events/index.d.ts +1 -1
  11. package/lib/api/impl/events/index.d.ts.map +1 -1
  12. package/lib/api/impl/events/index.js +10 -3
  13. package/lib/api/impl/events/index.js.map +1 -1
  14. package/lib/api/impl/validator/index.d.ts.map +1 -1
  15. package/lib/api/impl/validator/index.js +12 -22
  16. package/lib/api/impl/validator/index.js.map +1 -1
  17. package/lib/api/impl/validator/utils.d.ts +5 -0
  18. package/lib/api/impl/validator/utils.d.ts.map +1 -1
  19. package/lib/api/impl/validator/utils.js +18 -12
  20. package/lib/api/impl/validator/utils.js.map +1 -1
  21. package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +1 -1
  22. package/lib/chain/archiveStore/historicalState/metrics.js +21 -0
  23. package/lib/chain/archiveStore/historicalState/metrics.js.map +1 -1
  24. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  25. package/lib/chain/blocks/importBlock.js +2 -7
  26. package/lib/chain/blocks/importBlock.js.map +1 -1
  27. package/lib/chain/blocks/importExecutionPayload.d.ts +3 -2
  28. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  29. package/lib/chain/blocks/importExecutionPayload.js +11 -9
  30. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  31. package/lib/chain/blocks/index.d.ts.map +1 -1
  32. package/lib/chain/blocks/index.js +15 -7
  33. package/lib/chain/blocks/index.js.map +1 -1
  34. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  35. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +22 -12
  36. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  37. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +2 -2
  38. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -1
  39. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +2 -2
  40. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -1
  41. package/lib/chain/bls/index.d.ts +1 -1
  42. package/lib/chain/bls/index.d.ts.map +1 -1
  43. package/lib/chain/bls/interface.d.ts +5 -5
  44. package/lib/chain/bls/interface.d.ts.map +1 -1
  45. package/lib/chain/bls/multithread/index.d.ts +5 -11
  46. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  47. package/lib/chain/bls/multithread/index.js +116 -101
  48. package/lib/chain/bls/multithread/index.js.map +1 -1
  49. package/lib/chain/bls/multithread/jobItem.d.ts +5 -19
  50. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
  51. package/lib/chain/bls/multithread/jobItem.js +10 -65
  52. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  53. package/lib/chain/bls/multithread/types.d.ts +29 -8
  54. package/lib/chain/bls/multithread/types.d.ts.map +1 -1
  55. package/lib/chain/bls/multithread/types.js +12 -0
  56. package/lib/chain/bls/multithread/types.js.map +1 -1
  57. package/lib/chain/bls/multithread/utils.d.ts +4 -0
  58. package/lib/chain/bls/multithread/utils.d.ts.map +1 -1
  59. package/lib/chain/bls/multithread/utils.js +10 -0
  60. package/lib/chain/bls/multithread/utils.js.map +1 -1
  61. package/lib/chain/bls/multithread/worker.js +49 -23
  62. package/lib/chain/bls/multithread/worker.js.map +1 -1
  63. package/lib/chain/bls/singleThread.d.ts +4 -10
  64. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  65. package/lib/chain/bls/singleThread.js +8 -45
  66. package/lib/chain/bls/singleThread.js.map +1 -1
  67. package/lib/chain/bls/utils.d.ts +4 -4
  68. package/lib/chain/bls/utils.d.ts.map +1 -1
  69. package/lib/chain/bls/utils.js +18 -19
  70. package/lib/chain/bls/utils.js.map +1 -1
  71. package/lib/chain/builderCircuitBreaker.d.ts +6 -5
  72. package/lib/chain/builderCircuitBreaker.d.ts.map +1 -1
  73. package/lib/chain/builderCircuitBreaker.js +28 -15
  74. package/lib/chain/builderCircuitBreaker.js.map +1 -1
  75. package/lib/chain/chain.d.ts +3 -2
  76. package/lib/chain/chain.d.ts.map +1 -1
  77. package/lib/chain/chain.js +8 -5
  78. package/lib/chain/chain.js.map +1 -1
  79. package/lib/chain/errors/blockError.d.ts +2 -0
  80. package/lib/chain/errors/blockError.d.ts.map +1 -1
  81. package/lib/chain/errors/blockError.js +6 -1
  82. package/lib/chain/errors/blockError.js.map +1 -1
  83. package/lib/chain/errors/proposerPreferences.d.ts +6 -0
  84. package/lib/chain/errors/proposerPreferences.d.ts.map +1 -1
  85. package/lib/chain/errors/proposerPreferences.js +1 -0
  86. package/lib/chain/errors/proposerPreferences.js.map +1 -1
  87. package/lib/chain/interface.d.ts +2 -1
  88. package/lib/chain/interface.d.ts.map +1 -1
  89. package/lib/chain/interface.js.map +1 -1
  90. package/lib/chain/opPools/aggregatedAttestationPool.js +1 -1
  91. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  92. package/lib/chain/opPools/attestationPool.d.ts +1 -1
  93. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  94. package/lib/chain/opPools/attestationPool.js +1 -1
  95. package/lib/chain/opPools/attestationPool.js.map +1 -1
  96. package/lib/chain/opPools/payloadAttestationPool.js +3 -3
  97. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  98. package/lib/chain/opPools/syncCommitteeMessagePool.js +1 -1
  99. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  100. package/lib/chain/opPools/syncContributionAndProofPool.js +1 -1
  101. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  102. package/lib/chain/opPools/utils.d.ts +1 -1
  103. package/lib/chain/opPools/utils.d.ts.map +1 -1
  104. package/lib/chain/opPools/utils.js +1 -1
  105. package/lib/chain/opPools/utils.js.map +1 -1
  106. package/lib/chain/options.d.ts +1 -1
  107. package/lib/chain/options.d.ts.map +1 -1
  108. package/lib/chain/prepareNextSlot.js +1 -1
  109. package/lib/chain/prepareNextSlot.js.map +1 -1
  110. package/lib/chain/produceBlock/produceBlockBody.d.ts +2 -0
  111. package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
  112. package/lib/chain/produceBlock/produceBlockBody.js +6 -1
  113. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  114. package/lib/chain/seenCache/seenAttesters.d.ts +9 -5
  115. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  116. package/lib/chain/seenCache/seenAttesters.js +25 -4
  117. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  118. package/lib/chain/seenCache/seenBlockProposers.d.ts +5 -1
  119. package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -1
  120. package/lib/chain/seenCache/seenBlockProposers.js +10 -3
  121. package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
  122. package/lib/chain/validation/attestation.d.ts.map +1 -1
  123. package/lib/chain/validation/attestation.js +1 -4
  124. package/lib/chain/validation/attestation.js.map +1 -1
  125. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  126. package/lib/chain/validation/attesterSlashing.js +1 -1
  127. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  128. package/lib/chain/validation/block.d.ts.map +1 -1
  129. package/lib/chain/validation/block.js +21 -7
  130. package/lib/chain/validation/block.js.map +1 -1
  131. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  132. package/lib/chain/validation/executionPayloadBid.js +1 -2
  133. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  134. package/lib/chain/validation/executionPayloadEnvelope.js +1 -1
  135. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  136. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
  137. package/lib/chain/validation/payloadAttestationMessage.js +5 -14
  138. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  139. package/lib/chain/validation/proposerPreferences.d.ts +1 -1
  140. package/lib/chain/validation/proposerPreferences.d.ts.map +1 -1
  141. package/lib/chain/validation/proposerPreferences.js +13 -4
  142. package/lib/chain/validation/proposerPreferences.js.map +1 -1
  143. package/lib/chain/validation/proposerSlashing.js +1 -1
  144. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  145. package/lib/execution/builder/http.d.ts +10 -7
  146. package/lib/execution/builder/http.d.ts.map +1 -1
  147. package/lib/execution/builder/http.js +11 -8
  148. package/lib/execution/builder/http.js.map +1 -1
  149. package/lib/metrics/metrics/beacon.d.ts +3 -3
  150. package/lib/metrics/metrics/beacon.d.ts.map +1 -1
  151. package/lib/metrics/metrics/beacon.js +9 -9
  152. package/lib/metrics/metrics/beacon.js.map +1 -1
  153. package/lib/metrics/metrics/lodestar.d.ts +48 -18
  154. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  155. package/lib/metrics/metrics/lodestar.js +96 -50
  156. package/lib/metrics/metrics/lodestar.js.map +1 -1
  157. package/lib/network/gossip/topic.d.ts +13 -0
  158. package/lib/network/gossip/topic.d.ts.map +1 -1
  159. package/lib/network/gossip/topic.js +37 -0
  160. package/lib/network/gossip/topic.js.map +1 -1
  161. package/lib/network/libp2p/index.d.ts.map +1 -1
  162. package/lib/network/libp2p/index.js +10 -2
  163. package/lib/network/libp2p/index.js.map +1 -1
  164. package/lib/network/network.d.ts.map +1 -1
  165. package/lib/network/network.js +22 -43
  166. package/lib/network/network.js.map +1 -1
  167. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  168. package/lib/network/processor/gossipHandlers.js +32 -5
  169. package/lib/network/processor/gossipHandlers.js.map +1 -1
  170. package/lib/network/reqresp/score.d.ts.map +1 -1
  171. package/lib/network/reqresp/score.js +5 -11
  172. package/lib/network/reqresp/score.js.map +1 -1
  173. package/lib/network/util.d.ts +0 -1
  174. package/lib/network/util.d.ts.map +1 -1
  175. package/lib/network/util.js +0 -4
  176. package/lib/network/util.js.map +1 -1
  177. package/lib/node/nodejs.d.ts +2 -1
  178. package/lib/node/nodejs.d.ts.map +1 -1
  179. package/lib/node/nodejs.js.map +1 -1
  180. package/lib/sync/range/batch.d.ts +23 -5
  181. package/lib/sync/range/batch.d.ts.map +1 -1
  182. package/lib/sync/range/batch.js +61 -22
  183. package/lib/sync/range/batch.js.map +1 -1
  184. package/lib/sync/range/chain.d.ts +2 -1
  185. package/lib/sync/range/chain.d.ts.map +1 -1
  186. package/lib/sync/range/chain.js +23 -10
  187. package/lib/sync/range/chain.js.map +1 -1
  188. package/lib/sync/types.d.ts.map +1 -1
  189. package/lib/sync/types.js.map +1 -1
  190. package/lib/sync/unknownBlock.d.ts +9 -0
  191. package/lib/sync/unknownBlock.d.ts.map +1 -1
  192. package/lib/sync/unknownBlock.js +110 -14
  193. package/lib/sync/unknownBlock.js.map +1 -1
  194. package/package.json +18 -18
  195. package/src/api/impl/beacon/blocks/index.ts +5 -7
  196. package/src/api/impl/beacon/pool/index.ts +12 -1
  197. package/src/api/impl/beacon/state/utils.ts +2 -1
  198. package/src/api/impl/events/index.ts +10 -4
  199. package/src/api/impl/validator/index.ts +22 -27
  200. package/src/api/impl/validator/utils.ts +30 -15
  201. package/src/chain/archiveStore/historicalState/metrics.ts +22 -0
  202. package/src/chain/blocks/importBlock.ts +1 -6
  203. package/src/chain/blocks/importExecutionPayload.ts +12 -11
  204. package/src/chain/blocks/index.ts +19 -7
  205. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +25 -16
  206. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +1 -9
  207. package/src/chain/bls/index.ts +1 -1
  208. package/src/chain/bls/interface.ts +7 -3
  209. package/src/chain/bls/multithread/index.ts +148 -120
  210. package/src/chain/bls/multithread/jobItem.ts +12 -82
  211. package/src/chain/bls/multithread/types.ts +33 -8
  212. package/src/chain/bls/multithread/utils.ts +11 -0
  213. package/src/chain/bls/multithread/worker.ts +85 -27
  214. package/src/chain/bls/singleThread.ts +11 -55
  215. package/src/chain/bls/utils.ts +23 -24
  216. package/src/chain/builderCircuitBreaker.ts +31 -17
  217. package/src/chain/chain.ts +9 -5
  218. package/src/chain/errors/blockError.ts +9 -3
  219. package/src/chain/errors/proposerPreferences.ts +7 -0
  220. package/src/chain/interface.ts +2 -1
  221. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  222. package/src/chain/opPools/attestationPool.ts +1 -1
  223. package/src/chain/opPools/payloadAttestationPool.ts +3 -3
  224. package/src/chain/opPools/syncCommitteeMessagePool.ts +1 -1
  225. package/src/chain/opPools/syncContributionAndProofPool.ts +1 -1
  226. package/src/chain/opPools/utils.ts +1 -1
  227. package/src/chain/options.ts +1 -1
  228. package/src/chain/prepareNextSlot.ts +1 -1
  229. package/src/chain/produceBlock/produceBlockBody.ts +13 -0
  230. package/src/chain/seenCache/seenAttesters.ts +31 -5
  231. package/src/chain/seenCache/seenBlockProposers.ts +13 -3
  232. package/src/chain/validation/attestation.ts +1 -7
  233. package/src/chain/validation/attesterSlashing.ts +1 -8
  234. package/src/chain/validation/block.ts +21 -7
  235. package/src/chain/validation/executionPayloadBid.ts +1 -2
  236. package/src/chain/validation/executionPayloadEnvelope.ts +0 -1
  237. package/src/chain/validation/payloadAttestationMessage.ts +6 -17
  238. package/src/chain/validation/proposerPreferences.ts +15 -5
  239. package/src/chain/validation/proposerSlashing.ts +1 -1
  240. package/src/execution/builder/http.ts +11 -11
  241. package/src/metrics/metrics/beacon.ts +9 -9
  242. package/src/metrics/metrics/lodestar.ts +101 -51
  243. package/src/network/gossip/topic.ts +38 -0
  244. package/src/network/libp2p/index.ts +11 -2
  245. package/src/network/network.ts +27 -55
  246. package/src/network/processor/gossipHandlers.ts +35 -3
  247. package/src/network/reqresp/score.ts +5 -11
  248. package/src/network/util.ts +0 -5
  249. package/src/node/nodejs.ts +2 -1
  250. package/src/sync/range/batch.ts +83 -28
  251. package/src/sync/range/chain.ts +26 -11
  252. package/src/sync/types.ts +3 -1
  253. package/src/sync/unknownBlock.ts +126 -17
  254. package/lib/chain/bls/maybeBatch.d.ts +0 -12
  255. package/lib/chain/bls/maybeBatch.d.ts.map +0 -1
  256. package/lib/chain/bls/maybeBatch.js +0 -35
  257. package/lib/chain/bls/maybeBatch.js.map +0 -1
  258. package/src/chain/bls/maybeBatch.ts +0 -45
@@ -7,12 +7,11 @@ self = undefined;
7
7
  import { LinkedList } from "../../../util/array.js";
8
8
  import { callInNextEventLoop } from "../../../util/eventLoop.js";
9
9
  import { QueueError, QueueErrorCode } from "../../../util/queue/index.js";
10
- import { verifySignatureSetsMaybeBatch } from "../maybeBatch.js";
11
- import { getAggregatedPubkey, getAggregatedPubkeysCount } from "../utils.js";
12
- import { JobQueueItemType, jobItemSameMessageToMultiSet, jobItemSigSets, jobItemWorkReq, } from "./jobItem.js";
10
+ import { chunkSameMessageSignatureSets, getAggregatedPubkeysCount, verifySignatureSetsInBatches } from "../utils.js";
11
+ import { jobItemSigSets, jobItemWorkReq } from "./jobItem.js";
13
12
  import { defaultPoolSize } from "./poolSize.js";
14
- import { WorkResultCode } from "./types.js";
15
- import { chunkifyMaximizeChunkSize } from "./utils.js";
13
+ import { JobQueueItemType, WorkResultCode, } from "./types.js";
14
+ import { chunkifyMaxChunkSize } from "./utils.js";
16
15
  // Worker constructor consider the path relative to the current working directory
17
16
  const workerDir = process.env.NODE_ENV === "test" ? "../../../../lib/chain/bls/multithread" : "./";
18
17
  // 1 worker for the main thread
@@ -23,7 +22,7 @@ const blsPoolSize = Math.max(defaultPoolSize - 1, 1);
23
22
  * The biggest sets happen during sync, on mainnet batches of 64 blocks have around ~8000 signatures.
24
23
  * The latency cost of sending the job to and from the worker is approx a single sig verification.
25
24
  * If you split a big signature into 2, the extra time cost is `(2+2N)/(1+2N)`.
26
- * For 128, the extra time cost is about 0.3%. No specific reasoning for `128`, it's just good enough.
25
+ * Keep the scheduler quantum below Lodestar-Z's 256-set verifier bound to limit per-dispatch latency.
27
26
  */
28
27
  const MAX_SIGNATURE_SETS_PER_JOB = 128;
29
28
  /**
@@ -39,8 +38,8 @@ const MAX_BUFFERED_SIGS = 32;
39
38
  * efficiency, at the cost of delaying validation. Unless running in production shows otherwise, it's not critical
40
39
  * to hold attestations and aggregates for 100ms. Lodestar existing queues may hold those objects for much more anyway.
41
40
  *
42
- * There's no exact reasoning for the `100` milliseconds number. The metric `batchSigsSuccess` should indicate if this
43
- * value needs revision
41
+ * There's no exact reasoning for the `100` milliseconds number. Buffer flush size and reason metrics show whether the
42
+ * wait produces useful batches, while job-duration metrics expose its latency cost.
44
43
  */
45
44
  const MAX_BUFFER_WAIT_MS = 100;
46
45
  /**
@@ -66,7 +65,6 @@ var WorkerStatusCode;
66
65
  export class BlsMultiThreadWorkerPool {
67
66
  logger;
68
67
  metrics;
69
- pubkeyCache;
70
68
  workers;
71
69
  jobs = new LinkedList();
72
70
  bufferedJobs = null;
@@ -74,18 +72,16 @@ export class BlsMultiThreadWorkerPool {
74
72
  closed = false;
75
73
  workersBusy = 0;
76
74
  constructor(options, modules) {
77
- const { logger, metrics, pubkeyCache } = modules;
75
+ const { logger, metrics } = modules;
78
76
  this.logger = logger;
79
77
  this.metrics = metrics;
80
- this.pubkeyCache = pubkeyCache;
81
78
  this.blsVerifyAllMultiThread = options.blsVerifyAllMultiThread ?? false;
82
- // Use compressed for herumi for now.
83
- // THe worker is not able to deserialize from uncompressed
84
- // `Error: err _wrapDeserialize`
85
79
  this.workers = this.createWorkers(blsPoolSize);
86
80
  if (metrics) {
87
81
  metrics.blsThreadPool.queueLength.addCollect(() => {
82
+ const bufferedJobs = (this.bufferedJobs?.jobs.length ?? 0) + (this.bufferedJobs?.prioritizedJobs.length ?? 0);
88
83
  metrics.blsThreadPool.queueLength.set(this.jobs.length);
84
+ metrics.blsThreadPool.bufferedQueueLength.set(bufferedJobs);
89
85
  metrics.blsThreadPool.workersBusy.set(this.workersBusy);
90
86
  });
91
87
  }
@@ -96,7 +92,6 @@ export class BlsMultiThreadWorkerPool {
96
92
  this.jobs.length < MAX_JOBS_CAN_ACCEPT_WORK);
97
93
  }
98
94
  async verifySignatureSets(sets, opts = {}) {
99
- // Pubkeys are aggregated in the main thread regardless if verified in workers or in main thread
100
95
  this.metrics?.bls.aggregatedPubkeys.inc(getAggregatedPubkeysCount(sets));
101
96
  this.metrics?.blsThreadPool.totalSigSets.inc(sets.length);
102
97
  if (opts.priority) {
@@ -108,11 +103,7 @@ export class BlsMultiThreadWorkerPool {
108
103
  if (opts.verifyOnMainThread && !this.blsVerifyAllMultiThread) {
109
104
  const timer = this.metrics?.blsThreadPool.mainThreadDurationInThreadPool.startTimer();
110
105
  try {
111
- return verifySignatureSetsMaybeBatch(sets.map((set) => ({
112
- publicKey: getAggregatedPubkey(set, this.pubkeyCache),
113
- message: set.signingRoot.valueOf(),
114
- signature: set.signature,
115
- })));
106
+ return verifySignatureSetsInBatches(sets);
116
107
  }
117
108
  finally {
118
109
  if (timer)
@@ -121,7 +112,7 @@ export class BlsMultiThreadWorkerPool {
121
112
  }
122
113
  // Split large array of sets into smaller.
123
114
  // Very helpful when syncing finalized, sync may submit +1000 sets so chunkify allows to distribute to many workers
124
- const results = await Promise.all(chunkifyMaximizeChunkSize(sets, MAX_SIGNATURE_SETS_PER_JOB).map((setsChunk) => new Promise((resolve, reject) => {
115
+ const results = await Promise.all(chunkifyMaxChunkSize(sets, MAX_SIGNATURE_SETS_PER_JOB).map((setsChunk) => new Promise((resolve, reject) => {
125
116
  return this.queueBlsWork({
126
117
  type: JobQueueItemType.default,
127
118
  resolve,
@@ -141,18 +132,21 @@ export class BlsMultiThreadWorkerPool {
141
132
  * Verify signature sets of the same message, only supports worker verification.
142
133
  */
143
134
  async verifySignatureSetsSameMessage(sets, message, opts = {}) {
144
- // chunkify so that it reduce the risk of retrying when there is at least one invalid signature
145
- const results = await Promise.all(chunkifyMaximizeChunkSize(sets, MAX_SIGNATURE_SETS_PER_JOB).map((setsChunk) => new Promise((resolve, reject) => {
146
- this.queueBlsWork({
147
- type: JobQueueItemType.sameMessage,
148
- resolve,
149
- reject,
150
- addedTimeMs: Date.now(),
151
- opts,
152
- sets: setsChunk,
153
- message,
154
- });
155
- })));
135
+ const promises = [];
136
+ for (const setsChunk of chunkSameMessageSignatureSets(sets)) {
137
+ promises.push(new Promise((resolve, reject) => {
138
+ this.queueBlsWork({
139
+ type: JobQueueItemType.sameMessage,
140
+ resolve,
141
+ reject,
142
+ addedTimeMs: Date.now(),
143
+ opts,
144
+ sets: setsChunk,
145
+ message,
146
+ });
147
+ }));
148
+ }
149
+ const results = await Promise.all(promises);
156
150
  return results.flat();
157
151
  }
158
152
  async close() {
@@ -176,6 +170,7 @@ export class BlsMultiThreadWorkerPool {
176
170
  const workers = [];
177
171
  for (let i = 0; i < poolSize; i++) {
178
172
  const workerData = { workerId: i };
173
+ this.metrics?.blsThreadPool.jobsWorkerTime.inc({ workerId: i }, 0);
179
174
  const worker = new Worker(path.join(workerDir, "worker.js"), {
180
175
  workerData,
181
176
  });
@@ -228,7 +223,7 @@ export class BlsMultiThreadWorkerPool {
228
223
  prioritizedJobs: new LinkedList(),
229
224
  sigCount: 0,
230
225
  firstPush: Date.now(),
231
- timeout: setTimeout(this.runBufferedJobs, MAX_BUFFER_WAIT_MS),
226
+ timeout: setTimeout(() => this.runBufferedJobs("timeout"), MAX_BUFFER_WAIT_MS),
232
227
  };
233
228
  }
234
229
  const jobs = job.opts.priority ? this.bufferedJobs.prioritizedJobs : this.bufferedJobs.jobs;
@@ -236,7 +231,7 @@ export class BlsMultiThreadWorkerPool {
236
231
  this.bufferedJobs.sigCount += jobItemSigSets(job);
237
232
  if (this.bufferedJobs.sigCount > MAX_BUFFERED_SIGS) {
238
233
  clearTimeout(this.bufferedJobs.timeout);
239
- this.runBufferedJobs();
234
+ this.runBufferedJobs("size");
240
235
  }
241
236
  }
242
237
  // Push job and schedule to call `runJob` in the next macro event loop cycle.
@@ -275,32 +270,30 @@ export class BlsMultiThreadWorkerPool {
275
270
  const workerApi = worker.status.workerApi;
276
271
  worker.status = { code: WorkerStatusCode.running, workerApi };
277
272
  this.workersBusy++;
273
+ const jobsStarted = [];
274
+ let completedJobsCount = 0;
275
+ if (this.jobs.length > 0) {
276
+ callInNextEventLoop(this.runJob);
277
+ }
278
278
  try {
279
279
  let startedJobsDefault = 0;
280
280
  let startedJobsSameMessage = 0;
281
281
  let startedSetsDefault = 0;
282
282
  let startedSetsSameMessage = 0;
283
283
  const workReqs = [];
284
- const jobsStarted = [];
285
284
  for (const job of jobsInput) {
286
- this.metrics?.blsThreadPool.jobWaitTime.observe((Date.now() - job.addedTimeMs) / 1000);
285
+ this.metrics?.blsThreadPool.jobWaitTime.observe(jobMetricLabels(job), (Date.now() - job.addedTimeMs) / 1000);
286
+ }
287
+ const preparationStartTime = process.hrtime();
288
+ for (const job of jobsInput) {
287
289
  let workReq;
288
290
  try {
289
- // Note: This can throw, must be handled per-job.
290
- // Pubkey and signature aggregation is defered here
291
- workReq = await jobItemWorkReq(job, this.pubkeyCache, this.metrics);
291
+ workReq = jobItemWorkReq(job);
292
292
  }
293
293
  catch (e) {
294
- this.metrics?.blsThreadPool.errorAggregateSignatureSetsCount.inc({ type: job.type });
295
- switch (job.type) {
296
- case JobQueueItemType.default:
297
- job.reject(e);
298
- break;
299
- case JobQueueItemType.sameMessage:
300
- // there could be an invalid pubkey/signature, retry each individually
301
- this.retryJobItemSameMessage(job);
302
- break;
303
- }
294
+ this.metrics?.blsThreadPool.errorJobsSignatureSetsCount.inc(jobItemSigSets(job));
295
+ this.observeJobCompletion(job, "prepError");
296
+ job.reject(e);
304
297
  continue;
305
298
  }
306
299
  // Re-push all jobs with matching workReq for easier accounting of results
@@ -315,19 +308,26 @@ export class BlsMultiThreadWorkerPool {
315
308
  startedSetsDefault += job.sets.length;
316
309
  }
317
310
  }
311
+ const [preparationSeconds, preparationNanoseconds] = process.hrtime(preparationStartTime);
312
+ this.metrics?.blsThreadPool.workRequestPreparationDuration.observe(preparationSeconds + preparationNanoseconds / 1e9);
318
313
  const startedSigSets = startedSetsDefault + startedSetsSameMessage;
314
+ if (workReqs.length === 0) {
315
+ worker.status = { code: WorkerStatusCode.idle, workerApi };
316
+ this.workersBusy--;
317
+ callInNextEventLoop(this.runJob);
318
+ return;
319
+ }
319
320
  this.metrics?.blsThreadPool.totalJobsGroupsStarted.inc(1);
320
321
  this.metrics?.blsThreadPool.totalJobsStarted.inc({ type: JobQueueItemType.default }, startedJobsDefault);
321
322
  this.metrics?.blsThreadPool.totalJobsStarted.inc({ type: JobQueueItemType.sameMessage }, startedJobsSameMessage);
322
323
  this.metrics?.blsThreadPool.totalSigSetsStarted.inc({ type: JobQueueItemType.default }, startedSetsDefault);
323
324
  this.metrics?.blsThreadPool.totalSigSetsStarted.inc({ type: JobQueueItemType.sameMessage }, startedSetsSameMessage);
324
325
  // Send work package to the worker
325
- // If the job, metrics or any code below throws: the job will reject never going stale.
326
- // Only downside is the job promise may be resolved twice, but that's not an issue
326
+ // If worker communication or result processing throws, all unresolved jobs are rejected.
327
327
  const [jobStartSec, jobStartNs] = process.hrtime();
328
328
  const workResult = await workerApi.verifyManySignatureSets(workReqs);
329
329
  const [jobEndSec, jobEndNs] = process.hrtime();
330
- const { workerId, batchRetries, batchSigsSuccess, workerStartTime, workerEndTime, results } = workResult;
330
+ const { workerId, batchRetries, batchSigsSuccess, verificationCalls, workerStartTime, workerEndTime, results } = workResult;
331
331
  const [workerStartSec, workerStartNs] = workerStartTime;
332
332
  const [workerEndSec, workerEndNs] = workerEndTime;
333
333
  let successCount = 0;
@@ -336,37 +336,15 @@ export class BlsMultiThreadWorkerPool {
336
336
  for (let i = 0; i < jobsStarted.length; i++) {
337
337
  const job = jobsStarted[i];
338
338
  const jobResult = results[i];
339
- const sigSetCount = jobItemSigSets(job);
340
- // TODO: enable exhaustive switch case checks lint rule
341
- switch (job.type) {
342
- case JobQueueItemType.default:
343
- if (!jobResult || jobResult.code !== WorkResultCode.success) {
344
- job.reject(getJobResultError(jobResult, i));
345
- errorCount += sigSetCount;
346
- }
347
- else {
348
- job.resolve(jobResult.result);
349
- successCount += sigSetCount;
350
- }
351
- break;
352
- // handle result of the verification of aggregated signature against aggregated pubkeys
353
- case JobQueueItemType.sameMessage:
354
- if (!jobResult || jobResult.code !== WorkResultCode.success) {
355
- job.reject(getJobResultError(jobResult, i));
356
- errorCount += 1;
357
- }
358
- else {
359
- if (jobResult.result) {
360
- // All are valid, most of the time it goes here
361
- job.resolve(job.sets.map(() => true));
362
- }
363
- else {
364
- // Retry each individually
365
- this.retryJobItemSameMessage(job);
366
- }
367
- successCount += 1;
368
- }
369
- break;
339
+ const signatureSets = jobItemSigSets(job);
340
+ const outcome = completeJob(job, jobResult, i, signatureSets);
341
+ completedJobsCount = i + 1;
342
+ this.observeJobCompletion(job, outcome);
343
+ if (outcome === "prepError" || outcome === "verifyError" || outcome === "workerError") {
344
+ errorCount += signatureSets;
345
+ }
346
+ else {
347
+ successCount += signatureSets;
370
348
  }
371
349
  }
372
350
  const workerJobTimeSec = workerEndSec - workerStartSec + (workerEndNs - workerStartNs) / 1e9;
@@ -380,16 +358,25 @@ export class BlsMultiThreadWorkerPool {
380
358
  this.metrics?.blsThreadPool.errorJobsSignatureSetsCount.inc(errorCount);
381
359
  this.metrics?.blsThreadPool.batchRetries.inc(batchRetries);
382
360
  this.metrics?.blsThreadPool.batchSigsSuccess.inc(batchSigsSuccess);
361
+ for (const { operation, duration, signatureSets } of verificationCalls) {
362
+ this.metrics?.blsThreadPool.verificationCallDuration.observe({ operation }, duration);
363
+ this.metrics?.blsThreadPool.verificationCallSignatureSets.inc({ operation }, signatureSets);
364
+ }
383
365
  }
384
366
  catch (e) {
385
367
  // Worker communications should never reject
386
368
  if (!this.closed) {
387
369
  this.logger.error("BlsMultiThreadWorkerPool error", {}, e);
388
370
  }
389
- // Reject all
390
- for (const job of jobsInput) {
371
+ // Reject jobs that were not already completed
372
+ let errorSignatureSets = 0;
373
+ for (let i = completedJobsCount; i < jobsStarted.length; i++) {
374
+ const job = jobsStarted[i];
375
+ this.observeJobCompletion(job, "workerError");
376
+ errorSignatureSets += jobItemSigSets(job);
391
377
  job.reject(e);
392
378
  }
379
+ this.metrics?.blsThreadPool.errorJobsSignatureSetsCount.inc(errorSignatureSets);
393
380
  }
394
381
  worker.status = { code: WorkerStatusCode.idle, workerApi };
395
382
  this.workersBusy--;
@@ -403,20 +390,27 @@ export class BlsMultiThreadWorkerPool {
403
390
  const jobs = [];
404
391
  let totalSigs = 0;
405
392
  while (totalSigs < MAX_SIGNATURE_SETS_PER_JOB) {
406
- const job = this.jobs.shift();
393
+ const job = this.jobs.first();
407
394
  if (!job) {
408
395
  break;
409
396
  }
397
+ const jobSigSets = jobItemSigSets(job);
398
+ if (jobs.length > 0 && totalSigs + jobSigSets > MAX_SIGNATURE_SETS_PER_JOB) {
399
+ break;
400
+ }
401
+ this.jobs.shift();
410
402
  jobs.push(job);
411
- totalSigs += jobItemSigSets(job);
403
+ totalSigs += jobSigSets;
412
404
  }
413
405
  return jobs;
414
406
  }
415
407
  /**
416
408
  * Add all buffered jobs to the job queue and potentially run them immediately
417
409
  */
418
- runBufferedJobs = () => {
410
+ runBufferedJobs = (reason) => {
419
411
  if (this.bufferedJobs) {
412
+ this.metrics?.blsThreadPool.bufferFlushes.inc({ reason });
413
+ this.metrics?.blsThreadPool.bufferedSignatureSets.observe(this.bufferedJobs.sigCount);
420
414
  for (const job of this.bufferedJobs.jobs) {
421
415
  this.jobs.push(job);
422
416
  }
@@ -427,18 +421,9 @@ export class BlsMultiThreadWorkerPool {
427
421
  callInNextEventLoop(this.runJob);
428
422
  }
429
423
  };
430
- retryJobItemSameMessage(job) {
431
- // Create new jobs for each pubkey set, and Promise.all all the results
432
- for (const j of jobItemSameMessageToMultiSet(job)) {
433
- if (j.opts.priority) {
434
- this.jobs.unshift(j);
435
- }
436
- else {
437
- this.jobs.push(j);
438
- }
439
- }
440
- this.metrics?.blsThreadPool.sameMessageRetryJobs.inc(1);
441
- this.metrics?.blsThreadPool.sameMessageRetrySets.inc(job.sets.length);
424
+ observeJobCompletion(job, outcome) {
425
+ this.metrics?.blsThreadPool.jobDuration.observe(jobMetricLabels(job), (Date.now() - job.addedTimeMs) / 1000);
426
+ this.metrics?.blsThreadPool.jobResults.inc({ type: job.type, outcome });
442
427
  }
443
428
  /** For testing */
444
429
  async waitTillInitialized() {
@@ -449,10 +434,40 @@ export class BlsMultiThreadWorkerPool {
449
434
  }));
450
435
  }
451
436
  }
437
+ function completeJob(job, jobResult, index, signatureSets) {
438
+ if (!jobResult || jobResult.code !== WorkResultCode.success) {
439
+ job.reject(getJobResultError(jobResult ?? null, index));
440
+ return "verifyError";
441
+ }
442
+ switch (job.type) {
443
+ case JobQueueItemType.default: {
444
+ const [result] = jobResult.result;
445
+ if (jobResult.result.length !== 1 || result === undefined) {
446
+ job.reject(getInvalidResultLengthError(index, 1, jobResult.result.length));
447
+ return "workerError";
448
+ }
449
+ job.resolve(result);
450
+ return result ? "valid" : "invalid";
451
+ }
452
+ case JobQueueItemType.sameMessage:
453
+ if (jobResult.result.length !== signatureSets) {
454
+ job.reject(getInvalidResultLengthError(index, signatureSets, jobResult.result.length));
455
+ return "workerError";
456
+ }
457
+ job.resolve(jobResult.result);
458
+ return jobResult.result.every(Boolean) ? "valid" : "invalid";
459
+ }
460
+ }
461
+ function jobMetricLabels(job) {
462
+ return { type: job.type };
463
+ }
452
464
  function getJobResultError(jobResult, i) {
453
465
  const workerError = jobResult ? Error(jobResult.error.message) : Error(`No jobResult for index ${i}`);
454
466
  if (jobResult?.error?.stack)
455
467
  workerError.stack = jobResult.error.stack;
456
468
  return workerError;
457
469
  }
470
+ function getInvalidResultLengthError(index, expected, actual) {
471
+ return Error(`Invalid BLS worker result length for index ${index}: expected ${expected}, got ${actual}`);
472
+ }
458
473
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/index.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,6 @@
1
- import { PublicKey } from "@chainsafe/blst";
2
- import { ISignatureSet, PubkeyCache } from "@lodestar/state-transition";
3
- import { Metrics } from "../../../metrics/metrics.js";
4
- import { LinkedList } from "../../../util/array.js";
5
- import { VerifySignatureOpts } from "../interface.js";
6
- import { BlsWorkReq } from "./types.js";
1
+ import { ISignatureSet } from "@lodestar/state-transition";
2
+ import { SameMessageSignatureSet, VerifySignatureOpts } from "../interface.js";
3
+ import { BlsWorkReq, JobQueueItemType } from "./types.js";
7
4
  export type JobQueueItem = JobQueueItemDefault | JobQueueItemSameMessage;
8
5
  export type JobQueueItemDefault = {
9
6
  type: JobQueueItemType.default;
@@ -19,16 +16,9 @@ export type JobQueueItemSameMessage = {
19
16
  reject: (error?: Error) => void;
20
17
  addedTimeMs: number;
21
18
  opts: VerifySignatureOpts;
22
- sets: {
23
- publicKey: PublicKey;
24
- signature: Uint8Array;
25
- }[];
19
+ sets: SameMessageSignatureSet[];
26
20
  message: Uint8Array;
27
21
  };
28
- export declare enum JobQueueItemType {
29
- default = "default",
30
- sameMessage = "same_message"
31
- }
32
22
  /**
33
23
  * Return count of signature sets from a JobQueueItem
34
24
  */
@@ -37,9 +27,5 @@ export declare function jobItemSigSets(job: JobQueueItem): number;
37
27
  * Prepare BlsWorkReq from JobQueueItem
38
28
  * WARNING: May throw with untrusted user input
39
29
  */
40
- export declare function jobItemWorkReq(job: JobQueueItem, pubkeyCache: PubkeyCache, metrics: Metrics | null): Promise<BlsWorkReq>;
41
- /**
42
- * Convert a JobQueueItemSameMessage into multiple JobQueueItemDefault linked to the original promise
43
- */
44
- export declare function jobItemSameMessageToMultiSet(job: JobQueueItemSameMessage): LinkedList<JobQueueItemDefault>;
30
+ export declare function jobItemWorkReq(job: JobQueueItem): BlsWorkReq;
45
31
  //# sourceMappingURL=jobItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobItem.d.ts","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/jobItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAA+B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAC,aAAa,EAAE,WAAW,EAAmB,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAC,OAAO,EAAC,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAC,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AAEtC,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,uBAAuB,CAAC;AAEzE,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAC/B,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,gBAAgB,CAAC,WAAW,CAAC;IACnC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE;QAAC,SAAS,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,UAAU,CAAA;KAAC,EAAE,CAAC;IACtD,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,oBAAY,gBAAgB;IAC1B,OAAO,YAAY;IACnB,WAAW,iBAAiB;CAC7B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAOxD;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,YAAY,EACjB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,OAAO,GAAG,IAAI,GACtB,OAAO,CAAC,UAAU,CAAC,CA+BrB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,uBAAuB,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAgC1G"}
1
+ {"version":3,"file":"jobItem.d.ts","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/jobItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAoB,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAC,uBAAuB,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAC,UAAU,EAAE,gBAAgB,EAAC,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,uBAAuB,CAAC;AAEzE,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAC/B,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,gBAAgB,CAAC,WAAW,CAAC;IACnC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,uBAAuB,EAAE,CAAC;IAChC,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,UAAU,CAgB5D"}
@@ -1,85 +1,30 @@
1
- import { asyncAggregateWithRandomness } from "@chainsafe/blst";
2
- import { SignatureSetType } from "@lodestar/state-transition";
3
- import { LinkedList } from "../../../util/array.js";
4
- import { getAggregatedPubkey } from "../utils.js";
5
- export var JobQueueItemType;
6
- (function (JobQueueItemType) {
7
- JobQueueItemType["default"] = "default";
8
- JobQueueItemType["sameMessage"] = "same_message";
9
- })(JobQueueItemType || (JobQueueItemType = {}));
1
+ import { toBlsSignatureSet } from "@lodestar/state-transition";
2
+ import { JobQueueItemType } from "./types.js";
10
3
  /**
11
4
  * Return count of signature sets from a JobQueueItem
12
5
  */
13
6
  export function jobItemSigSets(job) {
14
- switch (job.type) {
15
- case JobQueueItemType.default:
16
- return job.sets.length;
17
- case JobQueueItemType.sameMessage:
18
- return 1;
19
- }
7
+ return job.sets.length;
20
8
  }
21
9
  /**
22
10
  * Prepare BlsWorkReq from JobQueueItem
23
11
  * WARNING: May throw with untrusted user input
24
12
  */
25
- export async function jobItemWorkReq(job, pubkeyCache, metrics) {
13
+ export function jobItemWorkReq(job) {
26
14
  switch (job.type) {
27
15
  case JobQueueItemType.default:
28
16
  return {
17
+ type: JobQueueItemType.default,
29
18
  opts: job.opts,
30
- sets: job.sets.map((set) => ({
31
- // this can throw, handled in the consumer code
32
- publicKey: getAggregatedPubkey(set, pubkeyCache, metrics).toBytes(),
33
- signature: set.signature,
34
- message: set.signingRoot,
35
- })),
19
+ sets: job.sets.map(toBlsSignatureSet),
36
20
  };
37
- case JobQueueItemType.sameMessage: {
38
- const timer = metrics?.blsThreadPool.aggregateWithRandomnessAsyncDuration.startTimer();
39
- const { pk, sig } = await asyncAggregateWithRandomness(job.sets.map((set) => ({ pk: set.publicKey, sig: set.signature })));
40
- timer?.();
21
+ case JobQueueItemType.sameMessage:
41
22
  return {
23
+ type: JobQueueItemType.sameMessage,
42
24
  opts: job.opts,
43
- sets: [
44
- {
45
- publicKey: pk.toBytes(),
46
- signature: sig.toBytes(),
47
- message: job.message,
48
- },
49
- ],
25
+ sets: job.sets,
26
+ message: job.message,
50
27
  };
51
- }
52
- }
53
- }
54
- /**
55
- * Convert a JobQueueItemSameMessage into multiple JobQueueItemDefault linked to the original promise
56
- */
57
- export function jobItemSameMessageToMultiSet(job) {
58
- // Retry each individually
59
- // Create new jobs for each pubkey set, and Promise.all all the results
60
- const promises = [];
61
- const jobs = new LinkedList();
62
- for (const set of job.sets) {
63
- promises.push(new Promise((resolve, reject) => {
64
- jobs.push({
65
- type: JobQueueItemType.default,
66
- resolve,
67
- reject,
68
- addedTimeMs: job.addedTimeMs,
69
- opts: { batchable: false, priority: job.opts.priority },
70
- sets: [
71
- {
72
- type: SignatureSetType.single,
73
- pubkey: set.publicKey,
74
- signature: set.signature,
75
- signingRoot: job.message,
76
- },
77
- ],
78
- });
79
- }));
80
28
  }
81
- // Connect jobs to main job
82
- Promise.all(promises).then(job.resolve, job.reject);
83
- return jobs;
84
29
  }
85
30
  //# sourceMappingURL=jobItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobItem.js","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/jobItem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jobItem.js","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/jobItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAE5E,OAAO,EAAa,gBAAgB,EAAC,MAAM,YAAY,CAAC;AAuBxD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAiB;IAC9C,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAiB;IAC9C,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO;gBACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;gBAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC;aACtC,CAAC;QACJ,KAAK,gBAAgB,CAAC,WAAW;YAC/B,OAAO;gBACL,IAAI,EAAE,gBAAgB,CAAC,WAAW;gBAClC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC;IACN,CAAC;AACH,CAAC"}