@lodestar/beacon-node 1.47.0-dev.ee197a8d7f → 1.47.0-dev.f23173a2e1

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 (196) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
  4. package/lib/api/impl/beacon/pool/index.js +8 -1
  5. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  6. package/lib/api/impl/beacon/state/utils.d.ts +2 -1
  7. package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
  8. package/lib/api/impl/beacon/state/utils.js.map +1 -1
  9. package/lib/api/impl/events/index.d.ts +1 -1
  10. package/lib/api/impl/events/index.d.ts.map +1 -1
  11. package/lib/api/impl/events/index.js +12 -3
  12. package/lib/api/impl/events/index.js.map +1 -1
  13. package/lib/chain/blocks/importExecutionPayload.d.ts +3 -2
  14. package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
  15. package/lib/chain/blocks/importExecutionPayload.js +11 -9
  16. package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
  17. package/lib/chain/blocks/index.d.ts.map +1 -1
  18. package/lib/chain/blocks/index.js +14 -6
  19. package/lib/chain/blocks/index.js.map +1 -1
  20. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -1
  21. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +22 -12
  22. package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
  23. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts +2 -2
  24. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.d.ts.map +1 -1
  25. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js +2 -2
  26. package/lib/chain/blocks/verifyExecutionPayloadEnvelope.js.map +1 -1
  27. package/lib/chain/bls/index.d.ts +1 -1
  28. package/lib/chain/bls/index.d.ts.map +1 -1
  29. package/lib/chain/bls/interface.d.ts +5 -5
  30. package/lib/chain/bls/interface.d.ts.map +1 -1
  31. package/lib/chain/bls/multithread/index.d.ts +5 -11
  32. package/lib/chain/bls/multithread/index.d.ts.map +1 -1
  33. package/lib/chain/bls/multithread/index.js +116 -101
  34. package/lib/chain/bls/multithread/index.js.map +1 -1
  35. package/lib/chain/bls/multithread/jobItem.d.ts +5 -19
  36. package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -1
  37. package/lib/chain/bls/multithread/jobItem.js +10 -65
  38. package/lib/chain/bls/multithread/jobItem.js.map +1 -1
  39. package/lib/chain/bls/multithread/types.d.ts +29 -8
  40. package/lib/chain/bls/multithread/types.d.ts.map +1 -1
  41. package/lib/chain/bls/multithread/types.js +12 -0
  42. package/lib/chain/bls/multithread/types.js.map +1 -1
  43. package/lib/chain/bls/multithread/utils.d.ts +4 -0
  44. package/lib/chain/bls/multithread/utils.d.ts.map +1 -1
  45. package/lib/chain/bls/multithread/utils.js +10 -0
  46. package/lib/chain/bls/multithread/utils.js.map +1 -1
  47. package/lib/chain/bls/multithread/worker.js +49 -23
  48. package/lib/chain/bls/multithread/worker.js.map +1 -1
  49. package/lib/chain/bls/singleThread.d.ts +4 -10
  50. package/lib/chain/bls/singleThread.d.ts.map +1 -1
  51. package/lib/chain/bls/singleThread.js +8 -45
  52. package/lib/chain/bls/singleThread.js.map +1 -1
  53. package/lib/chain/bls/utils.d.ts +4 -4
  54. package/lib/chain/bls/utils.d.ts.map +1 -1
  55. package/lib/chain/bls/utils.js +18 -19
  56. package/lib/chain/bls/utils.js.map +1 -1
  57. package/lib/chain/chain.d.ts +2 -1
  58. package/lib/chain/chain.d.ts.map +1 -1
  59. package/lib/chain/chain.js +6 -4
  60. package/lib/chain/chain.js.map +1 -1
  61. package/lib/chain/errors/blockError.d.ts +1 -0
  62. package/lib/chain/errors/blockError.d.ts.map +1 -1
  63. package/lib/chain/errors/blockError.js +6 -1
  64. package/lib/chain/errors/blockError.js.map +1 -1
  65. package/lib/chain/errors/proposerPreferences.d.ts +6 -0
  66. package/lib/chain/errors/proposerPreferences.d.ts.map +1 -1
  67. package/lib/chain/errors/proposerPreferences.js +1 -0
  68. package/lib/chain/errors/proposerPreferences.js.map +1 -1
  69. package/lib/chain/interface.d.ts +2 -1
  70. package/lib/chain/interface.d.ts.map +1 -1
  71. package/lib/chain/interface.js.map +1 -1
  72. package/lib/chain/opPools/aggregatedAttestationPool.js +1 -1
  73. package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
  74. package/lib/chain/opPools/attestationPool.d.ts +1 -1
  75. package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
  76. package/lib/chain/opPools/attestationPool.js +1 -1
  77. package/lib/chain/opPools/attestationPool.js.map +1 -1
  78. package/lib/chain/opPools/payloadAttestationPool.js +3 -3
  79. package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
  80. package/lib/chain/opPools/syncCommitteeMessagePool.js +1 -1
  81. package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
  82. package/lib/chain/opPools/syncContributionAndProofPool.js +1 -1
  83. package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
  84. package/lib/chain/opPools/utils.d.ts +1 -1
  85. package/lib/chain/opPools/utils.d.ts.map +1 -1
  86. package/lib/chain/opPools/utils.js +1 -1
  87. package/lib/chain/opPools/utils.js.map +1 -1
  88. package/lib/chain/seenCache/seenAttesters.d.ts +9 -5
  89. package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -1
  90. package/lib/chain/seenCache/seenAttesters.js +25 -4
  91. package/lib/chain/seenCache/seenAttesters.js.map +1 -1
  92. package/lib/chain/validation/attestation.d.ts.map +1 -1
  93. package/lib/chain/validation/attestation.js +1 -4
  94. package/lib/chain/validation/attestation.js.map +1 -1
  95. package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
  96. package/lib/chain/validation/attesterSlashing.js +1 -1
  97. package/lib/chain/validation/attesterSlashing.js.map +1 -1
  98. package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
  99. package/lib/chain/validation/executionPayloadBid.js +1 -2
  100. package/lib/chain/validation/executionPayloadBid.js.map +1 -1
  101. package/lib/chain/validation/executionPayloadEnvelope.js +1 -1
  102. package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
  103. package/lib/chain/validation/payloadAttestationMessage.d.ts.map +1 -1
  104. package/lib/chain/validation/payloadAttestationMessage.js +5 -14
  105. package/lib/chain/validation/payloadAttestationMessage.js.map +1 -1
  106. package/lib/chain/validation/proposerPreferences.d.ts.map +1 -1
  107. package/lib/chain/validation/proposerPreferences.js +12 -3
  108. package/lib/chain/validation/proposerPreferences.js.map +1 -1
  109. package/lib/chain/validation/proposerSlashing.js +1 -1
  110. package/lib/chain/validation/proposerSlashing.js.map +1 -1
  111. package/lib/metrics/metrics/lodestar.d.ts +38 -18
  112. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  113. package/lib/metrics/metrics/lodestar.js +80 -50
  114. package/lib/metrics/metrics/lodestar.js.map +1 -1
  115. package/lib/network/gossip/topic.d.ts +13 -0
  116. package/lib/network/gossip/topic.d.ts.map +1 -1
  117. package/lib/network/gossip/topic.js +37 -0
  118. package/lib/network/gossip/topic.js.map +1 -1
  119. package/lib/network/network.d.ts.map +1 -1
  120. package/lib/network/network.js +22 -43
  121. package/lib/network/network.js.map +1 -1
  122. package/lib/network/reqresp/score.d.ts.map +1 -1
  123. package/lib/network/reqresp/score.js +5 -11
  124. package/lib/network/reqresp/score.js.map +1 -1
  125. package/lib/network/util.d.ts +0 -1
  126. package/lib/network/util.d.ts.map +1 -1
  127. package/lib/network/util.js +0 -4
  128. package/lib/network/util.js.map +1 -1
  129. package/lib/node/nodejs.d.ts +2 -1
  130. package/lib/node/nodejs.d.ts.map +1 -1
  131. package/lib/node/nodejs.js.map +1 -1
  132. package/lib/sync/range/batch.d.ts +23 -5
  133. package/lib/sync/range/batch.d.ts.map +1 -1
  134. package/lib/sync/range/batch.js +61 -22
  135. package/lib/sync/range/batch.js.map +1 -1
  136. package/lib/sync/range/chain.d.ts +2 -1
  137. package/lib/sync/range/chain.d.ts.map +1 -1
  138. package/lib/sync/range/chain.js +23 -10
  139. package/lib/sync/range/chain.js.map +1 -1
  140. package/lib/sync/types.d.ts.map +1 -1
  141. package/lib/sync/types.js.map +1 -1
  142. package/lib/sync/unknownBlock.d.ts +9 -0
  143. package/lib/sync/unknownBlock.d.ts.map +1 -1
  144. package/lib/sync/unknownBlock.js +93 -9
  145. package/lib/sync/unknownBlock.js.map +1 -1
  146. package/package.json +18 -18
  147. package/src/api/impl/beacon/blocks/index.ts +1 -1
  148. package/src/api/impl/beacon/pool/index.ts +7 -1
  149. package/src/api/impl/beacon/state/utils.ts +2 -1
  150. package/src/api/impl/events/index.ts +12 -4
  151. package/src/chain/blocks/importExecutionPayload.ts +12 -11
  152. package/src/chain/blocks/index.ts +18 -6
  153. package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +25 -16
  154. package/src/chain/blocks/verifyExecutionPayloadEnvelope.ts +1 -9
  155. package/src/chain/bls/index.ts +1 -1
  156. package/src/chain/bls/interface.ts +7 -3
  157. package/src/chain/bls/multithread/index.ts +148 -120
  158. package/src/chain/bls/multithread/jobItem.ts +12 -82
  159. package/src/chain/bls/multithread/types.ts +33 -8
  160. package/src/chain/bls/multithread/utils.ts +11 -0
  161. package/src/chain/bls/multithread/worker.ts +85 -27
  162. package/src/chain/bls/singleThread.ts +11 -55
  163. package/src/chain/bls/utils.ts +23 -24
  164. package/src/chain/chain.ts +7 -5
  165. package/src/chain/errors/blockError.ts +8 -2
  166. package/src/chain/errors/proposerPreferences.ts +7 -0
  167. package/src/chain/interface.ts +2 -1
  168. package/src/chain/opPools/aggregatedAttestationPool.ts +1 -1
  169. package/src/chain/opPools/attestationPool.ts +1 -1
  170. package/src/chain/opPools/payloadAttestationPool.ts +3 -3
  171. package/src/chain/opPools/syncCommitteeMessagePool.ts +1 -1
  172. package/src/chain/opPools/syncContributionAndProofPool.ts +1 -1
  173. package/src/chain/opPools/utils.ts +1 -1
  174. package/src/chain/seenCache/seenAttesters.ts +31 -5
  175. package/src/chain/validation/attestation.ts +1 -7
  176. package/src/chain/validation/attesterSlashing.ts +1 -8
  177. package/src/chain/validation/executionPayloadBid.ts +1 -2
  178. package/src/chain/validation/executionPayloadEnvelope.ts +0 -1
  179. package/src/chain/validation/payloadAttestationMessage.ts +6 -17
  180. package/src/chain/validation/proposerPreferences.ts +14 -4
  181. package/src/chain/validation/proposerSlashing.ts +1 -1
  182. package/src/metrics/metrics/lodestar.ts +85 -51
  183. package/src/network/gossip/topic.ts +38 -0
  184. package/src/network/network.ts +27 -55
  185. package/src/network/reqresp/score.ts +5 -11
  186. package/src/network/util.ts +0 -5
  187. package/src/node/nodejs.ts +2 -1
  188. package/src/sync/range/batch.ts +83 -28
  189. package/src/sync/range/chain.ts +26 -11
  190. package/src/sync/types.ts +3 -1
  191. package/src/sync/unknownBlock.ts +108 -12
  192. package/lib/chain/bls/maybeBatch.d.ts +0 -12
  193. package/lib/chain/bls/maybeBatch.d.ts.map +0 -1
  194. package/lib/chain/bls/maybeBatch.js +0 -35
  195. package/lib/chain/bls/maybeBatch.js.map +0 -1
  196. package/src/chain/bls/maybeBatch.ts +0 -45
@@ -1,20 +1,39 @@
1
- import { VerifySignatureOpts } from "../interface.js";
1
+ import { type BlsSignatureSet } from "@chainsafe/lodestar-z/bls-verifier";
2
+ import { SameMessageSignatureSet, VerifySignatureOpts } from "../interface.js";
2
3
  export type WorkerData = {
3
4
  workerId: number;
4
5
  };
5
- export type SerializedSet = {
6
- publicKey: Uint8Array;
7
- message: Uint8Array;
8
- signature: Uint8Array;
6
+ export declare enum JobQueueItemType {
7
+ default = "default",
8
+ sameMessage = "same_message"
9
+ }
10
+ export type BlsWorkReqDefault = {
11
+ type: JobQueueItemType.default;
12
+ opts: VerifySignatureOpts;
13
+ sets: BlsSignatureSet[];
9
14
  };
10
- export type BlsWorkReq = {
15
+ export type BlsWorkReqSameMessage = {
16
+ type: JobQueueItemType.sameMessage;
11
17
  opts: VerifySignatureOpts;
12
- sets: SerializedSet[];
18
+ sets: SameMessageSignatureSet[];
19
+ message: Uint8Array;
13
20
  };
21
+ export type BlsWorkReq = BlsWorkReqDefault | BlsWorkReqSameMessage;
14
22
  export declare enum WorkResultCode {
15
23
  success = "success",
16
24
  error = "error"
17
25
  }
26
+ export declare enum VerificationCallOperation {
27
+ batch = "batch",
28
+ single = "single",
29
+ fallback = "fallback",
30
+ sameMessage = "same_message"
31
+ }
32
+ export type VerificationCall = {
33
+ operation: VerificationCallOperation;
34
+ duration: number;
35
+ signatureSets: number;
36
+ };
18
37
  export type WorkResultError = {
19
38
  code: WorkResultCode.error;
20
39
  error: Error;
@@ -30,10 +49,12 @@ export type BlsWorkResult = {
30
49
  batchRetries: number;
31
50
  /** Total num of sigs that have been successfully verified with batching */
32
51
  batchSigsSuccess: number;
52
+ /** Every lodestar-z verification call made while processing this work group */
53
+ verificationCalls: VerificationCall[];
33
54
  /** Time worker function starts - UNIX timestamp in seconds and nanoseconds */
34
55
  workerStartTime: [number, number];
35
56
  /** Time worker function ends - UNIX timestamp in seconds and nanoseconds */
36
57
  workerEndTime: [number, number];
37
- results: WorkResult<boolean>[];
58
+ results: WorkResult<boolean[]>[];
38
59
  };
39
60
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,UAAU,CAAC;IACpB,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB,CAAC;AAEF,oBAAY,cAAc;IACxB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,eAAe,GAAG;IAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAC,CAAC;AACzE,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAAC,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAC,GAAG,eAAe,CAAC;AAExF,MAAM,MAAM,aAAa,GAAG;IAC1B,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,4EAA4E;IAC5E,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;CAChC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,eAAe,EAAC,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAC,uBAAuB,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAE7E,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,oBAAY,gBAAgB;IAC1B,OAAO,YAAY;IACnB,WAAW,iBAAiB;CAC7B;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAC/B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,eAAe,EAAE,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,gBAAgB,CAAC,WAAW,CAAC;IACnC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,uBAAuB,EAAE,CAAC;IAChC,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,iBAAiB,GAAG,qBAAqB,CAAC;AAEnE,oBAAY,cAAc;IACxB,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,oBAAY,yBAAyB;IACnC,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,WAAW,iBAAiB;CAC7B;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,yBAAyB,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAC,CAAC;AACzE,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAAC,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAC,GAAG,eAAe,CAAC;AAExF,MAAM,MAAM,aAAa,GAAG;IAC1B,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,8EAA8E;IAC9E,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,4EAA4E;IAC5E,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;CAClC,CAAC"}
@@ -1,6 +1,18 @@
1
+ export var JobQueueItemType;
2
+ (function (JobQueueItemType) {
3
+ JobQueueItemType["default"] = "default";
4
+ JobQueueItemType["sameMessage"] = "same_message";
5
+ })(JobQueueItemType || (JobQueueItemType = {}));
1
6
  export var WorkResultCode;
2
7
  (function (WorkResultCode) {
3
8
  WorkResultCode["success"] = "success";
4
9
  WorkResultCode["error"] = "error";
5
10
  })(WorkResultCode || (WorkResultCode = {}));
11
+ export var VerificationCallOperation;
12
+ (function (VerificationCallOperation) {
13
+ VerificationCallOperation["batch"] = "batch";
14
+ VerificationCallOperation["single"] = "single";
15
+ VerificationCallOperation["fallback"] = "fallback";
16
+ VerificationCallOperation["sameMessage"] = "same_message";
17
+ })(VerificationCallOperation || (VerificationCallOperation = {}));
6
18
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/types.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,iCAAe,CAAA;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/types.ts"],"names":[],"mappings":"AAOA,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,gDAA4B,CAAA;AAC9B,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAiBD,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,iCAAe,CAAA;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,yBAKX;AALD,WAAY,yBAAyB;IACnC,4CAAe,CAAA;IACf,8CAAiB,CAAA;IACjB,kDAAqB,CAAA;IACrB,yDAA4B,CAAA;AAC9B,CAAC,EALW,yBAAyB,KAAzB,yBAAyB,QAKpC"}
@@ -2,4 +2,8 @@
2
2
  * Splits an array into an array of arrays maximizing the size of the smallest chunk.
3
3
  */
4
4
  export declare function chunkifyMaximizeChunkSize<T>(arr: T[], minPerChunk: number): T[][];
5
+ /**
6
+ * Splits an array into chunks that do not exceed a maximum size.
7
+ */
8
+ export declare function chunkifyMaxChunkSize<T>(arr: T[], maxPerChunk: number): T[][];
5
9
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAejF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAejF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAM5E"}
@@ -14,4 +14,14 @@ export function chunkifyMaximizeChunkSize(arr, minPerChunk) {
14
14
  }
15
15
  return arrArr;
16
16
  }
17
+ /**
18
+ * Splits an array into chunks that do not exceed a maximum size.
19
+ */
20
+ export function chunkifyMaxChunkSize(arr, maxPerChunk) {
21
+ const chunks = [];
22
+ for (let i = 0; i < arr.length; i += maxPerChunk) {
23
+ chunks.push(arr.slice(i, i + maxPerChunk));
24
+ }
25
+ return chunks;
26
+ }
17
27
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAI,GAAQ,EAAE,WAAmB;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;IACxD,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,oCAAoC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;IACpD,MAAM,MAAM,GAAU,EAAE,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAI,GAAQ,EAAE,WAAmB;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;IACxD,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,oCAAoC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;IACpD,MAAM,MAAM,GAAU,EAAE,CAAC;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAI,GAAQ,EAAE,WAAmB;IACnE,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,8 +1,7 @@
1
1
  import worker from "node:worker_threads";
2
- import { PublicKey } from "@chainsafe/blst";
2
+ import { verifySignatureSets, verifySignatureSetsSameMessage, } from "@chainsafe/lodestar-z/bls-verifier";
3
3
  import { expose } from "@chainsafe/threads/worker";
4
- import { verifySignatureSetsMaybeBatch } from "../maybeBatch.js";
5
- import { WorkResultCode } from "./types.js";
4
+ import { JobQueueItemType, VerificationCallOperation, WorkResultCode, } from "./types.js";
6
5
  import { chunkifyMaximizeChunkSize } from "./utils.js";
7
6
  /**
8
7
  * Split batchable sets in chunks of minimum size 16.
@@ -25,6 +24,7 @@ expose({
25
24
  function verifyManySignatureSets(workReqArr) {
26
25
  const [startSec, startNs] = process.hrtime();
27
26
  const results = [];
27
+ const verificationCalls = [];
28
28
  let batchRetries = 0;
29
29
  let batchSigsSuccess = 0;
30
30
  // If there are multiple batchable sets attempt batch verification with them
@@ -33,12 +33,26 @@ function verifyManySignatureSets(workReqArr) {
33
33
  // Split sets between batchable and non-batchable preserving their original index in the req array
34
34
  for (let i = 0; i < workReqArr.length; i++) {
35
35
  const workReq = workReqArr[i];
36
- const sets = workReq.sets.map(deserializeSet);
37
- if (workReq.opts.batchable) {
38
- batchableSets.push({ idx: i, sets });
39
- }
40
- else {
41
- nonBatchableSets.push({ idx: i, sets });
36
+ switch (workReq.type) {
37
+ case JobQueueItemType.default: {
38
+ const { sets } = workReq;
39
+ if (workReq.opts.batchable) {
40
+ batchableSets.push({ idx: i, sets });
41
+ }
42
+ else {
43
+ nonBatchableSets.push({ idx: i, sets, operation: VerificationCallOperation.single });
44
+ }
45
+ break;
46
+ }
47
+ case JobQueueItemType.sameMessage:
48
+ try {
49
+ const result = recordVerificationCall(verificationCalls, VerificationCallOperation.sameMessage, workReq.sets.length, () => verifySignatureSetsSameMessage(workReq.sets, workReq.message));
50
+ results[i] = { code: WorkResultCode.success, result };
51
+ }
52
+ catch (e) {
53
+ results[i] = { code: WorkResultCode.error, error: e };
54
+ }
55
+ break;
42
56
  }
43
57
  }
44
58
  if (batchableSets.length > 0) {
@@ -53,33 +67,41 @@ function verifyManySignatureSets(workReqArr) {
53
67
  }
54
68
  try {
55
69
  // Attempt to verify multiple sets at once
56
- const isValid = verifySignatureSetsMaybeBatch(allSets);
70
+ const isValid = recordVerificationCall(verificationCalls, VerificationCallOperation.batch, allSets.length, () => verifySignatureSets(allSets));
57
71
  if (isValid) {
58
72
  // The entire batch is valid, return success to all
59
73
  for (const { idx, sets } of batchableChunk) {
60
74
  batchSigsSuccess += sets.length;
61
- results[idx] = { code: WorkResultCode.success, result: isValid };
75
+ results[idx] = { code: WorkResultCode.success, result: [isValid] };
62
76
  }
63
77
  }
64
78
  else {
65
79
  batchRetries++;
66
80
  // Re-verify all sigs
67
- nonBatchableSets.push(...batchableChunk);
81
+ nonBatchableSets.push(...batchableChunk.map(({ idx, sets }) => ({
82
+ idx,
83
+ sets,
84
+ operation: VerificationCallOperation.fallback,
85
+ })));
68
86
  }
69
87
  }
70
88
  catch (_e) {
71
89
  // TODO: Ignore this error expecting that the same error will happen when re-verifying the set individually
72
- // It's not ideal but '@chainsafe/blst' may throw errors on some conditions
90
+ // It's not ideal but the BLS implementation may throw errors on some conditions
73
91
  batchRetries++;
74
92
  // Re-verify all sigs
75
- nonBatchableSets.push(...batchableChunk);
93
+ nonBatchableSets.push(...batchableChunk.map(({ idx, sets }) => ({
94
+ idx,
95
+ sets,
96
+ operation: VerificationCallOperation.fallback,
97
+ })));
76
98
  }
77
99
  }
78
100
  }
79
- for (const { idx, sets } of nonBatchableSets) {
101
+ for (const { idx, sets, operation } of nonBatchableSets) {
80
102
  try {
81
- const isValid = verifySignatureSetsMaybeBatch(sets);
82
- results[idx] = { code: WorkResultCode.success, result: isValid };
103
+ const isValid = recordVerificationCall(verificationCalls, operation, sets.length, () => verifySignatureSets(sets));
104
+ results[idx] = { code: WorkResultCode.success, result: [isValid] };
83
105
  }
84
106
  catch (e) {
85
107
  results[idx] = { code: WorkResultCode.error, error: e };
@@ -90,16 +112,20 @@ function verifyManySignatureSets(workReqArr) {
90
112
  workerId,
91
113
  batchRetries,
92
114
  batchSigsSuccess,
115
+ verificationCalls,
93
116
  workerStartTime: [startSec, startNs],
94
117
  workerEndTime: [workerEndSec, workerEndNs],
95
118
  results,
96
119
  };
97
120
  }
98
- function deserializeSet(set) {
99
- return {
100
- publicKey: PublicKey.fromBytes(set.publicKey),
101
- message: set.message,
102
- signature: set.signature,
103
- };
121
+ function recordVerificationCall(calls, operation, signatureSets, verify) {
122
+ const startTime = process.hrtime();
123
+ try {
124
+ return verify();
125
+ }
126
+ finally {
127
+ const [seconds, nanoseconds] = process.hrtime(startTime);
128
+ calls.push({ operation, signatureSets, duration: seconds + nanoseconds / 1e9 });
129
+ }
104
130
  }
105
131
  //# sourceMappingURL=worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/chain/bls/multithread/worker.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,13 @@
1
- import { PublicKey } from "@chainsafe/blst";
2
- import { ISignatureSet, PubkeyCache } from "@lodestar/state-transition";
1
+ import { ISignatureSet } from "@lodestar/state-transition";
3
2
  import { Metrics } from "../../metrics/index.js";
4
- import { IBlsVerifier } from "./interface.js";
3
+ import { IBlsVerifier, SameMessageSignatureSet } from "./interface.js";
5
4
  export declare class BlsSingleThreadVerifier implements IBlsVerifier {
6
5
  private readonly metrics;
7
- private readonly pubkeyCache;
8
- constructor({ metrics, pubkeyCache }: {
6
+ constructor({ metrics }: {
9
7
  metrics: Metrics | null;
10
- pubkeyCache: PubkeyCache;
11
8
  });
12
9
  verifySignatureSets(sets: ISignatureSet[]): Promise<boolean>;
13
- verifySignatureSetsSameMessage(sets: {
14
- publicKey: PublicKey;
15
- signature: Uint8Array;
16
- }[], message: Uint8Array): Promise<boolean[]>;
10
+ verifySignatureSetsSameMessage(sets: SameMessageSignatureSet[], message: Uint8Array): Promise<boolean[]>;
17
11
  close(): Promise<void>;
18
12
  canAcceptWork(): boolean;
19
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"singleThread.d.ts","sourceRoot":"","sources":["../../../src/chain/bls/singleThread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAA8D,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAC,aAAa,EAAE,WAAW,EAAC,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAI5C,qBAAa,uBAAwB,YAAW,YAAY;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAE1C,YAAY,EAAC,OAAc,EAAE,WAAW,EAAC,EAAE;QAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,WAAW,CAAA;KAAC,EAG7F;IAEK,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBjE;IAEK,8BAA8B,CAClC,IAAI,EAAE;QAAC,SAAS,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,UAAU,CAAA;KAAC,EAAE,EACrD,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,OAAO,EAAE,CAAC,CAsCpB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAED,aAAa,IAAI,OAAO,CAGvB;CACF"}
1
+ {"version":3,"file":"singleThread.d.ts","sourceRoot":"","sources":["../../../src/chain/bls/singleThread.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAC,YAAY,EAAE,uBAAuB,EAAC,MAAM,gBAAgB,CAAC;AAGrE,qBAAa,uBAAwB,YAAW,YAAY;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,YAAY,EAAC,OAAc,EAAC,EAAE;QAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;KAAC,EAEtD;IAEK,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAYjE;IAEK,8BAA8B,CAAC,IAAI,EAAE,uBAAuB,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAQ7G;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;IAED,aAAa,IAAI,OAAO,CAGvB;CACF"}
@@ -1,23 +1,14 @@
1
- import { Signature, aggregatePublicKeys, aggregateSignatures, verify } from "@chainsafe/blst";
2
- import { verifySignatureSetsMaybeBatch } from "./maybeBatch.js";
3
- import { getAggregatedPubkey, getAggregatedPubkeysCount } from "./utils.js";
1
+ import { verifySignatureSetsSameMessage } from "@chainsafe/lodestar-z/bls-verifier";
2
+ import { chunkSameMessageSignatureSets, getAggregatedPubkeysCount, verifySignatureSetsInBatches } from "./utils.js";
4
3
  export class BlsSingleThreadVerifier {
5
4
  metrics;
6
- pubkeyCache;
7
- constructor({ metrics = null, pubkeyCache }) {
5
+ constructor({ metrics = null }) {
8
6
  this.metrics = metrics;
9
- this.pubkeyCache = pubkeyCache;
10
7
  }
11
8
  async verifySignatureSets(sets) {
12
9
  this.metrics?.bls.aggregatedPubkeys.inc(getAggregatedPubkeysCount(sets));
13
- const setsAggregated = sets.map((set) => ({
14
- publicKey: getAggregatedPubkey(set, this.pubkeyCache, this.metrics),
15
- message: set.signingRoot,
16
- signature: set.signature,
17
- }));
18
- // Count time after aggregating
19
10
  const timer = this.metrics?.blsThreadPool.mainThreadDurationInThreadPool.startTimer();
20
- const isValid = verifySignatureSetsMaybeBatch(setsAggregated);
11
+ const isValid = verifySignatureSetsInBatches(sets);
21
12
  // Don't use a try/catch, only count run without exceptions
22
13
  if (timer) {
23
14
  timer();
@@ -26,39 +17,11 @@ export class BlsSingleThreadVerifier {
26
17
  }
27
18
  async verifySignatureSetsSameMessage(sets, message) {
28
19
  const timer = this.metrics?.blsThreadPool.mainThreadDurationInThreadPool.startTimer();
29
- const pubkey = aggregatePublicKeys(sets.map((set) => set.publicKey));
30
- let isAllValid = true;
31
- // validate signature = true
32
- const signatures = sets.map((set) => {
33
- try {
34
- return Signature.fromBytes(set.signature, true);
35
- }
36
- catch (_) {
37
- // at least one set has malformed signature
38
- isAllValid = false;
39
- return null;
40
- }
41
- });
42
- if (isAllValid) {
43
- const signature = aggregateSignatures(signatures);
44
- isAllValid = verify(message, pubkey, signature);
45
- }
46
- let result;
47
- if (isAllValid) {
48
- result = sets.map(() => true);
49
- }
50
- else {
51
- result = sets.map((set, i) => {
52
- const sig = signatures[i];
53
- if (sig === null) {
54
- return false;
55
- }
56
- return verify(message, set.publicKey, sig);
57
- });
58
- }
59
- if (timer) {
60
- timer();
20
+ const result = [];
21
+ for (const setsChunk of chunkSameMessageSignatureSets(sets)) {
22
+ result.push(...verifySignatureSetsSameMessage(setsChunk, message));
61
23
  }
24
+ timer?.();
62
25
  return result;
63
26
  }
64
27
  async close() {
@@ -1 +1 @@
1
- {"version":3,"file":"singleThread.js","sourceRoot":"","sources":["../../../src/chain/bls/singleThread.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"singleThread.js","sourceRoot":"","sources":["../../../src/chain/bls/singleThread.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,8BAA8B,EAAC,MAAM,oCAAoC,CAAC;AAIlF,OAAO,EAAC,6BAA6B,EAAE,yBAAyB,EAAE,4BAA4B,EAAC,MAAM,YAAY,CAAC;AAElH,MAAM,OAAO,uBAAuB;IACjB,OAAO,CAAiB;IACzC,YAAY,EAAC,OAAO,GAAG,IAAI,EAA4B;QACrD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAqB;QAC7C,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,8BAA8B,CAAC,UAAU,EAAE,CAAC;QACtF,MAAM,OAAO,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAEnD,2DAA2D;QAC3D,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;QACV,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,8BAA8B,CAAC,IAA+B,EAAE,OAAmB;QACvF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,8BAA8B,CAAC,UAAU,EAAE,CAAC;QACtF,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,KAAK,MAAM,SAAS,IAAI,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,8BAA8B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,KAAK,EAAE,EAAE,CAAC;QACV,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,gBAAgB;IAClB,CAAC;IAED,aAAa;QACX,qFAAqF;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
- import { PublicKey } from "@chainsafe/blst";
2
- import { ISignatureSet, PubkeyCache } from "@lodestar/state-transition";
3
- import { Metrics } from "../../metrics/metrics.js";
4
- export declare function getAggregatedPubkey(signatureSet: ISignatureSet, pubkeyCache: PubkeyCache, metrics?: Metrics | null): PublicKey;
1
+ import { ISignatureSet } from "@lodestar/state-transition";
2
+ import { SameMessageSignatureSet } from "./interface.js";
3
+ export declare function verifySignatureSetsInBatches(signatureSets: ISignatureSet[]): boolean;
4
+ export declare function chunkSameMessageSignatureSets(sets: SameMessageSignatureSet[]): SameMessageSignatureSet[][];
5
5
  export declare function getAggregatedPubkeysCount(signatureSets: ISignatureSet[]): number;
6
6
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/chain/bls/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAsB,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAC,aAAa,EAAE,WAAW,EAAmB,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAEjD,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,aAAa,EAC3B,WAAW,EAAE,WAAW,EACxB,OAAO,GAAE,OAAO,GAAG,IAAW,GAC7B,SAAS,CAsBX;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,CAQhF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/chain/bls/utils.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,aAAa,EAAsC,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAAC,uBAAuB,EAAC,MAAM,gBAAgB,CAAC;AAEvD,wBAAgB,4BAA4B,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,OAAO,CAapF;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,uBAAuB,EAAE,GAAG,uBAAuB,EAAE,EAAE,CAM1G;AAED,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,CAQhF"}
@@ -1,24 +1,23 @@
1
- import { aggregatePublicKeys } from "@chainsafe/blst";
2
- import { SignatureSetType } from "@lodestar/state-transition";
3
- export function getAggregatedPubkey(signatureSet, pubkeyCache, metrics = null) {
4
- switch (signatureSet.type) {
5
- case SignatureSetType.single:
6
- return signatureSet.pubkey;
7
- case SignatureSetType.indexed: {
8
- return pubkeyCache.getOrThrow(signatureSet.index);
9
- }
10
- case SignatureSetType.aggregate: {
11
- const timer = metrics?.blsThreadPool.pubkeysAggregationMainThreadDuration.startTimer();
12
- const pubkeys = signatureSet.indices.map((i) => {
13
- return pubkeyCache.getOrThrow(i);
14
- });
15
- const aggregated = aggregatePublicKeys(pubkeys);
16
- timer?.();
17
- return aggregated;
1
+ import { BLS_VERIFIER_MAX_BATCH_SIZE, BLS_VERIFIER_MAX_SAME_MESSAGE_BATCH_SIZE, verifySignatureSets, } from "@chainsafe/lodestar-z/bls-verifier";
2
+ import { SignatureSetType, toBlsSignatureSet } from "@lodestar/state-transition";
3
+ export function verifySignatureSetsInBatches(signatureSets) {
4
+ if (signatureSets.length === 0) {
5
+ return false;
6
+ }
7
+ for (let start = 0; start < signatureSets.length; start += BLS_VERIFIER_MAX_BATCH_SIZE) {
8
+ const sets = signatureSets.slice(start, start + BLS_VERIFIER_MAX_BATCH_SIZE).map(toBlsSignatureSet);
9
+ if (!verifySignatureSets(sets)) {
10
+ return false;
18
11
  }
19
- default:
20
- throw Error("Unknown signature set type");
21
12
  }
13
+ return true;
14
+ }
15
+ export function chunkSameMessageSignatureSets(sets) {
16
+ const chunks = [];
17
+ for (let start = 0; start < sets.length; start += BLS_VERIFIER_MAX_SAME_MESSAGE_BATCH_SIZE) {
18
+ chunks.push(sets.slice(start, start + BLS_VERIFIER_MAX_SAME_MESSAGE_BATCH_SIZE));
19
+ }
20
+ return chunks;
22
21
  }
23
22
  export function getAggregatedPubkeysCount(signatureSets) {
24
23
  let pubkeysCount = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/chain/bls/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAA6B,gBAAgB,EAAC,MAAM,4BAA4B,CAAC;AAGxF,MAAM,UAAU,mBAAmB,CACjC,YAA2B,EAC3B,WAAwB,EACxB,OAAO,GAAmB,IAAI;IAE9B,QAAQ,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1B,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,YAAY,CAAC,MAAM,CAAC;QAE7B,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9B,OAAO,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;QAED,KAAK,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,OAAO,EAAE,aAAa,CAAC,oCAAoC,CAAC,UAAU,EAAE,CAAC;YACvF,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7C,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAChD,KAAK,EAAE,EAAE,CAAC;YACV,OAAO,UAAU,CAAC;QACpB,CAAC;QAED;YACE,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,aAA8B;IACtE,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAC5C,YAAY,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/chain/bls/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,wCAAwC,EACxC,mBAAmB,GACpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAgB,gBAAgB,EAAE,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAG9F,MAAM,UAAU,4BAA4B,CAAC,aAA8B;IACzE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,IAAI,2BAA2B,EAAE,CAAC;QACvF,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,2BAA2B,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACpG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAA+B;IAC3E,MAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,wCAAwC,EAAE,CAAC;QAC3F,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,wCAAwC,CAAC,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,aAA8B;IACtE,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAC5C,YAAY,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { PrivateKey } from "@libp2p/interface";
2
+ import { type PubkeyCache } from "@chainsafe/lodestar-z/pubkeys";
2
3
  import { Type } from "@chainsafe/ssz";
3
4
  import { BeaconConfig } from "@lodestar/config";
4
5
  import { CheckpointWithHex, IForkChoice, ProtoBlock } from "@lodestar/fork-choice";
5
- import { EpochShuffling, IBeaconStateView, PubkeyCache } from "@lodestar/state-transition";
6
+ import { EpochShuffling, IBeaconStateView } from "@lodestar/state-transition";
6
7
  import { BeaconBlock, BlindedBeaconBlock, DataColumnSidecar, Epoch, Root, RootHex, SignedBeaconBlock, Slot, Status, UintNum64, ValidatorIndex, Wei, deneb, gloas, phase0, rewards } from "@lodestar/types";
7
8
  import { Logger } from "@lodestar/utils";
8
9
  import { ProcessShutdownCallback } from "@lodestar/validator";
@@ -1 +1 @@
1
- {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain/chain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain/chain.ts"],"names":[],"mappings":"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"}
@@ -172,8 +172,8 @@ export class BeaconChain {
172
172
  const emitter = new ChainEventEmitter();
173
173
  // by default, verify signatures on both main threads and worker threads
174
174
  const bls = opts.blsVerifyAllMainThread
175
- ? new BlsSingleThreadVerifier({ metrics, pubkeyCache })
176
- : new BlsMultiThreadWorkerPool(opts, { logger, metrics, pubkeyCache });
175
+ ? new BlsSingleThreadVerifier({ metrics })
176
+ : new BlsMultiThreadWorkerPool(opts, { logger, metrics });
177
177
  if (!clock)
178
178
  clock = new Clock({ config, genesisTime: this.genesisTime, signal });
179
179
  this.blacklistedBlocks = new Map((opts.blacklistedBlocks ?? []).map((hex) => [hex, null]));
@@ -377,7 +377,7 @@ export class BeaconChain {
377
377
  // seenAggregators = single aggregator index, not participants of the aggregate
378
378
  this.seenAggregators.isKnown(epoch, index) ||
379
379
  // seenPayloadAttesters = single signer of payload attestation message
380
- this.seenPayloadAttesters.isKnown(epoch, index) ||
380
+ this.seenPayloadAttesters.seenAtEpoch(epoch, index) ||
381
381
  // seenBlockProposers = single block proposer
382
382
  this.seenBlockProposers.seenAtEpoch(epoch, index));
383
383
  }
@@ -766,7 +766,7 @@ export class BeaconChain {
766
766
  async produceBlockWrapper(blockType, { randaoReveal, graffiti, slot, feeRecipient, strictFeeRecipientCheck, commonBlockBodyPromise, parentBlock, builderBid, }) {
767
767
  const state = await this.regen.getBlockSlotState(parentBlock, slot, { dontTransferCache: true }, RegenCaller.produceBlock);
768
768
  const proposerIndex = state.getBeaconProposer(slot);
769
- const proposerPubKey = this.pubkeyCache.getOrThrow(proposerIndex).toBytes();
769
+ const proposerPubKey = this.pubkeyCache.getPubkeyBytesOrThrow(proposerIndex);
770
770
  const { body, produceResult, executionPayloadValue, shouldOverrideBuilder } = await produceBlockBody.call(this, blockType, state, {
771
771
  randaoReveal,
772
772
  graffiti,
@@ -1166,6 +1166,8 @@ export class BeaconChain {
1166
1166
  // syncContributionAndProofPool tracks metrics on its own
1167
1167
  metrics.opPool.blsToExecutionChangePoolSize.set(this.opPool.blsToExecutionChangeSize);
1168
1168
  metrics.chain.blacklistedBlocks.set(this.blacklistedBlocks.size);
1169
+ metrics.bls.pubkeyCacheSize.set(this.pubkeyCache.size);
1170
+ metrics.bls.pubkeyCacheCapacity.set(this.pubkeyCache.capacity);
1169
1171
  const headState = this.getHeadState();
1170
1172
  if (isStatePostElectra(headState)) {
1171
1173
  metrics.pendingDeposits.set(headState.pendingDepositsCount);