@aztec/end-to-end 0.0.1-commit.fce3e4f → 0.0.1-commit.ff7989d6c

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 (253) hide show
  1. package/dest/bench/client_flows/benchmark.d.ts +3 -2
  2. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  3. package/dest/bench/client_flows/benchmark.js +21 -1
  4. package/dest/bench/client_flows/client_flows_benchmark.d.ts +15 -16
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  6. package/dest/bench/client_flows/client_flows_benchmark.js +126 -139
  7. package/dest/bench/client_flows/config.d.ts +2 -2
  8. package/dest/bench/client_flows/config.d.ts.map +1 -1
  9. package/dest/bench/client_flows/config.js +18 -0
  10. package/dest/bench/client_flows/data_extractor.js +3 -1
  11. package/dest/bench/utils.d.ts +9 -8
  12. package/dest/bench/utils.d.ts.map +1 -1
  13. package/dest/bench/utils.js +27 -18
  14. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +9 -8
  15. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  16. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +106 -112
  17. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +20 -14
  18. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  19. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +92 -71
  20. package/dest/e2e_deploy_contract/deploy_test.d.ts +5 -4
  21. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  22. package/dest/e2e_deploy_contract/deploy_test.js +18 -13
  23. package/dest/e2e_epochs/epochs_test.d.ts +25 -15
  24. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  25. package/dest/e2e_epochs/epochs_test.js +100 -51
  26. package/dest/e2e_fees/bridging_race.notest.js +4 -6
  27. package/dest/e2e_fees/fees_test.d.ts +21 -17
  28. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  29. package/dest/e2e_fees/fees_test.js +128 -143
  30. package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
  31. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  32. package/dest/e2e_l1_publisher/write_json.js +14 -16
  33. package/dest/e2e_multi_validator/utils.js +1 -1
  34. package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
  35. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  36. package/dest/e2e_nested_contract/nested_contract_test.js +31 -39
  37. package/dest/e2e_p2p/inactivity_slash_test.d.ts +4 -4
  38. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  39. package/dest/e2e_p2p/inactivity_slash_test.js +6 -9
  40. package/dest/e2e_p2p/p2p_network.d.ts +14 -12
  41. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  42. package/dest/e2e_p2p/p2p_network.js +135 -112
  43. package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
  44. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
  45. package/dest/e2e_p2p/reqresp/utils.js +177 -0
  46. package/dest/e2e_p2p/shared.d.ts +7 -7
  47. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  48. package/dest/e2e_p2p/shared.js +18 -21
  49. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
  50. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  51. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
  52. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
  53. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
  54. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
  55. package/dest/e2e_token_contract/token_contract_test.d.ts +19 -10
  56. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  57. package/dest/e2e_token_contract/token_contract_test.js +99 -91
  58. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  59. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  60. package/dest/fixtures/authwit_proxy.js +30 -0
  61. package/dest/fixtures/e2e_prover_test.d.ts +13 -21
  62. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  63. package/dest/fixtures/e2e_prover_test.js +114 -133
  64. package/dest/fixtures/fixtures.d.ts +6 -3
  65. package/dest/fixtures/fixtures.d.ts.map +1 -1
  66. package/dest/fixtures/fixtures.js +8 -3
  67. package/dest/fixtures/get_acvm_config.js +1 -1
  68. package/dest/fixtures/ha_setup.d.ts +71 -0
  69. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  70. package/dest/fixtures/ha_setup.js +116 -0
  71. package/dest/fixtures/index.d.ts +2 -1
  72. package/dest/fixtures/index.d.ts.map +1 -1
  73. package/dest/fixtures/index.js +1 -0
  74. package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
  75. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  76. package/dest/fixtures/l1_to_l2_messaging.js +2 -2
  77. package/dest/fixtures/setup.d.ts +235 -0
  78. package/dest/fixtures/setup.d.ts.map +1 -0
  79. package/dest/fixtures/setup.js +605 -0
  80. package/dest/fixtures/setup_p2p_test.d.ts +16 -9
  81. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  82. package/dest/fixtures/setup_p2p_test.js +43 -32
  83. package/dest/fixtures/token_utils.d.ts +2 -2
  84. package/dest/fixtures/token_utils.d.ts.map +1 -1
  85. package/dest/fixtures/token_utils.js +10 -6
  86. package/dest/fixtures/utils.d.ts +5 -637
  87. package/dest/fixtures/utils.d.ts.map +1 -1
  88. package/dest/fixtures/utils.js +4 -647
  89. package/dest/fixtures/web3signer.js +1 -1
  90. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  91. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  92. package/dest/fixtures/with_telemetry_utils.js +2 -2
  93. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  94. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  95. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  96. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  97. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  98. package/dest/quality_of_service/prometheus_client.js +67 -0
  99. package/dest/shared/cross_chain_test_harness.d.ts +18 -6
  100. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  101. package/dest/shared/cross_chain_test_harness.js +14 -14
  102. package/dest/shared/gas_portal_test_harness.d.ts +12 -2
  103. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  104. package/dest/shared/gas_portal_test_harness.js +1 -1
  105. package/dest/shared/index.d.ts +3 -2
  106. package/dest/shared/index.d.ts.map +1 -1
  107. package/dest/shared/index.js +1 -0
  108. package/dest/shared/mock_state_view.d.ts +86 -0
  109. package/dest/shared/mock_state_view.d.ts.map +1 -0
  110. package/dest/shared/mock_state_view.js +186 -0
  111. package/dest/shared/submit-transactions.d.ts +4 -4
  112. package/dest/shared/submit-transactions.d.ts.map +1 -1
  113. package/dest/shared/submit-transactions.js +9 -11
  114. package/dest/shared/uniswap_l1_l2.d.ts +3 -27
  115. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  116. package/dest/shared/uniswap_l1_l2.js +57 -35
  117. package/dest/simulators/lending_simulator.d.ts +6 -2
  118. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  119. package/dest/simulators/lending_simulator.js +2 -2
  120. package/dest/simulators/token_simulator.d.ts +1 -1
  121. package/dest/simulators/token_simulator.d.ts.map +1 -1
  122. package/dest/simulators/token_simulator.js +2 -23
  123. package/dest/spartan/setup_test_wallets.d.ts +12 -4
  124. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  125. package/dest/spartan/setup_test_wallets.js +94 -36
  126. package/dest/spartan/tx_metrics.d.ts +88 -0
  127. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  128. package/dest/spartan/tx_metrics.js +422 -0
  129. package/dest/spartan/utils/bot.d.ts +28 -0
  130. package/dest/spartan/utils/bot.d.ts.map +1 -0
  131. package/dest/spartan/utils/bot.js +142 -0
  132. package/dest/spartan/utils/chaos.d.ts +79 -0
  133. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  134. package/dest/spartan/utils/chaos.js +142 -0
  135. package/dest/spartan/utils/clients.d.ts +39 -0
  136. package/dest/spartan/utils/clients.d.ts.map +1 -0
  137. package/dest/spartan/utils/clients.js +90 -0
  138. package/dest/spartan/utils/config.d.ts +39 -0
  139. package/dest/spartan/utils/config.d.ts.map +1 -0
  140. package/dest/spartan/utils/config.js +21 -0
  141. package/dest/spartan/utils/health.d.ts +63 -0
  142. package/dest/spartan/utils/health.d.ts.map +1 -0
  143. package/dest/spartan/utils/health.js +202 -0
  144. package/dest/spartan/utils/helm.d.ts +15 -0
  145. package/dest/spartan/utils/helm.d.ts.map +1 -0
  146. package/dest/spartan/utils/helm.js +47 -0
  147. package/dest/spartan/utils/index.d.ts +9 -0
  148. package/dest/spartan/utils/index.d.ts.map +1 -0
  149. package/dest/spartan/utils/index.js +18 -0
  150. package/dest/spartan/utils/k8s.d.ts +128 -0
  151. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  152. package/dest/spartan/utils/k8s.js +381 -0
  153. package/dest/spartan/utils/nodes.d.ts +40 -0
  154. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  155. package/dest/spartan/utils/nodes.js +460 -0
  156. package/dest/spartan/utils/scripts.d.ts +30 -0
  157. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  158. package/dest/spartan/utils/scripts.js +81 -0
  159. package/dest/spartan/utils.d.ts +2 -218
  160. package/dest/spartan/utils.d.ts.map +1 -1
  161. package/dest/spartan/utils.js +1 -749
  162. package/dest/test-wallet/test_wallet.d.ts +83 -0
  163. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  164. package/dest/test-wallet/test_wallet.js +214 -0
  165. package/dest/test-wallet/utils.d.ts +41 -0
  166. package/dest/test-wallet/utils.d.ts.map +1 -0
  167. package/dest/test-wallet/utils.js +71 -0
  168. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  169. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  170. package/dest/test-wallet/wallet_worker_script.js +40 -0
  171. package/dest/test-wallet/worker_wallet.d.ts +52 -0
  172. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  173. package/dest/test-wallet/worker_wallet.js +103 -0
  174. package/dest/test-wallet/worker_wallet_schema.d.ts +274 -0
  175. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  176. package/dest/test-wallet/worker_wallet_schema.js +10 -0
  177. package/package.json +46 -41
  178. package/src/bench/client_flows/benchmark.ts +24 -2
  179. package/src/bench/client_flows/client_flows_benchmark.ts +148 -215
  180. package/src/bench/client_flows/config.ts +9 -1
  181. package/src/bench/client_flows/data_extractor.ts +1 -1
  182. package/src/bench/utils.ts +31 -21
  183. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +114 -143
  184. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -126
  185. package/src/e2e_deploy_contract/deploy_test.ts +22 -15
  186. package/src/e2e_epochs/epochs_test.ts +162 -113
  187. package/src/e2e_fees/bridging_race.notest.ts +5 -11
  188. package/src/e2e_fees/fees_test.ts +171 -228
  189. package/src/e2e_l1_publisher/write_json.ts +16 -16
  190. package/src/e2e_multi_validator/utils.ts +1 -1
  191. package/src/e2e_nested_contract/nested_contract_test.ts +33 -56
  192. package/src/e2e_p2p/inactivity_slash_test.ts +7 -10
  193. package/src/e2e_p2p/p2p_network.ts +204 -185
  194. package/src/e2e_p2p/reqresp/utils.ts +235 -0
  195. package/src/e2e_p2p/shared.ts +33 -28
  196. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  197. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  198. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  199. package/src/e2e_token_contract/token_contract_test.ts +113 -119
  200. package/src/fixtures/authwit_proxy.ts +50 -0
  201. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  202. package/src/fixtures/e2e_prover_test.ts +130 -177
  203. package/src/fixtures/fixtures.ts +12 -5
  204. package/src/fixtures/get_acvm_config.ts +1 -1
  205. package/src/fixtures/ha_setup.ts +186 -0
  206. package/src/fixtures/index.ts +1 -0
  207. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  208. package/src/fixtures/setup.ts +896 -0
  209. package/src/fixtures/setup_p2p_test.ts +43 -47
  210. package/src/fixtures/token_utils.ts +7 -5
  211. package/src/fixtures/utils.ts +27 -966
  212. package/src/fixtures/web3signer.ts +1 -1
  213. package/src/fixtures/with_telemetry_utils.ts +2 -2
  214. package/src/guides/up_quick_start.sh +3 -3
  215. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  216. package/src/quality_of_service/prometheus_client.ts +113 -0
  217. package/src/shared/cross_chain_test_harness.ts +19 -36
  218. package/src/shared/gas_portal_test_harness.ts +2 -2
  219. package/src/shared/index.ts +2 -1
  220. package/src/shared/mock_state_view.ts +188 -0
  221. package/src/shared/submit-transactions.ts +14 -16
  222. package/src/shared/uniswap_l1_l2.ts +66 -89
  223. package/src/simulators/lending_simulator.ts +3 -3
  224. package/src/simulators/token_simulator.ts +1 -29
  225. package/src/spartan/DEVELOP.md +7 -0
  226. package/src/spartan/setup_test_wallets.ts +136 -27
  227. package/src/spartan/tx_metrics.ts +376 -0
  228. package/src/spartan/utils/bot.ts +188 -0
  229. package/src/spartan/utils/chaos.ts +253 -0
  230. package/src/spartan/utils/clients.ts +100 -0
  231. package/src/spartan/utils/config.ts +27 -0
  232. package/src/spartan/utils/health.ts +255 -0
  233. package/src/spartan/utils/helm.ts +84 -0
  234. package/src/spartan/utils/index.ts +65 -0
  235. package/src/spartan/utils/k8s.ts +535 -0
  236. package/src/spartan/utils/nodes.ts +535 -0
  237. package/src/spartan/utils/scripts.ts +99 -0
  238. package/src/spartan/utils.ts +1 -942
  239. package/src/test-wallet/test_wallet.ts +306 -0
  240. package/src/test-wallet/utils.ts +112 -0
  241. package/src/test-wallet/wallet_worker_script.ts +43 -0
  242. package/src/test-wallet/worker_wallet.ts +165 -0
  243. package/src/test-wallet/worker_wallet_schema.ts +13 -0
  244. package/dest/fixtures/setup_l1_contracts.d.ts +0 -477
  245. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  246. package/dest/fixtures/setup_l1_contracts.js +0 -17
  247. package/dest/fixtures/snapshot_manager.d.ts +0 -95
  248. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  249. package/dest/fixtures/snapshot_manager.js +0 -505
  250. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  251. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  252. package/src/fixtures/setup_l1_contracts.ts +0 -26
  253. package/src/fixtures/snapshot_manager.ts +0 -665
@@ -98,32 +98,11 @@ export class TokenSimulator {
98
98
  }
99
99
  }
100
100
  async checkPrivate() {
101
- // Private calls
102
- const defaultLookups = [];
103
- const nonDefaultLookups = [];
104
101
  for (const address of this.accounts){
105
- if (this.lookupProvider.has(address.toString())) {
106
- nonDefaultLookups.push(address);
107
- } else {
108
- defaultLookups.push(address);
109
- }
110
- }
111
- const defaultCalls = defaultLookups.map((address)=>this.token.methods.balance_of_private(address));
112
- const results = (await Promise.all(chunk(defaultCalls, 4).map((batch)=>new BatchCall(this.defaultWallet, batch).simulate({
113
- from: this.defaultAddress
114
- })))).flat();
115
- for(let i = 0; i < defaultLookups.length; i++){
116
- expect(results[i]).toEqual(this.balanceOfPrivate(defaultLookups[i]));
117
- }
118
- // We are just running individual calls for the non-default lookups
119
- // @todo We should also batch these
120
- for (const address of nonDefaultLookups){
121
102
  const wallet = this.lookupProvider.get(address.toString());
122
103
  const asset = wallet ? this.token.withWallet(wallet) : this.token;
123
- const actualPrivateBalance = await asset.methods.balance_of_private({
124
- address
125
- }).simulate({
126
- from: this.defaultAddress
104
+ const actualPrivateBalance = await asset.methods.balance_of_private(address).simulate({
105
+ from: address
127
106
  });
128
107
  expect(actualPrivateBalance).toEqual(this.balanceOfPrivate(address));
129
108
  }
@@ -3,7 +3,8 @@ import { type FeePaymentMethod } from '@aztec/aztec.js/fee';
3
3
  import { type AztecNode } from '@aztec/aztec.js/node';
4
4
  import type { Logger } from '@aztec/foundation/log';
5
5
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
6
- import { TestWallet } from '@aztec/test-wallet/server';
6
+ import { TestWallet } from '../test-wallet/test_wallet.js';
7
+ import { WorkerWallet } from '../test-wallet/worker_wallet.js';
7
8
  export interface TestAccounts {
8
9
  aztecNode: AztecNode;
9
10
  wallet: TestWallet;
@@ -27,9 +28,16 @@ export declare function performTransfers({ wallet, testAccounts, rounds, transfe
27
28
  logger: Logger;
28
29
  feePaymentMethod?: FeePaymentMethod;
29
30
  }): Promise<void>;
30
- export declare function createWalletAndAztecNodeClient(nodeUrl: string, proverEnabled: boolean, logger: Logger): Promise<{
31
+ export type WalletWrapper = {
31
32
  wallet: TestWallet;
32
33
  aztecNode: AztecNode;
33
34
  cleanup: () => Promise<void>;
34
- }>;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBfdGVzdF93YWxsZXRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3BhcnRhbi9zZXR1cF90ZXN0X3dhbGxldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3pELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUE2QixNQUFNLHFCQUFxQixDQUFDO0FBRXZGLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQUc3RSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFL0QsT0FBTyxFQUFFLFVBQVUsRUFBaUUsTUFBTSwyQkFBMkIsQ0FBQztBQU10SCxNQUFNLFdBQVcsWUFBWTtJQUMzQixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQ3JCLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDbkIsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ3pCLGFBQWEsRUFBRSxhQUFhLENBQUM7SUFDN0IsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO0lBQ2hDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDO0lBQy9CLFlBQVksRUFBRSxZQUFZLENBQUM7Q0FDNUI7QUFFRCxNQUFNLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUMxQyxZQUFZLEVBQ1osY0FBYyxHQUFHLGVBQWUsR0FBRyxXQUFXLEdBQUcsbUJBQW1CLENBQ3JFLENBQUM7QUFNRix3QkFBc0IsMkJBQTJCLENBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQ2YsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sR0FDYixPQUFPLENBQUMsWUFBWSxDQUFDLENBeUJ2QjtBQUVELHdCQUFzQixxQ0FBcUMsQ0FDekQsTUFBTSxFQUFFLFVBQVUsRUFDbEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxxQkFBcUIsU0FBSSxHQUN4QixPQUFPLENBQUMsWUFBWSxDQUFDLENBdUN2QjtBQUVELHdCQUFzQiwyQkFBMkIsQ0FDL0MsTUFBTSxFQUFFLFVBQVUsRUFDbEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxxQkFBcUIsU0FBSSxHQUN4QixPQUFPLENBQUMseUJBQXlCLENBQUMsQ0F3QnBDO0FBRUQsd0JBQXNCLDRCQUE0QixDQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUNmLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFDbkIsb0JBQW9CLEVBQUUsTUFBTSxFQUM1QixVQUFVLEVBQUUsTUFBTSxFQUNsQixNQUFNLEVBQUUsTUFBTSxFQUNkLHFCQUFxQixTQUFJLEdBQ3hCLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0ErQ3ZCO0FBNkVELHdCQUFzQixnQkFBZ0IsQ0FBQyxFQUNyQyxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFDTixjQUFjLEVBQ2QsTUFBTSxFQUNOLGdCQUFnQixFQUNqQixFQUFFO0lBQ0QsTUFBTSxFQUFFLFVBQVUsQ0FBQztJQUNuQixZQUFZLEVBQUUsWUFBWSxDQUFDO0lBQzNCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixjQUFjLEVBQUUsTUFBTSxDQUFDO0lBQ3ZCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixnQkFBZ0IsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO0NBQ3JDLGlCQXFCQTtBQUVELHdCQUFzQiw4QkFBOEIsQ0FDbEQsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsT0FBTyxFQUN0QixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQztJQUFFLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQUMsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0NBQUUsQ0FBQyxDQXFCckYifQ==
35
+ };
36
+ export declare function createWalletAndAztecNodeClient(nodeUrl: string, proverEnabled: boolean, logger: Logger): Promise<WalletWrapper>;
37
+ export type WorkerWalletWrapper = {
38
+ wallet: WorkerWallet;
39
+ aztecNode: AztecNode;
40
+ cleanup: () => Promise<void>;
41
+ };
42
+ export declare function createWorkerWalletClient(nodeUrl: string, proverEnabled: boolean, logger: Logger): Promise<WorkerWalletWrapper>;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBfdGVzdF93YWxsZXRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3BhcnRhbi9zZXR1cF90ZXN0X3dhbGxldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSXpELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUE2QixNQUFNLHFCQUFxQixDQUFDO0FBRXZGLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBb0MsTUFBTSxzQkFBc0IsQ0FBQztBQUl4RixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFPL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUvRCxNQUFNLFdBQVcsWUFBWTtJQUMzQixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQ3JCLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDbkIsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ3pCLGFBQWEsRUFBRSxhQUFhLENBQUM7SUFDN0IsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO0lBQ2hDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDO0lBQy9CLFlBQVksRUFBRSxZQUFZLENBQUM7Q0FDNUI7QUFFRCxNQUFNLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUMxQyxZQUFZLEVBQ1osY0FBYyxHQUFHLGVBQWUsR0FBRyxXQUFXLEdBQUcsbUJBQW1CLENBQ3JFLENBQUM7QUFNRix3QkFBc0IsMkJBQTJCLENBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQ2YsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sR0FDYixPQUFPLENBQUMsWUFBWSxDQUFDLENBeUJ2QjtBQUVELHdCQUFzQixxQ0FBcUMsQ0FDekQsTUFBTSxFQUFFLFVBQVUsRUFDbEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxxQkFBcUIsU0FBSSxHQUN4QixPQUFPLENBQUMsWUFBWSxDQUFDLENBK0N2QjtBQXVERCx3QkFBc0IsMkJBQTJCLENBQy9DLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxNQUFNLEVBQ2QscUJBQXFCLFNBQUksR0FDeEIsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBa0JwQztBQUVELHdCQUFzQiw0QkFBNEIsQ0FDaEQsT0FBTyxFQUFFLE1BQU0sRUFDZixTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQ25CLG9CQUFvQixFQUFFLE1BQU0sRUFDNUIsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxxQkFBcUIsU0FBSSxHQUN4QixPQUFPLENBQUMsWUFBWSxDQUFDLENBK0N2QjtBQWlGRCx3QkFBc0IsZ0JBQWdCLENBQUMsRUFDckMsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLE1BQU0sRUFDTixnQkFBZ0IsRUFDakIsRUFBRTtJQUNELE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDbkIsWUFBWSxFQUFFLFlBQVksQ0FBQztJQUMzQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsY0FBYyxFQUFFLE1BQU0sQ0FBQztJQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsZ0JBQWdCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztDQUNyQyxpQkFxQkE7QUFFRCxNQUFNLE1BQU0sYUFBYSxHQUFHO0lBQzFCLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDbkIsU0FBUyxFQUFFLFNBQVMsQ0FBQztJQUNyQixPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDOUIsQ0FBQztBQUVGLHdCQUFzQiw4QkFBOEIsQ0FDbEQsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsT0FBTyxFQUN0QixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FxQnhCO0FBRUQsTUFBTSxNQUFNLG1CQUFtQixHQUFHO0lBQ2hDLE1BQU0sRUFBRSxZQUFZLENBQUM7SUFDckIsU0FBUyxFQUFFLFNBQVMsQ0FBQztJQUNyQixPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDOUIsQ0FBQztBQUVGLHdCQUFzQix3QkFBd0IsQ0FDNUMsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsT0FBTyxFQUN0QixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQTJCOUIifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"setup_test_wallets.d.ts","sourceRoot":"","sources":["../../src/spartan/setup_test_wallets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,KAAK,gBAAgB,EAA6B,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,sBAAsB,CAAC;AAG7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAiE,MAAM,2BAA2B,CAAC;AAMtH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,YAAY,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,YAAY,EACZ,cAAc,GAAG,eAAe,GAAG,WAAW,GAAG,mBAAmB,CACrE,CAAC;AAMF,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAyBvB;AAED,wBAAsB,qCAAqC,CACzD,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,YAAY,CAAC,CAuCvB;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,yBAAyB,CAAC,CAwBpC;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,oBAAoB,EAAE,MAAM,EAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,YAAY,CAAC,CA+CvB;AA6ED,wBAAsB,gBAAgB,CAAC,EACrC,MAAM,EACN,YAAY,EACZ,MAAM,EACN,cAAc,EACd,MAAM,EACN,gBAAgB,EACjB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,iBAqBA;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAqBrF"}
1
+ {"version":3,"file":"setup_test_wallets.d.ts","sourceRoot":"","sources":["../../src/spartan/setup_test_wallets.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,22 @@
1
1
  import { generateSchnorrAccounts } from '@aztec/accounts/testing';
2
2
  import { AztecAddress } from '@aztec/aztec.js/addresses';
3
+ import { NO_WAIT } from '@aztec/aztec.js/contracts';
3
4
  import { L1FeeJuicePortalManager } from '@aztec/aztec.js/ethereum';
4
5
  import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
5
6
  import { SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
6
7
  import { Fr } from '@aztec/aztec.js/fields';
7
- import { createAztecNodeClient } from '@aztec/aztec.js/node';
8
- import { createEthereumChain, createExtendedL1Client } from '@aztec/ethereum';
8
+ import { createAztecNodeClient, waitForTx } from '@aztec/aztec.js/node';
9
+ import { createEthereumChain } from '@aztec/ethereum/chain';
10
+ import { createExtendedL1Client } from '@aztec/ethereum/client';
9
11
  import { retryUntil } from '@aztec/foundation/retry';
10
12
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
11
- import { TestWallet, proveInteraction, registerInitialLocalNetworkAccountsInWallet } from '@aztec/test-wallet/server';
13
+ import { registerInitialLocalNetworkAccountsInWallet } from '@aztec/wallets/testing';
12
14
  import { getACVMConfig } from '../fixtures/get_acvm_config.js';
13
15
  import { getBBConfig } from '../fixtures/get_bb_config.js';
14
16
  import { getSponsoredFPCAddress, registerSponsoredFPC } from '../fixtures/utils.js';
17
+ import { TestWallet } from '../test-wallet/test_wallet.js';
18
+ import { proveInteraction } from '../test-wallet/utils.js';
19
+ import { WorkerWallet } from '../test-wallet/worker_wallet.js';
15
20
  const TOKEN_NAME = 'USDC';
16
21
  const TOKEN_SYMBOL = 'USD';
17
22
  const TOKEN_DECIMALS = 18n;
@@ -45,9 +50,10 @@ export async function deploySponsoredTestAccountsWithTokens(wallet, aztecNode, m
45
50
  from: AztecAddress.ZERO,
46
51
  fee: {
47
52
  paymentMethod
53
+ },
54
+ wait: {
55
+ timeout: 2400
48
56
  }
49
- }).wait({
50
- timeout: 2400
51
57
  });
52
58
  await Promise.all(fundedAccounts.map(async (a)=>{
53
59
  const deployMethod = await a.getDeployMethod();
@@ -55,9 +61,10 @@ export async function deploySponsoredTestAccountsWithTokens(wallet, aztecNode, m
55
61
  from: AztecAddress.ZERO,
56
62
  fee: {
57
63
  paymentMethod
64
+ },
65
+ wait: {
66
+ timeout: 2400
58
67
  }
59
- }).wait({
60
- timeout: 2400
61
68
  }); // increase timeout on purpose in order to account for two empty epochs
62
69
  logger.info(`Account deployed at ${a.address}`);
63
70
  }));
@@ -75,33 +82,52 @@ export async function deploySponsoredTestAccountsWithTokens(wallet, aztecNode, m
75
82
  recipientAddress: recipientAccount.address
76
83
  };
77
84
  }
85
+ async function deployAccountWithDiagnostics(account, paymentMethod, aztecNode, logger, accountLabel) {
86
+ const deployMethod = await account.getDeployMethod();
87
+ let txHash;
88
+ try {
89
+ txHash = await deployMethod.send({
90
+ from: AztecAddress.ZERO,
91
+ fee: {
92
+ paymentMethod
93
+ },
94
+ wait: NO_WAIT
95
+ });
96
+ await waitForTx(aztecNode, txHash, {
97
+ timeout: 2400
98
+ });
99
+ logger.info(`${accountLabel} deployed at ${account.address}`);
100
+ } catch (error) {
101
+ const blockNumber = await aztecNode.getBlockNumber();
102
+ let receipt;
103
+ try {
104
+ receipt = await aztecNode.getTxReceipt(txHash);
105
+ } catch {
106
+ receipt = 'unavailable';
107
+ }
108
+ logger.error(`${accountLabel} deployment failed`, {
109
+ txHash: txHash.toString(),
110
+ receipt: JSON.stringify(receipt),
111
+ currentBlockNumber: blockNumber,
112
+ error: String(error)
113
+ });
114
+ throw error;
115
+ }
116
+ }
117
+ async function deployAccountsInBatches(accounts, paymentMethod, aztecNode, logger, labelPrefix, batchSize = 2) {
118
+ for(let i = 0; i < accounts.length; i += batchSize){
119
+ const batch = accounts.slice(i, i + batchSize);
120
+ await Promise.all(batch.map((account, idx)=>deployAccountWithDiagnostics(account, paymentMethod, aztecNode, logger, `${labelPrefix}${i + idx + 1}`)));
121
+ }
122
+ }
78
123
  export async function deploySponsoredTestAccounts(wallet, aztecNode, logger, numberOfFundedWallets = 1) {
79
124
  const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
80
125
  const recipientAccount = await wallet.createSchnorrAccount(recipient.secret, recipient.salt);
81
126
  const fundedAccounts = await Promise.all(funded.map((a)=>wallet.createSchnorrAccount(a.secret, a.salt)));
82
127
  await registerSponsoredFPC(wallet);
83
128
  const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
84
- const recipientDeployMethod = await recipientAccount.getDeployMethod();
85
- await recipientDeployMethod.send({
86
- from: AztecAddress.ZERO,
87
- fee: {
88
- paymentMethod
89
- }
90
- }).wait({
91
- timeout: 2400
92
- });
93
- await Promise.all(fundedAccounts.map(async (a)=>{
94
- const deployMethod = await a.getDeployMethod();
95
- await deployMethod.send({
96
- from: AztecAddress.ZERO,
97
- fee: {
98
- paymentMethod
99
- }
100
- }).wait({
101
- timeout: 2400
102
- }); // increase timeout on purpose in order to account for two empty epochs
103
- logger.info(`Account deployed at ${a.address}`);
104
- }));
129
+ await deployAccountWithDiagnostics(recipientAccount, paymentMethod, aztecNode, logger, 'Recipient account');
130
+ await deployAccountsInBatches(fundedAccounts, paymentMethod, aztecNode, logger, 'Funded account ', 2);
105
131
  return {
106
132
  aztecNode,
107
133
  wallet,
@@ -128,7 +154,7 @@ export async function deployTestAccountsWithTokens(nodeUrl, l1RpcUrls, mnemonicO
128
154
  fee: {
129
155
  paymentMethod
130
156
  }
131
- }).wait();
157
+ });
132
158
  logger.info(`Account deployed at ${a.address}`);
133
159
  }));
134
160
  const tokenAdmin = fundedAccounts[0];
@@ -174,13 +200,15 @@ async function advanceL2Block(aztecNode, nodeAdmin) {
174
200
  }
175
201
  async function deployTokenAndMint(wallet, accounts, admin, mintAmount, paymentMethod, logger) {
176
202
  logger.verbose(`Deploying TokenContract...`);
177
- const tokenContract = await TokenContract.deploy(wallet, admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send({
203
+ const { contract: tokenContract } = await TokenContract.deploy(wallet, admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send({
178
204
  from: admin,
179
205
  fee: {
180
206
  paymentMethod
207
+ },
208
+ wait: {
209
+ timeout: 600,
210
+ returnReceipt: true
181
211
  }
182
- }).deployed({
183
- timeout: 600
184
212
  });
185
213
  const tokenAddress = tokenContract.address;
186
214
  logger.verbose(`Minting ${mintAmount} public assets to the ${accounts.length} accounts...`);
@@ -188,9 +216,10 @@ async function deployTokenAndMint(wallet, accounts, admin, mintAmount, paymentMe
188
216
  from: admin,
189
217
  fee: {
190
218
  paymentMethod
219
+ },
220
+ wait: {
221
+ timeout: 600
191
222
  }
192
- }).wait({
193
- timeout: 600
194
223
  })));
195
224
  logger.verbose(`Minting complete.`);
196
225
  return tokenAddress;
@@ -210,8 +239,10 @@ export async function performTransfers({ wallet, testAccounts, rounds, transferA
210
239
  });
211
240
  });
212
241
  const provenTxs = await Promise.all(txs);
213
- await Promise.all(provenTxs.map((t)=>t.send().wait({
214
- timeout: 600
242
+ await Promise.all(provenTxs.map((t)=>t.send({
243
+ wait: {
244
+ timeout: 600
245
+ }
215
246
  })));
216
247
  logger.info(`Completed round ${i + 1} / ${rounds}`);
217
248
  }
@@ -240,3 +271,30 @@ export async function createWalletAndAztecNodeClient(nodeUrl, proverEnabled, log
240
271
  }
241
272
  };
242
273
  }
274
+ export async function createWorkerWalletClient(nodeUrl, proverEnabled, logger) {
275
+ const aztecNode = createAztecNodeClient(nodeUrl);
276
+ const [bbConfig, acvmConfig] = await Promise.all([
277
+ getBBConfig(logger),
278
+ getACVMConfig(logger)
279
+ ]);
280
+ // Strip cleanup functions — they can't be structured-cloned for worker transfer
281
+ const { cleanup: bbCleanup, ...bbPaths } = bbConfig ?? {};
282
+ const { cleanup: acvmCleanup, ...acvmPaths } = acvmConfig ?? {};
283
+ const pxeConfig = {
284
+ dataDirectory: undefined,
285
+ dataStoreMapSizeKb: 1024 * 1024,
286
+ ...bbPaths,
287
+ ...acvmPaths,
288
+ proverEnabled
289
+ };
290
+ const wallet = await WorkerWallet.create(nodeUrl, pxeConfig);
291
+ return {
292
+ wallet,
293
+ aztecNode,
294
+ async cleanup () {
295
+ await wallet.stop();
296
+ await bbCleanup?.();
297
+ await acvmCleanup?.();
298
+ }
299
+ };
300
+ }
@@ -0,0 +1,88 @@
1
+ import type { AztecNode } from '@aztec/aztec.js/node';
2
+ import type { Logger } from '@aztec/foundation/log';
3
+ import type { TopicType } from '@aztec/stdlib/p2p';
4
+ import { Tx, type TxReceipt } from '@aztec/stdlib/tx';
5
+ /** Metrics class for proving-related benchmarks. */
6
+ export declare class ProvingMetrics {
7
+ private prefix;
8
+ private successfulTxs;
9
+ private proofDuration;
10
+ private activeAgents;
11
+ private avgQueueTime;
12
+ private jobRetries;
13
+ private jobDuration;
14
+ private timedOutJobs;
15
+ private resolvedJobs;
16
+ private rejectedJobs;
17
+ private epochProvingDuration;
18
+ private provenTransactions;
19
+ private provenBlocks;
20
+ constructor(prefix: string);
21
+ recordSuccessfulTxs(count: number): void;
22
+ recordProofDuration(seconds: number): void;
23
+ recordActiveAgents(count: number): void;
24
+ recordAvgQueueTime(ms: number): void;
25
+ recordJobRetries(count: number): void;
26
+ recordJobDuration(ms: number): void;
27
+ recordTimedOutJobs(count: number): void;
28
+ recordResolvedJobs(count: number): void;
29
+ recordRejectedJobs(count: number): void;
30
+ recordEpochProvingDuration(seconds: number): void;
31
+ recordProvenTransactions(count: number): void;
32
+ recordProvenBlocks(count: number): void;
33
+ toGithubActionBenchmarkJSON(): Array<{
34
+ name: string;
35
+ unit: string;
36
+ value: number;
37
+ }>;
38
+ }
39
+ export type TxInclusionData = {
40
+ txHash: string;
41
+ sentAt: number;
42
+ minedAt: number;
43
+ attestedAt: number;
44
+ blocknumber: number;
45
+ priorityFee: number;
46
+ totalFee: number;
47
+ positionInBlock: number;
48
+ group: string;
49
+ };
50
+ export declare class TxInclusionMetrics {
51
+ private aztecNode;
52
+ private logger?;
53
+ private data;
54
+ private groups;
55
+ private blocks;
56
+ private p2pGossipLatencyByTopic;
57
+ private attestationLatency;
58
+ private attestationCounts;
59
+ private reqRespStats;
60
+ private peerStats;
61
+ private mempoolMinedDelay;
62
+ constructor(aztecNode: AztecNode, logger?: Logger | undefined);
63
+ recordSentTx(tx: Tx, group: string): void;
64
+ recordMinedTx(txReceipt: TxReceipt): Promise<void>;
65
+ inclusionTimeInSeconds(group: string): {
66
+ count: number;
67
+ group: string;
68
+ min: number;
69
+ mean: number;
70
+ max: number;
71
+ median: number;
72
+ p99: number;
73
+ };
74
+ recordP2PGossipLatency(topicName: TopicType, p50: number, p95: number): void;
75
+ recordAttestationLatency(p50: number, p95: number): void;
76
+ recordAttestationCounts(success: number, failedBad: number, failedNode: number): void;
77
+ recordReqRespStats(fraction: number, delayP50: number, delayP95: number): void;
78
+ recordPeerStats(avgCount: number, connectionDurationP50: number, connectionDurationP95: number): void;
79
+ recordMempoolMinedDelay(txP50: number, txP95: number, attestationP50: number, attestationP95: number): void;
80
+ toGithubActionBenchmarkJSON(): Array<{
81
+ name: string;
82
+ unit: string;
83
+ value: number;
84
+ range?: number;
85
+ extra?: string;
86
+ }>;
87
+ }
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfbWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NwYXJ0YW4vdHhfbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJdEQsb0RBQW9EO0FBQ3BELHFCQUFhLGNBQWM7SUFjYixPQUFPLENBQUMsTUFBTTtJQWIxQixPQUFPLENBQUMsYUFBYSxDQUFxQjtJQUMxQyxPQUFPLENBQUMsYUFBYSxDQUFxQjtJQUMxQyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsVUFBVSxDQUFxQjtJQUN2QyxPQUFPLENBQUMsV0FBVyxDQUFxQjtJQUN4QyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsb0JBQW9CLENBQXFCO0lBQ2pELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBcUI7SUFDL0MsT0FBTyxDQUFDLFlBQVksQ0FBcUI7SUFFekMsWUFBb0IsTUFBTSxFQUFFLE1BQU0sRUFBSTtJQUV0QyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFdkM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFekM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFdEM7SUFFRCxrQkFBa0IsQ0FBQyxFQUFF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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx_metrics.d.ts","sourceRoot":"","sources":["../../src/spartan/tx_metrics.ts"],"names":[],"mappings":"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"}