@lodestar/state-transition 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 (176) hide show
  1. package/lib/block/isValidIndexedAttestation.d.ts +2 -3
  2. package/lib/block/isValidIndexedAttestation.d.ts.map +1 -1
  3. package/lib/block/isValidIndexedAttestation.js +4 -4
  4. package/lib/block/isValidIndexedAttestation.js.map +1 -1
  5. package/lib/block/isValidIndexedPayloadAttestation.d.ts.map +1 -1
  6. package/lib/block/isValidIndexedPayloadAttestation.js +1 -1
  7. package/lib/block/isValidIndexedPayloadAttestation.js.map +1 -1
  8. package/lib/block/processAttestationPhase0.d.ts.map +1 -1
  9. package/lib/block/processAttestationPhase0.js +1 -1
  10. package/lib/block/processAttestationPhase0.js.map +1 -1
  11. package/lib/block/processAttestationsAltair.js +2 -2
  12. package/lib/block/processAttestationsAltair.js.map +1 -1
  13. package/lib/block/processAttesterSlashing.d.ts +1 -2
  14. package/lib/block/processAttesterSlashing.d.ts.map +1 -1
  15. package/lib/block/processAttesterSlashing.js +3 -3
  16. package/lib/block/processAttesterSlashing.js.map +1 -1
  17. package/lib/block/processDeposit.d.ts.map +1 -1
  18. package/lib/block/processDeposit.js +21 -46
  19. package/lib/block/processDeposit.js.map +1 -1
  20. package/lib/block/processExecutionPayloadBid.d.ts.map +1 -1
  21. package/lib/block/processExecutionPayloadBid.js +2 -5
  22. package/lib/block/processExecutionPayloadBid.js.map +1 -1
  23. package/lib/block/processProposerSlashing.d.ts +1 -2
  24. package/lib/block/processProposerSlashing.d.ts.map +1 -1
  25. package/lib/block/processProposerSlashing.js +3 -3
  26. package/lib/block/processProposerSlashing.js.map +1 -1
  27. package/lib/block/processRandao.js +1 -1
  28. package/lib/block/processRandao.js.map +1 -1
  29. package/lib/block/processSyncCommittee.js +1 -1
  30. package/lib/block/processSyncCommittee.js.map +1 -1
  31. package/lib/block/processVoluntaryExit.d.ts.map +1 -1
  32. package/lib/block/processVoluntaryExit.js +1 -2
  33. package/lib/block/processVoluntaryExit.js.map +1 -1
  34. package/lib/cache/epochCache.d.ts +2 -2
  35. package/lib/cache/epochCache.d.ts.map +1 -1
  36. package/lib/cache/epochCache.js +5 -6
  37. package/lib/cache/epochCache.js.map +1 -1
  38. package/lib/cache/stateCache.js +1 -1
  39. package/lib/cache/stateCache.js.map +1 -1
  40. package/lib/cache/syncCommitteeCache.d.ts +2 -3
  41. package/lib/cache/syncCommitteeCache.d.ts.map +1 -1
  42. package/lib/cache/syncCommitteeCache.js.map +1 -1
  43. package/lib/epoch/processSyncCommitteeUpdates.js +1 -1
  44. package/lib/epoch/processSyncCommitteeUpdates.js.map +1 -1
  45. package/lib/index.d.ts +1 -2
  46. package/lib/index.d.ts.map +1 -1
  47. package/lib/index.js +1 -2
  48. package/lib/index.js.map +1 -1
  49. package/lib/lightClient/spec/store.d.ts +1 -1
  50. package/lib/lightClient/spec/store.d.ts.map +1 -1
  51. package/lib/lightClient/spec/utils.js +1 -1
  52. package/lib/lightClient/spec/utils.js.map +1 -1
  53. package/lib/lightClient/spec/validateLightClientUpdate.js +1 -1
  54. package/lib/lightClient/spec/validateLightClientUpdate.js.map +1 -1
  55. package/lib/metrics.d.ts +11 -0
  56. package/lib/metrics.d.ts.map +1 -1
  57. package/lib/metrics.js +22 -0
  58. package/lib/metrics.js.map +1 -1
  59. package/lib/rewards/attestationsRewards.d.ts +1 -1
  60. package/lib/rewards/attestationsRewards.d.ts.map +1 -1
  61. package/lib/rewards/attestationsRewards.js.map +1 -1
  62. package/lib/rewards/syncCommitteeRewards.d.ts +1 -1
  63. package/lib/rewards/syncCommitteeRewards.d.ts.map +1 -1
  64. package/lib/rewards/syncCommitteeRewards.js +3 -1
  65. package/lib/rewards/syncCommitteeRewards.js.map +1 -1
  66. package/lib/signatureSets/blsToExecutionChange.d.ts.map +1 -1
  67. package/lib/signatureSets/blsToExecutionChange.js +1 -2
  68. package/lib/signatureSets/blsToExecutionChange.js.map +1 -1
  69. package/lib/signatureSets/executionPayloadEnvelope.d.ts +2 -3
  70. package/lib/signatureSets/executionPayloadEnvelope.d.ts.map +1 -1
  71. package/lib/signatureSets/executionPayloadEnvelope.js +6 -7
  72. package/lib/signatureSets/executionPayloadEnvelope.js.map +1 -1
  73. package/lib/signatureSets/proposer.d.ts +1 -2
  74. package/lib/signatureSets/proposer.d.ts.map +1 -1
  75. package/lib/signatureSets/proposer.js +2 -2
  76. package/lib/signatureSets/proposer.js.map +1 -1
  77. package/lib/signatureSets/randao.d.ts +1 -2
  78. package/lib/signatureSets/randao.d.ts.map +1 -1
  79. package/lib/signatureSets/randao.js +2 -2
  80. package/lib/signatureSets/randao.js.map +1 -1
  81. package/lib/signatureSets/voluntaryExits.d.ts +1 -2
  82. package/lib/signatureSets/voluntaryExits.d.ts.map +1 -1
  83. package/lib/signatureSets/voluntaryExits.js +3 -4
  84. package/lib/signatureSets/voluntaryExits.js.map +1 -1
  85. package/lib/slot/upgradeStateToGloas.d.ts +2 -1
  86. package/lib/slot/upgradeStateToGloas.d.ts.map +1 -1
  87. package/lib/slot/upgradeStateToGloas.js +65 -21
  88. package/lib/slot/upgradeStateToGloas.js.map +1 -1
  89. package/lib/stateTransition.js +8 -3
  90. package/lib/stateTransition.js.map +1 -1
  91. package/lib/stateView/stateViewFactory.d.ts +1 -1
  92. package/lib/stateView/stateViewFactory.d.ts.map +1 -1
  93. package/lib/stateView/stateViewFactory.js +2 -13
  94. package/lib/stateView/stateViewFactory.js.map +1 -1
  95. package/lib/testUtils/index.d.ts +1 -0
  96. package/lib/testUtils/index.d.ts.map +1 -1
  97. package/lib/testUtils/index.js +1 -0
  98. package/lib/testUtils/index.js.map +1 -1
  99. package/lib/testUtils/interopPubkeyCache.d.ts +7 -0
  100. package/lib/testUtils/interopPubkeyCache.d.ts.map +1 -0
  101. package/lib/testUtils/interopPubkeyCache.js +92 -0
  102. package/lib/testUtils/interopPubkeyCache.js.map +1 -0
  103. package/lib/testUtils/state.d.ts.map +1 -1
  104. package/lib/testUtils/state.js +5 -5
  105. package/lib/testUtils/state.js.map +1 -1
  106. package/lib/testUtils/testFileCache.d.ts.map +1 -1
  107. package/lib/testUtils/testFileCache.js +3 -0
  108. package/lib/testUtils/testFileCache.js.map +1 -1
  109. package/lib/testUtils/util.d.ts +1 -1
  110. package/lib/testUtils/util.d.ts.map +1 -1
  111. package/lib/testUtils/util.js +27 -35
  112. package/lib/testUtils/util.js.map +1 -1
  113. package/lib/util/gloas.d.ts +6 -0
  114. package/lib/util/gloas.d.ts.map +1 -1
  115. package/lib/util/gloas.js +25 -11
  116. package/lib/util/gloas.js.map +1 -1
  117. package/lib/util/interop.d.ts +1 -1
  118. package/lib/util/interop.d.ts.map +1 -1
  119. package/lib/util/interop.js +1 -1
  120. package/lib/util/interop.js.map +1 -1
  121. package/lib/util/pendingDepositsLookup.d.ts +12 -0
  122. package/lib/util/pendingDepositsLookup.d.ts.map +1 -1
  123. package/lib/util/pendingDepositsLookup.js +19 -1
  124. package/lib/util/pendingDepositsLookup.js.map +1 -1
  125. package/lib/util/signatureSets.d.ts +5 -13
  126. package/lib/util/signatureSets.d.ts.map +1 -1
  127. package/lib/util/signatureSets.js +30 -39
  128. package/lib/util/signatureSets.js.map +1 -1
  129. package/lib/util/syncCommittee.js +1 -1
  130. package/lib/util/syncCommittee.js.map +1 -1
  131. package/package.json +11 -12
  132. package/src/block/isValidIndexedAttestation.ts +2 -8
  133. package/src/block/isValidIndexedPayloadAttestation.ts +1 -4
  134. package/src/block/processAttestationPhase0.ts +0 -1
  135. package/src/block/processAttestationsAltair.ts +2 -2
  136. package/src/block/processAttesterSlashing.ts +2 -13
  137. package/src/block/processDeposit.ts +35 -47
  138. package/src/block/processExecutionPayloadBid.ts +8 -6
  139. package/src/block/processProposerSlashing.ts +2 -11
  140. package/src/block/processRandao.ts +1 -1
  141. package/src/block/processSyncCommittee.ts +1 -1
  142. package/src/block/processVoluntaryExit.ts +1 -4
  143. package/src/cache/epochCache.ts +6 -7
  144. package/src/cache/stateCache.ts +1 -1
  145. package/src/cache/syncCommitteeCache.ts +3 -2
  146. package/src/epoch/processSyncCommitteeUpdates.ts +1 -1
  147. package/src/index.ts +1 -6
  148. package/src/lightClient/spec/store.ts +1 -1
  149. package/src/lightClient/spec/utils.ts +1 -1
  150. package/src/lightClient/spec/validateLightClientUpdate.ts +1 -1
  151. package/src/metrics.ts +23 -0
  152. package/src/rewards/attestationsRewards.ts +1 -1
  153. package/src/rewards/syncCommitteeRewards.ts +4 -2
  154. package/src/signatureSets/blsToExecutionChange.ts +1 -2
  155. package/src/signatureSets/executionPayloadEnvelope.ts +14 -15
  156. package/src/signatureSets/proposer.ts +1 -3
  157. package/src/signatureSets/randao.ts +2 -3
  158. package/src/signatureSets/voluntaryExits.ts +2 -5
  159. package/src/slot/upgradeStateToGloas.ts +75 -24
  160. package/src/stateTransition.ts +8 -3
  161. package/src/stateView/stateViewFactory.ts +2 -14
  162. package/src/testUtils/index.ts +1 -0
  163. package/src/testUtils/interopPubkeyCache.ts +100 -0
  164. package/src/testUtils/state.ts +5 -11
  165. package/src/testUtils/testFileCache.ts +3 -0
  166. package/src/testUtils/util.ts +26 -38
  167. package/src/util/gloas.ts +40 -11
  168. package/src/util/interop.ts +1 -1
  169. package/src/util/pendingDepositsLookup.ts +20 -1
  170. package/src/util/signatureSets.ts +34 -51
  171. package/src/util/syncCommittee.ts +1 -1
  172. package/lib/cache/pubkeyCache.d.ts +0 -28
  173. package/lib/cache/pubkeyCache.d.ts.map +0 -1
  174. package/lib/cache/pubkeyCache.js +0 -49
  175. package/lib/cache/pubkeyCache.js.map +0 -1
  176. package/src/cache/pubkeyCache.ts +0 -74
@@ -1 +1 @@
1
- {"version":3,"file":"gloas.js","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gloas.js","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { SecretKey } from "@chainsafe/blst";
1
+ import { SecretKey } from "@chainsafe/lodestar-z/blst";
2
2
  export declare function interopSecretKeys(validatorCount: number): SecretKey[];
3
3
  export declare function interopSecretKey(index: number): SecretKey;
4
4
  //# sourceMappingURL=interop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interop.d.ts","sourceRoot":"","sources":["../../src/util/interop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAS1C,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,EAAE,CAIrE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAIzD"}
1
+ {"version":3,"file":"interop.d.ts","sourceRoot":"","sources":["../../src/util/interop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAC,MAAM,4BAA4B,CAAC;AASrD,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,EAAE,CAIrE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAIzD"}
@@ -1,6 +1,6 @@
1
1
  import { toBufferBE } from "@vekexasia/bigint-buffer2";
2
2
  import { digest } from "@chainsafe/as-sha256";
3
- import { SecretKey } from "@chainsafe/blst";
3
+ import { SecretKey } from "@chainsafe/lodestar-z/blst";
4
4
  import { bytesToBigInt, intToBytes } from "@lodestar/utils";
5
5
  let curveOrder;
6
6
  function getCurveOrder() {
@@ -1 +1 @@
1
- {"version":3,"file":"interop.js","sourceRoot":"","sources":["../../src/util/interop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAE1D,IAAI,UAAkB,CAAC;AACvB,SAAS,aAAa;IACpB,IAAI,CAAC,UAAU;QAAE,UAAU,GAAG,MAAM,CAAC,+EAA+E,CAAC,CAAC;IACtH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,cAAsB;IACtD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,cAAc,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnD,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,WAAW,GAAG,aAAa,EAAE,CAAC;IACpC,MAAM,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,CAAC;IAClG,OAAO,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"interop.js","sourceRoot":"","sources":["../../src/util/interop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAC,SAAS,EAAC,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAE1D,IAAI,UAAkB,CAAC;AACvB,SAAS,aAAa;IACpB,IAAI,CAAC,UAAU;QAAE,UAAU,GAAG,MAAM,CAAC,+EAA+E,CAAC,CAAC;IACtH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,cAAsB;IACtD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,cAAc,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnD,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,WAAW,GAAG,aAAa,EAAE,CAAC;IACpC,MAAM,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,CAAC;IAClG,OAAO,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AAC7C,CAAC"}
@@ -17,6 +17,8 @@ import { BuilderDepositSignatureCache } from "../cache/builderDepositSignatureCa
17
17
  export declare class PendingDepositsLookup {
18
18
  private readonly depositsByPubkey;
19
19
  private readonly validationCache;
20
+ private signaturesFromCache;
21
+ private signaturesVerified;
20
22
  private constructor();
21
23
  /** Build an empty lookup for a sequence that will be populated incrementally. */
22
24
  static buildEmpty(): PendingDepositsLookup;
@@ -32,6 +34,16 @@ export declare class PendingDepositsLookup {
32
34
  * Most of the time it should hit the BuilderDepositSignatureCache so we don't have to validate
33
35
  * signatures here.
34
36
  */
37
+ /**
38
+ * Signature checks performed inside `hasPendingValidator()`, split by whether the pre-verify
39
+ * cache served them. These are the scan the caller never sees: when a builder-routed deposit is
40
+ * preceded by same-pubkey validator deposits this walk dominates, and on a `true` result the
41
+ * caller skips its own signature check entirely.
42
+ */
43
+ get signatureChecks(): {
44
+ fromCache: number;
45
+ verified: number;
46
+ };
35
47
  hasPendingValidator(config: BeaconConfig, pubkeyHex: PubkeyHex, cache: BuilderDepositSignatureCache): boolean;
36
48
  }
37
49
  //# sourceMappingURL=pendingDepositsLookup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pendingDepositsLookup.d.ts","sourceRoot":"","sources":["../../src/util/pendingDepositsLookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAC,4BAA4B,EAAC,MAAM,0CAA0C,CAAC;AAOtF;;;;;;;;;;;;GAYG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAFlC,OAAO,eAGH;IAEJ,iFAAiF;IACjF,MAAM,CAAC,UAAU,IAAI,qBAAqB,CAEzC;IAED;;OAEG;IACH,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAOtE;IAED;;;;;;;OAOG;IACH,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAsC5G;CACF"}
1
+ {"version":3,"file":"pendingDepositsLookup.d.ts","sourceRoot":"","sources":["../../src/util/pendingDepositsLookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,SAAS,EAAE,OAAO,EAAC,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAC,4BAA4B,EAAC,MAAM,0CAA0C,CAAC;AAOtF;;;;;;;;;;;;GAYG;AACH,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe;IALlC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,kBAAkB,CAAK;IAE/B,OAAO,eAGH;IAEJ,iFAAiF;IACjF,MAAM,CAAC,UAAU,IAAI,qBAAqB,CAEzC;IAED;;OAEG;IACH,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAOtE;IAED;;;;;;;OAOG;IACH;;;;;OAKG;IACH,IAAI,eAAe,IAAI;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAE3D;IAED,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,4BAA4B,GAAG,OAAO,CA4C5G;CACF"}
@@ -15,6 +15,8 @@ import { isValidDepositSignature } from "../block/processDeposit.js";
15
15
  export class PendingDepositsLookup {
16
16
  depositsByPubkey;
17
17
  validationCache;
18
+ signaturesFromCache = 0;
19
+ signaturesVerified = 0;
18
20
  constructor(depositsByPubkey, validationCache) {
19
21
  this.depositsByPubkey = depositsByPubkey;
20
22
  this.validationCache = validationCache;
@@ -43,6 +45,15 @@ export class PendingDepositsLookup {
43
45
  * Most of the time it should hit the BuilderDepositSignatureCache so we don't have to validate
44
46
  * signatures here.
45
47
  */
48
+ /**
49
+ * Signature checks performed inside `hasPendingValidator()`, split by whether the pre-verify
50
+ * cache served them. These are the scan the caller never sees: when a builder-routed deposit is
51
+ * preceded by same-pubkey validator deposits this walk dominates, and on a `true` result the
52
+ * caller skips its own signature check entirely.
53
+ */
54
+ get signatureChecks() {
55
+ return { fromCache: this.signaturesFromCache, verified: this.signaturesVerified };
56
+ }
46
57
  hasPendingValidator(config, pubkeyHex, cache) {
47
58
  const validation = this.validationCache.get(pubkeyHex);
48
59
  if (validation?.hasValidSignature === true) {
@@ -61,7 +72,14 @@ export class PendingDepositsLookup {
61
72
  }
62
73
  for (let i = startIndex; i < deposits.length; i++) {
63
74
  const deposit = deposits[i];
64
- const isValid = cache.getSignatureValidity(deposit) ??
75
+ const cached = cache.getSignatureValidity(deposit);
76
+ if (cached === null) {
77
+ this.signaturesVerified++;
78
+ }
79
+ else {
80
+ this.signaturesFromCache++;
81
+ }
82
+ const isValid = cached ??
65
83
  isValidDepositSignature(config, deposit.pubkey, deposit.withdrawalCredentials, deposit.amount, deposit.signature);
66
84
  if (isValid) {
67
85
  this.validationCache.set(pubkeyHex, { hasValidSignature: true, validatedCount: i + 1 });
@@ -1 +1 @@
1
- {"version":3,"file":"pendingDepositsLookup.js","sourceRoot":"","sources":["../../src/util/pendingDepositsLookup.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAQnE;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,qBAAqB;IAEb,gBAAgB;IAChB,eAAe;IAFlC,YACmB,gBAA0D,EAC1D,eAA0D;gCAD1D,gBAAgB;+BAChB,eAAe;IAC/B,CAAC;IAEJ,iFAAiF;IACjF,MAAM,CAAC,UAAU;QACf,OAAO,IAAI,qBAAqB,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,cAAsC,EAAE,SAAoB;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,mBAAmB,CAAC,MAAoB,EAAE,SAAoB,EAAE,KAAmC;QACjG,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,UAAU,EAAE,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,kFAAkF;QAClF,2DAA2D;QAC3D,MAAM,UAAU,GAAG,UAAU,EAAE,cAAc,IAAI,CAAC,CAAC;QACnD,IAAI,UAAU,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnC,6DAA6D;YAC7D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,OAAO,GACX,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC;gBACnC,uBAAuB,CACrB,MAAM,EACN,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,qBAAqB,EAC7B,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,SAAS,CAClB,CAAC;YACJ,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC;gBACtF,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,EAAC,iBAAiB,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAC,CAAC,CAAC;QACjG,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"pendingDepositsLookup.js","sourceRoot":"","sources":["../../src/util/pendingDepositsLookup.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- import { PublicKey } from "@chainsafe/blst";
1
+ import { type BlsSignatureSet } from "@chainsafe/lodestar-z/bls-verifier";
2
2
  import { Root } from "@lodestar/types";
3
- import { PubkeyCache } from "../cache/pubkeyCache.js";
4
3
  export declare enum SignatureSetType {
5
4
  single = "single",
6
5
  aggregate = "aggregate",
@@ -16,7 +15,7 @@ export declare enum SignatureSetType {
16
15
  */
17
16
  export type SingleSignatureSet = {
18
17
  type: SignatureSetType.single;
19
- pubkey: PublicKey;
18
+ pubkey: Uint8Array;
20
19
  signingRoot: Root;
21
20
  signature: Uint8Array;
22
21
  };
@@ -41,16 +40,9 @@ export type AggregatedSignatureSet = {
41
40
  signature: Uint8Array;
42
41
  };
43
42
  export type ISignatureSet = SingleSignatureSet | IndexedSignatureSet | AggregatedSignatureSet;
44
- /**
45
- * Get the pubkey for a signature set, performing aggregation if necessary.
46
- * Requires pubkeyCache for indexed and aggregate sets.
47
- */
48
- export declare function getSignatureSetPubkey(signatureSet: ISignatureSet, pubkeyCache: PubkeyCache): PublicKey;
49
- export declare function verifySignatureSet(signatureSet: SingleSignatureSet, pubkeyCache?: PubkeyCache): boolean;
50
- export declare function verifySignatureSet(signatureSet: IndexedSignatureSet, pubkeyCache: PubkeyCache): boolean;
51
- export declare function verifySignatureSet(signatureSet: AggregatedSignatureSet, pubkeyCache: PubkeyCache): boolean;
52
- export declare function verifySignatureSet(signatureSet: ISignatureSet, pubkeyCache: PubkeyCache): boolean;
53
- export declare function createSingleSignatureSetFromComponents(pubkey: PublicKey, signingRoot: Root, signature: Uint8Array): SingleSignatureSet;
43
+ export declare function toBlsSignatureSet(signatureSet: ISignatureSet): BlsSignatureSet;
44
+ export declare function verifySignatureSet(signatureSet: ISignatureSet): boolean;
45
+ export declare function createSingleSignatureSetFromComponents(pubkey: Uint8Array, signingRoot: Root, signature: Uint8Array): SingleSignatureSet;
54
46
  export declare function createIndexedSignatureSetFromComponents(index: number, signingRoot: Root, signature: Uint8Array): IndexedSignatureSet;
55
47
  export declare function createAggregateSignatureSetFromComponents(indices: number[], signingRoot: Root, signature: Uint8Array): AggregatedSignatureSet;
56
48
  //# sourceMappingURL=signatureSets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signatureSets.d.ts","sourceRoot":"","sources":["../../src/util/signatureSets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAA8D,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAEpD,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB;;;OAGG;IACH,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,sBAAsB,CAAC;AAE9F;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,GAAG,SAAS,CAmBtG;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;AACzG,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC;AACzG,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,sBAAsB,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC;AAC5G,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC;AAgCnG,wBAAgB,sCAAsC,CACpD,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,IAAI,EACjB,SAAS,EAAE,UAAU,GACpB,kBAAkB,CAOpB;AAED,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,IAAI,EACjB,SAAS,EAAE,UAAU,GACpB,mBAAmB,CAOrB;AAED,wBAAgB,yCAAyC,CACvD,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,IAAI,EACjB,SAAS,EAAE,UAAU,GACpB,sBAAsB,CAOxB"}
1
+ {"version":3,"file":"signatureSets.d.ts","sourceRoot":"","sources":["../../src/util/signatureSets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,eAAe,EAAsB,MAAM,oCAAoC,CAAC;AACpH,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AAErC,oBAAY,gBAAgB;IAC1B,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB;;;OAGG;IACH,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,sBAAsB,CAAC;AAE9F,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,aAAa,GAAG,eAAe,CAsC9E;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,aAAa,GAAG,OAAO,CAEvE;AAED,wBAAgB,sCAAsC,CACpD,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,IAAI,EACjB,SAAS,EAAE,UAAU,GACpB,kBAAkB,CAOpB;AAED,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,IAAI,EACjB,SAAS,EAAE,UAAU,GACpB,mBAAmB,CAOrB;AAED,wBAAgB,yCAAyC,CACvD,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,IAAI,EACjB,SAAS,EAAE,UAAU,GACpB,sBAAsB,CAOxB"}
@@ -1,4 +1,4 @@
1
- import { Signature, aggregatePublicKeys, fastAggregateVerify, verify } from "@chainsafe/blst";
1
+ import { BLS_VERIFIER_SET_TYPE, verifySignatureSets } from "@chainsafe/lodestar-z/bls-verifier";
2
2
  export var SignatureSetType;
3
3
  (function (SignatureSetType) {
4
4
  SignatureSetType["single"] = "single";
@@ -9,53 +9,44 @@ export var SignatureSetType;
9
9
  */
10
10
  SignatureSetType["indexed"] = "indexed";
11
11
  })(SignatureSetType || (SignatureSetType = {}));
12
- /**
13
- * Get the pubkey for a signature set, performing aggregation if necessary.
14
- * Requires pubkeyCache for indexed and aggregate sets.
15
- */
16
- export function getSignatureSetPubkey(signatureSet, pubkeyCache) {
12
+ export function toBlsSignatureSet(signatureSet) {
17
13
  switch (signatureSet.type) {
18
14
  case SignatureSetType.single:
19
- return signatureSet.pubkey;
20
- case SignatureSetType.indexed: {
21
- return pubkeyCache.getOrThrow(signatureSet.index);
22
- }
23
- case SignatureSetType.aggregate: {
24
- const pubkeys = signatureSet.indices.map((i) => {
25
- return pubkeyCache.getOrThrow(i);
26
- });
27
- return aggregatePublicKeys(pubkeys);
28
- }
29
- default:
30
- throw Error("Unknown signature set type");
31
- }
32
- }
33
- export function verifySignatureSet(signatureSet, pubkeyCache) {
34
- // All signatures are not trusted and must be group checked (p2.subgroup_check)
35
- const signature = Signature.fromBytes(signatureSet.signature, true);
36
- switch (signatureSet.type) {
37
- case SignatureSetType.single:
38
- return verify(signatureSet.signingRoot, signatureSet.pubkey, signature);
39
- case SignatureSetType.indexed: {
40
- if (!pubkeyCache) {
41
- throw Error("pubkeyCache required for indexed signature set");
42
- }
43
- const pubkey = pubkeyCache.getOrThrow(signatureSet.index);
44
- return verify(signatureSet.signingRoot, pubkey, signature);
45
- }
15
+ return {
16
+ type: BLS_VERIFIER_SET_TYPE.single,
17
+ pubkey: signatureSet.pubkey,
18
+ message: signatureSet.signingRoot,
19
+ signature: signatureSet.signature,
20
+ };
21
+ case SignatureSetType.indexed:
22
+ return {
23
+ type: BLS_VERIFIER_SET_TYPE.indexed,
24
+ index: signatureSet.index,
25
+ message: signatureSet.signingRoot,
26
+ signature: signatureSet.signature,
27
+ };
46
28
  case SignatureSetType.aggregate: {
47
- if (!pubkeyCache) {
48
- throw Error("pubkeyCache required for aggregate signature set");
29
+ const indices = new Uint32Array(signatureSet.indices.length);
30
+ for (const [i, index] of signatureSet.indices.entries()) {
31
+ if (!Number.isInteger(index) || index < 0 || index > 0xffffffff) {
32
+ throw new RangeError(`Invalid validator index ${index}`);
33
+ }
34
+ indices[i] = index;
49
35
  }
50
- const pubkeys = signatureSet.indices.map((i) => {
51
- return pubkeyCache.getOrThrow(i);
52
- });
53
- return fastAggregateVerify(signatureSet.signingRoot, pubkeys, signature);
36
+ return {
37
+ type: BLS_VERIFIER_SET_TYPE.aggregate,
38
+ indices,
39
+ message: signatureSet.signingRoot,
40
+ signature: signatureSet.signature,
41
+ };
54
42
  }
55
43
  default:
56
44
  throw Error("Unknown signature set type");
57
45
  }
58
46
  }
47
+ export function verifySignatureSet(signatureSet) {
48
+ return verifySignatureSets([toBlsSignatureSet(signatureSet)]);
49
+ }
59
50
  export function createSingleSignatureSetFromComponents(pubkey, signingRoot, signature) {
60
51
  return {
61
52
  type: SignatureSetType.single,
@@ -1 +1 @@
1
- {"version":3,"file":"signatureSets.js","sourceRoot":"","sources":["../../src/util/signatureSets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAIvG,MAAM,CAAN,IAAY,gBAQX;AARD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,2CAAuB,CAAA;IACvB;;;OAGG;IACH,uCAAmB,CAAA;AACrB,CAAC,EARW,gBAAgB,KAAhB,gBAAgB,QAQ3B;AAqCD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAA2B,EAAE,WAAwB;IACzF,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,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,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QAED;YACE,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAMD,MAAM,UAAU,kBAAkB,CAAC,YAA2B,EAAE,WAAyB;IACvF,+EAA+E;IAC/E,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAEpE,QAAQ,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1B,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE1E,KAAK,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,KAAK,CAAC,kDAAkD,CAAC,CAAC;YAClE,CAAC;YACD,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,OAAO,mBAAmB,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3E,CAAC;QAED;YACE,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sCAAsC,CACpD,MAAiB,EACjB,WAAiB,EACjB,SAAqB;IAErB,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,MAAM;QACN,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uCAAuC,CACrD,KAAa,EACb,WAAiB,EACjB,SAAqB;IAErB,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK;QACL,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,OAAiB,EACjB,WAAiB,EACjB,SAAqB;IAErB,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,SAAS;QAChC,OAAO;QACP,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"signatureSets.js","sourceRoot":"","sources":["../../src/util/signatureSets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAwB,mBAAmB,EAAC,MAAM,oCAAoC,CAAC;AAGpH,MAAM,CAAN,IAAY,gBAQX;AARD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,2CAAuB,CAAA;IACvB;;;OAGG;IACH,uCAAmB,CAAA;AACrB,CAAC,EARW,gBAAgB,KAAhB,gBAAgB,QAQ3B;AAqCD,MAAM,UAAU,iBAAiB,CAAC,YAA2B;IAC3D,QAAQ,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1B,KAAK,gBAAgB,CAAC,MAAM;YAC1B,OAAO;gBACL,IAAI,EAAE,qBAAqB,CAAC,MAAM;gBAClC,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,OAAO,EAAE,YAAY,CAAC,WAAW;gBACjC,SAAS,EAAE,YAAY,CAAC,SAAS;aAClC,CAAC;QAEJ,KAAK,gBAAgB,CAAC,OAAO;YAC3B,OAAO;gBACL,IAAI,EAAE,qBAAqB,CAAC,OAAO;gBACnC,KAAK,EAAE,YAAY,CAAC,KAAK;gBACzB,OAAO,EAAE,YAAY,CAAC,WAAW;gBACjC,SAAS,EAAE,YAAY,CAAC,SAAS;aAClC,CAAC;QAEJ,KAAK,gBAAgB,CAAC,SAAS,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7D,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBACxD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,UAAU,EAAE,CAAC;oBAChE,MAAM,IAAI,UAAU,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;gBAC3D,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YACrB,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,qBAAqB,CAAC,SAAS;gBACrC,OAAO;gBACP,OAAO,EAAE,YAAY,CAAC,WAAW;gBACjC,SAAS,EAAE,YAAY,CAAC,SAAS;aAClC,CAAC;QACJ,CAAC;QAED;YACE,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,YAA2B;IAC5D,OAAO,mBAAmB,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,sCAAsC,CACpD,MAAkB,EAClB,WAAiB,EACjB,SAAqB;IAErB,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,MAAM;QAC7B,MAAM;QACN,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uCAAuC,CACrD,KAAa,EACb,WAAiB,EACjB,SAAqB;IAErB,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO;QAC9B,KAAK;QACL,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,OAAiB,EACjB,WAAiB,EACjB,SAAqB;IAErB,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,SAAS;QAChC,OAAO;QACP,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import { aggregateSerializedPublicKeys } from "@chainsafe/blst";
1
+ import { aggregateSerializedPublicKeys } from "@chainsafe/lodestar-z/blst";
2
2
  import { BASE_REWARD_FACTOR, EFFECTIVE_BALANCE_INCREMENT, SLOTS_PER_EPOCH, SYNC_COMMITTEE_SIZE, SYNC_REWARD_WEIGHT, WEIGHT_DENOMINATOR, } from "@lodestar/params";
3
3
  import { bigIntSqrt } from "@lodestar/utils";
4
4
  import { getNextSyncCommitteeIndices } from "./seed.js";
@@ -1 +1 @@
1
- {"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../src/util/syncCommittee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAC,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAE3B,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EAAC,2BAA2B,EAAC,MAAM,WAAW,CAAC;AAEtD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAa,EACb,KAA0B,EAC1B,sBAAmC,EACnC,0BAAsD;IAEtD,MAAM,OAAO,GAAG,2BAA2B,CAAC,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,0BAA0B,CAAC,CAAC;IAE7G,iFAAiF;IACjF,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO;QACL,OAAO;QACP,aAAa,EAAE;YACb,OAAO;YACP,eAAe,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;SAClE;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,4BAAoC;IAC/E,MAAM,kBAAkB,GAAG,MAAM,CAAC,4BAA4B,CAAC,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACtG,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CACvC,CAAC,2BAA2B,GAAG,kBAAkB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAC5F,CAAC;IACF,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,4BAA4B,CAAC;IAC/E,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CACtC,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,kBAAkB,CAAC,GAAG,eAAe,CAC3F,CAAC;IACF,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,mBAAmB,CAAC,CAAC;AACjE,CAAC;AAED;;;IAGI;AACJ,MAAM,UAAU,6BAA6B,CAAC,2BAAmC;IAC/E,OAAO,IAAI,CAAC,KAAK,CACf,CAAC,2BAA2B,GAAG,kBAAkB,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,2BAA2B,CAAC,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAChG,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"syncCommittee.js","sourceRoot":"","sources":["../../src/util/syncCommittee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAC,MAAM,4BAA4B,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAE3B,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAG3C,OAAO,EAAC,2BAA2B,EAAC,MAAM,WAAW,CAAC;AAEtD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAa,EACb,KAA0B,EAC1B,sBAAmC,EACnC,0BAAsD;IAEtD,MAAM,OAAO,GAAG,2BAA2B,CAAC,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,0BAA0B,CAAC,CAAC;IAE7G,iFAAiF;IACjF,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO;QACL,OAAO;QACP,aAAa,EAAE;YACb,OAAO;YACP,eAAe,EAAE,6BAA6B,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;SAClE;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAAC,4BAAoC;IAC/E,MAAM,kBAAkB,GAAG,MAAM,CAAC,4BAA4B,CAAC,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACtG,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CACvC,CAAC,2BAA2B,GAAG,kBAAkB,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAC5F,CAAC;IACF,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,4BAA4B,CAAC;IAC/E,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CACtC,IAAI,CAAC,KAAK,CAAC,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,GAAG,kBAAkB,CAAC,GAAG,eAAe,CAC3F,CAAC;IACF,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,mBAAmB,CAAC,CAAC;AACjE,CAAC;AAED;;;IAGI;AACJ,MAAM,UAAU,6BAA6B,CAAC,2BAAmC;IAC/E,OAAO,IAAI,CAAC,KAAK,CACf,CAAC,2BAA2B,GAAG,kBAAkB,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,2BAA2B,CAAC,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAChG,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "bugs": {
12
12
  "url": "https://github.com/ChainSafe/lodestar/issues"
13
13
  },
14
- "version": "1.47.0-dev.d9c16ea16f",
14
+ "version": "1.47.0-dev.da8dfeabda",
15
15
  "type": "module",
16
16
  "exports": {
17
17
  ".": {
@@ -65,20 +65,19 @@
65
65
  },
66
66
  "types": "lib/index.d.ts",
67
67
  "dependencies": {
68
- "@chainsafe/as-sha256": "^1.2.4",
69
- "@chainsafe/blst": "^2.2.0",
70
- "@chainsafe/persistent-merkle-tree": "^1.3.0",
71
- "@chainsafe/pubkey-index-map": "^3.0.0",
72
- "@chainsafe/ssz": "^1.6.2",
68
+ "@chainsafe/as-sha256": "^1.2.5",
69
+ "@chainsafe/lodestar-z": "catalog:",
70
+ "@chainsafe/persistent-merkle-tree": "^1.3.1",
71
+ "@chainsafe/ssz": "^1.6.3",
73
72
  "@chainsafe/swap-or-not-shuffle": "^1.2.1",
74
- "@lodestar/config": "^1.47.0-dev.d9c16ea16f",
75
- "@lodestar/params": "^1.47.0-dev.d9c16ea16f",
76
- "@lodestar/types": "^1.47.0-dev.d9c16ea16f",
77
- "@lodestar/utils": "^1.47.0-dev.d9c16ea16f",
73
+ "@lodestar/config": "^1.47.0-dev.da8dfeabda",
74
+ "@lodestar/params": "^1.47.0-dev.da8dfeabda",
75
+ "@lodestar/types": "^1.47.0-dev.da8dfeabda",
76
+ "@lodestar/utils": "^1.47.0-dev.da8dfeabda",
78
77
  "@vekexasia/bigint-buffer2": "^1.1.1"
79
78
  },
80
79
  "devDependencies": {
81
- "@lodestar/api": "^1.47.0-dev.d9c16ea16f"
80
+ "@lodestar/api": "^1.47.0-dev.da8dfeabda"
82
81
  },
83
82
  "keywords": [
84
83
  "ethereum",
@@ -86,5 +85,5 @@
86
85
  "beacon",
87
86
  "blockchain"
88
87
  ],
89
- "gitHead": "8f55fe85416ebef254c015d9d7bd2cc8735c4d66"
88
+ "gitHead": "ca798baa4a35b53638f98f64eacac48a3ad82df7"
90
89
  }
@@ -1,7 +1,6 @@
1
1
  import {BeaconConfig} from "@lodestar/config";
2
2
  import {ForkSeq, MAX_COMMITTEES_PER_SLOT, MAX_VALIDATORS_PER_COMMITTEE} from "@lodestar/params";
3
3
  import {IndexedAttestation, IndexedAttestationBigint, Slot} from "@lodestar/types";
4
- import {PubkeyCache} from "../cache/pubkeyCache.js";
5
4
  import {getIndexedAttestationBigintSignatureSet, getIndexedAttestationSignatureSet} from "../signatureSets/index.js";
6
5
  import {verifySignatureSet} from "../util/index.js";
7
6
 
@@ -10,7 +9,6 @@ import {verifySignatureSet} from "../util/index.js";
10
9
  */
11
10
  export function isValidIndexedAttestation(
12
11
  config: BeaconConfig,
13
- pubkeyCache: PubkeyCache,
14
12
  stateSlot: Slot,
15
13
  validatorsLen: number,
16
14
  indexedAttestation: IndexedAttestation,
@@ -21,14 +19,13 @@ export function isValidIndexedAttestation(
21
19
  }
22
20
 
23
21
  if (verifySignature) {
24
- return verifySignatureSet(getIndexedAttestationSignatureSet(config, stateSlot, indexedAttestation), pubkeyCache);
22
+ return verifySignatureSet(getIndexedAttestationSignatureSet(config, stateSlot, indexedAttestation));
25
23
  }
26
24
  return true;
27
25
  }
28
26
 
29
27
  export function isValidIndexedAttestationBigint(
30
28
  config: BeaconConfig,
31
- pubkeyCache: PubkeyCache,
32
29
  stateSlot: Slot,
33
30
  validatorsLen: number,
34
31
  indexedAttestation: IndexedAttestationBigint,
@@ -39,10 +36,7 @@ export function isValidIndexedAttestationBigint(
39
36
  }
40
37
 
41
38
  if (verifySignature) {
42
- return verifySignatureSet(
43
- getIndexedAttestationBigintSignatureSet(config, stateSlot, indexedAttestation),
44
- pubkeyCache
45
- );
39
+ return verifySignatureSet(getIndexedAttestationBigintSignatureSet(config, stateSlot, indexedAttestation));
46
40
  }
47
41
  return true;
48
42
  }
@@ -16,10 +16,7 @@ export function isValidIndexedPayloadAttestation(
16
16
  }
17
17
 
18
18
  if (verifySignature) {
19
- return verifySignatureSet(
20
- getIndexedPayloadAttestationSignatureSet(state.config, indexedPayloadAttestation),
21
- state.epochCtx.pubkeyCache
22
- );
19
+ return verifySignatureSet(getIndexedPayloadAttestationSignatureSet(state.config, indexedPayloadAttestation));
23
20
  }
24
21
 
25
22
  return true;
@@ -53,7 +53,6 @@ export function processAttestationPhase0(
53
53
  if (
54
54
  !isValidIndexedAttestation(
55
55
  state.config,
56
- epochCtx.pubkeyCache,
57
56
  state.slot,
58
57
  state.validators.length,
59
58
  epochCtx.getIndexedAttestation(ForkSeq.phase0, attestation),
@@ -67,7 +67,7 @@ export function processAttestationsAltair(
67
67
  // we can verify only that and nothing else.
68
68
  if (verifySignature) {
69
69
  const sigSet = getAttestationWithIndicesSignatureSet(state.config, state.slot, attestation, attestingIndices);
70
- if (!verifySignatureSet(sigSet, state.epochCtx.pubkeyCache)) {
70
+ if (!verifySignatureSet(sigSet)) {
71
71
  throw new Error("Attestation signature is not valid");
72
72
  }
73
73
  }
@@ -134,7 +134,7 @@ export function processAttestationsAltair(
134
134
  }
135
135
  }
136
136
 
137
- if (isSameSlotAttestation && flagsNewSet !== 0) {
137
+ if (fork >= ForkSeq.gloas && isSameSlotAttestation && flags === 0 && flagsNewSet !== 0) {
138
138
  paymentWeightToAdd += effectiveBalanceIncrements[validatorIndex];
139
139
  }
140
140
  }
@@ -1,7 +1,6 @@
1
1
  import {BeaconConfig} from "@lodestar/config";
2
2
  import {ForkSeq} from "@lodestar/params";
3
3
  import {AttesterSlashing, Slot} from "@lodestar/types";
4
- import {PubkeyCache} from "../cache/pubkeyCache.js";
5
4
  import {CachedBeaconStateAllForks} from "../types.js";
6
5
  import {getAttesterSlashableIndices, isSlashableAttestationData, isSlashableValidator} from "../util/index.js";
7
6
  import {isValidIndexedAttestationBigint} from "./isValidIndexedAttestation.js";
@@ -20,14 +19,7 @@ export function processAttesterSlashing(
20
19
  verifySignatures = true
21
20
  ): void {
22
21
  const {epochCtx} = state;
23
- assertValidAttesterSlashing(
24
- state.config,
25
- epochCtx.pubkeyCache,
26
- state.slot,
27
- state.validators.length,
28
- attesterSlashing,
29
- verifySignatures
30
- );
22
+ assertValidAttesterSlashing(state.config, state.slot, state.validators.length, attesterSlashing, verifySignatures);
31
23
 
32
24
  const intersectingIndices = getAttesterSlashableIndices(attesterSlashing);
33
25
 
@@ -48,7 +40,6 @@ export function processAttesterSlashing(
48
40
 
49
41
  export function assertValidAttesterSlashing(
50
42
  config: BeaconConfig,
51
- pubkeyCache: PubkeyCache,
52
43
  stateSlot: Slot,
53
44
  validatorsLen: number,
54
45
  attesterSlashing: AttesterSlashing,
@@ -65,9 +56,7 @@ export function assertValidAttesterSlashing(
65
56
  // be higher than the clock and the slashing would still be valid. Same applies to attestation data index, which
66
57
  // can be any arbitrary value. Must use bigint variants to hash correctly to all possible values
67
58
  for (const [i, attestation] of [attestation1, attestation2].entries()) {
68
- if (
69
- !isValidIndexedAttestationBigint(config, pubkeyCache, stateSlot, validatorsLen, attestation, verifySignatures)
70
- ) {
59
+ if (!isValidIndexedAttestationBigint(config, stateSlot, validatorsLen, attestation, verifySignatures)) {
71
60
  throw new Error(`AttesterSlashing attestation${i} is invalid`);
72
61
  }
73
62
  }
@@ -1,4 +1,9 @@
1
- import {PublicKey, Signature, verify, verifyMultipleAggregateSignatures} from "@chainsafe/blst";
1
+ import {
2
+ BLS_VERIFIER_MAX_BATCH_SIZE,
3
+ BLS_VERIFIER_SET_TYPE,
4
+ type BlsSignatureSet,
5
+ verifySignatureSets,
6
+ } from "@chainsafe/lodestar-z/bls-verifier";
2
7
  import {BeaconConfig} from "@lodestar/config";
3
8
  import {
4
9
  DEPOSIT_CONTRACT_TREE_DEPTH,
@@ -13,7 +18,14 @@ import {BLSPubkey, Bytes32, UintNum64, electra, phase0, ssz} from "@lodestar/typ
13
18
  import {verifyMerkleBranch} from "@lodestar/utils";
14
19
  import {ZERO_HASH} from "../constants/index.js";
15
20
  import {CachedBeaconStateAllForks, CachedBeaconStateAltair, CachedBeaconStateElectra} from "../types.js";
16
- import {computeDomain, computeSigningRoot, getMaxEffectiveBalance, increaseBalance} from "../util/index.js";
21
+ import {
22
+ computeDomain,
23
+ computeSigningRoot,
24
+ createSingleSignatureSetFromComponents,
25
+ getMaxEffectiveBalance,
26
+ increaseBalance,
27
+ verifySignatureSet,
28
+ } from "../util/index.js";
17
29
 
18
30
  /**
19
31
  * Process a Deposit operation. Potentially adds a new validator to the registry. Mutates the validators and balances
@@ -159,11 +171,7 @@ export function isValidDepositSignature(
159
171
  const domain = computeDomain(DOMAIN_DEPOSIT, config.GENESIS_FORK_VERSION, ZERO_HASH);
160
172
  const signingRoot = computeSigningRoot(ssz.phase0.DepositMessage, depositMessage, domain);
161
173
  try {
162
- // Pubkeys must be checked for group + inf. This must be done only once when the validator deposit is processed
163
- const publicKey = PublicKey.fromBytes(pubkey, true);
164
- const signature = Signature.fromBytes(depositSignature, true);
165
-
166
- return verify(signingRoot, publicKey, signature);
174
+ return verifySignatureSet(createSingleSignatureSetFromComponents(pubkey, signingRoot, depositSignature));
167
175
  } catch (_e) {
168
176
  return false; // Catch all BLS errors: failed key validation, failed signature validation, invalid signature
169
177
  }
@@ -184,54 +192,34 @@ export function verifyDepositSignatures(config: BeaconConfig, deposits: electra.
184
192
  // fork-agnostic domain since deposits are valid across forks, matching isValidDepositSignature
185
193
  const domain = computeDomain(DOMAIN_DEPOSIT, config.GENESIS_FORK_VERSION, ZERO_HASH);
186
194
 
187
- const signatureSets: {pk: PublicKey; msg: Uint8Array; sig: Signature}[] = [];
188
- const signatureSetDepositIndices: number[] = [];
189
- for (let i = 0; i < deposits.length; i++) {
190
- const {pubkey, withdrawalCredentials, amount, signature} = deposits[i];
191
- let pk: PublicKey;
192
- let sig: Signature;
195
+ const signatureSets: BlsSignatureSet[] = deposits.map(({pubkey, withdrawalCredentials, amount, signature}) => ({
196
+ type: BLS_VERIFIER_SET_TYPE.single,
197
+ pubkey,
198
+ message: computeSigningRoot(ssz.phase0.DepositMessage, {pubkey, withdrawalCredentials, amount}, domain),
199
+ signature,
200
+ }));
201
+
202
+ for (let chunkStart = 0; chunkStart < signatureSets.length; chunkStart += BLS_VERIFIER_MAX_BATCH_SIZE) {
203
+ const chunk = signatureSets.slice(chunkStart, chunkStart + BLS_VERIFIER_MAX_BATCH_SIZE);
204
+ let chunkValid: boolean;
193
205
  try {
194
- // Parse without group/infinity checks; deferred to the verify call below so it can be
195
- // batched across all sets.
196
- pk = PublicKey.fromBytes(pubkey);
197
- sig = Signature.fromBytes(signature);
206
+ chunkValid = verifySignatureSets(chunk);
198
207
  } catch (_) {
199
- // Malformed pubkey or signature bytes - invalid deposit, results[i] stays false
200
- continue;
208
+ chunkValid = false;
201
209
  }
202
- const msg = computeSigningRoot(ssz.phase0.DepositMessage, {pubkey, withdrawalCredentials, amount}, domain);
203
- signatureSets.push({pk, msg, sig});
204
- signatureSetDepositIndices.push(i);
205
- }
206
210
 
207
- if (signatureSets.length === 0) {
208
- return results;
209
- }
210
-
211
- // Deposit pubkeys and signatures are untrusted, so group + infinity checks are required.
212
- // The trailing (true, true) args delegate those checks to blst, amortized across the batch.
213
- let batchValid: boolean;
214
- try {
215
- batchValid =
216
- signatureSets.length >= 2
217
- ? verifyMultipleAggregateSignatures(signatureSets, true, true)
218
- : verify(signatureSets[0].msg, signatureSets[0].pk, signatureSets[0].sig, true, true);
219
- } catch (_) {
220
- batchValid = false;
221
- }
222
-
223
- if (batchValid) {
224
- for (const depositIndex of signatureSetDepositIndices) {
225
- results[depositIndex] = true;
211
+ if (chunkValid) {
212
+ results.fill(true, chunkStart, chunkStart + chunk.length);
213
+ continue;
226
214
  }
227
- } else {
228
- for (let s = 0; s < signatureSets.length; s++) {
215
+
216
+ for (let i = 0; i < chunk.length; i++) {
229
217
  try {
230
- if (verify(signatureSets[s].msg, signatureSets[s].pk, signatureSets[s].sig, true, true)) {
231
- results[signatureSetDepositIndices[s]] = true;
218
+ if (verifySignatureSets([chunk[i]])) {
219
+ results[chunkStart + i] = true;
232
220
  }
233
221
  } catch (_) {
234
- // invalid point / malformed invalid signature, results[i] stays false
222
+ // Invalid point or malformed bytes leave this deposit false.
235
223
  }
236
224
  }
237
225
  }