@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,4 +1,4 @@
1
- import { createPubkeyCache } from "../cache/pubkeyCache.js";
1
+ import { pubkeyCache } from "@chainsafe/lodestar-z/pubkeys";
2
2
  import { createCachedBeaconState } from "../cache/stateCache.js";
3
3
  import { getStateTypeFromBytes } from "../util/sszBytes.js";
4
4
  import { BeaconStateView } from "./beaconStateView.js";
@@ -19,16 +19,6 @@ export function createBeaconStateView(opts) {
19
19
  const cachedState = createCachedBeaconState(anchorState, { config, pubkeyCache }, { skipSyncPubkeys: true });
20
20
  return new BeaconStateView(cachedState);
21
21
  }
22
- // ---- createBeaconStateViewForHistoricalRegen (regen path) ----
23
- // Reused across all historical state regen calls in the worker thread
24
- const pubkeyCacheRegen = createPubkeyCache();
25
- function syncPubkeyCache(state, pubkeyCache) {
26
- const newCount = state.validators.length;
27
- for (let i = pubkeyCache.size; i < newCount; i++) {
28
- const pubkey = state.validators.getReadonly(i).pubkey;
29
- pubkeyCache.set(i, pubkey);
30
- }
31
- }
32
22
  /**
33
23
  * Create a BeaconStateView from raw SSZ bytes. Used in the historical state regen worker thread.
34
24
  *
@@ -41,8 +31,7 @@ export function createBeaconStateViewForHistoricalRegen(opts) {
41
31
  }
42
32
  const { config, stateBytes } = opts;
43
33
  const state = getStateTypeFromBytes(config, stateBytes).deserializeToViewDU(stateBytes);
44
- syncPubkeyCache(state, pubkeyCacheRegen);
45
- const cachedState = createCachedBeaconState(state, { config, pubkeyCache: pubkeyCacheRegen }, { skipSyncPubkeys: true });
34
+ const cachedState = createCachedBeaconState(state, { config, pubkeyCache }, { skipSyncPubkeys: true });
46
35
  return new BeaconStateView(cachedState);
47
36
  }
48
37
  //# sourceMappingURL=stateViewFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stateViewFactory.js","sourceRoot":"","sources":["../../src/stateView/stateViewFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAC,uBAAuB,EAAC,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAiBrD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAA6B;IACjE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACpE,uDAAuD;IACzD,CAAC;IACD,MAAM,EAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAC,GAAG,IAAI,CAAC;IAChD,MAAM,WAAW,GAAG,uBAAuB,CAAC,WAAW,EAAE,EAAC,MAAM,EAAE,WAAW,EAAC,EAAE,EAAC,eAAe,EAAE,IAAI,EAAC,CAAC,CAAC;IACzG,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED,iEAAiE;AAEjE,sEAAsE;AACtE,MAAM,gBAAgB,GAAG,iBAAiB,EAAE,CAAC;AAE7C,SAAS,eAAe,CAAC,KAA0B,EAAE,WAAwB;IAC3E,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACtD,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAaD;;;;GAIG;AACH,MAAM,UAAU,uCAAuC,CAAC,IAAuC;IAC7F,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACpE,uDAAuD;IACzD,CAAC;IACD,MAAM,EAAC,MAAM,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC;IAClC,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACxF,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,uBAAuB,CAAC,KAAK,EAAE,EAAC,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAC,EAAE,EAAC,eAAe,EAAE,IAAI,EAAC,CAAC,CAAC;IACrH,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"stateViewFactory.js","sourceRoot":"","sources":["../../src/stateView/stateViewFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,WAAW,EAAC,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAC,uBAAuB,EAAC,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAC,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAiBrD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAA6B;IACjE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACpE,uDAAuD;IACzD,CAAC;IACD,MAAM,EAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAC,GAAG,IAAI,CAAC;IAChD,MAAM,WAAW,GAAG,uBAAuB,CAAC,WAAW,EAAE,EAAC,MAAM,EAAE,WAAW,EAAC,EAAE,EAAC,eAAe,EAAE,IAAI,EAAC,CAAC,CAAC;IACzG,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC;AAeD;;;;GAIG;AACH,MAAM,UAAU,uCAAuC,CAAC,IAAuC;IAC7F,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACpE,uDAAuD;IACzD,CAAC;IACD,MAAM,EAAC,MAAM,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC;IAClC,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACxF,MAAM,WAAW,GAAG,uBAAuB,CAAC,KAAK,EAAE,EAAC,MAAM,EAAE,WAAW,EAAC,EAAE,EAAC,eAAe,EAAE,IAAI,EAAC,CAAC,CAAC;IACnG,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export * from "./cache.js";
2
2
  export * from "./interop.js";
3
+ export * from "./interopPubkeyCache.js";
3
4
  export * from "./params.js";
4
5
  export * from "./testFileCache.js";
5
6
  export * from "./util.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testUtils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testUtils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export * from "./cache.js";
2
2
  export * from "./interop.js";
3
+ export * from "./interopPubkeyCache.js";
3
4
  export * from "./params.js";
4
5
  export * from "./testFileCache.js";
5
6
  export * from "./util.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testUtils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testUtils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Ensure the process-wide pubkey cache holds the interop pubkeys for indices [0, vc),
3
+ * loading persisted snapshots and generating as few keys as possible. No-op if the cache
4
+ * already holds them.
5
+ */
6
+ export declare function ensureInteropPubkeyCache(vc: number, snapshotPath?: string): void;
7
+ //# sourceMappingURL=interopPubkeyCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interopPubkeyCache.d.ts","sourceRoot":"","sources":["../../src/testUtils/interopPubkeyCache.ts"],"names":[],"mappings":"AAoEA;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,SAAsB,GAAG,IAAI,CA0B7F"}
@@ -0,0 +1,92 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { pubkeyCache } from "@chainsafe/lodestar-z/pubkeys";
4
+ import { interopSecretKey } from "../util/interop.js";
5
+ import { testCachePath } from "./cache.js";
6
+ /**
7
+ * This util persists generated keys as a PKIX snapshot in the local test-cache dir, so
8
+ * they are generated once per machine and reloaded for tests.
9
+ *
10
+ * The snapshot grows to satisfy larger requests. Smaller requests may load more entries
11
+ * than they need since cache contents do not define validator-registry membership.
12
+ */
13
+ /** Below this count, generating keys is faster than snapshot bookkeeping (~80ms) */
14
+ const MIN_PERSIST_SIZE = 1000;
15
+ const MAX_SNAPSHOT_CAPACITY = 0xffffffff;
16
+ const defaultSnapshotPath = path.join(testCachePath, "interop-pubkeys.pkix");
17
+ /** Sentinel pubkeys used to verify cache contents, memoized as they are re-checked often */
18
+ const interopPubkeyByIndex = new Map();
19
+ function interopPubkey(index) {
20
+ let pubkey = interopPubkeyByIndex.get(index);
21
+ if (!pubkey) {
22
+ pubkey = interopSecretKey(index).toPublicKey().toBytes();
23
+ interopPubkeyByIndex.set(index, pubkey);
24
+ }
25
+ return pubkey;
26
+ }
27
+ function isInteropKeyAt(index) {
28
+ const pubkey = pubkeyCache.get(index);
29
+ return pubkey !== undefined && Buffer.compare(pubkey.toBytes(), interopPubkey(index)) === 0;
30
+ }
31
+ /**
32
+ * True if cache entries [0, count) are the index-matching interop pubkeys. Checking the
33
+ * two endpoints suffices: the native cache is append-only and never remaps an index, so
34
+ * replacing any entry in between would have required a reset() clearing index 0 too.
35
+ */
36
+ function hasInteropPrefix(count) {
37
+ return pubkeyCache.size >= count && isInteropKeyAt(0) && isInteropKeyAt(count - 1);
38
+ }
39
+ function loadSnapshot(snapshotPath) {
40
+ if (!fs.existsSync(snapshotPath))
41
+ return;
42
+ try {
43
+ pubkeyCache.load(snapshotPath, MAX_SNAPSHOT_CAPACITY);
44
+ }
45
+ catch {
46
+ // Stale ABI, corrupt or torn file: drop it so future runs regenerate it
47
+ fs.rmSync(snapshotPath, { force: true });
48
+ }
49
+ }
50
+ function saveSnapshot(snapshotPath) {
51
+ fs.mkdirSync(path.dirname(snapshotPath), { recursive: true });
52
+ // Write-then-rename so concurrent test processes never observe a partial file
53
+ const tmpPath = `${snapshotPath}.tmp-${process.pid}`;
54
+ try {
55
+ pubkeyCache.save(tmpPath);
56
+ fs.renameSync(tmpPath, snapshotPath);
57
+ }
58
+ catch {
59
+ fs.rmSync(tmpPath, { force: true });
60
+ }
61
+ }
62
+ /**
63
+ * Ensure the process-wide pubkey cache holds the interop pubkeys for indices [0, vc),
64
+ * loading persisted snapshots and generating as few keys as possible. No-op if the cache
65
+ * already holds them.
66
+ */
67
+ export function ensureInteropPubkeyCache(vc, snapshotPath = defaultSnapshotPath) {
68
+ if (vc <= 0 || hasInteropPrefix(vc))
69
+ return;
70
+ // The cache is append-only, so extend a shorter interop prefix in place. Otherwise,
71
+ // replace unrelated contents with the persisted interop cache when available.
72
+ const size = pubkeyCache.size;
73
+ const sizeToExtend = size > 0 && size < vc && hasInteropPrefix(size) ? size : 0;
74
+ if (sizeToExtend === 0) {
75
+ pubkeyCache.reset();
76
+ loadSnapshot(snapshotPath);
77
+ }
78
+ let loadedSize = pubkeyCache.size;
79
+ if (loadedSize > 0 && !hasInteropPrefix(loadedSize)) {
80
+ pubkeyCache.reset();
81
+ loadedSize = 0;
82
+ }
83
+ if (loadedSize >= vc)
84
+ return;
85
+ for (let i = loadedSize; i < vc; i++) {
86
+ pubkeyCache.append(i, interopSecretKey(i).toPublicKey().toBytes());
87
+ }
88
+ if (vc >= MIN_PERSIST_SIZE) {
89
+ saveSnapshot(snapshotPath);
90
+ }
91
+ }
92
+ //# sourceMappingURL=interopPubkeyCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interopPubkeyCache.js","sourceRoot":"","sources":["../../src/testUtils/interopPubkeyCache.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/testUtils/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAqB,MAAM,kBAAkB,CAAC;AASrE,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAExD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,EAG1B,MAAM,aAAa,CAAC;AAGrB;;GAEG;AACH,KAAK,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,iBAAiB,CAgDvE;AAED,wBAAgB,mBAAmB,CACjC,MAAM,GAAE,eAA+B,EACvC,IAAI,GAAE,eAAoB,GACzB,yBAAyB,CAO3B;AAED,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,mBAAmB,EACvE,KAAK,EAAE,CAAC,EACR,YAAY,GAAE,eAAwB,EACtC,IAAI,CAAC,EAAE,cAAc,GACpB,CAAC,GAAG,gBAAgB,CAUtB"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/testUtils/state.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAqB,MAAM,kBAAkB,CAAC;AASrE,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAC,mBAAmB,EAAE,iBAAiB,EAAE,yBAAyB,EAA0B,MAAM,aAAa,CAAC;AAGvH;;GAEG;AACH,KAAK,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,iBAAiB,CAgDvE;AAED,wBAAgB,mBAAmB,CACjC,MAAM,GAAE,eAA+B,EACvC,IAAI,GAAE,eAAoB,GACzB,yBAAyB,CAO3B;AAED,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,mBAAmB,EACvE,KAAK,EAAE,CAAC,EACR,YAAY,GAAE,eAAwB,EACtC,IAAI,CAAC,EAAE,cAAc,GACpB,CAAC,GAAG,gBAAgB,CAStB"}
@@ -1,9 +1,10 @@
1
+ import { pubkeyCache } from "@chainsafe/lodestar-z/pubkeys";
1
2
  import { createBeaconConfig } from "@lodestar/config";
2
3
  import { config, config as minimalConfig } from "@lodestar/config/default";
3
4
  import { EPOCHS_PER_HISTORICAL_VECTOR, EPOCHS_PER_SLASHINGS_VECTOR, GENESIS_EPOCH, GENESIS_SLOT, SLOTS_PER_HISTORICAL_ROOT, } from "@lodestar/params";
4
5
  import { ssz } from "@lodestar/types";
5
6
  import { ZERO_HASH } from "../constants/index.js";
6
- import { createCachedBeaconState, createPubkeyCache, } from "../index.js";
7
+ import { createCachedBeaconState } from "../index.js";
7
8
  import { newZeroedArray } from "../util/index.js";
8
9
  /**
9
10
  * Generate beaconState, by default it will use the initial state defined when the `ChainStart` log is emitted.
@@ -62,17 +63,16 @@ export function generateState(opts) {
62
63
  }
63
64
  export function generateCachedState(config = minimalConfig, opts = {}) {
64
65
  const state = generateState(opts);
66
+ pubkeyCache.reset();
65
67
  return createCachedBeaconState(state, {
66
68
  config: createBeaconConfig(config, state.genesisValidatorsRoot),
67
- // This is a test state, there's no need to have a global shared cache of keys
68
- pubkeyCache: createPubkeyCache(),
69
+ pubkeyCache,
69
70
  });
70
71
  }
71
72
  export function createCachedBeaconStateTest(state, configCustom = config, opts) {
72
73
  return createCachedBeaconState(state, {
73
74
  config: createBeaconConfig(configCustom, state.genesisValidatorsRoot),
74
- // This is a test state, there's no need to have a global shared cache of keys
75
- pubkeyCache: createPubkeyCache(),
75
+ pubkeyCache,
76
76
  }, opts);
77
77
  }
78
78
  //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/testUtils/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/testUtils/state.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"testFileCache.d.ts","sourceRoot":"","sources":["../../src/testUtils/testFileCache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,eAAe,EAAwB,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAC,WAAW,EAAsB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAC,yBAAyB,EAAC,MAAM,aAAa,CAAC;AAYtD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,eAAe,CAGtE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,yBAAyB,CAAC,CA0BpC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,CAAC,CAyB5B"}
1
+ {"version":3,"file":"testFileCache.d.ts","sourceRoot":"","sources":["../../src/testUtils/testFileCache.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,eAAe,EAAwB,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAC,WAAW,EAAsB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAC,yBAAyB,EAAC,MAAM,aAAa,CAAC;AAYtD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,eAAe,CAGtE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,yBAAyB,CAAC,CA4BpC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,CAAC,CAyB5B"}
@@ -1,5 +1,6 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
+ import { pubkeyCache } from "@chainsafe/lodestar-z/pubkeys";
3
4
  import { getClient } from "@lodestar/api";
4
5
  import { createChainForkConfig } from "@lodestar/config";
5
6
  import { networksChainConfig } from "@lodestar/config/networks";
@@ -29,6 +30,7 @@ export async function getNetworkCachedState(network, slot, timeout) {
29
30
  const filepath = path.join(testCachePath, fileId);
30
31
  if (fs.existsSync(filepath)) {
31
32
  const stateSsz = fs.readFileSync(filepath);
33
+ pubkeyCache.reset();
32
34
  return createCachedBeaconStateTest(config.getForkTypes(slot).BeaconState.deserializeToViewDU(stateSsz), config);
33
35
  }
34
36
  const stateSsz = await tryEach([
@@ -41,6 +43,7 @@ export async function getNetworkCachedState(network, slot, timeout) {
41
43
  },
42
44
  ]);
43
45
  fs.writeFileSync(filepath, stateSsz);
46
+ pubkeyCache.reset();
44
47
  return createCachedBeaconStateTest(config.getForkTypes(slot).BeaconState.deserializeToViewDU(stateSsz), config);
45
48
  }
46
49
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"testFileCache.js","sourceRoot":"","sources":["../../src/testUtils/testFileCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testFileCache.js","sourceRoot":"","sources":["../../src/testUtils/testFileCache.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { PublicKey, SecretKey } from "@chainsafe/blst";
1
+ import { PublicKey, SecretKey } from "@chainsafe/lodestar-z/blst";
2
2
  import { BeaconConfig } from "@lodestar/config";
3
3
  import { Slot, electra, phase0 } from "@lodestar/types";
4
4
  import { BeaconStateAltair, BeaconStateElectra, CachedBeaconStateAllForks, CachedBeaconStateAltair, CachedBeaconStateElectra, CachedBeaconStatePhase0 } from "../types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/testUtils/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAC,YAAY,EAA4C,MAAM,kBAAkB,CAAC;AAezF,OAAO,EAAc,IAAI,EAAE,OAAO,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAWxE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAElB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAmBrB;;GAEG;AACH,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,WAAW,sBAAgC,CAAC;AAKzD,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,wBAAgB,UAAU,CAAC,EAAE,SAAgB;;;;EAK5C;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAEvE;AAED,2FAA2F;AAC3F,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAQ7E;AAaD,wBAAgB,iCAAiC,CAAC,IAAI,CAAC,EAAE;IAAC,aAAa,EAAE,OAAO,CAAA;CAAC,GAAG,uBAAuB,CA0F1G;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CASpF;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,CAAC,EAAE;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,uBAAuB,CAgC1B;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,CAAC,EAAE;IACxD,aAAa,EAAE,OAAO,CAAC;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,wBAAwB,CAoC3B;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAyC3F;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,kBAAkB,CAgD7F;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CAAC,iBAAiB,CAgBzE;AA2ED,wBAAgB,2CAA2C,CAAC,EAC1D,EAAE,EACF,IAAI,GACL,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;CACZ,GAAG,yBAAyB,CAoD5B;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,EAAE,CA2B1B;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,SAAiB,GACtB,OAAO,CAAC,cAAc,CAaxB"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/testUtils/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,SAAS,EAAC,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EAAC,YAAY,EAA4C,MAAM,kBAAkB,CAAC;AAezF,OAAO,EAAc,IAAI,EAAE,OAAO,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAUxE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAElB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAmBrB;;GAEG;AACH,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B;;;;;GAKG;AACH,eAAO,MAAM,WAAW,sBAAgC,CAAC;AAMzD,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,wBAAgB,UAAU,CAAC,EAAE,SAAgB;;;;EAgB5C;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAEvE;AAED,2FAA2F;AAC3F,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAO7E;AAED,wBAAgB,iCAAiC,CAAC,IAAI,CAAC,EAAE;IAAC,aAAa,EAAE,OAAO,CAAA;CAAC,GAAG,uBAAuB,CAwF1G;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CASpF;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,CAAC,EAAE;IACvD,aAAa,EAAE,OAAO,CAAC;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,uBAAuB,CA+B1B;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,IAAI,CAAC,EAAE;IACxD,aAAa,EAAE,OAAO,CAAC;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,wBAAwB,CAmC3B;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAyC3F;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,kBAAkB,CAgD7F;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CAAC,iBAAiB,CAgBzE;AA2ED,wBAAgB,2CAA2C,CAAC,EAC1D,EAAE,EACF,IAAI,GACL,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;CACZ,GAAG,yBAAyB,CA4C5B;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,EAAE,CA2B1B;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,SAAiB,GACtB,OAAO,CAAC,cAAc,CAaxB"}
@@ -1,4 +1,5 @@
1
- import { PublicKey } from "@chainsafe/blst";
1
+ import { PublicKey } from "@chainsafe/lodestar-z/blst";
2
+ import { pubkeyCache } from "@chainsafe/lodestar-z/pubkeys";
2
3
  import { BitArray, fromHexString } from "@chainsafe/ssz";
3
4
  import { createBeaconConfig, createChainForkConfig } from "@lodestar/config";
4
5
  import { config } from "@lodestar/config/default";
@@ -6,13 +7,13 @@ import { BUILDER_WITHDRAWAL_PREFIX, DOMAIN_DEPOSIT, EPOCHS_PER_ETH1_VOTING_PERIO
6
7
  import { ssz } from "@lodestar/types";
7
8
  import { getEffectiveBalanceIncrements } from "../cache/effectiveBalanceIncrements.js";
8
9
  import { ZERO_HASH } from "../constants/index.js";
9
- import { computeCommitteeCount, computeEpochAtSlot, createCachedBeaconState, createPubkeyCache, newFilledArray, processSlots, } from "../index.js";
10
+ import { computeCommitteeCount, computeEpochAtSlot, createCachedBeaconState, newFilledArray, processSlots, } from "../index.js";
10
11
  import { computeDomain } from "../util/domain.js";
11
12
  import { interopSecretKey } from "../util/interop.js";
12
13
  import { computeSigningRoot } from "../util/signingRoot.js";
13
14
  import { getNextSyncCommittee } from "../util/syncCommittee.js";
14
15
  import { getActiveValidatorIndices } from "../util/validator.js";
15
- import { interopPubkeysCached } from "./interop.js";
16
+ import { ensureInteropPubkeyCache } from "./interopPubkeyCache.js";
16
17
  let phase0State = null;
17
18
  let phase0CachedState23637 = null;
18
19
  let phase0CachedState23638 = null;
@@ -37,41 +38,41 @@ export const keypairsMod = 100;
37
38
  export const perfStateId = `${numValidators} vs - 7PWei`;
38
39
  /** Cache interop secret keys */
39
40
  const secretKeyByModIndex = new Map();
41
+ const pubkeysByCount = new Map();
40
42
  const epoch = 23638;
41
43
  export const perfStateEpoch = epoch;
42
44
  export function getPubkeys(vc = numValidators) {
43
- const pubkeysMod = interopPubkeysCached(keypairsMod);
44
- const pubkeysModObj = pubkeysMod.map((pk) => PublicKey.fromBytes(pk));
45
- const pubkeys = Array.from({ length: vc }, (_, i) => pubkeysMod[i % keypairsMod]);
45
+ ensureInteropPubkeyCache(vc);
46
+ let pubkeys = pubkeysByCount.get(vc);
47
+ if (!pubkeys) {
48
+ for (const [count, cached] of pubkeysByCount) {
49
+ if (count >= vc) {
50
+ pubkeys = cached.slice(0, vc);
51
+ break;
52
+ }
53
+ }
54
+ pubkeys ??= Array.from({ length: vc }, (_, i) => pubkeyCache.getPubkeyBytesOrThrow(i));
55
+ pubkeysByCount.set(vc, pubkeys);
56
+ }
57
+ const pubkeysMod = pubkeys;
58
+ const pubkeysModObj = pubkeys.slice(0, keypairsMod).map((pk) => PublicKey.fromBytes(pk));
46
59
  return { pubkeysMod, pubkeysModObj, pubkeys };
47
60
  }
48
61
  /** Get secret key of a validatorIndex, if the pubkeys are generated with `getPubkeys()` */
49
62
  export function getSecretKeyFromIndex(validatorIndex) {
50
- return interopSecretKey(validatorIndex % keypairsMod);
63
+ return interopSecretKey(validatorIndex);
51
64
  }
52
65
  /** Get secret key of a validatorIndex, if the pubkeys are generated with `getPubkeys()` */
53
66
  export function getSecretKeyFromIndexCached(validatorIndex) {
54
- const keyIndex = validatorIndex % keypairsMod;
55
- let sk = secretKeyByModIndex.get(keyIndex);
67
+ let sk = secretKeyByModIndex.get(validatorIndex);
56
68
  if (!sk) {
57
- sk = interopSecretKey(keyIndex);
58
- secretKeyByModIndex.set(keyIndex, sk);
69
+ sk = interopSecretKey(validatorIndex);
70
+ secretKeyByModIndex.set(validatorIndex, sk);
59
71
  }
60
72
  return sk;
61
73
  }
62
- function getPubkeyCaches({ pubkeysMod }, vc = numValidators) {
63
- // Manually sync pubkeys to prevent doing BLS opts 110_000 times
64
- const pubkeyCache = createPubkeyCache();
65
- for (let i = 0; i < vc; i++) {
66
- const pubkey = pubkeysMod[i % keypairsMod];
67
- pubkeyCache.set(i, pubkey);
68
- }
69
- return { pubkeyCache };
70
- }
71
74
  export function generatePerfTestCachedStatePhase0(opts) {
72
- // Generate only some publicKeys
73
- const { pubkeys, pubkeysMod, pubkeysModObj } = getPubkeys();
74
- const { pubkeyCache } = getPubkeyCaches({ pubkeys, pubkeysMod, pubkeysModObj });
75
+ const { pubkeys } = getPubkeys();
75
76
  if (!phase0State) {
76
77
  const state = buildPerformanceStatePhase0();
77
78
  // no justificationBits
@@ -159,8 +160,7 @@ export function cachedStateAltairPopulateCaches(state) {
159
160
  */
160
161
  export function generatePerfTestCachedStateAltair(opts) {
161
162
  const vc = opts?.vc ?? numValidators;
162
- const { pubkeys, pubkeysMod, pubkeysModObj } = getPubkeys(vc);
163
- const { pubkeyCache } = getPubkeyCaches({ pubkeys, pubkeysMod, pubkeysModObj }, vc);
163
+ const { pubkeys } = getPubkeys(vc);
164
164
  const altairConfig = createChainForkConfig({ ALTAIR_FORK_EPOCH: 0 });
165
165
  const origState = generatePerformanceStateAltair(pubkeys);
166
166
  // For non-default vc, generate fresh without caching to avoid accumulating large states in memory
@@ -192,8 +192,7 @@ export function generatePerfTestCachedStateAltair(opts) {
192
192
  */
193
193
  export function generatePerfTestCachedStateElectra(opts) {
194
194
  const vc = opts?.vc ?? numValidators;
195
- const { pubkeys, pubkeysMod, pubkeysModObj } = getPubkeys(vc);
196
- const { pubkeyCache } = getPubkeyCaches({ pubkeys, pubkeysMod, pubkeysModObj }, vc);
195
+ const { pubkeys } = getPubkeys(vc);
197
196
  const electraConfig = createChainForkConfig({
198
197
  ALTAIR_FORK_EPOCH: 0,
199
198
  BELLATRIX_FORK_EPOCH: 0,
@@ -392,14 +391,7 @@ function buildPerformanceStatePhase0(pubkeysArg) {
392
391
  };
393
392
  }
394
393
  export function generateTestCachedBeaconStateOnlyValidators({ vc, slot, }) {
395
- // Generate only some publicKeys
396
- const { pubkeys, pubkeysMod } = getPubkeys(vc);
397
- // Manually sync pubkeys to prevent doing BLS opts 110_000 times
398
- const pubkeyCache = createPubkeyCache();
399
- for (let i = 0; i < vc; i++) {
400
- const pubkey = pubkeysMod[i % keypairsMod];
401
- pubkeyCache.set(i, pubkey);
402
- }
394
+ const { pubkeys } = getPubkeys(vc);
403
395
  const state = ssz.phase0.BeaconState.defaultViewDU();
404
396
  state.slot = slot;
405
397
  const activeValidator = ssz.phase0.Validator.toViewDU({
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/testUtils/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAY,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAe,kBAAkB,EAAE,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,6BAA6B,EAC7B,4BAA4B,EAE5B,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAqC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAC,6BAA6B,EAAC,MAAM,wCAAwC,CAAC;AACrF,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAC,yBAAyB,EAAC,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAC,oBAAoB,EAAC,MAAM,cAAc,CAAC;AAElD,IAAI,WAAW,GAA6B,IAAI,CAAC;AACjD,IAAI,sBAAsB,GAAmC,IAAI,CAAC;AAClE,IAAI,sBAAsB,GAAmC,IAAI,CAAC;AAClE,IAAI,iBAAiB,GAAoC,IAAI,CAAC;AAC9D,IAAI,WAAW,GAA6B,IAAI,CAAC;AACjD,IAAI,sBAAsB,GAAmC,IAAI,CAAC;AAClE,IAAI,sBAAsB,GAAmC,IAAI,CAAC;AAClE,IAAI,YAAY,GAA8B,IAAI,CAAC;AACnD,IAAI,uBAAuB,GAAoC,IAAI,CAAC;AACpE,IAAI,uBAAuB,GAAoC,IAAI,CAAC;AAEpE;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,aAAa,aAAa,CAAC;AAEzD,gCAAgC;AAChC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAqB,CAAC;AACzD,MAAM,KAAK,GAAG,KAAK,CAAC;AACpB,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC,MAAM,UAAU,UAAU,CAAC,EAAE,GAAG,aAAa;IAC3C,MAAM,UAAU,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,EAAE,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;IAChF,OAAO,EAAC,UAAU,EAAE,aAAa,EAAE,OAAO,EAAC,CAAC;AAC9C,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,qBAAqB,CAAC,cAAsB;IAC1D,OAAO,gBAAgB,CAAC,cAAc,GAAG,WAAW,CAAC,CAAC;AACxD,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,2BAA2B,CAAC,cAAsB;IAChE,MAAM,QAAQ,GAAG,cAAc,GAAG,WAAW,CAAC;IAC9C,IAAI,EAAE,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAChC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,eAAe,CAAC,EAAC,UAAU,EAAgC,EAAE,EAAE,GAAG,aAAa;IACtF,gEAAgE;IAChE,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;QAC3C,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,EAAC,WAAW,EAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,IAA+B;IAC/E,gCAAgC;IAChC,MAAM,EAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAC,GAAG,UAAU,EAAE,CAAC;IAC1D,MAAM,EAAC,WAAW,EAAC,GAAG,eAAe,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAC,CAAC,CAAC;IAE5E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,2BAA2B,EAAE,CAAC;QAE5C,uBAAuB;QACvB,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAErD,cAAc;QACd,WAAW,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;QAChB,sBAAsB,GAAG,uBAAuB,CAAC,KAAK,EAAE;YACtD,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,qBAAqB,CAAC;YAC/D,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,YAAY,GAAG,CAAC,CAAC;QAEvC,8BAA8B;QAC9B,MAAM,mBAAmB,GAAG,eAAe,GAAG,gBAAgB,CAAC;QAC/D,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;QAC5C,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;QACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,CAAC,GAAG,eAAe,CAAC;YACxC,MAAM,IAAI,GAAG,aAAa,GAAG,eAAe,GAAG,WAAW,CAAC;YAC3D,MAAM,KAAK,GAAG,CAAC,GAAG,iBAAiB,CAAC;YACpC,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;YACrF,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3D,sBAAsB,CAAC,yBAAyB,CAAC,IAAI,CACnD,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC;gBACrC,eAAe,EAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC3F,IAAI,EAAE;oBACJ,eAAe,EAAE,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,GAAG,yBAAyB,CAAC;oBAC/F,KAAK;oBACL,IAAI;oBACJ,MAAM,EAAE,KAAK,CAAC,2BAA2B;oBACzC,MAAM,EAAE,KAAK,CAAC,0BAA0B;iBACzC;gBACD,cAAc,EAAE,CAAC;gBACjB,aAAa,EAAE,CAAC;aACjB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,MAAM,kBAAkB,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC;QACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,CAAC,GAAG,eAAe,CAAC;YACxC,MAAM,IAAI,GAAG,YAAY,GAAG,eAAe,GAAG,WAAW,CAAC;YAC1D,MAAM,KAAK,GAAG,CAAC,GAAG,iBAAiB,CAAC;YACpC,MAAM,SAAS,GAAG,sBAAsB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;YACrF,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;YAE3D,sBAAsB,CAAC,wBAAwB,CAAC,IAAI,CAClD,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC;gBACrC,eAAe,EAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,SAAS,CAAC,MAAM,EAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC3F,IAAI,EAAE;oBACJ,eAAe,EAAE,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,GAAG,yBAAyB,CAAC;oBAC/F,KAAK;oBACL,IAAI;oBACJ,MAAM,EAAE,KAAK,CAAC,0BAA0B;oBACxC,MAAM,EAAE;wBACN,KAAK,EAAE,YAAY;wBACnB,IAAI,EAAE,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,eAAe,CAAC,GAAG,yBAAyB,CAAC;qBAC1G;iBACF;gBACD,cAAc,EAAE,CAAC;gBACjB,aAAa,EAAE,CAAC;aACjB,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,sBAAsB,GAAG,YAAY,CACnC,sBAAsB,EACtB,sBAAsB,CAAC,IAAI,GAAG,CAAC,CACL,CAAC;QAC7B,sBAAsB,CAAC,IAAI,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,cAAc,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAE7F,OAAO,cAAc,CAAC,KAAK,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAA8B;IAC5E,kBAAkB;IAClB,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAClC,KAAK,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC;IACrC,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAClC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC;IAC1C,KAAK,CAAC,yBAAyB,CAAC,MAAM,EAAE,CAAC;IACzC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iCAAiC,CAAC,IAGjD;IACC,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,aAAa,CAAC;IACrC,MAAM,EAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,EAAC,WAAW,EAAC,GAAG,eAAe,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAC,EAAE,EAAE,CAAC,CAAC;IAEhF,MAAM,YAAY,GAAG,qBAAqB,CAAC,EAAC,iBAAiB,EAAE,CAAC,EAAC,CAAC,CAAC;IAEnE,MAAM,SAAS,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAE1D,kGAAkG;IAClG,MAAM,WAAW,GAAG,EAAE,KAAK,aAAa,CAAC;IACzC,IAAI,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;QAChB,gBAAgB,GAAG,uBAAuB,CAAC,KAAK,EAAE;YAChD,MAAM,EAAE,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,qBAAqB,CAAC;YACrE,WAAW;SACZ,CAAC,CAAC;QACH,IAAI,WAAW;YAAE,sBAAsB,GAAG,gBAAgB,CAAC;IAC7D,CAAC;IAED,IAAI,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAA4B,CAAC;QACxG,gBAAgB,CAAC,IAAI,IAAI,CAAC,CAAC;QAC3B,IAAI,WAAW;YAAE,sBAAsB,GAAG,gBAAgB,CAAC;IAC7D,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAEjF,OAAO,cAAc,CAAC,KAAK,EAAE,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kCAAkC,CAAC,IAGlD;IACC,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,aAAa,CAAC;IACrC,MAAM,EAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,EAAC,WAAW,EAAC,GAAG,eAAe,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAC,EAAE,EAAE,CAAC,CAAC;IAEhF,MAAM,aAAa,GAAG,qBAAqB,CAAC;QAC1C,iBAAiB,EAAE,CAAC;QACpB,oBAAoB,EAAE,CAAC;QACvB,kBAAkB,EAAE,CAAC;QACrB,gBAAgB,EAAE,CAAC;QACnB,kBAAkB,EAAE,CAAC;KACtB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAE3D,kGAAkG;IAClG,MAAM,WAAW,GAAG,EAAE,KAAK,aAAa,CAAC;IACzC,IAAI,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;QAChB,gBAAgB,GAAG,uBAAuB,CAAC,KAAK,EAAE;YAChD,MAAM,EAAE,kBAAkB,CAAC,aAAa,EAAE,KAAK,CAAC,qBAAqB,CAAC;YACtE,WAAW;SACZ,CAAC,CAAC;QACH,IAAI,WAAW;YAAE,uBAAuB,GAAG,gBAAgB,CAAC;IAC9D,CAAC;IACD,IAAI,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAA6B,CAAC;QACzG,gBAAgB,CAAC,IAAI,IAAI,CAAC,CAAC;QAC3B,IAAI,WAAW;YAAE,uBAAuB,GAAG,gBAAgB,CAAC;IAC9D,CAAC;IACD,MAAM,cAAc,GAAG,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAEjF,OAAO,cAAc,CAAC,KAAK,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAAC,UAAyB;IACtE,MAAM,OAAO,GAAG,UAAU,IAAI,UAAU,EAAE,CAAC,OAAO,CAAC;IACnD,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAC1B,MAAM,WAAW,GAAG,EAAE,KAAK,aAAa,CAAC;IACzC,oFAAoF;IACpF,IAAI,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,WAAW,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,WAA0D,CAAC;QAEzE,KAAK,CAAC,0BAA0B,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzE,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC,0BAA0B,CAAC;QACnE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAE/E,6BAA6B;QAC7B,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;QACrE,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,oBAAoB,CAAC;QAErD,wDAAwD;QACxD,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEhD,iCAAiC;QACjC,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAExE,MAAM,0BAA0B,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,EAAC,aAAa,EAAC,GAAG,oBAAoB,CAC1C,OAAO,CAAC,MAAM,EACd,MAAM,EACN,sBAAsB,EACtB,0BAA0B,CAC3B,CAAC;QACF,KAAK,CAAC,oBAAoB,GAAG,aAAa,CAAC;QAC3C,KAAK,CAAC,iBAAiB,GAAG,aAAa,CAAC;QAExC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChD,cAAc;QACd,MAAM,CAAC,YAAY,EAAE,CAAC;QACtB,IAAI,WAAW;YAAE,WAAW,GAAG,MAAM,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,+BAA+B,CAAC,UAAyB;IACvE,MAAM,OAAO,GAAG,UAAU,IAAI,UAAU,EAAE,CAAC,OAAO,CAAC;IACnD,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAC1B,MAAM,WAAW,GAAG,EAAE,KAAK,aAAa,CAAC;IACzC,oFAAoF;IACpF,IAAI,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,aAAa,GAAG,qBAAqB,CAAC;YAC1C,iBAAiB,EAAE,CAAC;YACpB,oBAAoB,EAAE,CAAC;YACvB,kBAAkB,EAAE,CAAC;YACrB,gBAAgB,EAAE,CAAC;YACnB,kBAAkB,EAAE,CAAC;SACtB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QAErD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,2BAA2B,CAAC,OAAO,CAAC,CAAC,CAAC;QAE3D,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,kBAAkB,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,oBAAoB,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,kBAAkB,CAAC;QACpD,KAAK,CAAC,0BAA0B,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzE,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC,0BAA0B,CAAC;QACnE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/E,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;QACrE,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,oBAAoB,CAAC;QACrD,KAAK,CAAC,4BAA4B,GAAG,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC;QACvF,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC;QAExC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEjD,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,0BAA0B,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,EAAC,aAAa,EAAC,GAAG,oBAAoB,CAC1C,OAAO,CAAC,OAAO,EACf,MAAM,EACN,sBAAsB,EACtB,0BAA0B,CAC3B,CAAC;QACF,KAAK,CAAC,oBAAoB,GAAG,aAAa,CAAC;QAC3C,KAAK,CAAC,iBAAiB,GAAG,aAAa,CAAC;QAExC,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,CAAC,YAAY,EAAE,CAAC;QACtB,IAAI,WAAW;YAAE,YAAY,GAAG,MAAM,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B;IAC5C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;QAC1D,MAAM,WAAW,GAAG,iCAAiC,EAAE,CAAC;QACxD,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;QACtC,KAAK,CAAC,OAAO,CAAC,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvF,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACpG,KAAK,CAAC,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC,oEAAoE,CAAC,CAAC;QAC9G,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,aAAa,CAC7C,oMAAoM,CACrM,CAAC;QACF,mCAAmC;QACnC,iBAAiB,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,SAAS,2BAA2B,CAAC,UAAyB;IAC5D,MAAM,IAAI,GAAG,KAAK,GAAG,eAAe,CAAC;IACrC,MAAM,OAAO,GAAG,UAAU,IAAI,UAAU,EAAE,CAAC,OAAO,CAAC;IACnD,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAElD,OAAO;QACL,OAAO;QACP,WAAW,EAAE,UAAU;QACvB,qBAAqB,EAAE,aAAa,CAAC,oEAAoE,CAAC;QAC1G,IAAI,EAAE,KAAK,GAAG,eAAe;QAC7B,IAAI,EAAE;YACJ,cAAc,EAAE,aAAa,CAAC,YAAY,CAAC;YAC3C,eAAe,EAAE,aAAa,CAAC,YAAY,CAAC;YAC5C,KAAK,EAAE,CAAC;SACT;QACD,UAAU;QACV,iBAAiB,EAAE;YACjB,IAAI,EAAE,IAAI,GAAG,CAAC;YACd,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,aAAa,CAAC,oEAAoE,CAAC;YAC/F,SAAS,EAAE,aAAa,CAAC,oEAAoE,CAAC;YAC9F,QAAQ,EAAE,aAAa,CAAC,oEAAoE,CAAC;SAC9F;QACD,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,yBAAyB,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1F,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,yBAAyB,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1F,eAAe,EAAE,EAAE;QACnB,OAAO;QACP,QAAQ,EAAE;YACR,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,WAAW,EAAE,aAAa,CAAC,oEAAoE,CAAC;YAChG,SAAS,EAAE,aAAa,CAAC,oEAAoE,CAAC;SAC/F;QACD,iDAAiD;QACjD,aAAa,EAAE,cAAc,CAAC,6BAA6B,GAAG,eAAe,GAAG,CAAC,EAAE;YACjF,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;SAC/B,CAAC;QACF,gBAAgB,EAAE,OAAO,CAAC,MAAM;QAChC,WAAW;QACX,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;YAClB,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,gBAAgB,EAAE,WAAW;YAC7B,OAAO,EAAE,KAAK;YACd,0BAA0B,EAAE,CAAC;YAC7B,eAAe,EAAE,CAAC;YAClB,SAAS,EAAE,QAAQ;YACnB,iBAAiB,EAAE,QAAQ;SAC5B,CAAC,CAAC;QACH,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAC,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC;QACjE,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,4BAA4B,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC9F,YAAY;QACZ,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE;QAC9C,yBAAyB,EAAE,EAAE;QAC7B,wBAAwB,EAAE,EAAE;QAC5B,WAAW;QACX,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QACzC,2BAA2B,EAAE;YAC3B,KAAK,EAAE,YAAY,GAAG,CAAC;YACvB,IAAI,EAAE,aAAa,CAAC,oEAAoE,CAAC;SAC1F;QACD,0BAA0B,EAAE;YAC1B,KAAK,EAAE,YAAY,GAAG,CAAC;YACvB,IAAI,EAAE,aAAa,CAAC,oEAAoE,CAAC;SAC1F;QACD,mBAAmB,EAAE;YACnB,KAAK,EAAE,YAAY,GAAG,CAAC;YACvB,IAAI,EAAE,aAAa,CAAC,oEAAoE,CAAC;SAC1F;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2CAA2C,CAAC,EAC1D,EAAE,EACF,IAAI,GAIL;IACC,gCAAgC;IAChC,MAAM,EAAC,OAAO,EAAE,UAAU,EAAC,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAE7C,gEAAgE;IAChE,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;QAC3C,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;IACrD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAElB,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;QACpD,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3B,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,gBAAgB,EAAE,qBAAqB;QACvC,OAAO,EAAE,KAAK;QACd,0BAA0B,EAAE,CAAC;QAC7B,eAAe,EAAE,CAAC;QAClB,SAAS,EAAE,QAAQ;QACnB,iBAAiB,EAAE,QAAQ;KAC5B,CAAC,CAAC;IAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC;QAC1C,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACrG,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CACjD,cAAc,CAAC,4BAA4B,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CACrE,CAAC;IAEF,wBAAwB;IACxB,KAAK,CAAC,MAAM,EAAE,CAAC;IAEf,mCAAmC;IACnC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACnC,MAAM,KAAK,CAAC,4CAA4C,KAAK,CAAC,UAAU,CAAC,MAAM,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO,uBAAuB,CAC5B,KAAK,EACL;QACE,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,qBAAqB,CAAC;QAC/D,WAAW;KACZ,EACD,EAAC,eAAe,EAAE,IAAI,EAAC,CACxB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAC5C,MAAoB,EACpB,KAAa,EACb,UAAkB;IAElB,qEAAqE;IACrE,MAAM,MAAM,GAAG,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,gBAAgB;IAC9C,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,gBAAgB,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;QAE1C,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAClD,qBAAqB,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC;QACrD,4DAA4D;QAC5D,qBAAqB,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAE5D,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,EAAC,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAC,EAAE,MAAM,CAAC,CAAC;QAEnH,QAAQ,CAAC,IAAI,CAAC;YACZ,MAAM;YACN,qBAAqB;YACrB,MAAM;YACN,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;YACzC,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAC7C,MAAoB,EACpB,QAAgB,EAChB,MAAM,GAAG,cAAc;IAEvB,MAAM,MAAM,GAAG,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;IACrF,MAAM,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1C,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,yCAAyC;IAC5F,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,EAAC,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAC,EAAE,MAAM,CAAC,CAAC;IACnH,OAAO;QACL,MAAM;QACN,qBAAqB;QACrB,MAAM;QACN,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;QACzC,IAAI,EAAE,YAAY;KACnB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/testUtils/util.ts"],"names":[],"mappings":"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"}
@@ -79,6 +79,12 @@ export declare function getPtcWindowEpochCacheData(state: CachedBeaconStateGloas
79
79
  * Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.11/specs/gloas/beacon-chain.md#new-add_builder_to_registry
80
80
  */
81
81
  export declare function addBuilderToRegistry(state: CachedBeaconStateGloas, pubkey: Uint8Array, version: number, executionAddress: Uint8Array, amount: number, slot: number): void;
82
+ /**
83
+ * Append a new builder to the registry without scanning for a reusable slot.
84
+ *
85
+ * This is only safe to be used at the gloas fork transition.
86
+ */
87
+ export declare function appendBuilderToRegistry(state: CachedBeaconStateGloas, pubkey: Uint8Array, version: number, executionAddress: Uint8Array, amount: number, slot: number): void;
82
88
  /**
83
89
  * Verify the proof of possession on a builder deposit request.
84
90
  *
@@ -1 +1 @@
1
- {"version":3,"file":"gloas.d.ts","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAc9C,OAAO,EAAC,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAM,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAGvD,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAI1E,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAKzC,wBAAgB,6BAA6B,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAExF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAQtF;AAOD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,YAAY,EAAE,YAAY,GAAG,cAAc,CAG9F;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,cAAc,EAAE,cAAc,GAAG,YAAY,CAGhG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,GAAG,OAAO,CAEtF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAE1F;AAED,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAUhG;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAEpH;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,GACzB,MAAM,CAoBR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAUT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAWnG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAO/G;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,WAAW,EAAE,CAqB/E;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,sBAAsB,GAAG;IACzE,mCAAmC,EAAE,WAAW,EAAE,CAAC;IACnD,2BAA2B,EAAE,WAAW,EAAE,CAAC;IAC3C,+BAA+B,EAAE,WAAW,EAAE,CAAC;CAChD,CAaA;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,UAAU,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,IAAI,CA2BN;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,UAAU,EAClB,qBAAqB,EAAE,UAAU,EACjC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,UAAU,GACpB,OAAO,CAWT"}
1
+ {"version":3,"file":"gloas.d.ts","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAc9C,OAAO,EAAC,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAM,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AAGvD,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAI1E,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAMzC,wBAAgB,6BAA6B,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAExF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAQtF;AAOD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,YAAY,EAAE,YAAY,GAAG,cAAc,CAG9F;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,cAAc,EAAE,cAAc,GAAG,YAAY,CAGhG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,GAAG,OAAO,CAEtF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAE1F;AAED,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAUhG;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAEpH;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,GACzB,MAAM,CAoBR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,sBAAsB,EAC7B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAUT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAWnG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAO/G;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,WAAW,EAAE,CAqB/E;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,sBAAsB,GAAG;IACzE,mCAAmC,EAAE,WAAW,EAAE,CAAC;IACnD,2BAA2B,EAAE,WAAW,EAAE,CAAC;IAC3C,+BAA+B,EAAE,WAAW,EAAE,CAAC;CAChD,CAaA;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,UAAU,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,IAAI,CAoBN;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,UAAU,EAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,IAAI,CAGN;AAuBD;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,UAAU,EAClB,qBAAqB,EAAE,UAAU,EACjC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,UAAU,GACpB,OAAO,CAST"}
package/lib/util/gloas.js CHANGED
@@ -1,4 +1,3 @@
1
- import { PublicKey, Signature, verify } from "@chainsafe/blst";
2
1
  import { BUILDER_INDEX_FLAG, BUILDER_PAYMENT_THRESHOLD_DENOMINATOR, BUILDER_PAYMENT_THRESHOLD_NUMERATOR, BUILDER_WITHDRAWAL_PREFIX, DOMAIN_BUILDER_DEPOSIT, EFFECTIVE_BALANCE_INCREMENT, FAR_FUTURE_EPOCH, MIN_DEPOSIT_AMOUNT, MIN_SEED_LOOKAHEAD, PTC_SIZE, SLOTS_PER_EPOCH, } from "@lodestar/params";
3
2
  import { ssz } from "@lodestar/types";
4
3
  import { byteArrayEquals } from "@lodestar/utils";
@@ -7,6 +6,7 @@ import { computeDomain } from "./domain.js";
7
6
  import { computeEpochAtSlot } from "./epoch.js";
8
7
  import { computeEpochShuffling } from "./epochShuffling.js";
9
8
  import { computePayloadTimelinessCommitteesForEpoch } from "./seed.js";
9
+ import { createSingleSignatureSetFromComponents, verifySignatureSet } from "./signatureSets.js";
10
10
  import { computeSigningRoot } from "./signingRoot.js";
11
11
  import { getActiveValidatorIndices } from "./validator.js";
12
12
  export function isBuilderWithdrawalCredential(withdrawalCredentials) {
@@ -193,7 +193,29 @@ export function addBuilderToRegistry(state, pubkey, version, executionAddress, a
193
193
  break;
194
194
  }
195
195
  }
196
- const newBuilder = ssz.gloas.Builder.toViewDU({
196
+ const newBuilder = createBuilderView(pubkey, version, executionAddress, amount, depositEpoch);
197
+ if (builderIndex < state.builders.length) {
198
+ state.builders.set(builderIndex, newBuilder);
199
+ }
200
+ else {
201
+ state.builders.push(newBuilder);
202
+ }
203
+ }
204
+ /**
205
+ * Append a new builder to the registry without scanning for a reusable slot.
206
+ *
207
+ * This is only safe to be used at the gloas fork transition.
208
+ */
209
+ export function appendBuilderToRegistry(state, pubkey, version, executionAddress, amount, slot) {
210
+ const depositEpoch = computeEpochAtSlot(slot);
211
+ state.builders.push(createBuilderView(pubkey, version, executionAddress, amount, depositEpoch));
212
+ }
213
+ /**
214
+ * Build a Builder view for registry insertion. Shared by the scan-based {@link addBuilderToRegistry}
215
+ * and the append-only {@link appendBuilderToRegistry} so both paths produce an identical view.
216
+ */
217
+ function createBuilderView(pubkey, version, executionAddress, amount, depositEpoch) {
218
+ return ssz.gloas.Builder.toViewDU({
197
219
  pubkey,
198
220
  version,
199
221
  executionAddress,
@@ -201,12 +223,6 @@ export function addBuilderToRegistry(state, pubkey, version, executionAddress, a
201
223
  depositEpoch,
202
224
  withdrawableEpoch: FAR_FUTURE_EPOCH,
203
225
  });
204
- if (builderIndex < state.builders.length) {
205
- state.builders.set(builderIndex, newBuilder);
206
- }
207
- else {
208
- state.builders.push(newBuilder);
209
- }
210
226
  }
211
227
  /**
212
228
  * Verify the proof of possession on a builder deposit request.
@@ -221,9 +237,7 @@ export function isValidBuilderDepositSignature(config, pubkey, withdrawalCredent
221
237
  const domain = computeDomain(DOMAIN_BUILDER_DEPOSIT, config.GENESIS_FORK_VERSION, ZERO_HASH);
222
238
  const signingRoot = computeSigningRoot(ssz.phase0.DepositMessage, depositMessage, domain);
223
239
  try {
224
- const publicKey = PublicKey.fromBytes(pubkey, true);
225
- const sig = Signature.fromBytes(signature, true);
226
- return verify(signingRoot, publicKey, sig);
240
+ return verifySignatureSet(createSingleSignatureSetFromComponents(pubkey, signingRoot, signature));
227
241
  }
228
242
  catch (_e) {
229
243
  return false;