@aztec/end-to-end 0.0.1-commit.b655e406 → 0.0.1-commit.b6e433891

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 (274) 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 +22 -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 +142 -124
  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.d.ts +1 -1
  11. package/dest/bench/client_flows/data_extractor.js +7 -27
  12. package/dest/bench/utils.d.ts +8 -7
  13. package/dest/bench/utils.d.ts.map +1 -1
  14. package/dest/bench/utils.js +31 -19
  15. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +9 -8
  16. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  17. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +107 -113
  18. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +20 -14
  19. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  20. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +92 -70
  21. package/dest/e2e_deploy_contract/deploy_test.d.ts +6 -5
  22. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  23. package/dest/e2e_deploy_contract/deploy_test.js +18 -13
  24. package/dest/e2e_epochs/epochs_test.d.ts +27 -15
  25. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  26. package/dest/e2e_epochs/epochs_test.js +107 -54
  27. package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
  28. package/dest/e2e_fees/bridging_race.notest.js +5 -7
  29. package/dest/e2e_fees/fees_test.d.ts +21 -17
  30. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  31. package/dest/e2e_fees/fees_test.js +138 -143
  32. package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
  33. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  34. package/dest/e2e_l1_publisher/write_json.js +18 -19
  35. package/dest/e2e_multi_validator/utils.d.ts +1 -1
  36. package/dest/e2e_multi_validator/utils.js +1 -1
  37. package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
  38. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  39. package/dest/e2e_nested_contract/nested_contract_test.js +30 -39
  40. package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
  41. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  42. package/dest/e2e_p2p/inactivity_slash_test.js +7 -6
  43. package/dest/e2e_p2p/p2p_network.d.ts +229 -21
  44. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  45. package/dest/e2e_p2p/p2p_network.js +142 -114
  46. package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
  47. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
  48. package/dest/e2e_p2p/reqresp/utils.js +190 -0
  49. package/dest/e2e_p2p/shared.d.ts +31 -11
  50. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  51. package/dest/e2e_p2p/shared.js +51 -22
  52. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
  53. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  54. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
  55. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
  56. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
  57. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
  58. package/dest/e2e_token_contract/token_contract_test.d.ts +19 -10
  59. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  60. package/dest/e2e_token_contract/token_contract_test.js +100 -92
  61. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  62. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  63. package/dest/fixtures/authwit_proxy.js +30 -0
  64. package/dest/fixtures/e2e_prover_test.d.ts +15 -21
  65. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  66. package/dest/fixtures/e2e_prover_test.js +123 -138
  67. package/dest/fixtures/elu_monitor.d.ts +21 -0
  68. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  69. package/dest/fixtures/elu_monitor.js +102 -0
  70. package/dest/fixtures/fixtures.d.ts +6 -3
  71. package/dest/fixtures/fixtures.d.ts.map +1 -1
  72. package/dest/fixtures/fixtures.js +8 -3
  73. package/dest/fixtures/get_acvm_config.d.ts +1 -1
  74. package/dest/fixtures/get_acvm_config.js +1 -1
  75. package/dest/fixtures/get_bb_config.d.ts +1 -1
  76. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  77. package/dest/fixtures/ha_setup.d.ts +71 -0
  78. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  79. package/dest/fixtures/ha_setup.js +116 -0
  80. package/dest/fixtures/index.d.ts +2 -1
  81. package/dest/fixtures/index.d.ts.map +1 -1
  82. package/dest/fixtures/index.js +1 -0
  83. package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
  84. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  85. package/dest/fixtures/l1_to_l2_messaging.js +2 -2
  86. package/dest/fixtures/logging.d.ts +1 -1
  87. package/dest/fixtures/setup.d.ts +239 -0
  88. package/dest/fixtures/setup.d.ts.map +1 -0
  89. package/dest/fixtures/setup.js +606 -0
  90. package/dest/fixtures/setup_p2p_test.d.ts +17 -10
  91. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  92. package/dest/fixtures/setup_p2p_test.js +55 -36
  93. package/dest/fixtures/token_utils.d.ts +6 -3
  94. package/dest/fixtures/token_utils.d.ts.map +1 -1
  95. package/dest/fixtures/token_utils.js +17 -10
  96. package/dest/fixtures/utils.d.ts +5 -192
  97. package/dest/fixtures/utils.d.ts.map +1 -1
  98. package/dest/fixtures/utils.js +4 -648
  99. package/dest/fixtures/web3signer.d.ts +1 -1
  100. package/dest/fixtures/web3signer.js +1 -1
  101. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  102. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  103. package/dest/fixtures/with_telemetry_utils.js +2 -2
  104. package/dest/index.d.ts +1 -1
  105. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  106. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  107. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  108. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  109. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  110. package/dest/quality_of_service/prometheus_client.js +67 -0
  111. package/dest/shared/cross_chain_test_harness.d.ts +7 -6
  112. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  113. package/dest/shared/cross_chain_test_harness.js +27 -27
  114. package/dest/shared/gas_portal_test_harness.d.ts +2 -2
  115. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  116. package/dest/shared/gas_portal_test_harness.js +4 -4
  117. package/dest/shared/index.d.ts +3 -2
  118. package/dest/shared/index.d.ts.map +1 -1
  119. package/dest/shared/index.js +1 -0
  120. package/dest/shared/jest_setup.d.ts +1 -1
  121. package/dest/shared/jest_setup.js +41 -1
  122. package/dest/shared/mock_state_view.d.ts +86 -0
  123. package/dest/shared/mock_state_view.d.ts.map +1 -0
  124. package/dest/shared/mock_state_view.js +186 -0
  125. package/dest/shared/submit-transactions.d.ts +4 -4
  126. package/dest/shared/submit-transactions.d.ts.map +1 -1
  127. package/dest/shared/submit-transactions.js +9 -11
  128. package/dest/shared/uniswap_l1_l2.d.ts +3 -27
  129. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  130. package/dest/shared/uniswap_l1_l2.js +58 -39
  131. package/dest/simulators/index.d.ts +1 -1
  132. package/dest/simulators/lending_simulator.d.ts +2 -2
  133. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  134. package/dest/simulators/lending_simulator.js +8 -6
  135. package/dest/simulators/token_simulator.d.ts +1 -1
  136. package/dest/simulators/token_simulator.d.ts.map +1 -1
  137. package/dest/simulators/token_simulator.js +3 -24
  138. package/dest/spartan/setup_test_wallets.d.ts +18 -6
  139. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  140. package/dest/spartan/setup_test_wallets.js +129 -24
  141. package/dest/spartan/tx_metrics.d.ts +88 -0
  142. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  143. package/dest/spartan/tx_metrics.js +422 -0
  144. package/dest/spartan/utils/bot.d.ts +28 -0
  145. package/dest/spartan/utils/bot.d.ts.map +1 -0
  146. package/dest/spartan/utils/bot.js +142 -0
  147. package/dest/spartan/utils/chaos.d.ts +79 -0
  148. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  149. package/dest/spartan/utils/chaos.js +142 -0
  150. package/dest/spartan/utils/clients.d.ts +39 -0
  151. package/dest/spartan/utils/clients.d.ts.map +1 -0
  152. package/dest/spartan/utils/clients.js +90 -0
  153. package/dest/spartan/utils/config.d.ts +45 -0
  154. package/dest/spartan/utils/config.d.ts.map +1 -0
  155. package/dest/spartan/utils/config.js +23 -0
  156. package/dest/spartan/utils/health.d.ts +63 -0
  157. package/dest/spartan/utils/health.d.ts.map +1 -0
  158. package/dest/spartan/utils/health.js +202 -0
  159. package/dest/spartan/utils/helm.d.ts +15 -0
  160. package/dest/spartan/utils/helm.d.ts.map +1 -0
  161. package/dest/spartan/utils/helm.js +47 -0
  162. package/dest/spartan/utils/index.d.ts +11 -0
  163. package/dest/spartan/utils/index.d.ts.map +1 -0
  164. package/dest/spartan/utils/index.js +22 -0
  165. package/dest/spartan/utils/k8s.d.ts +128 -0
  166. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  167. package/dest/spartan/utils/k8s.js +381 -0
  168. package/dest/spartan/utils/nodes.d.ts +40 -0
  169. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  170. package/dest/spartan/utils/nodes.js +461 -0
  171. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  172. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  173. package/dest/spartan/utils/pod_logs.js +74 -0
  174. package/dest/spartan/utils/scripts.d.ts +30 -0
  175. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  176. package/dest/spartan/utils/scripts.js +81 -0
  177. package/dest/spartan/utils.d.ts +2 -218
  178. package/dest/spartan/utils.d.ts.map +1 -1
  179. package/dest/spartan/utils.js +1 -749
  180. package/dest/test-wallet/test_wallet.d.ts +76 -0
  181. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  182. package/dest/test-wallet/test_wallet.js +214 -0
  183. package/dest/test-wallet/utils.d.ts +41 -0
  184. package/dest/test-wallet/utils.d.ts.map +1 -0
  185. package/dest/test-wallet/utils.js +71 -0
  186. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  187. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  188. package/dest/test-wallet/wallet_worker_script.js +48 -0
  189. package/dest/test-wallet/worker_wallet.d.ts +52 -0
  190. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  191. package/dest/test-wallet/worker_wallet.js +151 -0
  192. package/dest/test-wallet/worker_wallet_schema.d.ts +274 -0
  193. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  194. package/dest/test-wallet/worker_wallet_schema.js +10 -0
  195. package/package.json +49 -44
  196. package/src/bench/client_flows/benchmark.ts +24 -2
  197. package/src/bench/client_flows/client_flows_benchmark.ts +163 -177
  198. package/src/bench/client_flows/config.ts +9 -1
  199. package/src/bench/client_flows/data_extractor.ts +6 -28
  200. package/src/bench/utils.ts +36 -21
  201. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +120 -145
  202. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -125
  203. package/src/e2e_deploy_contract/deploy_test.ts +23 -16
  204. package/src/e2e_epochs/epochs_test.ts +176 -114
  205. package/src/e2e_fees/bridging_race.notest.ts +6 -12
  206. package/src/e2e_fees/fees_test.ts +179 -226
  207. package/src/e2e_l1_publisher/write_json.ts +20 -19
  208. package/src/e2e_multi_validator/utils.ts +1 -1
  209. package/src/e2e_nested_contract/nested_contract_test.ts +35 -55
  210. package/src/e2e_p2p/inactivity_slash_test.ts +8 -7
  211. package/src/e2e_p2p/p2p_network.ts +205 -178
  212. package/src/e2e_p2p/reqresp/utils.ts +256 -0
  213. package/src/e2e_p2p/shared.ts +90 -29
  214. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  215. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  216. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  217. package/src/e2e_token_contract/token_contract_test.ts +121 -119
  218. package/src/fixtures/authwit_proxy.ts +50 -0
  219. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  220. package/src/fixtures/e2e_prover_test.ts +144 -186
  221. package/src/fixtures/elu_monitor.ts +126 -0
  222. package/src/fixtures/fixtures.ts +12 -5
  223. package/src/fixtures/get_acvm_config.ts +1 -1
  224. package/src/fixtures/ha_setup.ts +186 -0
  225. package/src/fixtures/index.ts +1 -0
  226. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  227. package/src/fixtures/setup.ts +903 -0
  228. package/src/fixtures/setup_p2p_test.ts +58 -48
  229. package/src/fixtures/token_utils.ts +12 -8
  230. package/src/fixtures/utils.ts +27 -947
  231. package/src/fixtures/web3signer.ts +1 -1
  232. package/src/fixtures/with_telemetry_utils.ts +2 -2
  233. package/src/guides/up_quick_start.sh +4 -4
  234. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  235. package/src/quality_of_service/prometheus_client.ts +113 -0
  236. package/src/shared/cross_chain_test_harness.ts +30 -43
  237. package/src/shared/gas_portal_test_harness.ts +4 -4
  238. package/src/shared/index.ts +2 -1
  239. package/src/shared/jest_setup.ts +51 -1
  240. package/src/shared/mock_state_view.ts +188 -0
  241. package/src/shared/submit-transactions.ts +11 -16
  242. package/src/shared/uniswap_l1_l2.ts +86 -102
  243. package/src/simulators/lending_simulator.ts +11 -7
  244. package/src/simulators/token_simulator.ts +6 -30
  245. package/src/spartan/DEVELOP.md +7 -0
  246. package/src/spartan/setup_test_wallets.ts +205 -29
  247. package/src/spartan/tx_metrics.ts +376 -0
  248. package/src/spartan/utils/bot.ts +188 -0
  249. package/src/spartan/utils/chaos.ts +253 -0
  250. package/src/spartan/utils/clients.ts +100 -0
  251. package/src/spartan/utils/config.ts +29 -0
  252. package/src/spartan/utils/health.ts +255 -0
  253. package/src/spartan/utils/helm.ts +84 -0
  254. package/src/spartan/utils/index.ts +71 -0
  255. package/src/spartan/utils/k8s.ts +535 -0
  256. package/src/spartan/utils/nodes.ts +543 -0
  257. package/src/spartan/utils/pod_logs.ts +99 -0
  258. package/src/spartan/utils/scripts.ts +99 -0
  259. package/src/spartan/utils.ts +1 -942
  260. package/src/test-wallet/test_wallet.ts +294 -0
  261. package/src/test-wallet/utils.ts +112 -0
  262. package/src/test-wallet/wallet_worker_script.ts +60 -0
  263. package/src/test-wallet/worker_wallet.ts +213 -0
  264. package/src/test-wallet/worker_wallet_schema.ts +13 -0
  265. package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
  266. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  267. package/dest/fixtures/setup_l1_contracts.js +0 -17
  268. package/dest/fixtures/snapshot_manager.d.ts +0 -95
  269. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  270. package/dest/fixtures/snapshot_manager.js +0 -505
  271. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  272. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  273. package/src/fixtures/setup_l1_contracts.ts +0 -26
  274. package/src/fixtures/snapshot_manager.ts +0 -665
@@ -7,7 +7,13 @@ import {
7
7
  import type { Logger } from '@aztec/aztec.js/log';
8
8
  import { createLogger } from '@aztec/foundation/log';
9
9
  import { type PrivateExecutionStep, serializePrivateExecutionSteps } from '@aztec/stdlib/kernel';
10
- import type { ProvingStats, ProvingTimings, SimulationStats, SimulationTimings } from '@aztec/stdlib/tx';
10
+ import type {
11
+ ProvingStats,
12
+ ProvingTimings,
13
+ RoundTripStats,
14
+ SimulationStats,
15
+ SimulationTimings,
16
+ } from '@aztec/stdlib/tx';
11
17
 
12
18
  import assert from 'node:assert';
13
19
  import { mkdir, writeFile } from 'node:fs/promises';
@@ -119,6 +125,7 @@ type ClientFlowBenchmark = {
119
125
  timings: Omit<ProvingTimings & SimulationTimings, 'perFunction'> & { witgen: number };
120
126
  maxMemory: number;
121
127
  rpc: Record<string, CallRecording>;
128
+ roundTrips: RoundTripStats;
122
129
  proverType: ProverType;
123
130
  minimumTrace: StructuredTrace;
124
131
  totalGateCount: number;
@@ -212,6 +219,10 @@ export function generateBenchmark(
212
219
  }, []);
213
220
  const timings = stats.timings;
214
221
  const totalGateCount = steps[steps.length - 1].accGateCount;
222
+ const nodeRPCCalls = stats.nodeRPCCalls ?? {
223
+ perMethod: {},
224
+ roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
225
+ };
215
226
  return {
216
227
  name: flow,
217
228
  timings: {
@@ -221,7 +232,7 @@ export function generateBenchmark(
221
232
  unaccounted: timings.unaccounted,
222
233
  witgen: timings.perFunction.reduce((acc, fn) => acc + fn.time, 0),
223
234
  },
224
- rpc: Object.entries(stats.nodeRPCCalls ?? {}).reduce(
235
+ rpc: Object.entries(nodeRPCCalls.perMethod).reduce(
225
236
  (acc, [RPCName, RPCCalls]) => {
226
237
  const total = RPCCalls.times.reduce((sum, time) => sum + time, 0);
227
238
  const calls = RPCCalls.times.length;
@@ -236,6 +247,7 @@ export function generateBenchmark(
236
247
  },
237
248
  {} as Record<string, CallRecording>,
238
249
  ),
250
+ roundTrips: nodeRPCCalls.roundTrips,
239
251
  maxMemory,
240
252
  proverType,
241
253
  minimumTrace: minimumTrace!,
@@ -280,6 +292,16 @@ export function convertProfileToGHBenchmark(benchmark: ClientFlowBenchmark): Git
280
292
  value: totalRPCCalls,
281
293
  unit: 'calls',
282
294
  },
295
+ {
296
+ name: `${benchmark.name}/round_trips`,
297
+ value: benchmark.roundTrips.roundTrips,
298
+ unit: 'round_trips',
299
+ },
300
+ {
301
+ name: `${benchmark.name}/round_trips_blocking_time`,
302
+ value: benchmark.roundTrips.totalBlockingTime,
303
+ unit: 'ms',
304
+ },
283
305
  ];
284
306
  if (benchmark.timings.proving) {
285
307
  benches.push({
@@ -4,12 +4,15 @@ import { type FeePaymentMethod, PrivateFeePaymentMethod, SponsoredFeePaymentMeth
4
4
  import { type Logger, createLogger } from '@aztec/aztec.js/log';
5
5
  import type { AztecNode } from '@aztec/aztec.js/node';
6
6
  import type { Wallet } from '@aztec/aztec.js/wallet';
7
- import { CheatCodes } from '@aztec/aztec/testing';
8
- import { type DeployL1ContractsArgs, RollupContract, createExtendedL1Client, deployL1Contract } from '@aztec/ethereum';
7
+ import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
8
+ import { createExtendedL1Client } from '@aztec/ethereum/client';
9
+ import { RollupContract } from '@aztec/ethereum/contracts';
10
+ import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
11
+ import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
9
12
  import { ChainMonitor } from '@aztec/ethereum/test';
10
- import { randomBytes } from '@aztec/foundation/crypto';
13
+ import { randomBytes } from '@aztec/foundation/crypto/random';
14
+ import { Fr } from '@aztec/foundation/curves/bn254';
11
15
  import { EthAddress } from '@aztec/foundation/eth-address';
12
- import { Fr } from '@aztec/foundation/fields';
13
16
  import { TestERC20Abi } from '@aztec/l1-artifacts/TestERC20Abi';
14
17
  import { TestERC20Bytecode } from '@aztec/l1-artifacts/TestERC20Bytecode';
15
18
  import { AMMContract } from '@aztec/noir-contracts.js/AMM';
@@ -20,40 +23,34 @@ import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contract
20
23
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
21
24
  import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
22
25
  import { type PXEConfig, getPXEConfig } from '@aztec/pxe/server';
26
+ import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
23
27
  import { GasSettings } from '@aztec/stdlib/gas';
24
28
  import { deriveSigningKey } from '@aztec/stdlib/keys';
25
- import { TestWallet } from '@aztec/test-wallet/server';
26
29
 
27
30
  import { MNEMONIC } from '../../fixtures/fixtures.js';
28
- import {
29
- type ISnapshotManager,
30
- type SubsystemsContext,
31
- createSnapshotManager,
32
- deployAccounts,
33
- } from '../../fixtures/snapshot_manager.js';
31
+ import { type EndToEndContext, type SetupOptions, deployAccounts, setup, teardown } from '../../fixtures/setup.js';
34
32
  import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
35
- import { type SetupOptions, setupSponsoredFPC } from '../../fixtures/utils.js';
33
+ import { setupSponsoredFPC } from '../../fixtures/utils.js';
36
34
  import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
37
35
  import {
38
36
  FeeJuicePortalTestingHarnessFactory,
39
37
  type GasBridgingTestHarness,
40
38
  } from '../../shared/gas_portal_test_harness.js';
39
+ import { TestWallet } from '../../test-wallet/test_wallet.js';
41
40
  import { ProxyLogger } from './benchmark.js';
42
41
  import { type ClientFlowsConfig, FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './config.js';
43
42
 
44
- const { E2E_DATA_PATH: dataPath, BENCHMARK_CONFIG } = process.env;
43
+ const { BENCHMARK_CONFIG } = process.env;
45
44
 
46
45
  export type AccountType = 'ecdsar1' | 'schnorr';
47
46
  export type FeePaymentMethodGetter = (wallet: Wallet, sender: AztecAddress) => Promise<FeePaymentMethod | undefined>;
48
47
  export type BenchmarkingFeePaymentMethod = 'bridged_fee_juice' | 'private_fpc' | 'sponsored_fpc' | 'fee_juice';
49
48
 
50
49
  export class ClientFlowsBenchmark {
51
- private snapshotManager: ISnapshotManager;
52
-
53
50
  public logger: Logger;
54
51
  public aztecNode!: AztecNode;
55
52
  public cheatCodes!: CheatCodes;
56
- public context!: SubsystemsContext;
53
+ public context!: EndToEndContext;
57
54
  public chainMonitor!: ChainMonitor;
58
55
  public feeJuiceBridgeTestHarness!: GasBridgingTestHarness;
59
56
  public adminWallet!: TestWallet;
@@ -69,15 +66,21 @@ export class ClientFlowsBenchmark {
69
66
  public feeJuiceContract!: FeeJuiceContract;
70
67
  // Asset in which fees are paid via FPC
71
68
  public bananaCoin!: BananaCoin;
69
+ public bananaCoinInstance!: ContractInstanceWithAddress;
72
70
  public bananaFPC!: FPCContract;
71
+ public bananaFPCInstance!: ContractInstanceWithAddress;
73
72
  // Random asset we want to trade
74
73
  public candyBarCoin!: TokenContract;
74
+ public candyBarCoinInstance!: ContractInstanceWithAddress;
75
75
  // AMM contract
76
76
  public amm!: AMMContract;
77
+ public ammInstance!: ContractInstanceWithAddress;
77
78
  // Liquidity token for AMM
78
79
  public liquidityToken!: TokenContract;
80
+ public liquidityTokenInstance!: ContractInstanceWithAddress;
79
81
  // Sponsored FPC contract
80
82
  public sponsoredFPC!: SponsoredFPCContract;
83
+ public sponsoredFPCInstance!: ContractInstanceWithAddress;
81
84
 
82
85
  // PXE and Wallet used by the benchmarking user. It can be set up with client-side proving enabled
83
86
  public userWallet!: TestWallet;
@@ -115,33 +118,41 @@ export class ClientFlowsBenchmark {
115
118
  public config: ClientFlowsConfig;
116
119
 
117
120
  private proxyLogger: ProxyLogger;
121
+ private setupOptions: Partial<SetupOptions & DeployAztecL1ContractsArgs>;
118
122
 
119
- constructor(testName?: string, setupOptions: Partial<SetupOptions & DeployL1ContractsArgs> = {}) {
123
+ constructor(testName?: string, setupOptions: Partial<SetupOptions & DeployAztecL1ContractsArgs> = {}) {
120
124
  this.logger = createLogger(`bench:client_flows${testName ? `:${testName}` : ''}`);
121
- this.snapshotManager = createSnapshotManager(
122
- `bench_client_flows${testName ? `/${testName}` : ''}`,
123
- dataPath,
124
- { startProverNode: true, ...setupOptions },
125
- { ...setupOptions },
126
- );
125
+ this.setupOptions = { startProverNode: true, ...setupOptions };
127
126
  this.config = BENCHMARK_CONFIG === 'key_flows' ? KEY_FLOWS_CONFIG : FULL_FLOWS_CONFIG;
128
127
  ProxyLogger.create();
129
128
  this.proxyLogger = ProxyLogger.getInstance();
130
129
  }
131
130
 
132
131
  async setup() {
133
- const context = await this.snapshotManager.setup();
134
- await context.aztecNode.setConfig({ feeRecipient: this.sequencerAddress, coinbase: this.coinbase });
132
+ this.logger.info('Setting up subsystems from fresh');
133
+ // Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
134
+ const tokenAllowList = await getTokenAllowedSetupFunctions();
135
+ this.context = await setup(0, {
136
+ ...this.setupOptions,
137
+ fundSponsoredFPC: true,
138
+ skipAccountDeployment: true,
139
+ l1ContractsArgs: this.setupOptions,
140
+ txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
141
+ });
142
+ await this.applyBaseSetup();
143
+
144
+ await this.context.aztecNodeService.setConfig({ feeRecipient: this.sequencerAddress, coinbase: this.coinbase });
135
145
 
136
- const rollupContract = RollupContract.getFromConfig(context.aztecNodeConfig);
137
- this.chainMonitor = new ChainMonitor(rollupContract, context.dateProvider, this.logger, 200).start();
146
+ const rollupContract = RollupContract.getFromConfig(this.context.config);
147
+ this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider, this.logger, 200).start();
138
148
 
139
149
  return this;
140
150
  }
141
151
 
142
152
  async teardown() {
143
153
  await this.chainMonitor.stop();
144
- await this.snapshotManager.teardown();
154
+ await this.userWallet?.stop();
155
+ await teardown(this.context);
145
156
  }
146
157
 
147
158
  async mintAndBridgeFeeJuice(address: AztecAddress) {
@@ -149,21 +160,20 @@ export class ClientFlowsBenchmark {
149
160
  const { claimSecret: secret, messageLeafIndex: index } = claim;
150
161
  await this.feeJuiceContract.methods
151
162
  .claim(address, claim.claimAmount, secret, index)
152
- .send({ from: this.adminAddress })
153
- .wait();
163
+ .send({ from: this.adminAddress });
154
164
  }
155
165
 
156
166
  /** Admin mints bananaCoin tokens privately to the target address and redeems them. */
157
167
  async mintPrivateBananas(amount: bigint, address: AztecAddress) {
158
- const balanceBefore = await this.bananaCoin.methods
168
+ const { result: balanceBefore } = await this.bananaCoin.methods
159
169
  .balance_of_private(address)
160
- .simulate({ from: this.adminAddress });
170
+ .simulate({ from: address });
161
171
 
162
172
  await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
163
173
 
164
- const balanceAfter = await this.bananaCoin.methods
174
+ const { result: balanceAfter } = await this.bananaCoin.methods
165
175
  .balance_of_private(address)
166
- .simulate({ from: this.adminAddress });
176
+ .simulate({ from: address });
167
177
  expect(balanceAfter).toEqual(balanceBefore + amount);
168
178
  }
169
179
 
@@ -183,137 +193,117 @@ export class ClientFlowsBenchmark {
183
193
  }
184
194
  }
185
195
 
186
- public async applyBaseSnapshots() {
187
- await this.applyInitialAccountsSnapshot();
188
- await this.applySetupFeeJuiceSnapshot();
196
+ public async applyBaseSetup() {
197
+ await this.applyInitialAccounts();
198
+ await this.applySetupFeeJuice();
189
199
  }
190
200
 
191
- async applyInitialAccountsSnapshot() {
192
- await this.snapshotManager.snapshot(
193
- 'initial_accounts',
194
- deployAccounts(2, this.logger),
195
- async (
196
- { deployedAccounts: [{ address: adminAddress }, { address: sequencerAddress }] },
197
- { wallet, aztecNode, cheatCodes },
198
- ) => {
199
- this.adminWallet = wallet;
200
- this.aztecNode = aztecNode;
201
- this.cheatCodes = cheatCodes;
202
-
203
- this.adminAddress = adminAddress;
204
- this.sequencerAddress = sequencerAddress;
205
-
206
- const canonicalFeeJuice = await getCanonicalFeeJuice();
207
- this.feeJuiceContract = await FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
208
- this.coinbase = EthAddress.random();
209
-
210
- const userPXEConfig = getPXEConfig();
211
- const userPXEConfigWithContracts = {
212
- ...userPXEConfig,
213
- proverEnabled: this.realProofs,
214
- } as PXEConfig;
215
-
216
- this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
217
- loggers: {
218
- prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied'),
219
- },
220
- });
221
- },
222
- );
223
- }
201
+ async applyInitialAccounts() {
202
+ this.logger.info('Applying initial accounts setup');
203
+ const { deployedAccounts } = await deployAccounts(
204
+ 2,
205
+ this.logger,
206
+ )({
207
+ wallet: this.context.wallet,
208
+ initialFundedAccounts: this.context.initialFundedAccounts,
209
+ });
210
+
211
+ const [{ address: adminAddress }, { address: sequencerAddress }] = deployedAccounts;
224
212
 
225
- async applySetupFeeJuiceSnapshot() {
226
- await this.snapshotManager.snapshot(
227
- 'setup_fee_juice',
228
- async () => {},
229
- async (_data, context) => {
230
- this.context = context;
231
-
232
- this.feeJuiceContract = await FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
233
-
234
- this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
235
- aztecNode: context.aztecNode,
236
- aztecNodeAdmin: context.aztecNode,
237
- l1Client: context.deployL1ContractsValues.l1Client,
238
- wallet: this.adminWallet,
239
- logger: this.logger,
240
- });
213
+ this.adminWallet = this.context.wallet;
214
+ this.aztecNode = this.context.aztecNodeService;
215
+ this.cheatCodes = this.context.cheatCodes;
216
+
217
+ this.adminAddress = adminAddress;
218
+ this.sequencerAddress = sequencerAddress;
219
+
220
+ const canonicalFeeJuice = await getCanonicalFeeJuice();
221
+ this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
222
+ this.coinbase = EthAddress.random();
223
+
224
+ const userPXEConfig = getPXEConfig();
225
+ const userPXEConfigWithContracts = {
226
+ ...userPXEConfig,
227
+ proverEnabled: this.realProofs,
228
+ } as PXEConfig;
229
+
230
+ this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
231
+ loggers: {
232
+ prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied'),
241
233
  },
242
- );
234
+ });
243
235
  }
244
236
 
245
- async applyDeployBananaTokenSnapshot() {
246
- await this.snapshotManager.snapshot(
247
- 'deploy_banana_token',
248
- async () => {
249
- const bananaCoin = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n)
250
- .send({ from: this.adminAddress })
251
- .deployed();
252
- this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
253
- return { bananaCoinAddress: bananaCoin.address };
254
- },
255
- async ({ bananaCoinAddress }) => {
256
- this.bananaCoin = await BananaCoin.at(bananaCoinAddress, this.adminWallet);
257
- },
258
- );
237
+ async applySetupFeeJuice() {
238
+ this.logger.info('Applying fee juice setup');
239
+ this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
240
+
241
+ this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
242
+ aztecNode: this.context.aztecNodeService,
243
+ aztecNodeAdmin: this.context.aztecNodeService,
244
+ l1Client: this.context.deployL1ContractsValues.l1Client,
245
+ wallet: this.adminWallet,
246
+ logger: this.logger,
247
+ });
259
248
  }
260
249
 
261
- async applyDeployCandyBarTokenSnapshot() {
262
- await this.snapshotManager.snapshot(
263
- 'deploy_candy_bar_token',
264
- async () => {
265
- const candyBarCoin = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n)
266
- .send({ from: this.adminAddress })
267
- .deployed();
268
- this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
269
- return { candyBarCoinAddress: candyBarCoin.address };
270
- },
271
- async ({ candyBarCoinAddress }) => {
272
- this.candyBarCoin = await TokenContract.at(candyBarCoinAddress, this.adminWallet);
273
- },
274
- );
250
+ async applyDeployBananaToken() {
251
+ this.logger.info('Applying banana token deployment');
252
+ const {
253
+ receipt: { contract: bananaCoin, instance: bananaCoinInstance },
254
+ } = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n).send({
255
+ from: this.adminAddress,
256
+ wait: { returnReceipt: true },
257
+ });
258
+ this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
259
+ this.bananaCoin = bananaCoin;
260
+ this.bananaCoinInstance = bananaCoinInstance;
275
261
  }
276
262
 
277
- public async applyFPCSetupSnapshot() {
278
- await this.snapshotManager.snapshot(
279
- 'fpc_setup',
280
- async context => {
281
- const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
282
- expect((await context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
263
+ async applyDeployCandyBarToken() {
264
+ this.logger.info('Applying candy bar token deployment');
265
+ const {
266
+ receipt: { contract: candyBarCoin, instance: candyBarCoinInstance },
267
+ } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send({
268
+ from: this.adminAddress,
269
+ wait: { returnReceipt: true },
270
+ });
271
+ this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
272
+ this.candyBarCoin = candyBarCoin;
273
+ this.candyBarCoinInstance = candyBarCoinInstance;
274
+ }
283
275
 
284
- const bananaCoin = this.bananaCoin;
285
- const bananaFPC = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress)
286
- .send({ from: this.adminAddress })
287
- .deployed();
276
+ public async applyFPCSetup() {
277
+ this.logger.info('Applying FPC setup');
278
+ const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
279
+ expect((await this.context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
280
+
281
+ const bananaCoin = this.bananaCoin;
282
+ const {
283
+ receipt: { contract: bananaFPC, instance: bananaFPCInstance },
284
+ } = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress).send({
285
+ from: this.adminAddress,
286
+ wait: { returnReceipt: true },
287
+ });
288
288
 
289
- this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
289
+ this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
290
290
 
291
- await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
291
+ await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
292
292
 
293
- return { bananaFPCAddress: bananaFPC.address };
294
- },
295
- async data => {
296
- this.bananaFPC = await FPCContract.at(data.bananaFPCAddress, this.adminWallet);
297
- },
298
- );
293
+ this.bananaFPC = bananaFPC;
294
+ this.bananaFPCInstance = bananaFPCInstance;
299
295
  }
300
296
 
301
- async applyDeploySponsoredFPCSnapshot() {
302
- await this.snapshotManager.snapshot(
303
- 'deploy_sponsored_fpc',
304
- async () => {
305
- const sponsoredFPC = await setupSponsoredFPC(this.adminWallet);
306
- this.logger.info(`SponsoredFPC at ${sponsoredFPC.address}`);
307
- return { sponsoredFPCAddress: sponsoredFPC.address };
308
- },
309
- async ({ sponsoredFPCAddress }) => {
310
- this.sponsoredFPC = await SponsoredFPCContract.at(sponsoredFPCAddress, this.adminWallet);
311
- },
312
- );
297
+ async applyDeploySponsoredFPC() {
298
+ this.logger.info('Applying sponsored FPC deployment');
299
+ const sponsoredFPCInstance = await setupSponsoredFPC(this.adminWallet);
300
+ this.logger.info(`SponsoredFPC at ${sponsoredFPCInstance.address}`);
301
+ this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCInstance.address, this.adminWallet);
302
+ this.sponsoredFPCInstance = sponsoredFPCInstance;
313
303
  }
314
304
 
315
305
  public async createCrossChainTestHarness(owner: AztecAddress) {
316
- const l1Client = createExtendedL1Client(this.context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
306
+ const l1Client = createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC);
317
307
 
318
308
  const underlyingERC20Address = await deployL1Contract(l1Client, TestERC20Abi, TestERC20Bytecode, [
319
309
  'Underlying',
@@ -342,12 +332,10 @@ export class ClientFlowsBenchmark {
342
332
  const benchysAddress = benchysAccountManager.address;
343
333
  const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
344
334
  const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
345
- await behchysDeployMethod
346
- .send({
347
- from: AztecAddress.ZERO,
348
- fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
349
- })
350
- .wait();
335
+ await behchysDeployMethod.send({
336
+ from: AztecAddress.ZERO,
337
+ fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
338
+ });
351
339
  // Register benchy on the user's Wallet, where we're going to be interacting from
352
340
  const accountManager = await this.userWallet.createAccount({
353
341
  secret: benchysAccount.getSecretKey(),
@@ -357,30 +345,28 @@ export class ClientFlowsBenchmark {
357
345
  return accountManager.address;
358
346
  }
359
347
 
360
- public async applyDeployAmmSnapshot() {
361
- await this.snapshotManager.snapshot(
362
- 'deploy_amm',
363
- async () => {
364
- const liquidityToken = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n)
365
- .send({ from: this.adminAddress })
366
- .deployed();
367
- const amm = await AMMContract.deploy(
368
- this.adminWallet,
369
- this.bananaCoin.address,
370
- this.candyBarCoin.address,
371
- liquidityToken.address,
372
- )
373
- .send({ from: this.adminAddress })
374
- .deployed();
375
- this.logger.info(`AMM deployed at ${amm.address}`);
376
- await liquidityToken.methods.set_minter(amm.address, true).send({ from: this.adminAddress }).wait();
377
- return { ammAddress: amm.address, liquidityTokenAddress: liquidityToken.address };
378
- },
379
- async ({ ammAddress, liquidityTokenAddress }) => {
380
- this.liquidityToken = await TokenContract.at(liquidityTokenAddress, this.adminWallet);
381
- this.amm = await AMMContract.at(ammAddress, this.adminWallet);
382
- },
383
- );
348
+ public async applyDeployAmm() {
349
+ this.logger.info('Applying AMM deployment');
350
+ const {
351
+ receipt: { contract: liquidityToken, instance: liquidityTokenInstance },
352
+ } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send({
353
+ from: this.adminAddress,
354
+ wait: { returnReceipt: true },
355
+ });
356
+ const {
357
+ receipt: { contract: amm, instance: ammInstance },
358
+ } = await AMMContract.deploy(
359
+ this.adminWallet,
360
+ this.bananaCoin.address,
361
+ this.candyBarCoin.address,
362
+ liquidityToken.address,
363
+ ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
364
+ this.logger.info(`AMM deployed at ${amm.address}`);
365
+ await liquidityToken.methods.set_minter(amm.address, true).send({ from: this.adminAddress });
366
+ this.liquidityToken = liquidityToken;
367
+ this.liquidityTokenInstance = liquidityTokenInstance;
368
+ this.amm = amm;
369
+ this.ammInstance = ammInstance;
384
370
  }
385
371
 
386
372
  public async getBridgedFeeJuicePaymentMethodForWallet(_wallet: Wallet, sender: AztecAddress) {
@@ -391,7 +377,7 @@ export class ClientFlowsBenchmark {
391
377
  public async getPrivateFPCPaymentMethodForWallet(wallet: Wallet, sender: AztecAddress) {
392
378
  // The private fee paying method assembled on the app side requires knowledge of the maximum
393
379
  // fee the user is willing to pay
394
- const maxFeesPerGas = (await this.aztecNode.getCurrentBaseFees()).mul(1.5);
380
+ const maxFeesPerGas = (await this.aztecNode.getCurrentMinFees()).mul(1.5);
395
381
  const gasSettings = GasSettings.default({ maxFeesPerGas });
396
382
  return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
397
383
  }
@@ -6,7 +6,7 @@ export type ClientFlowConfig = {
6
6
  recursions?: number[];
7
7
  };
8
8
 
9
- type ClientFlows = 'accountDeployments' | 'deployments' | 'transfers' | 'bridging' | 'amm';
9
+ type ClientFlows = 'accountDeployments' | 'deployments' | 'transfers' | 'bridging' | 'amm' | 'storageProof';
10
10
 
11
11
  export type ClientFlowsConfig = {
12
12
  [key in ClientFlows]: ClientFlowConfig;
@@ -34,6 +34,10 @@ export const KEY_FLOWS_CONFIG: ClientFlowsConfig = {
34
34
  feePaymentMethods: ['sponsored_fpc', 'private_fpc'],
35
35
  recursions: [0, 1],
36
36
  },
37
+ storageProof: {
38
+ accounts: ['ecdsar1'],
39
+ feePaymentMethods: ['sponsored_fpc'],
40
+ },
37
41
  };
38
42
 
39
43
  export const FULL_FLOWS_CONFIG: ClientFlowsConfig = {
@@ -58,4 +62,8 @@ export const FULL_FLOWS_CONFIG: ClientFlowsConfig = {
58
62
  feePaymentMethods: ['sponsored_fpc', 'private_fpc'],
59
63
  recursions: [0, 1, 2],
60
64
  },
65
+ storageProof: {
66
+ accounts: ['ecdsar1', 'schnorr'],
67
+ feePaymentMethods: ['sponsored_fpc', 'private_fpc'],
68
+ },
61
69
  };
@@ -1,6 +1,4 @@
1
- import type { Logger } from '@aztec/aztec.js/log';
2
- import { BBNativePrivateKernelProver } from '@aztec/bb-prover/client/native';
3
- import { BBWASMBundlePrivateKernelProver } from '@aztec/bb-prover/client/wasm/bundle';
1
+ import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
4
2
  import { createLogger, logger } from '@aztec/foundation/log';
5
3
  import { Timer } from '@aztec/foundation/timer';
6
4
  import { WASMSimulator } from '@aztec/simulator/client';
@@ -11,26 +9,7 @@ import { Decoder } from 'msgpackr';
11
9
  import { readFile, readdir, writeFile } from 'node:fs/promises';
12
10
  import { join } from 'node:path';
13
11
 
14
- import { type Log, type ProverType, ProxyLogger, generateBenchmark } from './benchmark.js';
15
-
16
- type NativeProverConfig = { bbBinaryPath?: string; bbWorkingDirectory?: string };
17
-
18
- async function createProver(config: NativeProverConfig = {}, log: Logger) {
19
- const simulator = new WASMSimulator();
20
- if (!config.bbBinaryPath || !config.bbWorkingDirectory) {
21
- return { prover: new BBWASMBundlePrivateKernelProver(simulator, 16, log), type: 'wasm' as ProverType };
22
- } else {
23
- const bbConfig = config as Required<NativeProverConfig>;
24
- return {
25
- prover: await BBNativePrivateKernelProver.new(
26
- { bbSkipCleanup: false, numConcurrentIVCVerifiers: 1, bbIVCConcurrency: 1, ...bbConfig },
27
- simulator,
28
- log,
29
- ),
30
- type: 'native' as ProverType,
31
- };
32
- }
33
- }
12
+ import { type Log, ProxyLogger, generateBenchmark } from './benchmark.js';
34
13
 
35
14
  async function main() {
36
15
  ProxyLogger.create();
@@ -41,10 +20,9 @@ async function main() {
41
20
  }
42
21
  const flows = await readdir(ivcFolder);
43
22
  logger.info(`Flows in ${ivcFolder}: \n${flows.map(flowName => `\t- ${flowName}`).join('\n')}`);
44
- const { prover, type: proverType } = await createProver(
45
- { bbBinaryPath: process.env.BB_BINARY_PATH, bbWorkingDirectory: process.env.BB_WORKING_DIRECTORY },
46
- proxyLogger.createLogger('bb:prover'),
47
- );
23
+ const simulator = new WASMSimulator();
24
+ const log = proxyLogger.createLogger('bb:prover');
25
+ const prover = new BBBundlePrivateKernelProver(simulator, { logger: log });
48
26
 
49
27
  const userLog = createLogger('chonk_flows:data_processor');
50
28
 
@@ -96,7 +74,7 @@ async function main() {
96
74
  if (!(profile.stats.timings as ProvingTimings).proving) {
97
75
  (profile.stats.timings as ProvingTimings).proving = provingTime;
98
76
  }
99
- const benchmark = generateBenchmark(flow, currentLogs, profile.stats, privateExecutionSteps, proverType, error);
77
+ const benchmark = generateBenchmark(flow, currentLogs, profile.stats, privateExecutionSteps, 'native', error);
100
78
  await writeFile(join(ivcFolder, flow, 'benchmark.json'), JSON.stringify(benchmark, null, 2));
101
79
  proxyLogger.flushLogs();
102
80
  }